MICROCONTROLADORES
PIC – PRÁTICA - PARTE 4
OS DISPLAYS DE SETE SEGMENTOSOs displays de sete segmentos são compostos, basicamente, de sete led’s internos dispostos de maneira a formar um “dígito”. De acordo com que são “acesos” ou “apagados” é possível demonstrar os números de “0 a 9” e até mesmo algumas letras. Na figura abaixo você tem alguns tamanhos encontrados no mercado.
Na
figura abaixo é possível observar a posição de
cada segmento, sua nomenclatura, assim como sua ligação
através dos pinos pinos. Existem muitos outros modelos, com
pinagens diferentes e até mesmo com mais segmentos. E antes de
usa-los é recomendável uma consulta ao datasheet
do fabricante.
Além
dos tipos, tamanhos, cores e “pinagens” diferentes temos também
que observar a ligação do pino “comum”. Ele pode
ser do tipo “Anodo comum” com ligação no VCC ou
“Catodo Comum” com ligação no GND. A escolha de um
ou outro depende do tipo do projeto, mas um não substitui o
outro. A figura abaix demonstra os dois tipos de ligação.
Como podemos notar, precisamos de sete (ou oito se considerarmos o ponto) pinos de I/O de nosso microcontrolador para ligar um display. Mas e se precisarmos controlar mais que um?! Como fazer se o PIC16F84 só tem 13 pinos de I/O?? Simples usamos o recurso da “varredura”. A varredura não serve apenas para entradas, mas também saídas. Na figura abaixo, temos a demonstração de como isso pode ser implementado. Ligamos todas as linhas dos segmentos juntas. Assim quando enviamos um valor para um display, estamos enviando para todos. O que determinará qual display mostrará o valor é o controle do anodo/catodo. Ao inserir um valor na linha, estando todos os anodos (ou catodos) desligados, nenhum display acende e não temos nenhum valor em nenhuma posição. Porém se ligamos um dos displays através de seu anodo (ou catodo) o valor será apresentado por este display e na posição desejada. Para mostrar um outro valor, em um outro ponto, basta trocar o valor da linha e ligar apenas o display desejado. Podemos assim fazer uma varredura, usando mais de um display e apenas uma linha de dados para sete segmentos. O ponto mais importante é a velocidade com que isso é feito, pois devido à “persistência retiniana” não perceberemos que os valores estão sendo trocados e muito menos que a posição dos mesmos variou. Vemos assim um valor com um número de dígitos, todos mostrados ao mesmo tempo. Em média podemos usar tempos de 5 ms (0,005s) a 30 ms (0,03s), tempos mais que suficientes para enganar nossa visão.
DUAS TAREFAS AO MESMO TEMPOO que proponho neste exercçio é simples. Construiremos um pequeno timer, que contará de 0 a 60 segundos. Parece uma aplicação tola, mas não é. Esta é a base para a construção de um relógio, de um temporizador preciso ou qualquer aparato que necessite do controle de tempo. Esse tempo será demonstrado através de dois dysplays de sete segmentos. Para isso teremos que controlar os dois displays para formar os números de “00” à “60” usando o método da varredura, utilizando um segundo temporizador (5 a 30 ms) para trocar os valores nos displays. Isso, conforme detalhado não será difícil. Agora, como contar o tempo de a a 60 segundos de forma precisa?! Nossa rede elétrica (110V/220V) tem uma freqüência de 60Hz. Ou seja, ela troca sua polaridade sessenta vezes em um segundo. Portanto, se conseguirmos detectar e contar sessenta trocas teremos ao final um valor que representará “1” segundo. O PIC16F84A possui uma entrada para interrupção externa no pino RB0/INT, ou seja, ela pode detectar a troca de um nível nesta entrada. Podemos então detectar a transição de um sinal qualquer de “0” para “1” ou de “1” para “0” de maneira rápida e com a garantida de não perder nenhum pulso. Dessa maneira será possível fazer a varredura dos displays mostrando os valores desejados e “contar” de 0 a 60 segundo ao mesmo tempo (através da interrupção). Veja a figura abaixo para entender melhor como isso será feito.
O CIRCUITONa figura abaixo você tem o circuito elétrico para o exercício proposto. Temos o PIC16F84A com seu resistor de “reset”, o conjunto cristal mais capacitores para o clock e os displays e com seus resistores limitadores de corrente (não podemos ultrapassar a corrente máxima de dreno dos pinos de I/O do PIC, lembra-se?!). Desta vez a alimentação será feita, necessariamente, através de uma fonte. A alimentação por pilhas não será usada, pois já que o circuito precisa do sinal de 60Hz e este será retirado diretamente do transformador redutor, nada mais simples que fazer uma fonte aproveitanto esse mesmo transformador. Obs.: Não tente retirar os 60Hz diretamente da rede elétrica 110V/220V. Além do risco de choque elétrico, você poderá causar um curto circuito na sua rede e também danificará, irremediavelmente, o circuito com o PIC. Siga a montagem conforme descrito aqui e utilize um transformador redutor. O sinal de 60Hz é retirado em um dos pontos do transformador onde a tensão já foi reduzida. Este ponto não deverá ser o ponto de terra (tomada central do secundário no transformador). Em nosso projeto usamos um transformador com “Center TAP” (tomada central) e o sinal pode ser retirado em qualquer um dos pontos de tensão (12V). Os displays utilizados são do tipo “Catodo comum” e pequenos (veja lista de materiais). Para usar um tipo maior, será necessário a construção de um drive com transistores para as linhas, evitando um dreno excessivo de corrente nos pinos de I/O do PIC. A figura abaixo mostra como preparar este drive para displays de “Catodo comum”. O transistor de controle do anodo também deverá ser modificado, por um que suporte uma corrente de coletor/emissor superior a corrente total consumida pelo display. O “beep” (buzzer) é do tipo piezo elétrico, com faixa de alimentação de 12 a 30V. |
Semicondutores CI1 – PIC16F84A-4/P – microcontrolador Microchip
Resistores R1 – 330R (laranja, laranja, marrom)
Capacitores C1,
C2 – 33pF cerâmicos Diversos T1 – transformador 9V+9V ou 12V+12V com corrente
igual ou superior a 300mA |