Leggere una tensione sul pin A0 - strano comportamento.


ciao, vi scrivo perché mi sta capitando una cosa che non riesco capire.
praticamente nel mio codice misuro una tensione sul pin a0 (una tensione da 0 12v, in questo momento proveniente da un alimentatore ma solitamente da una o piu batterie da auto).
ho usato un metodo piuttosto empirico (credo) per calcolarla e il circuito che ci va dietro sinceramente non lo ho fatto io personalmente quindi non sarei in grado di postarvelo.
il problema è che la primissima lettura - arduino appena partito - è sbagliata e di molto, circa 1v7 ed è una cosa che mi da fastidio perché non comprendo..
e' vero che dopo un po' di warm up, il problema si risolve e la tensione comincia ad essere sempre più vicina alla realtà.

la parte di codice che ho usato per misurare la tensione è semplicemente:

code: [select]

  analogreference(internal);
  letto = (analogread(a0)/45.83);



dove:

ho usato internal perché mi è sembrato più preciso / più lineare
45.83 è perchè quando misuro quello che ho su a0 trovo 550 e siccome che l'alimentazione attuale è 12v ho fatto conti..

idea del momento, potrei "mappare" il valore ?

il problema è che la prima lettura al primo "avvio" è sbagliata, non che sia un gran problema ma vorrei capire le cause :)

grazie tutti !

senza avere lo schema del circuito e lo sketch completo è impossibile capire dove puoi sbagliare, potrebbero essere tante cose.
per usare il reference interno la tensione esterna deve essere ridotta nel range 0-1,1v. sopra 1,1v tutto viene letto fondo scala (1023). inoltre la tensione in arrivo dall'esterno deve essere ridotta max 5,5v: dare più di questo valore su un pin dell'arduino equivale fare seri danni.


Arduino Forum > International > Italiano > Software (Moderator: leo72) > Leggere una tensione sul pin A0 - strano comportamento.


arduino

Comments

Popular posts from this blog

Convierte tu Raspberry en un NAS. Firmware fvdw-sl 15.3 - Raspberry Pi Forums

How to format a Get Request

avrdude: verification error, first mismatch at byte 0x0000 0x0c != 0x62