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.

Exibições: 196

Anexos

Responder esta

Respostas a este tópico

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. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço