DISPLAY SERIAL II COM MICROCONTROLADOR PIC Um display LCD tipo caracter com comunicação serial para uso com microcontroladores e outros dispositivos com comunicação RS-232. Neste artigo você receberá as informações necessárias para montar o seu próprio Display Serial.
O
DISPLAY SERIAL II - PROPOSTA O Display Serial II possui as seguintes características:
Observando as características apresentadas é fácil perceber que este display, apesar de simples em sua concepção, poderá atender as necessidades da maioria dos hobistas e estudantes. E se você tiver alguma experiência na Linguagem "C" ficará bem simples a implementação de mais comandos internos, aumentando assim as possibilidades de uso para o display.
ONDE USAR Um display serial pode ser utilizado em uma série de aplicações. Suas principais vantagens em relação a um display LCD normal são:
Você já deve ter percebido que este display é ideal para aplicações com microcontroladores, mesmo com aqueles que não possuem grandes espaços em sua memória de programa, como é o caso do Basic Step 1. Porém este display também pode ser ligado a equipamentos que possuam uma porta de comunicação RS-232 como um PC, por exemplo. Desta forma pode-se levar informações a uma certa distância a um usuário de uma máquina no chão de fabrica ou a um balcão de atendimento (no caso de uma automação comercial), etc. Para automação as chances de aplicação deste display são grandes e só dependerão da criatividade de cada um.
O CIRCUITO Na
figura abaixo pode ser visto o circuito eletrônico do Display Serial II. Todo o controle é feito pelo microcontrolador
(CI1) PIC16F628 Microchip, um velho conhecido. As
principais características deste microcontrolador são:
- 2k bytes de FLASH
(área de programa);
- 224 bytes de RAM; - 128 de EEPROM; - 15 pinos de I/O com dreno de corrente na ordem de 20mA; - 2 comparadores Analógicos; - 2 “timer’s” de 8 bits e um de 16 bits; - 1 canal CCP (Capture, Compare and PWM); - 1 canal USART para comunicação RS-232 ou SPI; - Opções para oscilador, inclusive interno a 4MHz; - Wath Dog Timer (cão de guarda) interno; - Controle de Power-on Reset e Power-up Timer; - Proteção de código contra cópias; - Código de instruções reduzido (35 instruções); - Encapsulamento DIP com 18 pinos. Se você quer saber mais sobre este microcontrolador, aconselho o download do data sheet no site do fabricante, Microchip. CI2,
um MAX232 ou equivalente, permite converter os níveis de tensão do
padrão RS-232 de um PC (+/-12VDC) para o padrão TTL (0-5VDC) do
PIC, e vice-versa. O jumper JP1 permite selecionar a velocidade de comunicação do display. Com o jumper aberto a mesma é de 2400 bps (nível lógico “1” no pino 3 - RA4 - do microcontrolador) e fechado de 9600 bps (nível lógico “0” no pino 3 - RA4 - do microcontrolador). O jumper JP3 permite selecionar o tipo de “entrada” desejado. Quando na posição 1-2 ela será feita no padrão RS-232 (no caso da ligação do mesmo em um PC) e na posição 2-3 esta será feita no padrão TTL (para a ligação do display em um microcontrolador, por exemplo). Os capacitores C1 e C6 atuam como “desacopladores” (filtros) para CI1 e CI2, respectivamente. Os capacitores C2 a C5 são capacitores auxiliares para a CI2. Eles ajudam na “adaptação” dos níveis de tensão TTL para RS-232 e vice-versa. O trimpot P1 permite ajustar o contraste do LCD. O LCD utilizado deve ser, necessariamente, tipo caracter com 16 colunas e 2 linhas. Acredito que um LCD 16x2 é mais que suficiente para a maioria das aplicações (pelo menos para mim, sempre foi). Nenhum outro é admitido, pois o programa de controle do microcontrolador foi desenvolvido apenas para este tipo exclusivamente. A adaptação de outros tipos de LCD como 20x4, 16x4, 16x1, 40x2 é possível, porém você mesmo deverá providenciar as alterações no circuito e programa para obter sucesso. A entrada da comunicação, assim como da fonte é feita através do conector “IN”. No pino “1” deste conector deverá ser ligado o sinal TX do transmissor (PC ou microcontrolador), no pino “2” a tensão de alimentação 5 VDC e no pino “3” o GND da comunicação e alimentação. A alimentação do circuito poderá ser retirada do próprio circuito onde o Display Serial for ligado ou ainda de uma fonte externa com 5VDC e capacidade de fornecer pelo menos 300 mA de corrente.
MONTAGEM Na
figura abaixo você leitor tem minha sugestão para o lay-out para a confecção
do circuito impresso. O mesmo tem apenas uma face e sua confecção
não será trabalhosa. A montagem do circuito em placas tipo padrão
ou mesmo em matrizes de contato também é possível. A escolha de um
método ou outro é livre.
Utilize suportes para todos os CI’s (CI1 e CI2). Os capacitores C2 a C5 são do tipo eletrolíticos e, portanto polarizados. Tome cuidado ao monta-los na placa. Os jumpers JP2, JP4 e JP5 podem ser feitos com pequenos pedaços de fios rijo. O uso de “barra de pinos” para JP1 e JP3 é recomendável. Desta forma, com o uso de straps fica fácil a seleção da velocidade (2400 ou 9600 bps) e tipo de entrada admitida (TTL ou RS-232). Na falta deste tipo de terminal você poderá utilizar chaves “H-H” comuns, por exemplo. Para o conector “IN” você poderá utilizar também “barra de pinos” 180º ou ainda 90º. Outros tipos de conectores também podem ser experimentados. A montagem de fios diretamente na placa também é possível, sendo esta uma opção bem barata e também muito funcional. O trimpot P1 deve ser necessariamente do tipo mini horizontal. A montagem de outros tipos na placa dependerá de alterações na mesma. Aconselho o uso de um terminal “barra de pinos fêmea” para o encaixe do
LCD a placa. Desta forma você também poderá utilizar o LCD
em outras montagens e testes. No caso de uma montagem
definitiva, o uso de uma barra de pinos macho 180º com 14 pontos,
soldada diretamente ao display e a placa, é uma excelente
alternativa. O uso de fios para as ligações também é possível.
Use a opção que melhor lhe convier.
Se você deseja utilizar um LCD com backligth com a placa deverá fazer as ligações do sistema de iluminação à parte, com fios. Para isso basta ligar o “anodo” do backligth ao 5VDC da placa através de um resistor limitador de 56 a 100 Ohms com ¼ Watt de dissipação e o catodo ao GND da placa. Estas ligações podem ser feitas no conector “IN”, por exemplo. Lembrando que a não utilização do resistor limitador, em alguns casos, poderá causar a queima do backligth do seu display. O
cabo de comunicação serial a ser utilizado com este circuito, no
caso do uso do mesmo com equipamentos RS-232 (como um PC, por
exemplo) deverá ser construído a partir das informações presentes
abaixo. DB09
fêmea
Display Serial No caso da comunicação TTL (entre um circuito microcontrolador e o display, por exemplo) o cabo será bem simples, com três vias, sem nenhum segredo em sua montagem.
O PROGRAMA Mais abaixo, em downloads, você encontrará o programa de controle do display. Está disponível no pacote o código fonte e o arquivo HEX, necessário a gravação do microcontrolador. Desta forma você não precisará re-compilar o código fonte. Isto só será necessário, caso você realize alguma alteração no programa original. Utilizei para o desenvolvimento e compilação deste programa o compilador PIC CCS C. A empresa CCS fornece uma versão demo que poderá ser utilizada em seus testes. Esta versão possui algumas limitações como os tipos de microcontroladores habilitados e também no tamanho máximo do programa a ser compilado, porém é uma boa alternativa para aqueles que desejam “entrar” no mundo da programação na linguagem C, mais especificamente dedicada aos microcontroladores PIC Microchip. É
importante salientar novamente que você não precisa baixar da
Internet o compilador, pois juntamente com o código fonte, também
foi fornecido o arquivo compilado com mesmo nome, porém extensão
HEX (DISPLAY_SERIAL.HEX). Este arquivo será utilizado para a
gravação do microcontrolador, sendo o uso do compilador necessário
apenas para alterações ou estudos. Outro
detalhe. Faz algum tempo que fiz este projeto e o compilador já era um
tanto "velhinho" na época. Pode ser que em alguns casos, ao compilar
hoje com uma nova versão do mesmo compilador apareçam alguns erros
devido justamente as diferenças de versões (e isso é bastante comum).
Se isso acontecer, você deverá analisar o que o compilador está
"dizendo" através das mensagens e providenciar as correções. E isso
fica por conta de cada um! O código fonte foi ricamente comentado para ajudar na sua compreensão. Porém a seguir falarei um pouco sobre o seu funcionamento, descrevendo alguns detalhes do programa. Ele começa por iniciar o microcontrolador com a direção dos pinos (entrada ou saída), o Watch Dog Timer – relógio cão de guarda que evita que o programa se “perca” e assim que o microcontrolador trave por algum motivo - e a USART do microcontrolador para a comunicação RS-232/TTL com o dispositivo de controle do display (PC, equipamentos com porta RS-232 ou um microcontrolador)
Durante a inicialização, o microcontrolador configura o LCD e lê o jumper JP1 que determinará a velocidade desejada de trabalho. Se o mesmo estiver aberto, o resistor R1 fornecerá nível lógico “1” ao pino RA4 e o programa manterá a velocidade “default” de 2400 bps. Caso o mesmo esteja fechado, o pino RA4 receberá nível lógico “0” e a velocidade de comunicação será re-programada para 9600 bps. É importante que você entenda que a condição de JP1 só é lida durante o start-up (ligar) do circuito. Após isso, de nada adiantará alterar a condição de JP1, pois a velocidade não será alterada. Apenas desligando o display e alterando JP1 que uma nova velocidade poderá ser re-programada. Após a inicialização do microcontrolador e LCD, o programa ficará preso na função “main” (principal). Nesta nada é feito, a não ser a re-inicialização do relógio “cão de guarda” (WDT), evitando assim que o mesmo reset o microcontrolador desnecessariamente. Pode parecer estranho para aquele sem muito conhecimento com microcontroladores, mas todas as outras funções presentes no processo são operadas por meio da interrupção da USART. No programa a interrupção para tratamento da USART é a mais importante. Sempre que um caracter for recebido pela USART do microcontrolador, esta gera uma interrupção e então o programa é desviado para a função “RDA_isr()”. Esta faz o tratamento do dado recebido. Este tratamento consiste em verificar se o caracter recebido é de controle ou um caracter a ser grafado no display. Para facilitar o controle do display foram inseridos alguns comandos internos. Estes comandos estão apresentados na tabela abaixo. Tabela – Comandos presentes no display
Para enviar um byte de controle ao display, é necessário enviar antes deste um byte de “abertura de comando” FEH (254 decimal). Nenhum comando é aceito, sem que este esteja precedido do byte de “abertura de comando”. Este informará ao microcontrolador que o próximo byte recebido é na verdade um caracter de controle e não um caracter a ser grafado no display. Ainda sobre os caracteres de controle, é necessário compreender que estes não são os caracteres ASCII 1, 2, 3, etc. Para grafar o caracter “1” no display o programa de controle (seja ele no PC ou em um microcontrolador) enviará o byte 31H (49 decimal). Aconselho estudar atentamente a tabela acima e se achar necessário pesquisar na Internet mais sobre a tabela ASCII para compreender melhor o que foi aqui colocado. Um outro detalhe também muito importante sobre o programa é que o compilador CCS insere no código final a ser gravado no microcontrolador (arquivo HEX), comandos que permitem ligar e desligar as interrupções. Isso evita que ao atender uma determinada interrupção, o microcontrolador sofra uma segunda interrupção e assim consecutivamente. Ou seja, ao entrar em uma função de tratamento de interrupção, todas as outras (e a própria) são desabilitadas. Enquanto as operações dentro da função de tratamento de interrupção atual não se finalizarem, nenhuma outra será chamada ou atendida. Agora você pode entender a importância do Watch Dog Timer. Caso algo na lógica do programa saia errado, o WDT re-inicia o microcontrolador e suas operações.
TESTE E USO Após a montagem, seja qual for o método escolhido, é recomendável uma verificação minuciosa na mesma. Reveja todas as ligações, as soldas, posições dos componentes, etc. Gaste alguns minutos nesta verificação. Não tenha pressa em ligar o circuito. Alguns minutos gastos em uma boa verificação poderão representar a diferença entre o sucesso e o fracasso nesta montagem. Faça o download do arquivo HEX para gravar o microcontrolador. Grave-o e insira-o na placa, através de seu respectivo suporte.
Para
testar o circuito existem duas alternativas: a primeira delas é
testar o display ligado a um PC. Para
este teste, você só precisa de uma fonte de 5 VDC, um PC com porta
RS-232, um programa tipo terminal quaquer como o HyperTerminal do Windows, por exemplo, e um cabo de comunicação RS-232, conforme descrito
anteriormente. 1º)
Configure os jumpers como segue: JP1 “fechado” (9600 bps) e JP3
na posição 1-2 (RS-232).
2º) Conecte o cabo de comunicação entre o display e o PC, utilizando o conector IN. 3º) Execute o programa Hyper Terminal (para ambiente Windows) e configure-o (9600, n, 8, 1). 4º) Ligue a fonte e aguarde surgir o cursor no LCD. 5º) Atue sobre P1 para que o cursor fique com o contraste desejado. 6º) Tecle algo na tela do PC. Neste momento você verá o caracter teclado grafado no display. Para testar o comando “Apagar display”, por exemplo, basta segurar a tecla “ALT” enquanto digita “0254”, solte-a, e em seguida volte a pressiona-la novamente (tecla ALT) enquanto digita “01”. Desta forma o programa não enviará os caracteres “2”, “5” e “4”, além dos caracteres “0” e “1”, mas sim os caracteres FEH e 01H, respectivamente. Um
segundo teste consiste em utilizar o circuito com um microcontrolador
qualquer como um
Basic Step 1, por exemplo. Neste caso, um programa como o sugerido a seguir poderá ser utilizado. Não
se esqueça de mudar a posição de JP3 na posição 2-3 (TTL) e JP1 para “aberto”, pois o
BS-1 não trabalha com taxas acima de 2400 bps. Programa exemplo para BS-1
CONCLUSÃO Espero
que com a montagem deste display
você possa usufruir de mais
uma “ferramenta” em sua bancada de testes e ainda possa ter
muitas idéias para o uso da mesma. É minha intenção ajudar sempre que
possível com idéias na construção de pequenas “ferramentas”, pois estas
além
de auxilia-lo em sua bancada, também fornecerão informações
preciosas sobre o controle e uso de dispositivos interessantes. Boa
montagem e até a próxima!
- Esquema elétrico Este artigo foi publicado, com minha autorização, na revista Mecatrônica Fácil nrº 29 de Julho/Agosto de 2006.
|
Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor. |