Eu já tinha visto de relance um destes displays na Santa Efigênia. Recentemente o meu amigo Luciano Ramalho comprou alguns para montar um painel para o seu Dojo Arduino e encontrou algumas dificuldades ao interfaceá-lo ao Arduino. Neste post documento as minhas experiências e apresento alguns circuitos para controle tanto da versão anodo comum como da versão catodo comum.
Analisando o Datasheet
Os datasheets dos displays podem ser vistos aqui.
As "Características Absolutas Máximas" nos trás uma informação importante: a máxima corrente direta (contínua) suportada pelos LEDs é de 30mA.
Nas "Características Opto-elétricas" observamos que a tensão típica conduzindo (Vf) do LED vermelho é de 1.8V.
Um detalhe importante que pode passar desapercebido é o "Diagrama Elétrico Interno", ao lado das dimensões mecânicas. Neste diagrama é indicado que os segmentos possuem 5 LEDs em série e o ponto decimal um único LED. Isto é crucial. Com o segmento aceso, a tensão sobre os 5 LEDs será da ordem de 5*1.8 = 9.0V. Portanto não será possível acender um segmento diretamente a partir de uma saída digital de um microcontrolador operando a 5V (como o Arduino).
Primeiros Testes
O objetivo destes primeiros testes é confirmar que lemos corretamente o datasheet. Vamos tentar acender um segmento e o ponto decimal diretamente usando uma fonte. Para evitar danificar o display, vamos colocar um resistor de valor relativamente alto em série com o display. No meu caso usei uma fonte de 12V e um resistor de 1K (o que limita a corrente a um máximo de 12 mA mesmo com o display em curto).
Com um multímetro, conferi a tensão da fonte e medi a tensão sobre o display. O resultado confirmou que o segmento possui 5 LEDs, o ponto decimal apenas um; a tensão medida no LED foi exatamente os 1.8V ditos como típicos no datasheet.
Controlando pelo Catodo
Vamos começar pelo circuito mais simples, em que o anodo comum dos LEDs é ligado ao positivo da fonte e o catodo de cada segmento e ponto decimal é ligado a um resistor. Acendemos os LEDs ligando a outra extremidade o resistor ao negativo da fonte ("terra").
Supondo que queremos uma corrente de 20mA, o resistor de cada segmento deverá ser de (12-9)*1000/20 = 150 ohms. Já o resistor do ponto decimal deverá ser de (12-1.8)*1000/20 = 510 ohms.
Como fazer para ligar ao terra o resistor com um Arduino? Uma primeira ideia seria ligar o resistor diretamente a um pino do microcontrolador. O ATmega328 do Arduino suporta até 40mA por pino e 200mA no total. Com todos os LEDs acesos (pinos em nível baixo), teremos um corrente total de 160mA, o que está dentro das especificações (mas vai exigir uma boa dissipação de calor no microcontrolador). Entretanto, ao colocar a tensão de saída em nível alto (5V), não vamos conseguir apagar o ponto decimal; ele acenderá com uma corrente de (9-5-1.8)/510 = 4,3mA. O ideal é usarmos um transistor NPN, como o 2N2222:
Neste circuito, um nível alto no resistor de 1K fará o transistor conduzir, acendendo os LEDs. Um nível baixo (ou se ficar em alta impedância) abrirá o circuito, apagando os LEDs.
Controlando pelo Anodo
O controle pelo anodo é um pouco mais complexo. Em primeiro lugar, ao invés de um transistor NPN precisamos usar um PNP. O controle deste transistor é o contrário do NPN: um nível baixo faz o transistor conduzir e um nível alto abrirá o circuito. Para complicar, neste contexto um nível alto é próximo à tensão da fonte do display (12V). Portanto não dá para ligar diretamente a base do transistor a uma saída do Arduino. A solução é colocar um transistor NPN na base do PNP, chegando ao nosso circuito final:
4 comentários:
O ULN2003 faz bem esse tipo de trabalho. Parabens pelo blog.
Sim, o ULN2003 pode ser usado, mas somente para o controle por catodo.
el 2n2907 mostrado en la imagen no es PNP, es NPN, la imagen de referencia esta mal
As fontes que eu consultei dizem que o 2N2907 é PNP: https://pt.wikipedia.org/wiki/2N2907, https://en.wikipedia.org/wiki/2N2907 e https://www.st.com/resource/en/datasheet/cd00003088.pdf (só para mencionar algumas). O 2N2907 é o complementar do 2N2222.
Postar um comentário