Depurando um monitor LCD 16x2 em um Arduino

9

Eu tenho um monitor LCD 16x2 padrão (eu acredito que seja compatível com Hitachi HD44780 - veja o resumo e as especificações abaixo), conectado a um Arduino Uno usando 4 pinos de dados, conforme descrito aqui , embora eu tenha adicionado 2x resistores de 220ohm em paralelo (ou seja, um Resistor de 110ohm) no pino 16 (terra da luz de fundo) e substituiu o pote por resistores estáticos para criar 4V no Vo.

Em resumo, o RW é conectado ao terra, e RS, Enable e Data4-7 são conectados aos pinos do Arduino, enquanto os Dados 0-3 estão flutuando.

Eu tenho outras coisas (sensores, um transistor com um SSR opto-isolado e um relé de rede, alguns botões) conectados a diferentes pinos do Arduino. O código que eu uso grava texto na tela várias vezes por segundo e, normalmente, a tela funciona perfeitamente.

No entanto, quando o relé fecha (leva cerca de 10ma e é controlado por um transistor que por sua vez é controlado por um dos pinos do Arduino), às vezes o LCD fica distorcido. Ele permanece distorcido normalmente até o próximo relé fechar, mas às vezes quando o relé é aberto, ou depois de mais alguns ciclos de abertura / fechamento para redefinir. O garbling sempre inicia e para ao mesmo tempo que o relé abre ou fecha.

Por "ilegível", quero dizer que toda vez que escrevo para ele após ser ilegível, em vez de escrever caracteres em inglês, recebo uma sequência de caracteres que normalmente não consigo identificar na folha de dados (embora alguns possam). Essa seqüência de caracteres distorcidos tende a se mover para a esquerda na tela enquanto escrevo um novo texto no LCD.

Estou confiante de que não é o próprio Arduino que está ficando confuso, enquanto escrevo o mesmo texto no monitor Serial ao mesmo tempo e não é ilegível.

Desde então, experimentei conectar o pino RW a uma saída do Arduino e o Data0-3 ao terra, mas isso não ajuda. Alimentei o dispositivo inteiro com uma bateria de 9V ou com USB, e isso não ajuda. Troquei a bateria ... nenhuma mudança.

A única coisa que parece funcionar é não ter nenhuma carga conectada ao relé, mas isso anula o objetivo :-)

Não tenho um analisador de sinal ou algo mais sofisticado que um multímetro, um laptop e um arduino ... Alguém tem alguma dica para me ajudar a depurar isso?

Folha de resumo do LCD: http://oomlout.com/LCDD/LCDD-SUMM-BC1602A.pdf

Especificação do LCD: http://oomlout.com/LCDD/LCDD-DATA-BC1602A.pdf

Exemplo de texto ilegível: texto ilegível

Richard Russell
fonte
11
Tente adicionar um capacitor de pelo menos 1 uF aos trilhos de energia, que é uma extremidade do capacitor em Vcc e a outra em GND. Tenha cuidado com a direção do capacitor se é uma :) eletrolítica
Abdullah kahraman
11
Isso é realmente bizarro. Você não está dirigindo esse relé grande diretamente, a caixa de relé que você comprou realmente possui um DIP SSR minúsculo que está mudando a energia para o relé grande, e o relé grande sai da linha CA. Como tal, realmente não deve haver como a back-emf gerada pelo relé que atua entrando em seu circuito.
Connor Lobo
Isso cheira a um problema de aterramento / desacoplamento. Você tem muita capacitância em seus trilhos de força na tábua de pão?
Connor Lobo
Além disso, a que distância está a caixa de relés do circuito em tábua de pão? Você pode colocar alguns metros de fio entre a caixa de relés e o resto do circuito? Isso removeria a possibilidade de qualquer acoplamento magnético.
Connor Lobo
Obrigado pelas respostas. Você está certo de que o relé está desacoplado com um SSR e vários outros componentes. Tentei um diodo e depois tentei um capacitor eletrolítico de 220uF entre 5V e GND nos trilhos de energia próximos ao LCD. Nenhum deles parecia ter efeito. Eu ainda não tentei os dois juntos.
Richard Russell

Respostas:

5

Você tem um diodo no seu relé? Caso contrário, os picos indutivos no fechamento / abertura provavelmente causarão problemas.

Quando você interrompe, por exemplo, a corrente que flui através de um relé, ele tenta mantê-lo funcionando; se não houver uma rota de descarga, criará uma grande tensão (essencialmente continuará subindo até encontrar uma rota).
Especificamente, a fórmula é V = L (dI / dT). Isso significa que o indutor se opõe a mudanças de corrente através dele, desenvolvendo uma tensão proporcional à taxa de variação de corrente.

Tente colocar um diodo no relé, orientado para se opor ao fluxo de corrente normal.

EDIT - verificando a página do produto, parece que é um relé "pronto para enrolar" em uma caixa com componentes periféricos adicionados, portanto, é improvável que seja o acima. Mesmo assim, eu tentaria colocar o diodo na potência do relé.
Verifique também se o seu suprimento está bem filtrado, conforme mencionado nos comentários. Coloque alguns capacitores de pelo menos 1uF ao lado dos ICs e do LCD e um limite máximo de> 100uF em algum lugar (tudo da alimentação ao terra)

Oli Glaser
fonte
Veja a folha de dados do "Relé". A entrada para o relé está realmente gerando um pequeno SSR, que alterna a potência real para o próprio relé. Como a entrada para o relé é uma entrada SSR, não vejo um diodo realmente fazendo nada.
Connor Lobo
Eu dei uma olhada (eu não conseguia encontrá-lo antes) e concordo, era apenas um tipo de sugestão "não pode machucar" sem mais informações. Esperamos obter uma atualização em breve sobre como está a desacoplamento adicionada.
precisa
Obrigado pela resposta. Você está certo de que o relé está desacoplado com um SSR e vários outros componentes. Tentei o diodo e depois tentei um capacitor eletrolítico de 220uF entre 5V e GND nos trilhos de energia próximos ao LCD. Eu ainda não tentei os dois juntos.
Richard Russell
Eu também tentei conscientemente mover o circuito CA cerca de um pé do circuito de 5V, deixando apenas o fio do sinal do relé de 5V conectando-o, mas isso não ajudou. Na minha experiência, descobri que uma pequena carga no relé (lâmpada de halogênio de 85W) não parece ter muito efeito no visor, mas se eu tiver uma carga grande (chaleira de 2000W), é mais provável que cause o erro. Eu já vi esse problema com a lâmpada anteriormente, embora com pouca frequência.
Richard Russell
Uma tampa de cerâmica de 1uF ou mais seria melhor para os transientes; adicione uma em paralelo à 220uF. Tente adicionar outra ou mais tampas> 100uF, além de + 5V e GND perto dos fios do relé. Você pode nos mostrar uma imagem melhor da sua configuração?
precisa
1

Eu tive o mesmo problema com uma tela LCD de 16x4 quando o Arduino também controlava uma placa de relé opainelada SainSmart . Tudo funcionou bem com os contatos do relé desconectados. Porém, quando o relé trocou uma carga indutiva (um relé de potência de 24 VCA), o visor ficou distorcido. Nenhuma quantidade de isolamento de energia e capacitores de filtro ajudou.

O que resolveu o problema foi um amortecedor (capacitor e resistor em série) nos contatos do relé SainSmart. Usei um filtro EMI / RFI Cornell Dubilier pré -empacotado para garantir a limpeza, mas um capacitor de 0,1 ufd da variedade de jardins em série com um resistor de 47 ohm provavelmente também funcionaria.

Len Shustek
fonte
posso ver o diagrama de circuitos de como você capacita o capacitor e o resistor com o relé. THanks
Jam Ville
1

Eu estava balançando a cabeça por que meu LCD está "distorcido" e acabou que eu não conectei meu Arduino GND à placa de ensaio (se isso é de alguma ajuda para alguém). Saudações

bobe
fonte
Isso não adiciona muito aos comentários existentes.
David
-1

use um cabo blindado na saída e aterre-o. Isso resolveu o problema para mim.

user25091
fonte