Go Down

Topic: Led clock (Read 2 times) previous topic - next topic

Testato


Rilascerò il firmware già compilato così non potrai spacciarlo per tuo  :smiley-yell:

No oooo
E il concetto di opersource dove lo mettiamo ?
Mi appello a quanto resta in te di Stallman  :)

La mia ideaè farlo piccolino su una matrice 8x8
dividendo i secondi in ottavi

Se ho capito quindi usi sia rtc che swrtc ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

busco


Qui il circuito.
I componenti sono semplici. Si tratta di un Atmega328P (dovrebbe bastare anche un Atmega168P), un PCF8563 come RTC, 5 shift register 74HC595 per pilotare altrettanti ULN2803 a cui sono collegati i 39 led da 10 mm.
Le resistenze in serie ai led sono da mettere da 220 ohm sui led rossi e da 200 sui led verdi e gialli. In questo modo si ha una corrente di circa 15 mA per led. Il progetto è stato fatto per NON pilotare i led in multiplexing: avrei risparmiato componenti e collegamenti ma avrei avuto una minor luminosità dei led. Siccome il tutto è alimentato da un alimentatore esterno, ho scelto di alimentare i led singolarmente.


Ci sono 3 pulsanti per la regolazione dell'orologio.


Non riesco ad aprire il file dopo averlo scaricato.


reizel

Code: [Select]
Quelli random richiedono di contare dei led che mentre li stai contando possono anche cambiare combinazione. Sono molto belli, sopratutto se li fai con i led RGB. Uwe ne ha fatto uno molto bello l'anno scorso, l'ho visto dal vivo.

mi son perso il lavoro di uwe allora, ha "pubblicato" qualcosa?

gli uln servivano, quanta corrente si può prendere da un 595?

scelta giusta i led da 10mm, e ancora meglio la regolazione della luminosità in base all'ambiente

leo72

#18
Apr 23, 2013, 07:31 pm Last Edit: Apr 23, 2013, 11:03 pm by leo72 Reason: 1

Alcune osservazioni sullo schema:
il pin 10 dell'ULN2803 va collegato al positivo solo per attivare i diodi interni da mettere in parallelo a carichi induttivi (relé), quindi lo dovresti scollegare e lasciare libero

L'avevo letto tempo fa ma me l'ero dimenticato  :smiley-sweat:

Quote

il sistema dei due diodi sull'alimentazione dell'RTC provoca due scompensi: un 4148 sulla batteria porta all'IC solo 2,3-2,4V (pochi), mentre lo stesso diodo sui 5V gliene porta 4,3-4,4 (troppi); dovresti sostituire il 4148 della bat con uno schottky, in modo da perdere solo 0,2-0,3 e mettere almeno due 4148 sui 5V in modo da far passare circa 3,6-3,8V; però non conosco le specifiche dell'RTC che hai usato, magari lavora da 2 a 5V, allora tutto va bene, ma comunque sia quello sulla batteria lo cambierei in ogni caso, 0,4V di differenza saranno un paio di anni di autonomia :)

Il PCF lavora da 1 a 5,5V.
Ho messo i 4148 perché sono diodi veloci per cui non mi interessa il calo di tensione che introducono quanto il fatto che nel momento in cui stacco l'alimentatore, deve commutare sulla batteria nel più breve tempo possibile.
L'incrocio con i diodi l'ho fatto per far sì che quando c'è VCC la tensione sul 1° diodo sia superiore a quella in uscita dal diodo sulla batteria, inibendolo. Mentre quando VCC non c'è, la batteria non si scarichi su tutto il resto del circuito ma alimenti solo l'RTC.

Quote

Usi l'ADC, devi mettere almeno il C da 100nF sull'ARef, visto che non ti serve precisione puoi invece evitare i disaccoppiamento dell'AVcc

Aggiungerò il C su AREF, per il disaccoppiamento c'è solo un unico C da 100n per la linea che alimenta sia VCC che AVCC.

leo72



Rilascerò il firmware già compilato così non potrai spacciarlo per tuo  :smiley-yell:

No oooo
E il concetto di opersource dove lo mettiamo ?
Mi appello a quanto resta in te di Stallman  :)

La mia ideaè farlo piccolino su una matrice 8x8
dividendo i secondi in ottavi

]:D ]:D ]:D

Quote

Se ho capito quindi usi sia rtc che swrtc ?

No. Uso l'RTC e poi il leOS2 per un paio di cosine.

leo72


Non riesco ad aprire il file dopo averlo scaricato.

Ho messo direttamente il file .PNG.
Il forum continua ad avere dei problemi con gli allegati.

leo72


mi son perso il lavoro di uwe allora, ha "pubblicato" qualcosa?

Mise delle foto l'anno scorso se non sbaglio, del circuito mentre lo costruiva. Non mi ricordo se poi mise le foto del lavoro finito.

Quote

gli uln servivano, quanta corrente si può prendere da un 595?

Max 70 ma su tutto il chip, secondo il datasheet. 70/8=8,75 mA per pin. Erano la metà di quella che mi serviva. Per questo ho accoppiato 595+2803.

Quote

scelta giusta i led da 10mm, e ancora meglio la regolazione della luminosità in base all'ambiente

;)

ratto93

Non vedevo un circuito su millefori fatto con il wirewrap così grande da un gran bel pezzo, tanto di cappello leo :)
Se corri veloce come un fulmine, ti schianterai come un tuono.

leo72

3 giorni di saldature :smiley-sweat:

Michele Menniti

Leo, anche i conti che ho fatto io garantiscono il funzionamento della doppia alimentazione; nello specifico non c'è alcuna "commutazione", e comunque i diodi sono così veloci che il problema non esiste, il mio suggerimento allunga l'autonomia della batteria di parecchio, in caso contrario sarai costretto a sostituirla mentre è ancora buona.
Il disaccoppiamento dell'AVcc, eventualmente, si fa separandola da vcc mediante una R da 22 ogm oltre che un C da 100nF posto direttamente sul pin.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72


Leo, anche i conti che ho fatto io garantiscono il funzionamento della doppia alimentazione; nello specifico non c'è alcuna "commutazione", e comunque i diodi sono così veloci che il problema non esiste, il mio suggerimento allunga l'autonomia della batteria di parecchio, in caso contrario sarai costretto a sostituirla mentre è ancora buona.

Ok. Domani dissaldo il 4148 e ci metto un 5819.

Quote

Il disaccoppiamento dell'AVcc, eventualmente, si fa separandola da vcc mediante una R da 22 ogm oltre che un C da 100nF posto direttamente sul pin.

Non ce la metterò perché non mi serve di avere una precisione assoluta, ma per "immagazzinare" l'informazione per futuri utilizzi, la R andrebbe messa in serie sul collegamento da VCC ad AVCC, giusto?

Michele Menniti


Quote

Il disaccoppiamento dell'AVcc, eventualmente, si fa separandola da vcc mediante una R da 22 ogm oltre che un C da 100nF posto direttamente sul pin.

Non ce la metterò perché non mi serve di avere una precisione assoluta, ma per "immagazzinare" l'informazione per futuri utilizzi, la R andrebbe messa in serie sul collegamento da VCC ad AVCC, giusto?

sì, e a valle il C da 100nF, comunque la cosa è ben spiegata sul data-sheet, ma proprio mentre verificavo ho trovato una novità: ora al posto della R da 22ohm, ATMEL, per la soppressione del rumore, consiglia di usare un'impedenza di 10µH tra Vcc e Avcc, e poi l'onnipresente C da 100nF.
Inoltre ho fatto un'altra scoperta molto interessante: quando si seleziona l'opzione EXTERNAL il comparatore dell'ADC fa riferimento al pin AVcc e NON a Vcc come abbiamo sempre creduto; normalmente è la stessa cosa, ma col disaccoppiamento le cose cambiano, perché a motivo della R o della L sul pin Avcc ti potresti trovare una tensione leggermente inferiore rispetto alla Vcc; tutto ciò vale nei circuiti di precisione ADC, come nel caso del mio frequenzimetro.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

leo72

Rilasciato il firmware dell'orologio, scaricabile da questa pagina (in un pacchetto che contiene anche le foto, gli schemi ed i file Eagle).

Il firmware necessita di 3 librerie addizionali per poter essere compilato:
PinChangeInt
Rtc_Pfc8563
leOS2

Il codice è stato scritto e testato su un Atmega328P ma dovrebbe funzionare anche su un Atmega168P perché occupa poco meno di 9K di Flash e 445 byte di RAM (consumo statico).

L'orologio funziona in questo modo:
all'avvio, controlla se l'RTC sta girando oppure no, in caso negativo fa partire l'ora da 00:00:00.
Per programmare l'orario basta premere il pulsante SET per più di 1,5 secondi. Il display fa un lampeggio accendendo tutti i led poi passa in modalità programmazione. Si programmano, in ordine: ore, minuti, secondi. Il principio è lo stesso per tutti: inizialmente viene visualizzato il valore corrente (attenzione al caso "0" perché non vedete nessun led acceso), che potete aumentare o diminuire premendo i pulsanti INC e DEC. I led lampeggiano per farvi capire che siete in programmazione. Per confermare la scelta, premete SET. Dopo 10 secondi che l'utente non preme nessun tasto, il programma passa alla scelta seguente in automatico quindi dopo 30 secondi complessivi esce dalla programmazione da solo.
Alla fine della programmazione l'orario viene salvata localmente e sull'RTC (ricordo che dall'RTC l'orario viene prelevato solo 1 volta all'ora e che l'incremento dell'orario in locale viene fatta con un PCINT agganciato al pin CLK_OUT dell'RTC).

In modalità visualizzazione dell'ora, i pulsanti INC e DEC hanno 2 funzioni aggiuntive, che possono essere attivate premendoli per più di 1,5 secondi.
INC attiva/disattiva la funzione di variazione della luminosità dei led in base alla luminosità ambientale: massima durante il giorno o in piena luce, minima durante la notte o in ambiente buio. Questo per permettere di tenere l'orologio anche in una stanza dove si dorme senza essere "abbronzati" di notte  8)
Il pulsante DEC attiva invece la modalità notturna (2 accensioni veloci di tutti i led conferma l'attivazione della modalità, 1 accensione di tutti i led conferma la disattivazione della modalità), ossia il display si spenge del tutto dalle 00:00:00 alle 05:59:59 per non disturbare durante le ore notturne.

Testato

Bello  :)

Il mio sarà molto diverso perché avendo una matrice 8x8 sarà diversa anche la lettura.
Ma mi sarà molto utile il tuo per capire come gestire la logica di accensione led.

Thanks  :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

leo72

Se non condividi, ti banno  ]:D

Go Up