Simulador Ladder – LDMICRO

LadderA pedido de amigos, vai uma dica de como treinar os conhecimentos adquirido na cadeira de Informática Industrial. A linguagem LADDER nasceu na necessidade de facilitar a programação em ambientes industriais, remetendo para uma linguagem de alto nível e fácil de ser utilizada. No entanto existe um programa, LDMICRO  de Jonathan Westhues, que permite a programação LADDER de microcontroladores, que viabiliza o estudo e implementação de controles de baixíssimo custo.
Este software é muito versátil, não requer instalação (basta executar o arquivo ldmicro.exe em ambiente windows ou emulador compatível), e é de livre distribuição.

Abaixo segue link para o download do LDMICRO, manual e alguns exemplos.

Software -> http://www.cq.cx/dl/ldmicro.exe

Manual -> http://www.mecatronica.org.br/disciplinas/programacao/019/LDMICRO_TUTORIAL.pdf

Exemplos -> http://www.mecatronica.org.br/disciplinas/cuscopic/artigos/ladder/exemplos.zip

Tabela em Assembly para escrever em um display de LCD com PIC

Após ter apanhado um monte com assembly e perturbado bastante o professor da cadeira de projetos com microcontroladores aprendi a trabalhar com tabelas em assembly, mesmo sabendo que percorrer uma tabela em assembly no microcontrolador PIC é um sacrifício (que no final recompensa o trabalho). Mas vamos deixa de conversa e ir direto aos trabalhos…

Primeiro devemos conhecer uma das diretivas de dados do assembly, a responsável de gerar series de instruções RETLW (Instrução que retorna de uma chamada CALL com o resultado de W ), uma instrução para cada termo.

DT: Definindo uma tabela de dados

Sintaxe:     dt [termo]

Descrição:  Esta diretiva vai gerar uma série de instruções RETLW, uma instrução para cada termo.

dt “Mensagem” , 0
dt primeiro, segundo, terceiro

Após saber como funciona o DT vamos escrever em um LCD com essa instrução (em um outro post irei informar como inicializar e configurar um Display LCD 16×2).

A rotina abaixo é parte de um projeto que desenvolvi, que tem a função de escrever em um LCD de 16×2 que pula para próxima linha do LCD automaticamente após o termino da escrita na primeira linha.


;*********************************************************
;* MSG *
;*********************************************************
LCD_PRINCIPAL ;DEFINIÇÃO DE FUNÇÃO
BANK0
CLRF CONT_MENS ;LIMPA VARIÁVEL
CALL ESCREVE_LINHA1 ;INFORMA A LINHA EM QUE VAI ESCREVER
MOVLW .16 ;DEFINE A QUANTIDADE DE COLUNAS
MOVWF LINHA ;JOGA DENTRO DE LINHA
BCF POSICAO ;INFORMA A POSIÇÃO DE ESCRITA 0 = PRIMEIRA LINHA MSG_PRINCIPAL
BANK0
MOVF CONT_MENS,W ;JOGA O VALOR DE CONT_MENS PARA W
CALL STRING_LCD ;VAI PARA ESCRITA DA MENSAGEM
MOVWF CARACTER ;COLOCA O RETORNO DA FUNÇÃO STRING EM CARACTER
SUBLW .0 ;SUBTRAI W DE ZERO
BANK0
BTFSC STATUS,Z ;O RESULTADO DEU ZERO?
GOTO VARRE ;SE == 0, JÁ LEU TODA STRING E VAI PARA A ROTINA PRINCIPAL
INCF CONT_MENS,1 ;SE =! 0, INCREMENTE 1 NA VARIÁVEL CONT_MENS
MOVF CARACTER,W ;JOGA A LETRA QUE ESTA EM CARACTER E JOGA PRA W
MOVWF DADOS_LCD ;JOGA CARACTER PARA O LCD
CALL PULSO ;ROTINA DO LCD
DECFSZ LINHA,1 ;DECREMENTA OS 16. QUE E A QUANTIDADE MÁXIMA DE ESCRITA EM UMA LINHA
GOTO RECOMECA ;RECOMEÇA O ENVIO DE UMA PRÓXIMA LETRA NA LINHA 1
GOTO RECOMESA_POS2 ;RECOMEÇA O ENVIO DE UMA PRÓXIMA LETRA NA LINHA 2 STRING_LCD
BANK0
ADDWF PCL,1 ;SOMA W AO DESLOCAMENTO AO PC (PROGRAM COUNT) - W + PC
MSG_LCD DT "MENSAGEM A SER ENVIADA PRO LCD",0 ;CADA LETRA LIDA PELA POSIÇÃO DO PC E ADICIONADA EM W E RETORNA PELO COMANDO RETLW RECOMECA
GOTO MSG_PRINCIPAL ;RECOMEÇA O ENVIO DE UMA PRÓXIMA LETRA RECOMESA_POS2
BANK0
BTFSS POSICAO ;A ESCRITA ESTA EM QUE POSIÇÃO? SE "0" VAI PRA FUNÇÃO ESCREVE_LINHA2 E
CALL ESCREVE_LINHA2 ;DEFINE ESCRITA NA LINHA 2 E MUDA VALOR DA VARIÁVEL POSIÇÃO PARA 1, SENÃO CONTINUA ESCREVENDO NA LINHA 1
GOTO MSG_PRINCIPAL

Abaixo segue a logica do código:
lcd_principal

Aguarde os próximos capítulos, pois estarei disponibilizando mais algumas técnicas que aprendi com essa cadeira.

Elevador Microcontrolado

Nesse post vou mostrar os passos efetuados no desenvolvimento do elevador microcontrolado, que foi tema de um trabalho da faculdade. O objetivo do trabalho era entender o funcionamento de um microcontrolador. Em cima desse objetivo e muitas discussões optamos (eu e minha equipe) em fazer um elevador comercial.

Obs: Todo o desenvolvimento foi efetuado em ambiente Windows 😦

Ferramentas Utilizadas:

Software:

Compilador: CCS PCWH v4.074

Simulador: Proteus Asis 7

Gravador: PICkit 2 V2.55.01

PCB Design : Proteus Ares 7

Hardware

Gravador: MicroICD ZIF da Microgenios

Microcontrolador PIC 16F877A

LCD de 16×2

Motor de passo

Display de 7 Segmentos Ânodo Comum

O desenvolvimento inicio-se com a resolução e entendimento do problema, onde o procedimento a ser tomado pelo elevador era:
  • 1 – Conter 3 andares
  • 2 – A prioridade de chamada é dada aos usuários internos do elevador
  • 3 – A chamada externa é guardada em memoria e atendida conforme o andar
  • 4 – A prioridade de andar e feita por proximidade
  • 5 – O controle de andar sendo efetuado pelo controle de passo do motor
  • 6 – Um LCD 16×2 mostrando a informação de que andar está e pra onde vai
  • 7 – Temporizador de 30 segundos, para verificação de tempo de uso
  • 8 – Display de informação de andar
  • 9 – Sistema de desligamento

Depois de montado o layout de resolução foi efetuado o algoritmo em C.

Abaixo segue o layout do simulador, Design Elevador - SDM II

Abaixo o layout do circuito impresso, Placa Circuito Impresso do elevador O final da historia foi a aprovação direta para o próximo período e mais conhecimento. Abaixo deixo os arquivos a serem compilados e testados. Acesso aos arquivos

OBS: Para fazer o download, escolha “salvar como”, após salvar renomeie o arquivo com a extensão .zip, metódo utilizado, porque o wordpress não tem opção de upload de arquivos .zip.

Abaixo segue um video com o funcionamento do elevador http://www.youtube.com/watch?v=n49V2sRLX9k