Pages: [1]   Go Down
Author Topic: Problema alimentazione esterna arduino 2009  (Read 770 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti mi trovo nuovamente alle prese con il solito problema della
alimentazione di arduino.

le funzioni analogRead() e analogWrite() danno valori differenti
utilizzando l'alimentazione esterna invece che l'usb.

- - analogWrite() a parità di imput mi da un voltaggio superiore
utilizzando l'alimentazione esterna. Uso un alimentatore che da in
output 12Volt e 2A
- - analogRead() utilizzandola come tester con una batteria stilo mi
ritorna un valore n con alimentazione usb e n-4 circa con alimentazione
esterna.

Come fare? È possibile che il transistor che trasforma la corrente
esterna sia così impreciso?

Altra domanda: Se costruissi una funzione che valuta il tipo di
alimentazione e corregge automaticamente i valori di queste funzioni in
modo tale da avere i valori richiesti e cambio alimentatore esterno
(magari con uno più o meno potente) ho nuovamente valori falsati?
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 266
Posts: 21665
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Le entrate analogiche usano una tensione di riferimento per la conversione. Questa in Arduino é messa sui 5V di alimentazione. Usando la funzione http://arduino.cc/en/Reference/AnalogReference puoi settare la fonte. I 5V non sono precisissimi. Alimentando Arduino con USB c'hai un fusibile e un Mosfet tra entrata USB e i 5V. questo fa sí che perdi qualche decimo di V. Se alimenti esternamente lo stabilizzatore da 5V abbastanza fissi.

Per aumentare la precisione delle entrate analogiche:
Se misuri dei valori che deivano da un partitore resistivo dove uno delle 2 resistenze é variabili (LDR, termistore, potenziometro) usa come alimentazione i 5V perché l' errore dato dalla variazione dei 5V si elimina.
Se misuri dei valori ce deivano da sensori elettronici (LM35, accelerometri con uscita analogica ecc o anche una batteria) é meglio usare i 3,3V come riferimento esterno collegando i Pin 3,3V con AREF oppure i 1,1V riferimento interni. Per poter misurare tensioni piú grandi del riferimento é necessario usare un partitore resistivo con resistenze non troppo grandi (stare sotti i 10 kOhm come resistenza totale). 

Ciao Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie mille, risposta chiara, ma tu dici che l'USB è filtrata, invece il transistor è presente per limitare la tensione da fonte esterna. Infatti i valori cambiano ulteriormente se utilizzo un Hub USB invece che collegare direttamente la presa alla porta USB del PC, da questo deduco che l'USB non ha filtri
Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 266
Posts: 21665
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie mille, risposta chiara, ma tu dici che l'USB è filtrata, invece il transistor è presente per limitare la tensione da fonte esterna. Infatti i valori cambiano ulteriormente se utilizzo un Hub USB invece che collegare direttamente la presa alla porta USB del PC, da questo deduco che l'USB non ha filtri
No
l'USB non é filtrata, Su Arduino c'é un fusibile autoripristinante.
Il transistore é per selezionare in automatica la fonte di alimentazione e si spegne quando lo alimenti con una tensione esterna abbastanza alta.
Ciao Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

da qui http://blog.littlebirdelectronics.com/tutorial-arduino-and-the-aref-pin mi sono informato sul funzionamento e utilizzo di analogReference. Il mio problema è avere valori in output alla funzione analog sempre uguali o prevederne il cambiamento, al fine di utilizzare l'arduino sia con alimentazione esterna che usb senza modificare il codice. Da quel che ho visto sembra che se utilizzo il riferimento interno 1.1V non ho problemi (1.1 rimane sempre uguale indipendentemente dalla alimentazione).

Sicuri che rimane uguale?

Altra cosa: se è più preciso e non varia perchè utilizzare 5V?

grazie infinite smiley
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22817
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Il reference interno a 1V1 è molto preciso e stabile. Giustamente chiedi perché non usarlo al posto del 5V: per il semplice motivo che se attivi il reference interno a 1V1 poi i segnali esterni devi portarli nel range 0-1.1.
Quindi devi usare un partitore di tensione per portare il voltaggio del segnale a 1V1 prima di leggerlo analogicamente.

Per questo motivo si usa per comodità il reference DEFAULT che dà un segnale di riferimento pari alla tensione di alimentazione del micro (5V su Arduino, 3V3 sugli Arduino Mini) che, normalmente, corrisponde anche alla tensione di alimentazione del circuito se l'alimentazione la dai dall'Arduino.

Poi ci sono casi e casi, come circuiti a 5V collegati ad Arduino Mini a 3V3 oppure Arduino a 5V e sensori a 3V3, bisogna però fare caso per caso in questi.... casi  smiley-grin

Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 266
Posts: 21665
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ci sono casi dove usando la tensione i alimentazion come riferimento per il Convertitore Analogico Digitale é sensato:
Se usi per esempio un termistore o una fotoresistenza come parte di un partitore resistivo e leggi tale tensione una variazione della tensione di alimentazione con il riferimento AREF collegato anch'esso sulla alimentazione non genera un errore che sarebbe presente con un riferimento interno da 1,1V.
Ciao Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok chiaro, ma il mio problema è bastardo: ho notato che non cambia solo il valore output di analogRead, ma pure quello di analogWrite. Quindi mi sa che a sto punto l'unica è utilizzare un transistor che fa da ponte tra l'oggetto da alimentare e i pin analogWrite e regolare la tensione con un altro pin collegato al transistor con una digitalWrite. Ma anche se metto 1.1V come riferimento posso sempre usare i pin con analogWrite e digitalWrite per fare uscire 5V?....mi risparmierei un transistor.
Logged

Milan, Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 346
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se usi l'alimentazione esterna e gli dai almeno 9 volt sei sicuro che tutto funziona sempre nello stesso modo.
Se invece usi l'alimentazione del cavo usb tutto funziona nel modo in cui è stato progettato il pc al quale connetti arduino.
Lo standard usb sull'alimentazione dei dispositivi è abbastanza chiaro, ma ovviamente ogni produttore di pc fa quello che vuole, per cui sulla vusb dove dovresti trovarti 5v ci trovi un po di tutto, tra 4,5 e 5,5 volt.
Questo influisce sulle uscite pwm e sugli ingressi analogici.
Per quanto riguarda gli ingressi analogici puoi mettere un lm336-2.5 sul vref e usarlo tramite il software.
In questo modo non ci sono problemi con vusb troppo basse.
Invece per avere una tensione costante in uscita col pwm penso che l'unica soluzione sia usare sempre un alimentazione esterna.

Alberto
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok ma quello che mi chiedevo è se setto AnalogRefernce(INTERNAL) se poi faccio una AnalogWrite o DigitalWrite posso dare 5V in uscita od ottengo un errore?
Logged

Milan, Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 346
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Per quello che ho capito io la vref viene usata solo per l'ingresso analogico, il pwm parzializza solo la tensione di alimentazione, ma magari mi sbaglio, bisogna legge bene lo datasheet.
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 266
Posts: 21665
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

la Vref é il valore di confronto del convertitore analogico digitale.

Il segnale PWM (AnalogWrite) oppure il setaggio digitale (DigitalWrite) non sono interessati dal setaggio del riferimento Vref. Essi danno sempre (piú o meno) la tensione di alimentazione del ATmega.

Ciao Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grande! speravo di sentirmelo dire grazie!
Logged

Pages: [1]   Go Up
Jump to: