Collegamento PCF8574AP 74HC540N ULN2803

Buongiorno a tutti.
Ho provato a collegare i tre integrati in oggetto per far funzionare una scheda relè ma ho qualche difficoltà.
Piloto il PCF8574AP con la libreria IOexp e funziona perfettamente: con il tester ho verificato e trovo più o meno 5,8v sui pin settati come "HIGH".
Il problema spunta sul 74HC540N perchè pur ricevendo i volt in ingresso, in uscita mi ritrovo costantemente sui 2,5v.
Qualcuno mi può aiutare a capire dove ho sbagliato?
Grazie

Controlla che entrambi i pin Enable siano collegati a GND, verifica anche la tensione su Vcc del micro.
Se non sbaglio il 74HC540N è invertente. Con l'ingresso HIGH da un uscita LOW e viceversa.
Prova tutte e due le condizioni.

Controlla che entrambi i pin Enable siano collegati a GND

Confermo, sono collegati a GND

verifica anche la tensione su Vcc del micro

Confermo anche questo se parliamo del pin 20 (nella figura in alto a destra). Se misuro con un tester trovo i 5v

Se non sbaglio il 74HC540N è invertente. Con l'ingresso HIGH da un uscita LOW e viceversa.
Prova tutte e due le condizioni.

Ho già provato entrambe le condizioni ma niente da fare...

Ma quindi sembra che i collegamenti siano giusti?
Forse è l'integrato difettoso?

dallo schema non hai colleagto il pin 8 del pcf a GND

Hai ragione ma purtroppo è solo un errore che ho fatto quando ho fatto il disegno, nella realtà il collegamento l'ho fatto, quindi il problema non sta li...
Grazie

Ma perchè non hai collegato direttamente il PCF8574AP all'ULN2803 senza il 74HC540N?

Perché il pilotaggio diretto dell'ULN con il 8574 non va.

Nel senso che il PCF8574AP ha le uscite alte dopo il reset per cui le uscite dell'ULN2803 si accendono per un istante prima che l'Arduino le comandi?

No, è una questione di corrente che non riesce a saturare i darlington dell'ULN, o almeno così era stato spiegato.

PaoloP:
No, è una questione di corrente che non riesce a saturare i darlington dell'ULN, o almeno così era stato spiegato.

è molto strana questa cosa, uno dei grandi vantagi dei darlington è proprio quello di richiedere una bassissima corrente di pilotaggio a motivo della loro elevata hfe, un darlington in genere si pilota con molta meno corrente di un transistor comune.

Bella domanda. In realtà ho provato a collegare l'uln2803 direttamente a al pcf e funziona perfettamente ma ho letto di alcuni che hanno avuto dei problemi.
Tipo, in questa discussione http://arduino.cc/forum/index.php/topic,141419.45.html alla pagina 4 l'utente riciweb dice:

I fotoaccoppiatori, sono un mezzo per poter usare il PCF, che da solo non riesce a pilotare i darlington, dell’ULN2803 sulla scheda relé."

e gli viene appunto consigliato di aggiungere il 74HC540.

in quest'altra discussione Arduino Forum l'utente uwefed dice

ciao Alfa75

Se guardi i dati tecnici, il PCF8574 puó fornire con un livello High solo 100µA. IL ULN2803 ne servono almeno 150µA per inominciare a condurre e ci siamo nella parte proporzionale non di saturazione che vuol dire che la corrente di collettore del transistore d'uscita é limitata dalla corrente di entrata. per arrivare in saturazione e dare 500mA ne servono tipicamente 930µA. Questo ha 2 effetti negativi: che il carico non riceve tutta la tensione e che il transistore di uscita si riscalda tanto visto che tra emettitore e colletore ci sarßá una tensione abbastanza alta; le conseguenze sono o l' utenza non funziona come dovrebbe o il ULN2803 si rompe per surriscaldamento.
Se par caso a te ti funziona la combinazione PFC8574 coen ULN2803 sei fortunato di aver trovato 2 dispositivi con proprietá migliori di quelle garantite dal costruttore, ma io non ci conterei su questo.

Cercando tra la rete ho visto che ci sono diversi progetti che usano direttamente l'uln2803 e il pcf8574; mi posso fidare anche io o è meglio stare sul sicuro ed aggiungere anche il 74hc540 che però non riesco a far funzionare?

Io mi fiderei della risposta di Uwe. :wink:

Effettivamente stavo leggendo il datasheet del PCF8574AP e può dare solo 25 mA 150 µA in uscita e 25 mA in ingresso, forse basta solo usare delle resistenze di pull-up da 1k o 500 hom.

Ma perché non usare un 74HC595 collegato ad un ULN2803?
Si usano 3 pin invece di 2 ma si risparmia un integrato ed i relativi collegamenti nonché l'uso di librerie di terzi. Si fa tutto con shiftOut.

bigjohnson:
Effettivamente stavo leggendo il datasheet del PCF8574AP e può dare solo 25 mA 150 µA in uscita e 25 mA in ingresso, forse basta solo usare delle resistenze di pull-up da 1k o 500 hom.

Ora ho letto anch'io il problema di riciweb e l'approfondimento di Uwe, i dati indicati non lasciano dubbi, però questa idea delle pull-up sarebbe da verificare, se funzionasse basterebbe aggiungere una banalissima rete resistiva sul PCB e sarebbe fatta.
@Pespes: riciweb dice che il problema si verifica quando attiva TUTTE le uscite del PCF e quindi dell'ULN2803, fai la prova e poi prova ad aggiungere, come dice bigj, una R da 1K tra ogni ingresso dell'ULN e 5V e vedi se noti qualcosa.
SOlo che bisognerebbe capire se applicare queste pull-up alle uscite del PCF, cosa provoca quando sono in LOW.

@Pespes: riciweb dice che il problema si verifica quando attiva TUTTE le uscite del PCF e quindi dell'ULN2803, fai la prova e poi prova ad aggiungere, come dice bigj, una R da 1K tra ogni ingresso dell'ULN e 5V e vedi se noti qualcosa.

Ok, appena riesco faccio la prova; se ho capito bene metto a "HIGH" tutte le 8 uscite del PCF e le mando all'ULN e in teoria i relè non dovrebbero eccitarsi, giusto?
Poi faccio la stessa prova ma mettendo le resistenze.

Non ho però capito cosa vuoi dire con l'ultima frase

SOlo che bisognerebbe capire se applicare queste pull-up alle uscite del PCF, cosa provoca quando sono in LOW.

devo fare qualche prova per verifiacre questa cosa?

5/1000 = 0,005
5/500 = 0,01
il pcf può accettare fino a 0,025 mA in ingresso sulla porta quando è low per cui non ci sono problemi.
L'unico dubbio mi viene sull'uln aggiungendo una resistenza da 1k? o 500? sull'ingresso commuta comunque?
Penso di si ma bisogna provare, dipende poi da cosa ci piloti con l'uln se è un relè da 100 mA non ci sono problemi.

I relè sono i finder 40.52:
http://www.finder-relais.net/en/finder-relays-series-40.pdf

Non ci dovrebbero essere problemi, comunque la prova da fare è vedere se ci sono grandi differenze di tensione tra il collettore e l'emettitore dell'uln pilotato direttamente con 5V e con la resistenza da 1k? o 500?, volendo fare le cose pignolescamente si possono usare gli ULN2801 che non hanno la resistenza da 2,7K? sulla base e metterci una pull-up da 1K? con una resistenza di base da 1,7K? o il valore normalizzato più vicino.
Comunque per me va bene anche l'ULN2803, non penso cambi molto.

Vi spiego perche' nel progetto di Riciweb c'e' un 74HC540.

Come gia' detto, il PCF8574 ha dei problemi ad erogare corrente in condizione HIGH, quindi nel suo progetto ( Ardu Acquariun Controller ) usava per pilotare la scheda rele' autocostruita ( con ULN2803 ) dei fotoaccopiatori. I quali avevano il solo scopo di invertire il segnale.
PCF8574 in LOW ( per accendere il rele' ).... fotoaccoppiatore che inverte - ULN2803 che vuole un segnale HIGH in ingresso.
Chiaramente conviene usare un IC-Buffer invertente invece di 8 fotoaccoppiatori, sia per praticita' che per consumi.
Ecco il motivo per cui e' stato inserito un 74HC540.

Ora, collegare un PCF8574 direttamente all' ULN2803 ( come gia' spiegato da UWE ) proprio per le basse correnti erogate, non e' consigliabile.
Quindi converrebbe interporre un IC-Buffer NON INVERTENTE.. ad esempio un 74HC541.
Oppure lasciare tutto cosi' e inviare un LOW per accendere il rele'
Ad esempio con la libreria che usi ( IOexp ), inviare un " variabile.write( Pin, false); " per accendere

PS. Come suggeriva anche UWE, puo' pure essere che il PCF8574 ce la faccia a pilotare l'ULN2803... ma puo' anche morire dopo due gg