Newsgroup: it.hobby.elettronica.digitale
Titolo: Letture ADC

Ciao,
ho una scheda che legge 8 ingressi analogici da 8 potenziometri da 1k. 
Sia con un PIC che con un AVR il comportamento è lo stesso: muovendo un 
potenziomentro anche la lettura degli altri valori cambia (di molto, più 
del 30%).
Ovviamente la tensione all'ingresso dell'ADC è stabile.
Pensavo fosse un problema di impedenza troppo elevata anche se siamo 
comunque ben sotto i 10k raccomandati. Ho provato a fare acquisizioni 
molto lente tipo ogni 100 ms per permettere alla capacità dell'ADC di 
caricarsi ma non cambia nulla...
Altre volte usando un opamp come buffer non ho avuto problemi, quindi 
deduco che stia proprio qui il guaio. Ma confermate che nemmeno con 1k 
si riesce a fare a meno di un buffer esterno?
Marco / iw2nzm

 si riesce a fare a meno di un buffer esterno?
No, non confermo, ho proprio davanti a me una scheda che usa 4 
potenziometri da 10k e un ATMega128 che li legge perfettamente :-)
Ciao

 caricarsi ma non cambia nulla...
Il problema è che dentro al micro c'è un solo ADC e S/H, e a monte di tutto
c'è un multiplexer analogico. Anche se tu aspetti mezz'ora fra
un'acquisizione e l'altra, non appena avvii l'acquisizione del canale N+1
il multiplexer commuterà e il S/H leggerà (quasi) immediatamente il valore,
e questo sequencing di solito non si può controllare da software (non puoi
"pre-pilotare" il multiplexer in modo che si esauriscano i transitori).
In molti casi è sufficiente fare due letture per ogni canale; la prima
serve per commutare il multiplexer, la seconda per fare la lettura vera e
propria. Prova, se ti butta bene potrebbe bastare. :)
-- 
emboliaschizoide.splinder.com

 potenziometri da 10k e un ATMega128 che li legge perfettamente :-)
Meglio :) Quindi probabilmente è questione di software!
Marco / che ha tanto da imparare ancora :(

 propria. Prova, se ti butta bene potrebbe bastare. :)
Ho provato... ma non risolve, nemmeno inserendo un altro ritardo tra le 
due acquisizioni sullo stesso canale :-/
Ciao!
Marco / iw2nzm

 conversione prima di cambiarlo.
Left adjustando il risultato eviti di dover leggere prima ADCL e poi 
ADCH, perchè la lettura di ADCL "blocca" ADCH. Almeno questo è quello 
che dice il datasheet, ma per sicurezza, hai provato a leggere entrambi 
i registri (prima ADCL, poi ADCH) e a buttare via ADCL? Oppure 
right-adjustare il risultato, leggere ADCL e ADCH e fare lo shift dei 2 
bit che butti a mano? Non vorrei che ci fosse un bug, nella sequenza di 
lettura ADCH-ADCL.
Ciao

si riesce a fare a meno di un buffer esterno?
Naturalmente hai messo i condensatori vicino alla AVCC e VREF per filtrare bene
le alimentaziuoni.
Hai provato a mettere un condensatore da 10 -100nF prima dell'input?
(il + vicino possibile)
Questo perchè l'A/D fa delle commutazioni rapide e in fondo è un carico
capacitivo.
--
ciao
  Stefano

 lettura ADCH-ADCL.
...ho provato anche questo. Niente il comportamento è identico.
Possibile che li becco tutti io i problemi subdoli?!
Marco / iw2nzm

 (il + vicino possibile)
Dovrei metterne 8 e preferirei evitarlo... ho provato a metterli volanti 
(cioè saldati sotto la scheda) ma senza migliorie apprezzabili.
Ciao!
Marco / iw2nzm

Alt!
Ho risolto. A pensarci mi viene da piangere.
Ho semplicemente fatto un clean (F12) dei file compilati. Magicamente 
funziona tutto. Senza mettere nemmeno i delay. E anche con potenziometri 
da 10k.
Sono sicuro che stavo programmando con l'hex aggiornato perché per 
abitudine ogni volta che faccio modifica cambio il lampeggio del led. 
Così sono certo che il micro esegua davvero il nuovo codice.
Quindi non so che dire. Un bug di AVR Studio? Fantasmi? Gnomi? Meglio 
fate...
Ciao!
Marco / iw2nzm

 fate...
Può succedere che a causa di casini all'orogologio (partizioni montata 
tramite rete, in particolar modo) il compilatore decida di non 
ricompilare un file. Oppure può essere che il makefile sia fatto male e 
gestisca in modo errato le dipendenze.
Ciao