Todo leitor que lida com microcontroladores sabe a importância de manter uma rica biblioteca com os mais variados esquemas e programas para uso. Pensando nisto desenvolvemos três circuitos práticos com o microcontrolador PIC16F628A para que o leitor possa aumentar sua biblioteca e ainda aprender como utilizar alguns dispositivos importantes com o microcontrolador sugerido, entre os quais: teclado matricial, display de cristal líquido e motor de passo.

Márcio José Soares

 

Nota: O artigo é de uma Eletrônica Total de 2004

 

 

O MICROCONTROLADOR PIC16F628A

 

Este microcontrolador não é nenhuma novidade para a maioria dos leitores. Porém para aqueles que não o conhecem, descreveremos agora suas principais características:

- Memória de programa com 2k bytes de FLASH

- 224 bytes de RAM - 128 de EEPROM

- 15 pinos de I/O com dreno de corrente na ordem de 20 mA

- Dois comparadores analógicos

- Dois "timer's" de 8 bits e um de 16 bits

- Um canal CCP (Capture, Compare and PWM)

- Um canal USART para comunicação RS-232 ou SPI

- Várias opções para oscilador inclusive interno a 4 MHz

- Watch 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.

Para aqueles que desejam maiores informações sobre este microcontrolador, aconselhamos o "download" do "data book" no site do fabricante, www.microchip.com.

 

 

CONTROLE DE TECLADO MATRICIAL

 

Em alguns circuitos microcontrolados é necessário coletar dados junto ao "usuário". A melhor maneira de fazê-lo é, sem dúvida alguma, utilizando um teclado matricial.

Estes teclados são formados basicamente por botões tipo "normalmente abertos" intercalados entre colunas e linhas (figura 1). Para saber exatamente qual tecla foi pressionada, é necessário analisar linha e coluna através de uma operação muito conhecida no mundo dos microcontroladores como varredura. Observe a figura 2.

 


| Clique na imagem para ampliar |

 

 

 


| Clique na imagem para ampliar |

 

 

O leitor pode observar que forçamos um valor fixo nas "linhas". Este valor geralmente equivale ao "1" lógico (5 V). Isto é feito através de resistores de "pull-up". Então, o microcontrolador executa um "laço” inserindo um "0" lógico (GND) na coluna que deverá ser lida e "1" lógico nas colunas que não deseja ler. Assim, quando é pressionada uma tecla na coluna onde existe o "0" lógico, imediatamente a linha referente à tecla assume o valor "0" também. Através da leitura dos bits da porta responsáveis pelas linhas, é possível saber qual delas teve seu valor inicial alterado. Como sabemos qual coluna estava em "0" naquele momento, podemos determinar através de uma tabela, qual tecla foi pressionada.

O leitor deve estar se perguntando: Mas, como garantir que a tecla pressionada era realmente a que desejávamos ler?!?! Simples. A varredura faz isso. A varredura insere nas colunas o valor "O" com uma velocidade muito maior do que uma pessoa pressiona uma tecla. Este valor "O" é inserido na primeira coluna, depois na segunda, e assim por diante até chegar à última. Se nenhuma tecla for pressionada, uma nova varredura será iniciada na busca de uma tecla e, assim, o microcontrolador ficará em um "laço" eterno na busca de uma tecla.

Na figura 3 o leitor tem o esquema elétrico para os testes com a varredura de teclado que pode ser construído pelo leitor, utilizando chaves tipo "push-buttons" normalmente abertas ou aproveitadas de aparelhos fora de uso. É importante salientar que a disposição das linhas e colunas durante a montagem do circuito pode alterar a decodificação das teclas.

 


| Clique na imagem para ampliar |

 

 

As colunas do teclado são ligadas ao PIC na porta B, na parte menos significativa (RBO a RB3). Os diodos D, e D4 fornecem proteção contra curto circuito entre colunas e linhas. As linhas foram ligadas ao PIC também na porta B, na parte mais significativa (RB4 a RB7).

Os LEDs D5 a D5 são do tipo comum e servem para "mostrar" qual tecla foi pressionada (valor de 0 a 15 em binário — apenas a parte menos significativa do byte é mostrada). A decodificação é feita através de uma tabela no programa. Caso a decodificação pareça invertida ou fora da ordem, verifique a posição das linhas e colunas ou ainda, altere o programa (tabela) para que seja mostrado o valor desejado.

O programa "PIC_TEC_F628. ASM" pode ser obtido gratuitamente no silo da revista www.eletronicatotal.com,br na seção "downloads". Seu funcionamento é extremamente simples. Ao ser pressionada uma tecla ele mostrará seu valor nos LEDs na representação "binária", conforme detalhado no texto. Aconselhamos um estudo do mesmo para uma melhor compreensão do funcionamento do circuito. Para isso comentamos todo o programa, para facilitar sua compreensão.

 

 

CONTROLE DE DISPLAY DE CRISTAL LÍQUIDO (LCD)

 

Um display de cristal líquido apesar de parecer complexo, tem sua operação muito simples. A maioria dos displays encontrados no mercado possui recursos internos para facilitar ao máximo o controle dos mesmos, proporcionando uma interface com qualquer microcontrolador. Assim não temos que nos preocupar com a operação interna de um display, mas apenas com os comandos necessários para escrever um caractere, apagar uma linha, ligar o cursor, e muitos outros comandos possíveis (de acordo com cada modelo).

Na figura 4, temos alguns exemplos e tipos de "LCDs"(Liquid Crystal Displays) facilmente encontrados no mercado especializado (lojas de componentes eletrônicos). Estes LCDs são do tipo “caractere”, ou seja, não são gráficos. Os displays gráficos têm seu controle mais complexo e feito de maneira diferente e não serão discutidos neste artigo. Por ora, trataremos apenas do tipo "caractere".

 


 

 

 

Os LCDs tipo caractere possuem algumas subdivisões importantes e que valem a pena conhecê-las. Elas referem-se principalmente a quantidade de caracteres que cada um pode mostrar. Esta quantidade é geralmente demonstrada em "linhas x colunas". Na tabela 1 o leitor poderá ver alguns padrões utilizados com suas divisões em relação a linhas e colunas.

 


 

 

 

Lembrando sempre que o total de caracteres se refere ao número total de elementos que podem ser demonstrados de uma única vez, inclusive espaços em branco. Também é importante salientar que existem muitos outros padrões referentes ao número total de caracteres, sendo recomendável uma consulta aos fabricantes. Sempre que possível o leitor deve consultar os "data books" fornecidos pelo fabricante.

Os displays possuem comandos específicos para cada operação desejada: leitura, escrita, configuração, etc. Estes comandos são passados através de uma linha de dados (pinos DO a D7) de 8 bits (1 byte) e uma linha de controle composta por mais três pinos: EN (Enable), RDNVR (leitura/ escrita) e RS (entrada de dados ou instrução). Na figura 5 o leitor pode observar um display e sua respectiva pinagem.

 


 

 

 

Alguns displays possuem mais que 14 pinos paras as ligações. Os pinos excedentes geralmente são utilizados no controle do "Back Ligth". O "Back Ligth" nada mais é que um conjunto de "leds" posicionados na parte de trás do display. Quando "ligados" permitem a visualização dos dados mesmo no escuro. Todo aparelho celular possui "Back Ligth" em seu display.

É importante que o leitor saiba que a maioria dos "back ligth" disponíveis nos displays tem um consumo de corrente alto e não devem ser ligados diretamente nos pinos de 1/0 de um microcontrolador. Isso queimaria a porta I/O e até mesmo o próprio microcontrolador. Se houver a necessidade de utilizar o circuito "back ligth", use um circuito "drive" conforme demonstrado na figura 6.

 


 

 

Os displays com quatro ou mais linhas devem ser tratados como uma "união" de dois ou mais displays de duas linhas. Estes possuem geralmente dois pinos de habilitação (EN) para selecionar qual conjunto de linhas será usado. Neste caso, o pino 15 habilita as duas linhas superiores e o pino 16 as duas linhas inferiores. O pino "6" não é conectado. Porém, já é possível encontrar displays de quatro linhas e apenas um pino de habilitação. Nesta situação, a mudança de linha é feita através de um comando específico. Se o leitor possuir um display deste tipo, consulte o manual do fabricante para saber quais são estes comandos.

Até aqui o leitor já deve ter percebido que um "LCD" tem internamente um pequeno microcontrolador dedicado, que fará a interpretação dos "dados" recebidos e os transformará em "comandos" internos no display (não entraremos em maiores detalhes sobre isso, pois foge ao propósito deste artigo).

Na tabela 2 o leitor tem um conjunto de instruções compatíveis com a maioria dos displays disponíveis no mercado. Esta tabela também apresenta qual deve ser o dado a ser enviado para o mesmo e o estado nos pinos de controle deste.

Existem outros comandos, mas os mais importantes e mais utilizados foram passados nesta tabela. Para o leitor que tiver interesse em conhecer mais sobre todos os comandos possíveis de um determinado display, é sempre aconselhável uma consulta ao "Data Book" do fabricante do mesmo.

Observando a tabela 2, o leitor nota que para enviar um determinado comando para o display o pino RS é levado ao estado lógico "O", e sempre que desejamos enviar um caractere a ser escrito o mesmo pino é levado ao estado lógico "1". O pino "EN" habilita o display e deve ser colocado em "1" para habilitar e em "O" para desabilitar. O pino RD/WR deve ser colocado em "O" para escrever dados no display e em "1" para ler dados do mesmo.

 


| Clique na imagem para ampliar |

 

 

Na figura 7 o leitor tem o esquema elétrico para os testes com um LCD tipo 16x2. Esse display é facilmente encontrado no mercado especializado e até mesmo em "sucatas" fora de uso. O circuito conta ainda com um 'trimpot" para regular o contraste do display.

 


| Clique na imagem para ampliar |

 

 

O programa "PIC_DISP_F628. ASM" podia ser obtido na época no site da revista Eletrônica Total. Ele escreve uma frase e uma sequência de caracteres. Mais uma vez, recomendamos o estudo do programa para uma melhor compreensão do funcionamento do circuito aproveitando os comentários inseridos no programa.

 

 

CONTROLE DE MOTOR DE PASSO

Os motores de passo são amplamente difundidos no mundo da eletrônica / mecatrônica / micro-robótica. Sua precisão, aliada a sua força (torque), fazem deste motor um excelente "posicionador". Eles estão presentes em impressoras, pequenos CNCs, mesas "XY", etc.

Para operar um motor de passo, temos que "ligar" e "desligar" suas bobinas em uma sequência correta. A frequência com que estas bobinas são "chaveadas" (liga / desliga) determinará a velocidade de giro do motor. Para fazê-lo girar em sentido contrário devemos inverter a sequência de chaveamento. Veja a tabela 3, nela descrevemos a sequência para operar um motor de passo "unipolar" de seis fios (duas bobinas independentes).

 


| Clique na imagem para ampliar |

 

 

Os valores iguais a "1" equivalem à bobina ligada e os valores iguais a "0" equivalem à bobina desligada. A análise da tabela é feita do "passo 1" para o "passo 4". A partir desse ponto a operação é repetida para manter o motor em funcionamento.

Os motores de passo têm seu passo dado em graus. Por exemplo, um motor de 7,52 por passo precisa de 48 passos para dar uma volta completa.

 

 

Quantidade de passos= 3609/quantidade de graus por passo

 

 

Para fazer o motor girar no sentido contrário, devemos fazer a análise inversa na tabela. O primeiro passo passa a ser o de número "4" e o último o de número "1". Esta operação é repetida até conseguirmos o número de voltas desejado.

Infelizmente, não existe uma padronização entre os fabricantes de motores de passo que nos permita (através de um código de cores) identificar as ligações de suas bobinas internamente. Para isso o leitor pode optar entre duas soluções:

- Verificar o "data book" do fabricante

- De posse de um multímetro, na posição de leitura de resistências, fazer uma análise de seu motor. A figura 8 demonstra como isso é feito.

 


| Clique na imagem para ampliar |

 

 

 


| Clique na imagem para ampliar |

 

 

Na figura 9 o leitor tem o esquema elétrico para os testes com um motor de passo de 6 fios unipolar. As chaves "S,", "S2", `S3' são do tipo "push-button" normalmente aberto mini. Os transistores "Q1", "Q2", "Q3" e "Q4: são transistores tipo "darlington" NPN com corrente de trabalho na ordem de 2 A de forma direta e 4 A de pico. É aconselhável o uso de radiadores de calor para os transistores.

Na mesma figura o leitor tem um esquema de uma fonte. O ponto de 12 V servirá para alimentar o motor de passo e o ponto de 5 V para alimentar o PIC. O LM7805 também deve ter um radiador de calor para evitar sobre aquecimento.

O leitor deve ter notado que neste artigo, não fornecemos qualquer "lay-out" para confecção de circuito impresso. Isso porque nenhum deles é necessariamente um projeto específico. Como dito no começo do artigo o aproveitamento dos mesmos deve ser feito através de estudos com o microcontrolador PIC16F628A e também em outros circuitos dos leitores. Para testar os circuitos e programas, utilize uma matriz de contatos para as montagens.

 

 

CONCLUSÃO

Neste artigo, o leitor aprendeu como é importante manter uma biblioteca de informações a respeito de um determinado microcontrolador. Isso pode ser a chave do sucesso de um projeto comercial que, como muitos outros, têm um prazo um tanto curto. Estudar e alterar os programas apresentados ajudará a fixar o aprendizado, além do que o leitor também poderá misturar os circuitos e programas para buscar novas alternativas. Esperamos ter contribuído com todos aqueles que procuravam por soluções práticas com microcontroladores e pensamos trazer outros circuitos práticos nos próximos artigos para a biblioteca do leitor. Fique atento e até a próxima!