Ghosting su display 7 segmenti con filamenti LED + 74HC595 + ULN2803

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.

IL problema sono gli uln2803?

Buongiorno e benvenuto nella sezione Italiana del forum,

cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di 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 presentazione NELL'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. ;)

1 Like

9 casi su 8 il problema è dovuto a un incorretto timing

Nel caso rimanente ad un incorretto timing E correnti di fuga

Servono schema e codice

Correttamente disegnati, scritti, commentati, formattati e indentati

Le cose fatte bene si fanno solo facendo bene le cose

Citato il mio ex capo

Una giusta e una sbagliata:

Io non ero il tuo capo

Comunque io pure voto pessimo timing

Ma non capisco

Non si tratta quindi di display ad anodo comune ma a led singoli?

Che vantaggio darebbero?

Forse display grandi.

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)

Ciao a tutti, rispondo alle domande.

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?

Due domande

Ma se scolleghi tutti i filamenti tranne uno il fenomeno permane?

E poi: cosa vuol dire che il multimetro sui segmenti off del uln segna 2.2 invece di zero?

Sui segmenti off dovrebbe segnare circa vcc

E circa 0 su quelli on

O non stai comandando low side

Chiederei anche uno schema elettrico, vuoi mai che il problema sia hardware invece che software ?

E' un progetto fai da te non ho uno schema, mi son fatto uno schemino per collegare senza errori hc595 e uln2803a ma non ho altro.


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.

Mi autocito

E continuo ad autocitarmi

Qui c'è sotto un gigantesco misunderstand

Vorrei proprio vedere il programma

Dovrei dissaldare 27 filamenti​:rofl: 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

Tu capisci vero che ciò che dici è impossibile?

A parità di tensione devi avere la stessa corrente

E quindi la stessa luce

Non è che usi un multimetro elettronico non RMS?

Continuo a non vedere programmi

Non risponderò più senza il programma da vedere

Per schema elettrico si intende una cosa di questo tipo:

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)

Il PIN 10 di uln2803 o lo colleghi ai +led da 8V oppure lo lasci scollegato ma NON devi collegarlo ai +5V o +3.3V di arduino

Evidentemente "questa" era la soluzione

So che conclusione ricavarne

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