Sari la conținut
ELFORUM - Forumul electronistilor

control placa relee folosind PCF8575


Vizitator arno0548

Postări Recomandate

Vizitator arno0548

Salutare,

Incerc sa controlez o placa cu 4 relee (http://www.robotshop.com/en/4-channel-5v-relay-module.html) folosind un PCF8575

http://www.robofun.ro/PCF8575_I2C?search=PCF8575

Am reusit sa conectez PCF8575 la Arduino (Uno) folosind busul I2C, astfel

SDA > A4

SCL >A5

Vcc>5V

Ground>Ground

 

Intre SDA/SCL si Vcc am folosit rezistori de 10k

 

Am setat porturile de pe PCF  ca output, am conectat placa cu relee, la PCF astfel:

Vcc>Vcc

Ground>Ground

Chanel 1-4> PCF port 1-4

 

folosind libraria Wire.h am scris


void setup(){  Wire.begin();Wire.beginTransmission(0x20);Wire.write(B00000000);Wire.write(B00000000);Wire.endTransmission();} void loop(){Wire.beginTransmission(0x20);Wire.write(B00000000);Wire.write(B00000000);Wire.endTransmission();delay(1000); Wire.beginTransmission(0x20);Wire.write(B11111111);Wire.write(B11111111);Wire.endTransmission(); delay(1000);}  

Masurand cu un voltmetru intre ground si PCF port 1, inregistrez alternativ 0V si 4.95V

Cu totate acestea, releele nu misca...

 

Ma poate ajuta cineva cu o sugestie?

Multumesc!

Editat de arno0548
Link spre comentariu
  • Răspunsuri 12
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Vizitator arno0548

Ledurile nu fac nimic....

Placa are leduri pentru fiecare releu, care se aprinde cand releul este inchis.

Am conectat Vcc de la placa la Vcc de la arduino.

Am conectat placa direct la arduino si am folosit pinul 2 (Arduino) > Channel 1 de pe placa. Asa a functionat. Am pus pinul pe HIGH, releul s-a inchis (aprins led, facut click), l-am pus pe low, s-a deschis (stins led, facut click)

Editat de arno0548
Link spre comentariu
Vizitator arno0548

Adresa este pe 7 biti

|0100|A0|A1|A2|

 0100000 =0x20 = 32

functia Wire.beginTransmission returneaza 0 (success) la fel si celelalte functii Wire

Editat de arno0548
Link spre comentariu

eu m-am jucat cu PCF8574A adineauri, pare asemenator.

 

incearca i2c scanner, vezi ce adrese ai conectate

#include <Wire.h>void setup(){  Wire.begin();  Serial.begin(9600);  Serial.println("nI2C Scanner");}void loop(){  byte error, address;  int nDevices;  Serial.println("Scanning...");  nDevices = 0;  for(address = 1; address < 127; address++ )   {    // The i2c_scanner uses the return value of    // the Write.endTransmisstion to see if    // a device did acknowledge to the address.    Wire.beginTransmission(address);    error = Wire.endTransmission();    if (error == 0)    {      Serial.print("I2C device found at address 0x");      if (address<16)         Serial.print("0");      Serial.print(address,HEX);      Serial.println("  !");      nDevices++;    }    else if (error==4)     {      Serial.print("Unknow error at address 0x");      if (address<16)         Serial.print("0");      Serial.println(address,HEX);    }      }  if (nDevices == 0)    Serial.println("No I2C devices foundn");  else    Serial.println("donen");  delay(5000);           // wait 5 seconds for next scan}
Link spre comentariu
Vizitator arno0548

Se pare problema e mai "adanca"...

Initial am masurat tensiunea intre PCF8575 port 1 (setat pe HIGH) si ground fara a avea conectata placa cu relee.. asa am citit 4.9V.

Dupa ce am conectat placa, Channel 1> PCF8575 Port 1, am pus port 1 pe HIGH, am citit intre Channel 1 si ground.. 0.875V..  total insuficient pentru a "impresiona" tranzistorul sa inchida releul...

Problema se pare ca e circuitul de pe placa, care, conform schemei (http://www.robotshop.com/media/files/pdf/schematic-shd020.pdf) mai are ceva sarcini inainte de transistor (dintre care un rezistor de 10k.). In plus, PCF8575 este in esenta un IC cu colectorul in gol (deschis) si, se pare nu are cum sa conduca curent suficient...

Link spre comentariu

Dacă schema plăcii cu relee este cea postată , 100kΩ nu rezolvă nimic . După cum se vede din schema internă a lui PCF8575 există deja un pull up de 100µA ( 50kΩ) . Ca să asigurăm 1mA în baza tranzistorului (Depinde de sensibilitatea releelor si de beta tranzistorului . 1mA este , cred , acoperitor.) trebuie să avem mai puțin de 3,3 kΩ. 

Link spre comentariu
Vizitator arno0548

Solved,

Am folosit un tranzistor PNP, emitter la 5V, baza la iesirea din PCF8575 printr-un rezistor de 10k, iar colectorul la releu (canal 1). Astfel cand iesirea PCF este low (0), releul se inchide (aprins), iar cand PCF este HIGH (1), releul se deschide (stins).

 

(Rezolvarea a fost sugerata de Paul__B pe forumul arduino.cc)

Link spre comentariu
  • 4 săptămâni mai târziu...

Probabil din cauza ca led-urile sunt conectate la intrarea in modulul relee, dupa cum se vede in poza, si nu in paralel cu bobinele releelor. Aceasta face ca iesirea PCF sa fie partial scurtcircuitata spre masa. Scoate led-urile si placa va functiona normal.

Scuzati, acum am vazut data ultimului post. Din pacate sectiunile de electronica nu sunt atat de active precum cele de la bodega.

Editat de one
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări