Vai al contenuto
PLC Forum


Problema con driver led PCF8576


Antonello91

Messaggi consigliati

Buon giorno.

Sto provando a instaurare una connessione tramite I2C tra un micocontrollore che opera 3.3V verso il dispositivo PCF8576 (che nel collegamento rappresenta lo slave).

Ho provato ad alimentare il PCF8576 a 3.3V in modo da avere segnali I2C a quel livello di tensione, apparentemente il dispositivo sembra funzionare, infatti le sue linee di uscita sono tutte a livello logico alto (come dovrebbe comportarsi in modo normale), emette il segnale di sincronismo ed il clock. Il dispositivo però da datasheet richiede una alimentazione tra 2 e 9V.

 

Nella comunicazione I2C sembra che il microcontrollore (master) non riceve l'ack dopo aver inviato l'indirizzo.

 

Vorrei chiedervi quindi, il PCF8576 non sta lavorando con quella alimentazione o la causa va ricercata nella programmazione del microcontrollore?

Link al commento
Condividi su altri siti


Cito a memoria, ma credo che il  PCF8576 lavori solo a 5V.

Inoltre ne esistono di 2 tipi (credo sia  PCF8576 N) ed hanno indirizzi differenti: uno ha il bit più significativo a "0", l'altro a "1".

Ti consiglio di leggerti bene il dadasheet del  PCF8576 che stai usando.

 

Quasi certamnte dovrai fare dei traslatori di livello in prossimità del  PCF8576  sul bus I2C

Link al commento
Condividi su altri siti

Grazie!
E' un PCF8576T. Avevo gia provato velocemente l'IC con Arduino che permette di fare prove veloci, ho così potuto vederne per bene il protocollo. Ora sto cercando di trasportare il tutto sul mio microcontrollore che devo integrare nella fase finale. Proverò con un traslatore di livello; pensavo di ricorrere al ST2378E che ha 8 linee ingresso / uscita. Non è specifico per l'I2C ma può andare bene lo stesso?

Ero stato tratto in inganno, dal fatto che a 3.3V il PCF8576T sembrava essere acceso. Come avevo scritto il Sync e il CLK sono comunque emessi regolarmente, ma evidentemente l'interfaccia I2C non sta lavorando.

Link al commento
Condividi su altri siti

Ho dovuto cambiare  IC purtroppo il PCF8576T è definitivamente andato e non riesco a sostituirlo, pare sia andato fuori produzione.
L'ho cambiato con un LC75821 (della Sanyo), ha linea CLK, DATA e CE, ma difatto è una I2C? Ne datasheet non è espressamente indicata e non vedo nei diagrammi temporali la presenza dell'indirizzo ne' alcuna indicazione sul valore dell'indirizzo del dispositivo.

Link al commento
Condividi su altri siti

56 minuti fa, Antonello91 scrisse:

L'ho cambiato con un LC75821 (della Sanyo), ha linea CLK, DATA e CE, ma difatto è una I2C?

No, l'I2C non ha bisogno del CE (chip enable) perchè si basa su un indirizzo presente nel messaggio. A me sembra più una sorta di SPI a 3 fili anzichè 4, plausibile perchè devi solo comandare il chip e non leggere da esso dei dati. Con Arduino puoi usare ad esempio la funzione ShiftOut() per comandarlo.

 

Ciao, Ale.

Link al commento
Condividi su altri siti

3 ore fa, Antonello91 scrisse:

Ho dovuto cambiare  IC purtroppo il PCF8576T è definitivamente andato e non riesco a sostituirlo, pare sia andato fuori produzione

 

Ma no.

Strano è talmente diffuso che sembra improbabile sia andato fuori produzione.

RS ce lo ha disponibile a catalogo.

Link al commento
Condividi su altri siti

Ho notato che i segnali che emetto verso l'LC75821  non hanno una buona integrità dal punto di vista digitiale, presentano delle smussature troppo evidenti (tempi di salita lenti). Purtroppo visto che sto adattando una scheda gia realizzata, non posso intervenire per miglirare dal punto di vista circuitale. Posso però ridurre l'effetto configurando le uscite, nel microcontrollore che genera i segnali digitali, con pull down? O inserire condensatori da 100n vrso massa per eliminare eventuali disturbi?

I segnali digitali nello stato di riposo sono a 0V per questo pensavo al pull down sul micro.

Link al commento
Condividi su altri siti

41 minuti fa, Antonello91 scrisse:

presentano delle smussature troppo evidenti (tempi di salita lenti).

 

Se sono lenti i tempi di salita significa che non c'è pullup.

I fronti "sdraiati" dipendono dalle capacità parassite del sistema. Se è lento il fronte di salita significa che c'è una capacità verso lo zero caricata con una corrente insufficiente. Quindi bisogna mettere un PULL-UP per aumentare la corrente di carica.

Il modo migliore per pilotare questo tipo di segnali è un front end line driver, che tira corrente sia verso lo zero, sia verso il positivo.

Potresti mettere un dispositivo tipo DS8923 in uscita alla schda micro.

Oppure verifica nella configurazione del micro se è possibile avere il pull- up interno, come per arduino e pic.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...