Go Down

Topic: Atmega328 a 9V (Read 1 time) previous topic - next topic

supergiox

Apr 23, 2012, 02:52 am Last Edit: Apr 23, 2012, 02:56 am by supergiox Reason: 1
Buonasera!
sto testando alcuni circuiti con atmega328 standalone (a 8mhz) e ho qualche problema con l'alimentazione...
Intanto ho letto dal datasheet che la tensione d'alimentazione dev'essere compresa tra 3.3V e 6V, la corrente massima per i pin "dati" è di 40mA e la corrente nei pin vcc e gnd dev'essere inferiore a 200mA.
Confermate? Io al momento alimento i miei circuiti con 4.5V (3 batterie stilo), vanno bene?
Ho visto che qualcuno lo alimenta a 3V ma a me non funziona...

Per ridurre l'ingombro, pensavo di alimentarlo con una batteria più piccola, e in particolare con una da 9V oppure una da 12V per telecomandi.
La domanda è: come faccio a ridurre la tensione?
A primo colpo ho pensato ad un partitore di tensione, però ho subito abbandonato l'idea perchè dovrei conoscere la resistenza dell'atmega e immagino che questa sia variabile nel tempo.
Cosa si usa in questi casi?

valvale97

io utilizzo un LM7805 per portare la tensione a 5v più due condensatori da 100nf

uwefed

Strano che non Ti funziona a 3V; potrebbe dipendere dall'elettronica che hai aggiunto.
Non so che autonomia vuoi avere ma se usi una batteria da 12V, per capirci quelli della grandezza di ca mezza stilo, é molto bassa.
Usando batterie é meglio usare convertitori DC/DC per ridurre la perdita di potenza nel circuito di alimentazione, che nel caso di un 7805 e un consumo basso del Arduino con una pila da 9V é intorno ai 50%.
Ciao Uwe

Michele Menniti

Ha ragione Uwe, il datasheet dice:
Speed Grade:
0 -  4MHz @ 1.8 - 5.5V
0 - 10MHz @ 2.7 - 5.5V
0 - 20MHz @ 4.5 - 5.5V
quindi a 8MHz dovresti poter arrivare a 2,7V e NON credo si possa arrivare a 6V se non rischiando danni. Tieni presente che l'E-Fuse dovrebbe essere FF altrimenti devi verificare che non sia attivo il brown-out detection, magari è quello che ti sta impedendo di alimentarlo a tensione bassa.
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


devi verificare che non sia attivo il brown-out detection, magari è quello che ti sta impedendo di alimentarlo a tensione bassa.

Quoto. Sei hai preso un chip che aveva in precedenza il bootloader dell'Arduino, quel chip ha il brown-out preimpostato a 4,7V. Devi quindi modificare anche quel fuse lì.

supergiox

#5
Apr 23, 2012, 12:35 pm Last Edit: Apr 23, 2012, 12:37 pm by supergiox Reason: 1
Sono abbastanza ignorante in materia, ho questi atmega da un paio di giorni... perciò vi chiedo conferma per tutto quello che scriverò.
Da quello che ho capito i fuse sono dei parametri che servono ad impostare certe modalità di funzionamento del microcontrollore.
Si possono settare tramite l'ide modificando il file boards.txt oppure tramite avrdude (mai usato). Che poi se non ho capito male l'ide utilizza a sua volta avrdude per flashare sketch/bootloader.
Guardando il file boards.txt che ho precedente modificato, credo che le righe interessate siano le seguenti:
Code: [Select]
atmega328bb.bootloader.low_fuses=0xE2
atmega328bb.bootloader.high_fuses=0xDA
atmega328bb.bootloader.extended_fuses=0x05


Mi basta modificare il terzo fuse con il valore 0xFF?

Michele Menniti

05 imposta il controllo a 2,7V, quindi ci sta il problema, magari considerando che forse non hai fatto una misura precisissima. Quindi mettilo su FF
Se non usi il bootloader in questo chip puoi settare l'H-Fuse su DF
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

I fuse l'IDE li modifica soltanto durante l'invio del bootloader, nel normale invio di uno sketch non li tocca. Devi perciò prendere il micro da programmare, metterlo su breadboard, collegarlo all'Arduino per la programmazione ISP e poi inviare il bootloader dopo la modifica al file boards.txt.
avrdude è il programma invocato dall'IDE per le operazioni di lettura/scrittura sui micro Atmel.

Se sei pratico di terminale, puoi direttamente programmare i fuse senza bisogno di passare dall'IDE usando avrdude direttamente.

supergiox

Ho settato arduino come programmatore ISP, ho modificato il file boards con il nuovo fuse, ho realizzato questo circuito aggiungendo la parte relativa alla gestione dell'autoreset ma quando provo a flashare il bootloader ho questo errore:
Code: [Select]

***failed;  
avrdude: verification error, first mismatch at byte 0x0000
        0xff != 0x07
avrdude: verification error; content mismatch

Non ho provato ad aggiungere il quarzo perchè il chip da programmare è già impostato a 8mhz.

Michele Menniti

No, no, è normale, invece di FF metti 07, come ti sta suggerendo, succede anche a me; il risultato finale non cambia  ;)
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

supergiox

Grazie mille! Adesso funziona :)
Anche se a questo punto non avrebbe senso, rispetto al circuito con regolatore di tensione avrei maggiore autonomia?
Una minore tensione di alimentazione significa minore corrente e di conseguenza minore potenza dissipata, giusto?

Inoltre mi è venuto un dubbio:
immaginando uno scenario in cui devo pilotare un carico che richiede 9V, ad esempio un motore (tramite ponte H) o una lampada (transistor+relè).
Potrei utilizzare 2 alimentazioni separate per il chip e per il carico ma mi sembra una soluzione forzata...
In linea di principio come si fa ad utilizzare una sola batteria?

Scusate se faccio tutte queste domande insieme, ma sto cercando di imparare il più possibile dall'elettronica/elettrotecnica pratica, dato che ho solo conoscenze teoriche acquisite all'università... se lo ritenete opportuno apro un altro topic ;)

leo72

Non vedo il problema. Avrai sempre bisogno di un'alimentazione duale perché non potrai mai alimentare l'Atmega a 9V. E neanche a 6V: questo è un valore massimo oltre il quale non andare pena danni sicuri e certi, ma la tensione di alimentazione massima consigliata è di 5,5V anche se poi si tende ad usare i 5V.
Quindi che tu usi un regolatore per scendere da 9V a 5V o per scendere a 3,3V non cambia molto.

Per rispondere alla tua domanda, da una batteria si ottengono le tensioni necessarie con appositi regolatori.

supergiox

Quindi per alimentare 2 o più carichi con una sola batteria mi servono 2 o più regolatori di tensione?

leo72

Non è detto. Se ad esempio hai un carico che necessita di 9V, puoi usare la batteria a 9V direttamente, senza regolatore. Il regolatore serve senz'altro per l'Atmega, come ti ho detto, se la tensione della batteria è superiore a 5V.

supergiox

Si ovviamente parlo dei casi in cui la tensione sia diversa (inferiore) a quella fornita dalla batteria.
Grazie per le spiegazioni! ciao :)

Go Up