4 x 7 seg display led in multiplex

Ho un 644 che pilota un display 4 x 7 segmenti catodo comune in multiplex, nella configurazione tipica.
Al post dei 4 bjt per pilotare i catodi vorrei trovare una soluzione per risparmiare piedini del 644.

Ho pensato al 74139 (c'è la versione singol decoder a 4 bit) ma questo ha ingresso parallelo a 2bit e uscita a 4bit, sapete
se c'è una cosa simile ma con ingresso ad 1bit, cioè ad ogni ciclo di clock sull'ingresso, passa in uscita 1110, 1101, 1011, 0111 e ricomincia. Il chip dovrebbe avere anche un pin per forzare l'uscita 1111.

PS:Ho bisogni di fare economia di pin del micro e ho uno spazio standard che già è abbastanza affollato.

Ciao.

Cioè vorresti un shift-register 1-wire?
Ti programmi un tiny25 ma hai il problema della corrente credo.

Uno shift register con caricamento seriale è il 74HC4094, l'ho usato con ottimi risultati nel mio primissimo progetto della nuova era XD, un generatore di sequenze di bit programmabile, mi serviva per simulare il comportamento di uno strumento costosissimo che abbiamo in lab all'UNI e testare alcuni semplici circuiti TTL con funzione di riconoscitori di sequenze. Nel mio caso ne ho usati 3 in cascata e tramite un commutatore prelevavo, secondo necessità, 8-12-16-24 bit.

Ma Mauro voleva un chip 1-wire nel vero senso della parola, cioè che dialogasse tramite 1 solo pin.
Mi pare dal datasheet che il 74hc4094 richieda minimo minimo 2 pin (data+clock) più un terzo pin (strobe) che non ho capito bene a che serve.

c'è anche un output enable se è per questo :grin:, ma in questo tipo di configurazioni stanno sempre fissi sui 5V, quindi restano due pin, considera però che lui potrebbe mettere 4 integrati in cascata, ottenendo la gestione di ben 32 bit (28 segmenti + 4 punti decimali), alla fine li piloterebbe con solo due fili....

mmmmm......ok, si l'idea di comandare 28 segmenti non è malvaggia, però non è quello che mi serve.

Sul PCB striminzito (~65mm x 22mm) ci sta il display 4x7 seg, ATmega644 & company, i 4 bjt npn, le 8 R da 220 ohm per a,b,c...dot,
un circuito ancora non ben definito per il rifermento AREF, 3 pulsantini, e il regolatore +5 sempre se ci entra.

Quindi io ho gia trovato il SN74LVC1G139 2-TO-4 LINE DECODER (8pin dual-line), che mi fa risparmiare 2 pin e siccome io sono formica tendo a fare economia. Se trovato un 8 pin ma che si accontenta di un 1-wire l'avrei preferito, che poi non è proprio 1wire, cioè il protocollo non c'è, c'è che ad ogni fronte di salita avviene uno shift <<, lo shift dopo 3 bit torna a spegnere il bit0.
La logica è negata, non è 1 a shiftare ma lo 0, per cui 1110LSB, 1101LSB, e questo fa al caso mio per comandare il catodo comune direttamente. Invece io al momento i catodi li piloto attraverso dei BC337 e quindi da software faccio shiftare gli 1.

C'è un chip di cui non ricordo la sigla, che può comandare 4x7 seg e tiene memoria e gestisce la corrente dei led e tutte le altre belle funzionalità ma ma costa 6 €, il che mi sembra eccessivo, anche perchè a me già funziona il display perfettamente, a patto di non impegnare il micro in una ISR che dura più di 3.5ms, in tal caso un aggiornamento avviene in ritardo e si vede la pulsazione.

PS:il pcb ancora non esiste nella realtà, e sarà una impresa farci stare dentro tutto e farlo funzionare, anche perchè a 3 cm di distanza ci sono 3 + 1opzionale relè che communtano 220.

Ciao.

Forse ti riferisci a quelle bestiole ICL7106-7107, ma sono grando quanto il 644 :~ oppure al max7219....

Scusa Mauro... ma con un 644 sei a corto di pin? :astonished:

C'è un film in cui la battuta recita: La potenza di fuoco non è mai abbastanza.
Io invece dico che il numero di pin non è mai abbastanza :wink:

12 pin sono impegnati per il display
4 analogici per NTC
4 analogici in modo digitale come ingresso
3 pin per i pulsanti
4 2 per la seriale e 2 per i2c
5 pin in uscita per i relè
32 pin

Se uso il 74139 risparmio 2 pin, ma visto che la potenza di fuoco non è mai abbastanza volevo strafare, risparmiando ancora un pin.

Ciao.

MauroTec:
...
5 pin in uscita per i relè

Usa uno shift register per i relè così risparmi 2 pin.
74HC595 + ULN2803 (magari smd) e risparmi anche spazio e diodi

Per i pulsanti puoi usare un pin analogico e delle resistenze.
Guadagni 2 pin da usare con lo shift register.

Scheda 22 --> http://forum.arduino.cc/index.php/topic,146152.0.html :grin:

tra poco gli fate buttare via il 644 in favore di un tiny25 :stuck_out_tongue_closed_eyes:

Avrei trovato il modo di liberare altri 3 pin, che faccio lo dico? :wink:

pelletta:
Avrei trovato il modo di liberare altri 3 pin, che faccio lo dico? :wink:

Dillo dillo.

Ok, credo che ci sono, ora riorganizzando le funzionalità dovrei esserci, usando il 74139 che può già pilotare i catodi direttamente, ancora tuttavia non ho fatto la prova, ma la farò presto, anche perchè penso che un 74139 in dip case dentro devo averlo.

Per pilotare i relè, la soluzione conosciuta non va bene, sarebbe interessante uno shift reg in grado di pilotare entrambe i 5 rele, senza fare uso di driver. Vero che si risparmiano pin con la coppia shiftreg+driver, ma sono sempre due mattoni da piazzare sul PCB e sapete com'è, c'è sempre un'area vuota nella quale non ci sta nulla manco ad infilarcelo di sbiego.

Per pilotare un relè ho trovato dei bjt con Rs/Rp integrata DTA114EB in case VMN3 e sopportano massimo 100mA (ma sono PNP, devo cercare il complementare NPN), quindi risparmio spazio in resistenze e non sono obbligato a mettere il mattone driver, ma il diodo ci sta per forza ma lo posso anche mettere sotto i relè che si trovano nell'altra scheda, connessa alla scheda display logica.

PS: ma allora il driver mettilo nell'altra scheda; no non ci devono arrivare pin del microcontroller direttamente in prossimità dei relè.

hi hi, magari, peccato che il programma non ci sta dentro. ah, non dimenticate che un componente in più è un componente da montare sul PCB e il costo di assemblaggio sale, magari si risparmia sul costo del microcontroller ma si perde sul costo di assemblaggio. Più componenti ci sono più saldature sono necessarie e più probabilità ci sono che queste non vengano bene e il prodotto e da scartare.
La differenza di costo tra 328 e 644 QFN è poca. Tra l'altro ancora il micro non è stato scelto in via definitiva e quindi potrebbe anche trattarsi di ATmega32 o altro a secondo del costo ecc. Ho usato il 644 perchè lo avevo dentro a prendere polvere, ma se il programma sta in 32kb ho ampia scelta di micro es a me non serve la seconda seriale, magari trovo un ATmega 44 pin con una seriale sola e forse costa anche meno, ma la scelta della MCU verrà fatta più in la.

Ciao.

Usando un 4051 (multiplexer 8 pin) puoi liberare 3 pin (analogici o digitali).
In pratica adesso stai usando 4 analogici in modo digitale come ingresso e 3 pin per i pulsanti; se usi il 4051 ti bastano 3 pin digitali e uno analogico per avere le stesse funzioni.
In questo modo però leggeresti i pulsanti in modo analogico con l'analogWrite, ma tanto non è un problema

Volendo proprio esagerare usando un altro multiplexer tipo 4067 (multiplexer 16 pin) al posto del 4051 liberi anche i pin dei sensori NTC

MauroTec:
....
Ho usato il 644 perchè lo avevo dentro a prendere polvere, ma se il programma sta in 32kb ho ampia scelta di micro es a me non serve la seconda seriale, magari trovo un ATmega 44 pin con una seriale sola e forse costa anche meno, ma la scelta della MCU verrà fatta più in la.

Il 644 aveva (ha ancora?) dei problemi con una seriale, ne abbiamo discusso un annetto fa con Leo. Il fratello maggiore 1284P sembra non risentire da questo difetto ma non te lo assicuro perchè non l'ho usato.
Se ritrovo il topic metto il link.
Fino a prova contraria considera che puoi usarne solo una sul 644

E' tutto affidato al c*lo, puoi avere un chip che ti funziona bene come no. Di solito però sono i 1284 che danno più problemi sulla seriale 0, piuttosto che i 644.

Mauro, la mia ovviamente era una battuta, come giustamente dici non devi liberare pin a tutti i costi aggiungendo integrati esterni, va a finire che i pin ti restano liberi ed avrai incasinato il circuito inutilmente, quindi fatti bene i conti prima di adottare o meno le varie soluzioni.

Concordo con Leo, sono ammattito nel tentativo (puro spirito di test, nessuna necessità reale) inutile di caricare uno sketch sul 1284 via seriale, mentre non ho avuto problemi col 1284. Alla fine sembra che sia un problema di bootloader, poi non avevo più tempo ed ho messo tutto da parte, se ne riparla quando qualcuno pubblicherà una soluzione certa o quando finirò tutti i casini che ho :sweat_smile:

Non usavo il bootloader nei test che ho fatto sul 644, la seriale dava comunque dei problemi durante il funzionamento normale.
Il topic era questo

@MauroTec:
La seriale che funziona è la seconda, pin 16 e 17; nell'ide chiamala Serial1

pelletta:
Non usavo il bootloader nei test che ho fatto sul 644, la seriale dava comunque dei problemi durante il funzionamento normale.
Il topic era questo

@MauroTec:
La seriale che funziona è la seconda, pin 16 e 17; nell'ide chiamala Serial1

Io quel topic non me lo ricordo, quando l'avete scritto all'alba, quando io d'ormo. :sweat_smile:
Ricordo il problema della seriale + booloader ma si è stabilito che il problema è nel bootloader.

Comunque, sono cosciente che anche se vi ricordo che non uso il core Arduino e neache l'ide dal un bel pò, voi lo dimentichere subito.
Quindi solo avr-libc e il compilatore C e non C++, uso uno scheduler simil leOS solo più grezzo.

La seriale USART1 non l'ho mai usata, la USART0 non mi ha data problemi ne in tx che rx, ma non ho booloader e ancora non so se userò, comunque mi sa di si. Il 644 non è PA, ma solo A, quindi niente picopower.

Concordo con Leo, sono ammattito nel tentativo (puro spirito di test, nessuna necessità reale) inutile di caricare uno sketch sul 1284 via seriale, mentre non ho avuto problemi col 1284.

Aspè, FIXME, 1284, 644. Non ci sto capendo più nulla:D
Con il 1284 niente problemi con bootloader e flash via seriale?
Mentre con il 644 ci sono problemi a 'flashare' via seriale.?

Ciao.