Go Down

Topic: Circuito di switch alimentazione arduino (Read 2950 times) previous topic - next topic

astrobeed


Tieni presente che la tensione minima ufficiale di funzionamento del micro è 4,5V,


4.5V è la tensione minima alla quale è garantito il funzionamento a 20 MHz, l'ATmega328 può lavorare con una tensione minima di 1.8V con il clock a 4MHz, con il clock a 16 MHz la tensione minima è ~4.3V.

Michele Menniti

Ovviamente mi riferivo al 328 "quarzato", visto che parliamo di uno stand-alone tipo Arduino. Comunque a pag. 308 del datasheet c'è il grafico delle alimentazioni da cui si evince che effettivamente 4,5V è la tensione minima a 20MHz, mentre a 16Mhz effettivamente è inferiore. Prima parlavo di tensione "ufficiale", io stesso ho appurato che alcuni 328P a 16MHz arrivano anche a meno di 4V senza problemi, diciamo che certamente non incontrerà alcuna difficoltà. :)
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

superzaffo

Bene, però il mio è un 644 stand alone  ]:D
Ho visto dal datas. che per il 644P a 20MHz le tensioni Min e Max sono "20 MHz @ 4.5V - 5.5V"
Per cui ci sono abbastanza stretto.. ma ripeto.. sarà sempre comunque collegato alla Vin... per cui non penso d' avere problemi...
Comunque non vi nascondo che il circuito con l' op. e mosfet mi incuriosisce lo stesso.  :smiley-mr-green:

Michele Menniti

Non devi guardare quella voce, ma il grafico che ti ho detto, trovalo anche sul 644 (pag. 335) e vedrai che sono molto simili, per cui anche nel tuo caso puoi lavorare tranquillamente a 4V circa, quindi no problem....
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

superzaffo

Certamente, il grafico è molto più chiaro..
Dopo che avrò collegato tutto farò una prova e vediamo sotto carico (per curiosità) quanto arriva.
Ma sicuramente non sarà un problema.  ;)

superzaffo

#20
Feb 13, 2013, 11:59 pm Last Edit: Feb 14, 2013, 09:41 am by superzaffo Reason: 1
Ciao.. riprendo un attimo questo topic, perchè sto facendo delle prove con il tlc2262I e un p-mosfet irf9540.
Con una Vin di 12v ho in uscita dal tlc2262 (quindi nel gate del mosfet) circa 3,4v e quando collego Vin il mosfet continua a condurre la tensione usb.
Nel tlc sono comparate le tensioni 3.3v e 5.7v che quest' ultima arriva dal partitore.
Sembra che la tensione nel gate sia troppo poca per per portare in H il mosfet. Forse è sbagliato il modello del mosfet ? il 9540 è troppo grande ?

La soluzione diodo va benissimo, ma volevo provare anche questa soluzione. Solo per didattica.

davidino

Buongiorno a tutti,
approfitto del post già aperto per chiarirmi un piccolo dettaglio.
Sull'entrata U5B arriva il segnale SCK dell'Atmega328P...perchè???
Che sono i numeretti scritti ai capi delle resistenze??

Grazie a tutti

Davide

gpb01


Sull'entrata U5B arriva il segnale SCK dell'Atmega328P...perchè???


Perché ... non devi vederlo come SCK ma come pin 13 di Arduino ... quello dove c'è il LED ... sennò ... con Blink, che facevano lampeggiare ?  XD :smiley-mr-green: XD :smiley-mr-green:

Guglielmo
Search is Your friend ... or I am Your enemy !

PaoloP

#23
Mar 11, 2014, 11:59 am Last Edit: Mar 11, 2014, 12:03 pm by PaoloP Reason: 1
Poiché l'alimentazione esterna non sarà pari a 5.0V, se si usa l'ADC interno conviene misurare la tensione di alimentazione mediante una misura del riferimento di tensione e memorizzare il valore in una variabile da usare nelle misure successive.
In questo modo si ha un valore più corretto dell'analogRead.
--> http://provideyourown.com/2012/secret-arduino-voltmeter-measure-battery-voltage/

Questo il codice. Rimane il dubbio tra 1023.0 e 1024.0, ma credo si 1024.0.
Code: [Select]
long readVcc() {
 // Read 1.1V reference against AVcc
 // set the reference to Vcc and the measurement to the internal 1.1V reference
 #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
   ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
 #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
   ADMUX = _BV(MUX5) | _BV(MUX0);
 #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
   ADMUX = _BV(MUX3) | _BV(MUX2);
 #else
   ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
 #endif  

 delay(2); // Wait for Vref to settle
 ADCSRA |= _BV(ADSC); // Start conversion
 while (bit_is_set(ADCSRA,ADSC)); // measuring

 uint8_t low  = ADCL; // must read ADCL first - it then locks ADCH  
 uint8_t high = ADCH; // unlocks both

 long result = (high<<8) | low;

 result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000 <-- oppure 1024.0??
 return result; // Vcc in millivolts
}

gpb01

#24
Mar 11, 2014, 12:35 pm Last Edit: Mar 11, 2014, 01:26 pm by gpb01 Reason: 1

Questo il codice. Rimane il dubbio tra 1023.0 e 1024.0, ma credo si 1024.0 ...


No, secondo me 1023 ... hai 1024 possibilità che si estendono da 0 a 1023.

Immaginiamo i 5V ideali ...

... lo ZERO lo rappresenti come 0 (0x0000), il valore 5V lo rappresenti come 1023 (0x03FF) quindi, la singola frazione, moltiplicata 1023 (0x03FF) deve ridarti 5V ... quindi, se ci fossero i 5V ideali, ogni step sarebbe 0.0048876 che moltiplicato il valore massimo che il ADC ti da (1023 o 0x03FF) ti da appunto il valore massimo di 5V.

Guglielmo

EDIT: Sembrerebbe che il valore è 1024 e che bisogna tenere conto che il valore 0x03FF non è in realtà il massimo ma il massimo meno uno step. QUI per maggiori dettagli ...
Search is Your friend ... or I am Your enemy !


Go Up