Go Down

Topic: 6 display a 4 cifre (Read 754 times) previous topic - next topic

Devuhm

Ciao, devo collegare ad arduino (per ora) 6 display a 4 cifre, per un totale di 24 cifre.
Avevo pensato di usare 3 max7219. Due cose non mi sono chiare:

- con che frequenza arduino riuscirà a gestire i max7219. Esiste un modo per calcolarlo considerando anche che in futuro potrei arrivare a dover gestire molti più max7219 ? Cioè posso incorrere in problemi di lentezza nel refresh dei led ?

- con i 3 max7219, avrò molto probabilmente 3 cifre delle 24 totali accese contemporaneamente, e calcolado che ognuna può assorbire fino a 400mA, avrò bisogno di 1200mA. In che modo dovrò alimentare arduino ? Basta utilizzare un alimentatore esterno ? E se dovessi aver bisogno di 3000mA, rischio di bruciare qualcosa ? C'è un limite di mA che posso fornire ad arduino ?

Grazie



uwefed

L' interfaccia del MAX7219 funziona fino a 10MHz. Devi trasmettere 8 Byte per un refresh. Se lo colleghi al SPi con 1/2 clock ci metti un centinaio di µS per tutte 24 Cifre.

Come arrivi a 400mA?

Ciao Uwe

Devuhm


Come arrivi a 400mA?


Bhe si in effetti meno di 400. Ho letto che un segmento può assorbire dai 20 ai 30mA quindi x8 = 160, 240mA.
Collegando le 24 cifre più una 20ina di led vari, da dove prendo la corrente per alimentare il tutto ? Dal pin dei +5v? O la prendo  direttamente dall'alimentatore ?

icio

Molti pensano che il multiplexing di 20 - 30 cifre BCD carichi molto il mc a motivo del rinfresco ma in realtà il carico è piuttosto basso

esempio: 
24 display led anodo comune, basso consumo,
4 shift register esterni tipo 4094 , 3 sono usati come selezione cifra sul anodo comune  mediante 3 udn2981  e il quarto usato come valore cifre mediante uln2803 + 8 resistenze in modo da avere massimo 30 mA per ogni segmento,  in totale sul micro si usano 3 pin  :  ck, data e strobe

ciclo di scansione  in interrupt =   ogni 800usec circa  che corrisponde a 50hz di rinfresco totale
tempo di caricamento 32 bit in 4 shift register esterni a circa 1Mbit di ck = 40usec

-mc_duty (carico del microcontrollore)= 40/800 = 5%  , restano liberi per altre cose il 95% del tempo
-consumo totale 24 cifre = 240mA quando tutti i 192 segmenti accesi (compresi i punti decimali)
-impiego di un timer hardware a 8 bit impostato come periodic timer,  che è possibile utilizzare anche come RTC per il sistema

uwefed

ciao icio
Sei partito.
La partenza sono 3 MAX7219.

Il MAX7219 fa il multiplexing 1 di 8 cifre a 7 segmenti. se non devono essere leggibili alla luce del sole puoi pilotare i display tra 5 e 10 mA. Visto che al massimo sono accesi sempre solo 8 (7 segmenti e punto decimale se usato) arrrivi a 40 a 80mA. Per tre sono allora 120 a 240mA per tutti i display.
La USB puó dare 500mA e percui hai tra 400 e 450 mA a disposizine per i LEd. Se non basta devi aliemntare i MAX7219 e i rispettivi LED con un aliemtnatore 5V esterno. Collega le masse.
Ciao Uwe

gingardu

#5
Nov 03, 2013, 08:06 pm Last Edit: Nov 04, 2013, 06:06 am by gingardu Reason: 1

Ciao, devo collegare ad arduino (per ora) 6 display a 4 cifre, per un totale di 24 cifre.
Avevo pensato di usare 3 max7219. Due cose non mi sono chiare:

- con che frequenza arduino riuscirà a gestire i max7219. Esiste un modo per calcolarlo considerando anche che in futuro potrei arrivare a dover gestire molti più max7219 ? Cioè posso incorrere in problemi di lentezza nel refresh dei led ?
Grazie


forse c'è  una terza cosa che non ti è chiara  ]:D  il max 7219 fa tutto lui   è come "se fosse" un lcd,
gli spedisci il dato da visualizzare e te lo visualizza fino a che non ne invii un altro diverso,
non vedo l'utilità di inviare un dato con una frequenza talmente alta che l'occhio fatica a vedere/distinguere,
Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

icio

Sono d'accodo con te uwefed, era solo una svisata :D

gingardu


Molti pensano che il multiplexing di 20 - 30 cifre BCD carichi molto il mc a motivo del rinfresco ma in realtà il carico è piuttosto basso

mah...  (secondo me)  ti sbagli    se fai multiplexing (vero)  devi dare  una pausa tra una cifra e l'altra
   e se ti abbassi troppo vedi una ciofeca

e se il micro deve fare anche qualcos'altro che prende più tempo di 10   millis ()  la visualizzazione  peggiora,
se usi interrupt  nello sketch non ne parliamo nemmeno

Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

icio

convinto te gingardu convinti tutti

gingardu

#9
Nov 04, 2013, 04:16 pm Last Edit: Nov 04, 2013, 04:52 pm by gingardu Reason: 1

convinto te gingardu convinti tutti


ci mancherebbe ... lungi da me convincere qualcuno...  quello che dico me l'ha insegnato la (non molta)  pratica che ho fatto,
e che progetti campati in aria (solo scrivere lo sketch)  con la ferma convinzione che funzionano davvero c'è ne una marea,
ne ho fatti pure  un paio,   fortunatamente solo 2-3 di settimane di tempo libero perso  =(  ,
ho anche cercato di farli funzionare collegando dopo l'hardware :~

poi magari abbiamo idee diverse sul  significato di multiplex   e alla fine hai ragione tu

Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...

icio

Adesso si ragiona gingardu, 

Questo video che ho fatto una decina di anni fà mostra un display (fino a 22 cifre) con un'aggiornamento di 9000 volte al secondo che corrisponde passi / secondo degli stepper, comunque posso aggoirnarlo fino a 35.000 volte al secondo senza sfarfallamenti

http://www.procommel.altervista.org/download/vpcb.3gp

è tutto in multiplexer con un unico processore motorola 68hc705p6  otp programmato in assembler, con una velocità 4 volte meno di arduino

Se ti leggi attentamente  il mio messaggio precedente capirai come si fà

Io però non uso il compilatore arduino , uso AVRSTUDIO + WinAVR e le librerie me le costruisco tutte da me,  ogni tanto uso una scheda arduino ma solo la scheda , non uso una sola riga di codice di arduino

Go Up