Ghosting su display 7 segmenti con filamenti LED + 74HC595 + ULN2803
Ciao a tutti,
sto lavorando a un progetto con display a 7 segmenti basato su filamenti LED e sto riscontrando un problema di ghosting che non riesco a eliminare.
Schema progetto
Arduino Nano
RTC DS3231
Encoder KY-040
4× 74HC595 (shift register in cascata)
4× ULN2803APG (driver di corrente)
28× LED filamento 38mm 3V (~20mA ciascuno)
Resistenze da 220Ω in serie a ogni filamento
Boost converter regolabile (testato tra 4V e 8V)
Alimentazione tramite TP5400 → boost
GND comune su tutto il circuito
Cablaggio per ogni cifra
I 7 segmenti sono pilotati dal 74HC595
Le uscite del 74HC595 vanno agli ingressi dell’ULN2803
Le uscite dell’ULN2803 vanno ai catodi dei filamenti
Gli anodi dei filamenti sono tutti in parallelo sul +V del boost
Dettagli ULN2803:
Pin 9 → GND comune
Pin 8 (IN8 non usato) → GND
Pin 11 (OUT8 non usato) → GND
Pin 10 (COM) testato sia scollegato che collegato a +V
Problema
Quando dovrebbe accendersi un solo segmento, gli altri segmenti della stessa cifra si accendono debolmente (ghosting).
Il segmento corretto si accende normalmente alla luminosità prevista.
Buongiorno e benvenuto nella sezione Italiana del forum,
cortesemente, come prima cosa, leggi attentamente il REGOLAMENTOdi detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazioneNELL'APPOSITA DISCUSSIONE (... quello che vedi in blu è un link, fai click su di esso per raggiungere la discussione) spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Grazie,
Guglielmo
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. ;)
Con i filament led puoi farci display grandi, tipo con i 38mm (circa 40mm compresi i terminali), puoi farci cifre da circa 8cm di altezza e 4 di larghezza ...
Mi viene in mente di chiedere all'OP se sta usando il comando di latch degli shift in modo corretto (prima caricare tutti i dati nella catena di shift, e solo dopo dare un'impulso di latch per aggiornare le cifre) ... anche, hai preso quelli a 3V ? ... se si, come li alimenti, la logica e' a 3V, oppure hai due alimentazioni separate ? (se hai un link a dove li hai presi e' meglio)
Latch corretto?
Sì, il LATCH rimane LOW durante tutto il caricamento dei 4 chip in cascata e viene alzato solo quando tutti i dati sono pronti. Ho anche implementato il blanking su OE (spegni uscite → carica dati → trasferisci → riaccendi) ma il ghosting persiste comunque.
LED a 3V e alimentazione?
Sì, sono i Hemobllo 38mm 3V flessibili da AliExpress. Ho due alimentazioni separate con GND comune: 5V per la logica (Arduino Nano, 4× 74HC595, DS3231) e 6V da un boost converter separato per gli anodi dei filamenti. I catodi vanno agli OUT degli ULN2803 tramite resistori 220Ω.
Il problema
Il multimetro sull'OUT "spento" dell'ULN2803 legge 2.2V invece di 0V. Questa corrente di fuga Darlington con LED normali sarebbe invisibile, ma i filamenti LED hanno una Vf molto graduale — si accendono debolmente anche con pochissima corrente. Ho provato resistori pull-down, variare la tensione del boost da 4V a 8V, blanking su OE, azzeramento esplicito prima di ogni aggiornamento — il ghosting non sparisce.
La soluzione identificata è sostituire 74HC595 + ULN2803 con il TPIC6B595 (shift register con MOSFET power integrati, corrente di fuga in nA, pinout identico, codice invariato)
Qualcuno sa di problematiche di correnti di fuga con gli uln2803?
Ho messto un condensatore ceramico 104 in parallelo al 5v e gnd del 595, i più dei led sono connessi in parallelo a un booster che porta la tensione a 8 o 6v ho provato in tutte e due le regolazioni, tutto il resto è alimentato a 5v dal tp5400. Ho messo un condensatore elettrolitico da 470 uf all uscita del booster in parallelo, tutti i gnd vanno in un unico punto anche quelle d uscita del booster.
Quello non è uno schema elettrico... E' un appunto per te, ma non è completo né comprensibile da altri!
Comunque, se è un problema di corrente di perdita, basta una resistenza in parallelo a ciascun LED. Se la resistenza non funziona, non è corrente di perdita ma una bella tensione a bassa impedenza.
Dovrei dissaldare 27 filamenti devo farlo davvero?
I segmenti che dovrebbero essere off e sono a luminosità bassa misurando il catodo con il gnd centrale da lo stesso voltaggio di quelli accesi cioè 5v
Lascia perdere che io l'ho disegnato con Eagle 7.7, basterebbe anche un disegno a matita ... a proposito, questo e' proprio un'esempio di come collegare a catena dei 595, le tue connessioni sono fatte cosi ?
Poi, stai usando "display" (sia pure autocostruiti) ad anodo comune con quella configurazione, le misure sui segmenti le dovresti fare usando il positivo dei segmenti come comune, non il GND ... per cui a segmento acceso, fra positivo comune dei segmenti ed il catodo del segmento devi avere la tensione con cui lo alimenti (meno i circa 2V che cadono sul darlington), mentre a segmento spento, devi avere niente (se il darlington apre correttamente e se tutto funziona, ed ovviamente se non hai collegato il "COM" degli ULN al positivo della logica invece che a quello dei segmenti per sbaglio)
Bene ho risolto sostituendo i 74HC595 e gli ULN2803 con i TPIC6B595 , il problema erano gli uln che lasciavano passare correnti di fuga. Cablaggi e programmazione non c'entravano nulla. Mi scuso se vi ho fatto perdere tempo, mi ha risolto il problema claude