cd4511 e 74138

superciccio:
... perche' non riesco a trovare una soluzione software per ovviare a questo problema.

Veramente, te l'avremmo anche suggerita ...

display acceso
devo cambiare display
SPENGO il primo (usando il blanking, oppure selezionando una cifra che spegne i segmenti)
CAMBIO la cifra (ed i segmenti, se uso il blanking esterno)
ACCENDO il secondo (col blanking, oppure selezionando la cifra corretta per questo display)
... e cosi via ...

e NON cambio cifra > cambio segmenti, e neppure cambio segmenti > cambio cifra, senza SPEGNERE fra le operazioni ... :wink:

Quell'hardware non è in grado di fare il blanking, ma se anche vi fosse una configurazione spenta, avremmo un problema ancora più subdolo: le digitalWrite hanno una durata notevole rispetto a quanto potrebbe fare il micro (ovvero alla scrittura diretta sule porte), e questo creerebbe comunque aloni anche durante il passaggio alla/dalla eventuale configurazione spenta, con attivazioni spurie di 5..10..15µs sia dei segmenti che delle cifre.

In sostanza, o si implementa un blanking hardware con un'altra uscita che toglie completamente alimentazione alle cifre finché gli altri segnali non sono stabili (potrebbe bastare anche uno dei pin enable dei 74138), o si può provare con la scrittura diretta sulle porte (allora passiamo da 5..20µs a 125ns).

Claudio_FF:
Quell'hardware non è in grado di fare il blanking, ma se anche vi fosse una configurazione spenta, avremmo un problema ancora più subdolo: le digitalWrite hanno una durata notevole rispetto a quanto potrebbe fare il micro (ovvero alla scrittura diretta sule porte), e questo creerebbe comunque aloni anche durante il passaggio alla/dalla eventuale configurazione spenta, con attivazioni spurie di 5..10..15µs sia dei segmenti che delle cifre.

In sostanza, o si implementa un blanking hardware con un'altra uscita che toglie completamente alimentazione alle cifre finché gli altri segnali non sono stabili (potrebbe bastare anche uno dei pin enable dei 74138), o si può provare con la scrittura diretta sulle porte (allora passiamo da 5..20µs a 125ns).

si esatto sono pienamente d'accordo.
....e ti diro' di piu' mi hai dato qualche idea mi metto subito all'opera.
tralaltro si potrebbe utilizzare come gia' detto un 74hc238 in modo da mettere high le tre porte A1,A2,A3 per avere tutto o almeno le 6 uscite che mi servono tutte a zero, pero' penso che dovrei modificare il pilotaggio dei display inquanto le uscite sarebbero invertie.

grazie.

Claudio_FF:
Quell'hardware non è in grado di fare il blanking...

Veramente, potrebbe, "IN TEORIA", fare il blanking anche con quell'hardware, anche se in pratica non si tratterebbe di un "vero" blanking, ma solo di un'imitazione software ... basta mandare tutti e 4 gli ingressi del 7441 / 74141 alti ... dato che e' un decoder bcd/DEC (e non HEX), a valori superiori a 9, tutte le uscite sono spente ... per cui dovresti fare "mando gli ingressi alti > cambio cifra > mando il nuovo valore agli ingressi ... questo ovviamente con le nixie, non parlo dei led, per farlo con i led dovrebbe usare un pin della MCU per mandare alto il pin 4 (o il 5) del 238, oppure per mandare basso il 6 ...

E, scusa se te lo dico, ma sostituisci di corsa quel 138 con un 238, e quei PNP con degli NPN, sullo schema dei display ... che vedere dei PNP collegati invertiti per chiudere a massa dei catodi, e' inguardabile ... ;))

Quello che invece lascia un po perplesso me, e' il fatto che voglia pilotare delle nixie in multiplexing ... voglio dire, non che non si possa fare, con alcuni tipi ed in certi specifici impieghi e' stato fatto, pero' ... non e' che le nixie siano piu di tanto luminose, ne e' possibile aumentarne la corrente come si fa con i led per compensare in parte la riduzione di luminosita' dovuta al multiplexing ... in fondo, e' per quello che il 90% degli schemi che usano le nixie NON multiplexano le cifre, altrimenti risulterebbero troppo fioche alla vista ...

Etemenanki:
Veramente, potrebbe, "IN TEORIA", fare il blanking anche con quell'hardware, anche se in pratica non si tratterebbe di un "vero" blanking, ma solo di un'imitazione software ... basta mandare tutti e 4 gli ingressi del 7441 / 74141 alti ... dato che e' un decoder bcd/DEC (e non HEX), a valori superiori a 9, tutte le uscite sono spente ... per cui dovresti fare "mando gli ingressi alti > cambio cifra > mando il nuovo valore agli ingressi ... questo ovviamente con le nixie, non parlo dei led, per farlo con i led dovrebbe usare un pin della MCU per mandare alto il pin 4 (o il 5) del 238, oppure per mandare basso il 6 ...

ecco vedi.... anche perche' ho fatto varie prove software e il risultato e' sempre stato peggiore

E, scusa se te lo dico, ma sostituisci di corsa quel 138 con un 238, e quei PNP con degli NPN, sullo schema dei display ... che vedere dei PNP collegati invertiti per chiudere a massa dei catodi, e' inguardabile ... ;))

quanto vorrei.... ma sono rilegato in casa con vertebra rotta, ne ho fino ai primi di aprile......

Quello che invece lascia un po perplesso me, e' il fatto che voglia pilotare delle nixie in multiplexing ... voglio dire, non che non si possa fare, con alcuni tipi ed in certi specifici impieghi e' stato fatto, pero' ... non e' che le nixie siano piu di tanto luminose, ne e' possibile aumentarne la corrente come si fa con i led per compensare in parte la riduzione di luminosita' dovuta al multiplexing ... in fondo, e' per quello che il 90% degli schemi che usano le nixie NON multiplexano le cifre, altrimenti risulterebbero troppo fioche alla vista ...

questa tua considerazione (giusta e fondata) mi ha tolto qualche ora di sonno, ma penso che anche ammesso che ci sia un calo di luminosita' non sara' poi cosi problematico, faro' una prova (appena possibile) faro' una prova su breadboard....

Claudio_FF:
Quell'hardware non è in grado di fare il blanking, ma se anche vi fosse una configurazione spenta, avremmo un problema ancora più subdolo: le digitalWrite hanno una durata notevole rispetto a quanto potrebbe fare il micro (ovvero alla scrittura diretta sule porte), e questo creerebbe comunque aloni anche durante il passaggio alla/dalla eventuale configurazione spenta, con attivazioni spurie di 5..10..15µs sia dei segmenti che delle cifre.

In sostanza, o si implementa un blanking hardware con un'altra uscita che toglie completamente alimentazione alle cifre finché gli altri segnali non sono stabili (potrebbe bastare anche uno dei pin enable dei 74138), o si può provare con la scrittura diretta sulle porte (allora passiamo da 5..20µs a 125ns).

si questa mi sembra la soluzione definitiva, oggi schiena permettendo vedo di modificare la funzione del 74138 per scrivere sulle porte in modo diretto
grazie

I nixie li piloterei tramite un 74141 (o correspondente russo che costa di meno) . Quello é un convertitore BCD a 10 uscite. Se voglio risparmiare piedini e percui non voglio o posso usare 4 pin per cifra (tubo NIXIE) allora uso un shiftregister tipo 74HC595 o similari oppure I2C o SPI expander che danno 8 o 16 uscite per integrato e necessitano 2 o 3 pin.

Il collegamento 74141 ai nixie e alimentazione nixie la puoi prendere dallo schema che avevo acllegato in un post precedente; il pilotaggio dei 74141, l' Arduino e il RTC che usi lo decidi Tu a Tuo piacimento, preferenze e possibilitá. Comunque non hanno niente a che fare con un Display LED a 7 segmenti pilotato in multiplexing.

Ciao Uwe

superciccio:
questa tua considerazione (giusta e fondata) mi ha tolto qualche ora di sonno, ma penso che anche ammesso che ci sia un calo di luminosita' non sara' poi cosi problematico, faro' una prova (appena possibile) faro' una prova su breadboard....

Il calo di luminosita' in effetti e' "apparente", avevo dimenticato di precisarlo ... pero' l'occhio lo rileva come calo effettivo ... quando multiplexi dei display, ogni cifra e' accesa solo per una frazione del tempo complessivo ... nel caso di 6 cifre, per un sesto del tempo (in realta' leggermente di meno, perche' c'e' anche il tempo di commutazione e blanking, ma sono microsecondi e possiamo ignorarli) ... quindi, anche se "sembra" sempre accesa per effetto della persistenza retinica, hai una "luminosita' apparente" che e' minore di quella effettiva, cioe' appunto circa un sesto del totale (meno una parte di compensazione dovuta sempre alla persistenza, ma anche qui aiuta poco) ... questo con i led si puo compensare aumentandone la corrente, fino al doppio o anche al triplo del massimo, poiche' se per la maggior parte del tempo il led e' spento, la sua giunzione "regge" anche correnti impulsive piu elevate, se gli impulsi sono sufficentemente brevi ...

Con le nixie pero' la cosa non e' consigliabile ... per quanto possa sembrare strano, la scarica nei gas ha una velocita' molto maggiore del tempo di intervento di una giunzione a semiconduttore, ed inoltre in quel tipo di dispositivi si hanno problematiche molto diverse da quelle dei semiconduttori, che hanno effetti finali altrettanto diversi, il piu comune dei quali e' la "metallizzazione" dell'interno del vetro dovuta all'emissione di particelle del materiale di copertura dei catodi, che con il tempo si deposita sul vetro scurendolo ... nel normale funzionamento, possono volerci molte migliaia di ore, specie se ci si tiene leggermente al di sotto del limite consigliato, ma se si comincia ad aumentare la corrente, il tempo puo ridursi anche ad una o due migliaia di ore ... e se sembrano tante, considera che un'orologio, per sua natura, funziona 24 ore al giorno ... :smiley: ...

Per cui o le si multiplexa alimentandole al limite della corrente di targa e non oltre, di solito 2mA per i tubi piu comuni, ma rimarranno molto meno luminose del normale (all'apparenza, circa un quinto, per sei cifre, considerando anche un minimo di compensazione retinica, quindi in piena luce saranno poco visibili), o le si alimenta tutte in contemporanea, magari con qualche decimo di mA in meno, ma avendole comunque sempre piu visibili che se fossero multiplexate ...

Oltretutto, la soluzione che ti ha suggerito uwe ti consentirebbe di usare anche una MCU minima, intendo quella di fornire i dati in ingresso ai driver con degli HC595 (ne servono tre, per sei cifre) ... perche' il 595 ha un banco di latch pilotati da un singolo ingresso, pin 12, che ti consentirebbe di cambiare gli ingressi di tutti e sei i driver contemporaneamente, evitando sia il multiplexing che qualsiasi sfarfallio, e di aggiornare la catena degli shift solo una volta al secondo, fregandotene delle temporizzazioni ...

Vero, c'e' da modificare la parte software ed usare anche il latch, che di solito nessuno usa (e non ho mai capito perche', data la comodita' :D), ma pensaci un'attimo ... con quel sistema, puoi inviare i dati ai tre HC595 con tre shiftout e subito dopo dare un'impulso di latch solo una volta al secondo, o comunque ogni volta che decidi di aggiornare le cifre, usando praticamente solo 4 o 5 pin, piu uno per i punti lampeggianti (un banale transistor open-collector che pilota delle lampadine al neon), ed il micro ha tutto il resto del tempo per interrogare l'RTC, aggiornare l'orologio via radio se volessi aggiungerci pure quello, ed ancora glie ne avanza a sufficenza per farsi un giro al bar a prendere un caffe' fra le varie operazioni (ok, magari un'analcoolico, un caffe' al secondo poi lo rende troppo nervoso :smiley: ... ma credo tu abbia capito cosa intendo ;)) ... ed a disegnare uno schema basato su quello, ci si mettono 10 minuti ... anzi, fammi provare ...

uwefed:
I nixie li piloterei tramite un 74141 (o correspondente russo che costa di meno) . Quello é un convertitore BCD a 10 uscite. Se voglio risparmiare piedini e percui non voglio o posso usare 4 pin per cifra (tubo NIXIE) allora uso un shiftregister tipo 74HC595 o similari oppure I2C o SPI expander che danno 8 o 16 uscite per integrato e necessitano 2 o 3 pin.

Il collegamento 74141 ai nixie e alimentazione nixie la puoi prendere dallo schema che avevo acllegato in un post precedente; il pilotaggio dei 74141, l' Arduino e il RTC che usi lo decidi Tu a Tuo piacimento, preferenze e possibilitá. Comunque non hanno niente a che fare con un Display LED a 7 segmenti pilotato in multiplexing.

Ciao Uwe

si esattamente, tornando al software ho provato due librerie fastdigitawrite..... ma niente non succede nulla di significativo.

stavo cercando di capire come integrare/sostituire a questa funzione:

void set_number_74138(const unsigned long int nx) {
  static int tmp1,tmp2;  
  tmp1=tmp2;
  static const struct numberx {
    uint8_t cc;
    uint8_t bb;
    uint8_t aa;
  } numbers1[] = { /* Mappa 74138 */
    { LOW,  LOW,  LOW},  /* 0 */ 
    { LOW,  LOW,  HIGH}, /* 1 */
    { LOW,  HIGH, LOW},  /* 2 */
    { LOW,  HIGH, HIGH}, /* 3 */
    { HIGH, LOW,  LOW},  /* 4 */
    { HIGH, LOW,  HIGH}, /* 5 */
  };
  digitalWrite(LedA1, numbers1[tmp1%10].aa);
  digitalWrite(LedA2, numbers1[tmp1%10].bb);
  digitalWrite(LedA3, numbers1[tmp1%10].cc);

  tmp1++;
  tmp2=tmp1;

  if (tmp1>5)
  {
    tmp1=0;
    tmp2=0;
  }
}

le tre righe digitalWrite con le istruzioni:

DDRC = B00000001;
PORTC = B00000001;

che poi io uso i pin 6,7 e 8
quindi sarebbero le porte fisiche; PD6,PD7 e PB0
quindi devo utilizzare solo questi tre bit contrassegnati con X
DDRC = B00000xxx;
ma questo "numbers1[tmp1%10].aa" come lo integro?

Ho buttato giu un possibile schema di principio al volo ... con una struttura come questa, ti servono 4 pin in tutto, se non usi il clear degli shift fra un'invio e l'altro (5 se usi anche quello, che spreco :D) (EDIT: se non si vogliono far lampeggiare i punti, dato che c'e' gia la cifra dei secondi che cambia ogni secondo, si risparmia un pin, un transistor e due resistenze ... 6 cifre con 3 pin, di meno non mi viene in mente altro al momento :D) per pilotare 6 nixie, senza multiplexing, ed aggiornando gli shift solo quando devi cambiare una cifra ... inoltre, con una configurazione simile, credo che si possano fare degli stampati "universali" per ogni due cifre, da collegare in cascata, e magari si riesce a farli stare anche nelle dimensioni massime che costano di meno dai service, che non e' una cosa da buttare ... non mi sembra poi cosi male, ad occhio ... :smiley:

Anch'io suggerisco come uwe di usare gli equivalenti russi, specie quelli con case ceramico, che reggono una tensione maggiore dei 74141 ... giusto per prudenza, essendo una cosa che poi dovra' rimanere accesa 24/7 ... :wink:

Etemenanki:
Ho buttato giu un possibile schema di principio al volo ... con una struttura come questa, ti servono 4 pin in tutto, se non usi il clear degli shift fra un'invio e l'altro (5 se usi anche quello, che spreco :D) (EDIT: se non si vogliono far lampeggiare i punti, dato che c'e' gia la cifra dei secondi che cambia ogni secondo, si risparmia un pin, un transistor e due resistenze ... 6 cifre con 3 pin, di meno non mi viene in mente altro al momento :D) per pilotare 6 nixie, senza multiplexing, ed aggiornando gli shift solo quando devi cambiare una cifra ... inoltre, con una configurazione simile, credo che si possano fare degli stampati "universali" per ogni due cifre, da collegare in cascata, e magari si riesce a farli stare anche nelle dimensioni massime che costano di meno dai service, che non e' una cosa da buttare ... non mi sembra poi cosi male, ad occhio ... :smiley:

Anch'io suggerisco come uwe di usare gli equivalenti russi, specie quelli con case ceramico, che reggono una tensione maggiore dei 74141 ... giusto per prudenza, essendo una cosa che poi dovra' rimanere accesa 24/7 ... :wink:

sono senza parole, lusingato ecc.... grazie infinite!
comunque a "memoria" visto che non posso andare in laboratorio in cantina dovrei avere i 74141 quelli diciamo plastici.
come dimensioni invece aime' con tutti questi integrati mi sara' alquanto difficile farli stare su una dimensione di 220mmx42mm visto l'altro pcb dove vengono montate le nixie ha appunto questa dimensione.
senza tralasciare il costo dei pcb adesso vedo cosa posso fare, be' ovviamente 74141 esclusi posso optare per una componentistica smd cosi' da ridurre drasticamente l'ingombro.
ma adesso sono alle prese di capire come si possa fare la scrittura diretta tramite registri.
perche fino a quando c'e' da accendere o spegnere un led la strada e' facile ma io devo "trasportare" anche i dati di una struttura.......
grazie
A.

superciccio:
... 220mmx42mm ...

Scusa se te lo chiedo, ma perche' proprio queste dimensioni ? ... hai gia un contenitore o un kit che ti costringe ad usare per forza queste ?

Perche' altrimenti, dividendo il display in tre pezzi, li puoi poi montare come ti pare ... anche uno sopra l'altro ... si, lo so, sarebbe un po assurdo ... ma originale :smiley:

Etemenanki:
Scusa se te lo chiedo, ma perche' proprio queste dimensioni ? ... hai gia un contenitore o un kit che ti costringe ad usare per forza queste ?

Perche' altrimenti, dividendo il display in tre pezzi, li puoi poi montare come ti pare ... anche uno sopra l'altro ... si, lo so, sarebbe un po assurdo ... ma originale :smiley:

perche' ho gia' 6 nixie IN4 e messe a coppie di due piu' connetori viti ecc... arrivo a circa 220mm....
3 pcb mi si inpenna il prezzo in modo pazzesco....

superciccio:
perche' ho gia' 6 nixie IN4 e messe a coppie di due piu' connetori viti ecc... arrivo a circa 220mm....
3 pcb mi si inpenna il prezzo in modo pazzesco....

Semmai il contrario ... non so che service usi, ma prova ad esempio a fare il preventivo online su pcbway.com per pcb da 220x42 (che il numero di pezzi e' minimo 5), e per un PCB da meno di 100x100mm (che ne avresti in ogni caso 5 pezzi, e studiandolo bene si puo fare in modo che lo stesso pcb serva per ognuno dei tre gruppi di 2 nixie) e poi mi dici ... :wink:

ok al volo un posizionamento sommario dei componenti giusto per vedere l'ingombro.
e fortunatamente dovrei stare intorno ai 222mmx48mm
ottimo!!!!!!