Bom dia mestres,
estou num projeto onde uso o circuito integrado pcf8574 expansor de I/O. Nesse projeto o pcf está configurado para entradas e saidas, onde as entradas uso em pull_up (conforme imagem circuito). Porém ao conectar o Vo no pino dedicado do pcf ele fica em 0V.
Na tabela da imagem podemos ver que sem conectar o pcf8574, o circuito comporta como esperado.
Ao fechar a chave B2 o problema começa.
Alguém já se deparou com esse problema?
OBS.: todos os componentes do circuito estão funcionando, e o software está configurando o pcf de modo correto. Se eu tirar o resistor e colocar 5V direto no P1 o pcf entende a entrada.
Desde já agradeço a ajuda.
Tags:
Boa tarde,
Informe os valores dos resistores e o modelo do acoplador ótico.
Pode ser que a polarização do acoplador esteja incorreta.
Elimine a chave B2 pois ela é desnecessária.
Boa tarde,
Resistor opto = 560R a 1K5
Resistor Pull_Up = 1K a 10K
As chaves foram somente para exemplificar o que acorre.
Opto PC817 e EL817, tbm usei o 4N25 e tomei cuidado com a polarização.
Você precisa estudar o datasheet para fazer a montagem correta :
http://www.everlight.com/file/ProductFile/EL817.pdf
Vled = 1,2V e Iled = 20 mA
Vce = 0,1V e Iceo = 10 mA (minha sugestão)
Faça os cálculos.
Murta,
vamos desprezar o opto.
Vamos imaginar que exista somente a parte do pull_up.
5V
|
|
Res
|
| _____________P1(PCF8574)
|
|
B2
|
GND
mesmo assim o pcf não 'entendi' a entrada em nivel baixo/alto.
Então deve ser erro de programação.
Usou qual valor de resistor para o pullup da interface I2C? Esta usando Arduino?
Estou usando esp8266.
Os resistores de pull_up do i2c estão conforme datasheet do pcf8574 no valor de 10K.
Código:
#include "Arduino.h"
#include "PCF8574.h"
// Set i2c address
PCF8574 pcf8574(0x39);
void setup()
{
Serial.begin(115200);
// Set pinMode to OUTPUT
pcf8574.pinMode(P0, OUTPUT);
pcf8574.pinMode(P1, INPUT);
pcf8574.begin();
}
void loop()
{
int status;
pcf8574.digitalWrite(P0, HIGH);
delay(1000);
pcf8574.digitalWrite(P0, LOW);
delay(1000);
status = pcf8574.digitalRead(P1);
Serial.print("Estado entrada: "); Serial.println(status);
}
Se eu coloco o P1 direto no 5V, imprimi na serial : Estado entrada: 1
Se eu coloco o P1 direto no 0V, imprimi na serial : Estado entrada: 0
Quando coloco o resistor de Pull_up ele so imprimi : Estado entrada: 0
Boa noite
Tudo errado ! Espero que ainda não tenha queimado o seu ESP8266.
O ESP8266 utiliza sinais digitais de 3,3V.
Por sorte sua, o PCF8574 também pode trabalhar com 3,3V
Os resistores de pullup da interface I2C devem ser de 3,3K ohms.
O circuito de saída do acoplador otico deve usar 3,3V também.
O circuito do led do acoplador ótico pode continuar com os 5V.
Corrija isso e depois nos informe.
Informe também o link da biblioteca PCF8574 que usou para o ESP8266.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por