Índice:

Display LCD de 5 V com Arduino devido 3,3 V I2C: 5 etapas
Display LCD de 5 V com Arduino devido 3,3 V I2C: 5 etapas

Vídeo: Display LCD de 5 V com Arduino devido 3,3 V I2C: 5 etapas

Vídeo: Display LCD de 5 V com Arduino devido 3,3 V I2C: 5 etapas
Vídeo: Arduino OLED Menu Tutorial (for beginners - Arduino UNO, 128x64px SSD1306 OLED screen, u8g) 2024, Julho
Anonim
Display LCD de 5 V com Arduino Due 3.3 V I2C
Display LCD de 5 V com Arduino Due 3.3 V I2C

Este post tem como objetivo explicar uma maneira mais fácil de usar o Arduino Due (ou outra placa de 3,3 V) com o popular display LCD 16x2 com o módulo adaptador I2C.

O problema inicial é que o LCD precisa de 5 V para que sua luz de fundo funcione corretamente, mas os pinos SCL e SDA devem operar a 3,3 V para se comunicar com o Arduino Due sem causar danos. Para resolver isso, encontrei duas opções:

A solução mais citada é usar um Conversor Lógico de Nível Bidirecional, que de fato resolve o problema. Mas também adiciona outro componente à sua lista e conexões de fiação adicionais em seu circuito

A outra maneira que descobri é simplesmente dessoldar 2 resistores pullup na "mochila do adaptador I2C" do LCD. Além de ser muito mais fácil, possui outras vantagens explicadas na comparação ao final. Este método é o foco principal desta postagem

Suprimentos

Arduino Due

Display LCD 16x2 com módulo adaptador I2C

Ferro de solda

Bomba de solda ou pavio de solda

Pinças

Etapa 1: Origem da Solução

A solução não foi inventada por mim, vi uma sugestão e explicação muito boa no Fórum do Arduino no link abaixo, que reproduzirei neste post.

forum.arduino.cc/index.php?topic=553725.0

Resposta de: david_prentice

Não consegui encontrar nenhum tutorial completo na internet e, por se tratar de um problema muito comum, estou tentando apresentar a solução aqui em detalhes, testemunhar que realmente funciona e adicionar informações que possam mitigar algum ceticismo sobre seus resultados.

Etapa 2: Explicação

Dispositivos

Para que a comunicação I2C funcione, são necessários resistores pullup conectados aos pinos SDA e SCL. Isso ocorre porque os dispositivos apenas tornam esses pinos BAIXOS durante a comunicação. Para representar um ALTO, basta não enviar um BAIXO, e graças aos pullups vai para ALTO. (esse entendimento será muito importante mais tarde)

A "mochila I2C" de LCD tem dois resistores pull-up 4K7 que atendem ao requisito I2C. Mas como eles estão conectados ao Vcc, se você usar 5 V, eles puxarão SDA e SCL para 5 V.

Se você olhar a ficha técnica, verá que, ao contrário das outras placas, a Due já tem resistores pull-up 1K5 integrados em seu SDA principal, pinos SCL, que os puxam para 3,3 V.

Testes

  • Display LCD -> Arduino
  • Gnd -> Gnd
  • Vcc -> 5V
  • SDA -> SDA
  • SCL -> SCL

Se você apenas conectar o LCD no Due (seguindo a fiação acima), os pullups 1k5 (ou 1k0) Due conectados a 3,3 V e os pullups LCD 4K7 conectados ao 5 V resultarão em linhas I2C inativas a 3,7 V (3,6 V com 1k0). Isso não é bom, já que a folha de dados Due estipula uma tensão máxima de 3,6 V para suas linhas de E / S.

Ao testar este cenário, apenas com o LCD, obtive 3,56 V. Adicionando um Módulo EEPROM ao mesmo SDA e SCL, subiu para 3,606 V. Em ambos os casos tudo funcionou normalmente, mas estão longe da tensão ideal níveis considerando o máximo estipulado de 3,6 V.

Então, sim, há uma chance de que funcione exatamente como o meu, sem fazer nenhuma alteração. Mas o nível de tensão ainda está longe do ideal e alguma discrepância no painel Due ou LCD pode fazer com que ele ultrapasse o limite de 3,6 V. (Seria aconselhável testar antes cuidadosamente com um potenciômetro de 20K ou 100K qual é a resistência mais baixa entre 5 V e os pinos SCL / SDA antes de chegarem a 3,6 V, embora o resto da solução seja muito mais seguro e provavelmente mais fácil)

Solução

A solução apresentada é simplesmente remover os resistores pull-up da mochila do LCD, que tentam puxar a linha até 5 V. Então, apenas os resistores pull-up onboard Due permanecerão, puxando as linhas SCL e SDA para 3,3V. Funcionou perfeitamente, mantendo os pinos ociosos em torno de 3,262 V!

As conexões permanecem as mesmas:

  • Display LCD -> Arduino
  • Gnd -> Gnd
  • Vcc -> 5V
  • SDA -> SDA
  • SCL -> SCL

Se você quer saber se o LCD não puxará a linha para 5 V para representar um ALTO na comunicação, lembre-se que no I2C os dispositivos apenas puxam as linhas para BAIXO, sendo o sinal ALTO representado quando não interfere, que será de 3,3 V de os pull-ups a bordo do Due.

Além disso, 3,3 V é suficiente para que a mochila I2C seja considerada como um sinal ALTO.

Etapa 3: identificar e remover os resistores

Identifique e remova os resistores
Identifique e remova os resistores
Identifique e remova os resistores
Identifique e remova os resistores

A imagem acima mostra em vermelho os resistores pullup que encontrei no meu módulo.

Identificar

Como a mochila do adaptador LCD I2C pode variar, os resistores podem não estar na mesma configuração. Para identificar os resistores pullup, você pode usar um multímetro com um teste de continuidade. Cada resistor pull-up deve ter uma extremidade conectada ao pino SCL ou SDA e a outra extremidade ao Vcc.

No meu caso, havia três resistores 4K7 (472 no código SMD) na placa. Apenas dois deles atenderam aos requisitos acima, ressaltando que esses são os pullups que estávamos procurando!

Por precaução extra (se por algum motivo eles não eram 4K7), também testei os outros resistores e confirmei que nenhum deles satisfazia os requisitos para serem pull-ups.

Retirar

Agora, tudo que você precisa fazer é dessoldá-los! É mais fácil se você tiver uma bomba de solda ou um pavio de solda e uma pinça para ajudar.

Etapa 4: comparação entre soluções

Conversor de nível lógico bidirecional (LLC)

Prós:

Não requer nenhum equipamento de solda ou habilidade

Contras:

Anuncia mais cabos e o LLC na lista de componentes da sua lista

Conexões de Messier com os componentes extras

Um pouco mais caro

Desolder os resistores pull-up do LCD

Prós:

Resultado final mais limpo

Você provavelmente pode fazer isso imediatamente, sem ter que esperar pelo LLC

Especialmente bom se você deseja reduzir a variedade de componentes e a complexidade da montagem em um projeto complexo ou que deseja replicar

Contras:

Altera o circuito do LCD (se você quiser "pronto para usar" com o Uno, já tendo os pullups 4K7, você pode desfazer as alterações resoldando-os)

Etapa 5: Considerações Finais

Espero que este tutorial esclareça esse problema de compatibilidade e algumas de suas possíveis soluções.

Se você tiver alguma ideia de melhoria, melhores explicações, novas soluções, ou encontrou algum erro na postagem, por favor me diga nos comentários!:)

Recomendado: