Handmades</center>
 
*
Bem-vindo, Visitante. Por favor faça o Login ou Registro. 21 de Novembro de 2024, as 18:34:23


Login com nome de usuário, senha e duração da sessão


Páginas: [1]   Ir para o Fundo
  Imprimir  
Autor Tópico: Display 2.3" com arduino  (Lida 12189 vezes)
nillo
Iniciante
*
Offline Offline

Mensagens: 185

Obrigado
-Dado: 5
-Recebido: 0



« : 07 de Janeiro de 2020, as 12:44:40 »

Estou utilizando um Arduino com o CI4511 para controlar um display de 7 segmentos de 2.3 polegadas (LSD230AY-20) cátodo comum. Pelas pesquisas e teste que realizei esse display trabalha com 8v / 5-10mA em cada segmento. Dessa forma estou alimentando o 4511 com 12v e utilizando resistores nos segmento para limitar a corrente. O problema que tenho é para "casar" (TTL -> CMOS) as saídas do arduino (5v) com as entradas do 4511 (9v ou mais para esses Vdc=12v). Qual seria a solução mais simples?
Registrado
xformer
Administrator
DIY Freak
******
Offline Offline

Sexo: Masculino
Mensagens: 6.287

Obrigado
-Dado: 71
-Recebido: 2049


e^(i x pi)+1=0


WWW
« Responder #1 : 07 de Janeiro de 2020, as 13:57:10 »

Você pode fazer um adaptador de níveis lógicos com transistores NPN comuns:



Se não quiser alterar o firmware do Arduino e manter a lógica usada pra enviar o código BCD, então precisa de dois estágios inversores. Se você puder alterar o programa e inverter a lógica (o que era 1 vira 0 e o que era 0 vira 1 na porta do Arduino) então fica mais simples e pode usar só o estágio inversor.

« Última modificação: 07 de Janeiro de 2020, as 13:59:24 por xformer » Registrado

O que se escreve com "facilidade" costuma ser lido com dificuldade pelos outros. Se quiser ajuda em alguma coisa, escreva com cuidado e clareza. Releia sua mensagem postada e corrija os erros.
nillo
Iniciante
*
Offline Offline

Mensagens: 185

Obrigado
-Dado: 5
-Recebido: 0



« Responder #2 : 07 de Janeiro de 2020, as 16:01:10 »

Obrigado Xformer. Alterar o software para trabalhar com lógica invertida não é um problema para mim. Vou aproveitar que tenho alguns BC337 e tentar implementar a segunda opção.
« Última modificação: 10 de Janeiro de 2020, as 11:19:34 por nillo » Registrado
nillo
Iniciante
*
Offline Offline

Mensagens: 185

Obrigado
-Dado: 5
-Recebido: 0



« Responder #3 : 10 de Janeiro de 2020, as 11:19:49 »

Obrigado Xformer. Alterar o software para trabalhar com lógica invertida não é um problema para mim. Vou aproveitar que tenho alguns BC337 e tentar implementar a segunda opção.

Funcionou perfeitamente!!
Agora só preciso multiplexar 8 display desses.
Registrado
Questão
Usuário suspenso
Iniciante
*
Offline Offline

Sexo: Masculino
Mensagens: 118

Obrigado
-Dado: 0
-Recebido: 16



« Responder #4 : 10 de Janeiro de 2020, as 11:40:22 »

  Legal!

  Repara que você não precisa replicar esse driver, é só botar uma chave em cada cátodo e ligar tudo junto.
Registrado
nillo
Iniciante
*
Offline Offline

Mensagens: 185

Obrigado
-Dado: 5
-Recebido: 0



« Responder #5 : 11 de Janeiro de 2020, as 16:36:18 »

  Legal!

  Repara que você não precisa replicar esse driver, é só botar uma chave em cada cátodo e ligar tudo junto.

Eu fiz exatamente isso. Funcionou, porém achei que o brilho ficou um pouco fraco.
Registrado
xformer
Administrator
DIY Freak
******
Offline Offline

Sexo: Masculino
Mensagens: 6.287

Obrigado
-Dado: 71
-Recebido: 2049


e^(i x pi)+1=0


WWW
« Responder #6 : 11 de Janeiro de 2020, as 18:12:43 »

Quando a multiplexação é de muitos displays, geralmente o brilho fica fraco porque o tempo em que cada display fica ativo é cada vez menor quanto mais displays são multiplexados.
No caso de 8 displays, cada display fica ligado por apenas 1/8 do tempo ou 12,5%.  O que se pode fazer é aumentar a corrente em cada segmento. Se o display tem segmentos que suportam 10mA em modo contínuo, em tese ele suportaria até uns 80mA durante 12,5% do tempo (depende da frequência de multiplexação) de forma que na média pelo tempo resultasse no mesmo brilho. Só que as saídas do 4511 só conseguem fornecer 25mA para cada segmento então há a limitação nesse sentido. 

Tente diminuir o resistor limitador de corrente entre o 4511 e os segmentos (calcule o valor adequado) para que a corrente seja de 25mA e não de 10mA.   
Os transistores chaveadores (os que vão ligados no comum de cada display) precisam ter baixa tensão Vce de saturação e a corrente de base precisa ser suficiente para resultar na corrente de coletor de 25mA x 8 = 200mA  (pra acender o digito "8" e o ponto decimal). Ou seja a corrente de base vezes o ganho do transistor precisa resultar pelo menos 200mA ( e a corrente de base vai depender do resistor de base, da tensão em nível alto da porta do Arduino e do Vbe do transistor).

Outra opção é dividir a multiplexação de 4 em 4 displays, mas precisa de mais portas e mais um 4511.

Por último, usar um buffer (reforçador de corrente) entre as saídas do 4511 e os leds.

Qual a frequência de multiplexação usada ? 
Registrado

O que se escreve com "facilidade" costuma ser lido com dificuldade pelos outros. Se quiser ajuda em alguma coisa, escreva com cuidado e clareza. Releia sua mensagem postada e corrija os erros.
Questão
Usuário suspenso
Iniciante
*
Offline Offline

Sexo: Masculino
Mensagens: 118

Obrigado
-Dado: 0
-Recebido: 16



« Responder #7 : 12 de Janeiro de 2020, as 14:45:20 »

Se o display tem segmentos que suportam 10mA em modo contínuo, em tese ele suportaria até uns 80mA durante 12,5% do tempo (depende da frequência de multiplexação) de forma que na média pelo tempo resultasse no mesmo brilho.

  Não é bem por aí não. Led's não são lineares, passar oito vezes a corrente não significa que ele brilhará 8 vezes mais. Na verdade o máximo brilho é só um pouco maior que o nominal, e uma corrente muito maior vai destruir o dispositivo quase instantaneamente.

  Recomendo que aumente até o máximo possível a frequência de multiplexação e coloque um potenciômetro no lugar do resistor. Vá aumentando a corrente aos poucos, o brilho vai aumentar até o máximo e depois começar a diminuir. Depois o led vai queimar se continuar. Pare no maior brilho. Isso se estiver disposto a arriscar a vida dos displays. Se não vai ter que usar outra estratégia.

  Tava pensando aqui, xformer, que acha de botar um capacitor em paralelo com cada segmento? Ia aumentar um pouquinho a persistência. Depois faço a conta do valor.
Registrado
xformer
Administrator
DIY Freak
******
Offline Offline

Sexo: Masculino
Mensagens: 6.287

Obrigado
-Dado: 71
-Recebido: 2049


e^(i x pi)+1=0


WWW
« Responder #8 : 12 de Janeiro de 2020, as 17:00:51 »

Estudando a datasheet do display, realmente  cada segmento dele não aguenta 80mA de pico, mas 60mA  a 10% de ciclo ativo e 1kHz de frequência:


E a potência média seria de:


De forma que 60mA x 8.8V x 10% =  52,8mW    com folga para os 220mW máximos.

Mas não teria como acender mesmo com 60mA de pico, já que o CD4511 limita a 25mA.  Mas pode tranquilamente fazer passar os 25mA em cada segmento que não vai queimar.

Sobre o capacitor em paralelo, eu não sei se funciona e nunca vi esse artifício sendo usado. Mas da mesma forma que pode aumentar o tempo de persistência, também vai atrasar o tempo para acender os segmentos, pois os capacitores demorarão para se carregar.
Registrado

O que se escreve com "facilidade" costuma ser lido com dificuldade pelos outros. Se quiser ajuda em alguma coisa, escreva com cuidado e clareza. Releia sua mensagem postada e corrija os erros.
Eduardo
Hand MasterMind
*****
Offline Offline

Sexo: Masculino
Mensagens: 3.669

Obrigado
-Dado: 111
-Recebido: 535


Paricipe da World Community Grid!


WWW
« Responder #9 : 13 de Janeiro de 2020, as 06:46:43 »

Oi Pessoal

Da minha experiência com multiplexação de displays, não precisa por muito mais que a corrente nominal. Normalmente usando a corrente nominal máxima já é o bastante. Você deve varrer todos os displays ao menos 60 vezes por segundo, mas um número bom 75, que dá um brilho mais firme.

Outro ponto que eu custei a descobrir é o tal brilho fantasma. Trata-se de um brilho tênue no display anterior copiando o conteúdo do da frente. Isso acontece porque não houve tempo para que o driver do display desligasse completamente antes da mudança de dados no bus dos segmentos. Então o segredo para uma multiplexação saudável e bonita é desativar o driver do segmento atual, aguardar algo como 10 microsegundos, mudar o conteúdo do bus e então ligar o driver do próximo display.

Se você observar brilho fantasma, aumente o tempo em que os drives ficam desligados. Em geral o brilho fantasma só é observado quando a luminosidade do ambiente é baixa.

Abraços

Eduardo
Registrado

Obsoleto é filho do Custo, não da Melhoria.
nillo
Iniciante
*
Offline Offline

Mensagens: 185

Obrigado
-Dado: 5
-Recebido: 0



« Responder #10 : 13 de Janeiro de 2020, as 16:43:50 »

Realmente eu notei o brilho fantasma que o Eduardo comentou. No começo achei até que tinha alguma ligação errada. Mas após alguns testes percebi que colocando um delay de 1ms entre uma execução e outra resolvia.
Sei que corri riscos, mas após tentar alguns valores de resistores para os segmentos, resolvi deixar ligado direto (sem nenhum resistor) e medir a corrente. Para minha surpresa essa não passou de 3.8mA. Mas parando para pensar acho que faz sentido por conta de estar fazendo algo como um PWM, 12% de 25mA = 3mA, e na verdade estava medindo uma "corrente média". Correto?
Outro teste que fiz foi utilizar um 4511 para cada display e as saídas antes utilizadas para multiplexar configurei como controle da porta latch de cada CI. Funcionou muito bem, porém são necessários 8 CIs.

Só uma observação: como estou testando na protoboard, estou utilizando apenas dois displays, mas realizando os testes no arduino como se estivesse com oito ligados.
« Última modificação: 13 de Janeiro de 2020, as 16:47:44 por nillo » Registrado
Eduardo
Hand MasterMind
*****
Offline Offline

Sexo: Masculino
Mensagens: 3.669

Obrigado
-Dado: 111
-Recebido: 535


Paricipe da World Community Grid!


WWW
« Responder #11 : 14 de Janeiro de 2020, as 09:11:05 »

Um delay de 1ms é até demais só por conta do brilho fantasma. Muitas vezes, apenas um rearranjo do código é suficiente. Por exemplo, antes de fazer qualquer coisa, desliga o driver. Em seguida faz a computação necessária para acertar o bus dos displays, que vão ter um delay também por conta de você estar usando transistores na linha com o decodificador de sete segmentos. Por último, liga o driver do display seguinte.

No meu caso, como não usei decodificador, tive que adotar outras estratégias.

Sugiro que dê uma olhada no meu projeto do contador com PIC10F200. Esse que está publicado tem problema de luz fantasma. Tenho outra versão que não tem mais o problema.

http://www.handmades.com.br/forum/index.php?topic=8424.0

Com arduino dica muito mais fácil de fazer a coisa, mas é interessante saber como acender fogueira com pedras e gravetos.


Abraços

Eduardo
Registrado

Obsoleto é filho do Custo, não da Melhoria.
Questão
Usuário suspenso
Iniciante
*
Offline Offline

Sexo: Masculino
Mensagens: 118

Obrigado
-Dado: 0
-Recebido: 16



« Responder #12 : 14 de Janeiro de 2020, as 14:12:03 »

  Eu lembro de ter visto esse seu contador, na época eu nem era inscrito no fórum... Achei coisa de doido, parabéns!

  Mas como diz um velho sábio, o custo torna as coisas obsoletas. Nesse caso a melhoria também. Hoje em dia você paga mais barato num cortex de 32 bits que num pic/mega 8 bits, daí esses truques geniais acabam não valendo pra muita coisa.


Sobre o capacitor em paralelo, eu não sei se funciona e nunca vi esse artifício sendo usado. Mas da mesma forma que pode aumentar o tempo de persistência, também vai atrasar o tempo para acender os segmentos, pois os capacitores demorarão para se carregar.

Você ia carregar muito mais rápido do que descarrega, porque o resistor apareceria em série na descarga. Mas o resistor morreu... Só se aumentasse a tensão agora. Mas não precisa de tanto, esquece essa gambiarra, se afinar a multiplexação funciona legal.

Registrado
Páginas: [1]   Ir para o Topo
  Imprimir  
 
Ir para:  


Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines

XHTML 1.0 Válido! CSS Válido! Dilber MC Theme by HarzeM
Página criada em 0.041 segundos com 23 procedimentos.
SimplePortal 2.3.3 © 2008-2010, SimplePortal