Olá amigos, recentemente fui apresentado ao PCF8574, com o objetivo de comunicar um ESP8266 com um display de lcd. No início tive um bom resultado mas misteriosamente a partir de um certo momento começou a dar tudo errado, e não mudei nada.

Neste momento resolvi retroceder um pouco, e entender o básico deste CI, e das bibliotecas que devo usar. Montei um circuito simples, pra aceder LEDs nas saídas do PCF8574. Quando ligo o anodo dos Leds em VCC e o catodo no PCF, funciona perfeitamente, ou seja, o PCF trabalhando como GND pros LEDs, mas acontece que o contrario não funciona, quanto ligo o catodo direto em GND, e o anodo no PCF.

Fazendo medições notei que quando a saída do PCF está em LOW, tem 5V entre a saída e VCC, mas quando ela está em HIGH, tenho apenas 1,4V entre ela e GND.

Alguém saberia me dizer o motivo desta queda? Não era pra ter 5v? Já testei 2 chips diferentes, acredito que não estejam com defeito.

Outra coisa que me intrigou foi que quando uso fonte externa nada funciona, só funciona da alimentação do próprio arduino. Da pra entender?

As ligações estão feitas todas de acordo com os tutoriais e o Datasheet do dispositivo. Estou usando o endereço 0x27, Vcc direto em 5V, Vss direto em GND, SCL e SDA com pull-up de 2k2, e os Leds com resistores limitadores de corrente.

Exibições: 1057

Responder esta

Respostas a este tópico

Observe a máxima corrente que o CI pode fornecer.

Em sink, tipico 25mA e em source máximo 300uA.

Quando vc usa alimentação externa, você está interconectando os GND?

Tem razão, esse dado me passou batido. Na verdade eu interpretei errado, vi a corrente da alimentação e interpretei sendo das I/Os.

Então na verdade ele não funciona em source para leds?

Quanto a.alimentação externa eu liguei os gnds e funcionou, obrigado!

Oi RMM, boa noite.

Para acender um LED usando o PCF8574, você deve:

ligar um resistor (+- 1K), entre o +5V e o pino que quer usar, e então ligar o positivo do LED

entre este pino e o Gnd.

Se você quiser evitar maior corrente, pode por um resistor de 1k também em série com o LED.

Testei aqui e funcionou.

Segue anexo um código que escrevi para testar as portas com LEDs.

Rui

Anexos

RMM, segue esquema da porta do PCF8574.

Rui

Faz sentido seu esquema RV, um caso a se pensar.

O LED ficou realmente apagado, ou ainda teve algum brilho (bem fraquinho)?

A tensão sobre o LED ficou em 0V, quando apagado?

Oi FH, boa noite, 

Se voce ligar o LED sem o resistor, a corrente será de 100ua, limitada por um sensor

interno ao CI, e fica bem fraquinho.

Existe outra maneira de ligar o LED.

Rui

Assim:

Olá RV.

Como eu citei,  current sinking é o mais indicado, pois o NMOS consegue controlar melhor a corrente.

No seu primeiro caso, creio que dá para usar também, mas eu recomendo colocar mais um resistor, entre o LED e o Pino do CI, para limitar a corrente do PMOS e não deixar ele trabalhar estressado, se não ele pode "pedir arrego".

Não diretamente, use um transistor, uma porta lógica (que suporte a corrente do led) ou um ci drive transistor (serie ULN, pode ser desperdício), no final ainda vai ser um sink, mas acionado por HIGH, vai ter mais hardware.

Mas por que você não deixa assim?

Maravilha, adoro essas discussões, aprendo bastante. 

Como eu disse na verdade esse tópico foi só a título de aprendizado. Meu objetivo mesmo é controlar um LCD de 5v com um ESP8266. Mas ainda não ta funcionando nem com o ATmega 348p. Comprei outro display (o terceiro) pra ver se funciona. Pois já usei dois arduinos, varias bibliotecas diferentes, esquemas diferentes e nada. 

Qualquer coisa volto aqui. 

Muitíssimo obrigado!!!!

RMM, bom dia.

Você é um cara de sorte. kkkkk

Estou desde sexta feira tentando entender melhor o PCF8574 e suas bibliotecas.

Pra começar procurei entender melhor o PCF8574, e pra isto escrevi um pequeno code.

Este code liga e desliga todas as porta do PCF, podendo assim ser usado para testar o PCF.

Ele só precisa da biblioteca  wire.h.

Vou anexa-lo aqui.

Depois testei o meu LCD usando um código bem simples.  "Hello old world" kkkkk

Depois que certifiquei que o meu PCF estava ok e que o LCD também estava ok,

parti para as bibliotecas.

Encontrei basicamente 3 tipos de biblioteca.

Uma no site do arduino: http://playground.arduino.cc/Code/LCDi2c

aqui tem 2. . Uma usa os pinos :---------------------BL-EN-RW-RS-D4-D5-D6-D7            

                                                                     7   -4   -5   -6   -0  -1  -2  -3

E a outra usa os pinos                                     3   -2   -1  -0   -4   -5  -6  -7   .

Esta biblioteca, com a IDE 1.6.6, só mostrava a primeira letra de cada "print",

mas funciona corretamente na versão IDE 1.0.6.

Encontrei outra em outro site, mas com os mesmos problemas da anterior.

Mas encontrei uma em que podemos definir quais pinos do PCF quer usar em quais

pinos do LCD, e funcionou corretamente na IDE 1.6.6.,  

Site https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads

Usei a versão 1.3.4.

Até montei em um proto de soldar um modulo I2C/LCD, e está funfado maravilha.

Boa sorte novamente.  

Rui

Anexos

Maravilha meu amigo! Minha intensão era exatamente essa, testar o PCF e o display separadamente e depois juntar. PCF ok! Achei que estava com problemas devido a baixa corrente em source, mas como foi colocado isso é normal. 

Agora acontece que o display não está funcionando, nem direto no arduino. Testei dois, um de 16x4 e outro de 16x2, agora comprei outro e estou esperando chegar. Mas os display são novos, vou ficar muito triste se estiverem queimado. 

Uma pergunta: a versão da IDE pode ser a causa de algum mau funcionamento em nosso projetos? Estou usando a mais recente, 1.6.9. 

Vou baixar essa biblioteca, NewLiquidCristal. Gosto disso, de vc poder escolher as saídas, vc tem mais autonomia, principalmente na hora de projetar um PCI. O que pretendo fazer assim que conseguir fazer funcionar. 

Como faz pra definir os pinos? Vc pode me passar um exemplo?

Tive um certo progresso hoje caro Rui, depois de testar umas 5 bibliotecas diferentes, uma delas funcionou, porém como nem tudo são flores, teve um pequeno desarranjo.

O display é 16x4, as duas primeiras linhas funcionaram ok, a terceira e a quarta, escrevem sempre 4 dígitos depois daquele que foi programado. Por exemplo, se mando escrever no dígito zero, ela escreve no 3, se mando no 1, escreve no quatro, e assim por diante. E os dígitos anteriores ficam apagados.

E pra piorar essas duas últimas linhas, estão com o brilho oscilando, principalmente os últimos dígitos da última linda. Fica meio que pistando muito rápido.

Acredito que seja problema de hardware, ou será software?

Enfim, resta esperar o display novo chegar para tirar a dúvida.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço