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:
Respostas:
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)
fonte
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.
fonte
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
fonte
use um cabo blindado na saída e aterre-o. Isso resolveu o problema para mim.
fonte