Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Ridurre instabilità ADC

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[31] Re: Ridurre instabilità ADC

Messaggioda Foto Utentefalessi » 19 lug 2012, 20:14

Personalmente farei una prova.....

Visto che stai usando dei potenziometri da 10k e l'impedenza massima in ingresso è di 2,5k, proverei a modificare il valore del potenziometro (banalmente puoi provare a vedere se i valori letti con il cursore posizionato in modo da avere tra pin di ingresso e massa un valore < di 2.5k risultano stabili).
Se anche in questo modo i valori non sono stabili opterei per tre opzioni:

1) Tensione che acquisisci non stabile
2) problema sw (ma più che fare una media andrei a vedere come leggo l'ADC, poiché se la tensione in ingresso è stabile, tu devi leggere un valore con l'errore di 1/2 lsb anche senza fare la media quindi se in ingresso hai 1.123V devi leggere 1.123±1/2lsb)
3) ADC guasto
Avatar utente
Foto Utentefalessi
30 3
New entry
New entry
 
Messaggi: 69
Iscritto il: 16 nov 2011, 14:08

1
voti

[32] Re: Ridurre instabilità ADC

Messaggioda Foto Utentedany192 » 20 lug 2012, 10:33

OK ragazzi vi ringrazio tutti per i preziosi consigli che mi avete dato. Da domani inizierò a fare delle nuove prove e appena ho qualche risultato lo posterò qui, magari potrà essere utile a qualcun altro :D
Avatar utente
Foto Utentedany192
20 6
Frequentatore
Frequentatore
 
Messaggi: 123
Iscritto il: 1 ago 2011, 13:32
Località: everywhere

2
voti

[33] Re: Ridurre instabilità ADC

Messaggioda Foto Utentedany192 » 14 set 2012, 17:00

Ciao ragazzi! Nonostante sia passato un po' di tempo e visto che non mi piace lasciare i topic incompleti, volevo dirvi che sono riuscito a risolvere il problema.

Ho scritto un semplice algoritmo per il calcolo del valore con maggiore frequenza, ovvero quel valore che in statistica si chiama "moda": eseguo n letture (64 per adesso, ma proverò a scendere per velocizzare ancora) e carico i risultati nell'array corrispondente di n elementi.
A questo punto vado a calcolarmi in un vettore parallelo le occorrenze di ciascun valore contenuto nell'array delle letture e prendo quello con il maggior numero di occorrenze. Infine scrivo questo valore nel descrittore USB e via!
Ovviamente il tutto viene ripetuto per ciascun canale dell'adc che devo utilizzare.

Per ora sembra molto stabile anche se devo fare qualche altra prova per ottimizzare l'algoritmo.

Detto questo, vi ringrazio nuovamente per aver seguito la discussione :ok:
Avatar utente
Foto Utentedany192
20 6
Frequentatore
Frequentatore
 
Messaggi: 123
Iscritto il: 1 ago 2011, 13:32
Località: everywhere

2
voti

[34] Re: Ridurre instabilità ADC

Messaggioda Foto UtentePaolino » 15 set 2012, 7:37

Bene, complimenti :ok:

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[35] Re: Ridurre instabilità ADC

Messaggioda Foto Utentedany192 » 28 set 2012, 21:36

Ecco che ci risiamo :twisted: :twisted:
Il medesimo problema si ripresenta nonostante tutti gli algoritmi di media\filtri\etc che ho applicato...è un po' meno frequente ma continua ad esserci e non va bene!

Questa volta vi ho fatto un breve video che trovate qui -> http://goo.gl/UY9uX

Come potete vedere, quella maledetta oscillazione di +/-1 la fa intervalli casuali e non è una cosa continua.Come potete vedere il valore rimane stabile quasi sempre ma poi succede quel che succede.

Oltretutto con il potenziometro a fondoscala non riesco ad arrivare al valore massimo di 1023.
Ho provato con tantissimi potenziometri (tutti quelli che avevo in casa, circa una ventina) ma il problema evidentemente non è quello, considerando che si ferma a 1022 anche cortocircuitando l'ingresso interessato direttamente con +Vcc.

Per informazione ho rieseguito tutti i calcoli per stabilire i valori corretti per i registri ADCON, e considerando la freq. di clock (che è di 48 MHz dopo il PLL) e l'impedenza di 10k (il potenziometro) ottengo Fosc/64 e 12 Tad. Ho anche provato quasi tutte le altre combinazioni di Fosc e Tad ma siamo sempre lì.

Ho esaurito tutte le idee...HELPPPPPPPP ||O ||O
Avatar utente
Foto Utentedany192
20 6
Frequentatore
Frequentatore
 
Messaggi: 123
Iscritto il: 1 ago 2011, 13:32
Località: everywhere

0
voti

[36] Re: Ridurre instabilità ADC

Messaggioda Foto UtenteCandy » 28 set 2012, 21:45

Mi sembra fossi già intervenuto, ma non ricordo e non vado a vedere. E' impossibile rimuovere tutto il rumore e chiedere all'ADC di avere ripetibilità garantita al 100% sullo stesso valore.
Anche il fatto di non raggiungere 0x400 è normale: i componenti analogici dell'integratore interno al chip hanno le loro esigenze e tolleranze.
Avatar utente
Foto UtenteCandy
32,5k 7 10 13
CRU - Account cancellato su Richiesta utente
 
Messaggi: 10123
Iscritto il: 14 giu 2010, 22:54

0
voti

[37] Re: Ridurre instabilità ADC

Messaggioda Foto Utentedany192 » 28 set 2012, 22:48

Candy ha scritto:Anche il fatto di non raggiungere 0x400 è normale: i componenti analogici dell'integratore interno al chip hanno le loro esigenze e tolleranze.


Se utilizzo la funzione adc_read (che inziailizzia l'adc per lavorare con l'RC clock e 12 tad) dell'ide che sto utilizzando (mikroc) riesco ad arrivare tranquillamente a 1023 (ma le oscillazioni casuali rimangono), però quando metto il potenziometro al minimo non scende sotto i 2.
Avatar utente
Foto Utentedany192
20 6
Frequentatore
Frequentatore
 
Messaggi: 123
Iscritto il: 1 ago 2011, 13:32
Località: everywhere

0
voti

[38] Re: Ridurre instabilità ADC

Messaggioda Foto Utentedany192 » 29 set 2012, 15:47

Comincio a pensare che il problema sia nelle piste del PCB perché se tengo un ingresso del PCB scollegato da tutto (flottante quindi) e poi collego un potenziometro nell'ingreso accanto e lo metto al massimo, ottengo la lettura 1023 nell'ingresso lasciato flottante che chiaramente varia al variare della posizione del potenziometro adiacente.

Non capisco però il motivo per cui se tengo tutti gli ingressi fissi a +Vcc non riesco a raggiungere i 1023 con l'ingresso collegato al potenziometro.

Mi scuso per l'eccessivo giro di parole, spero si sia capito quell che intendevo :mrgreen:
Avatar utente
Foto Utentedany192
20 6
Frequentatore
Frequentatore
 
Messaggi: 123
Iscritto il: 1 ago 2011, 13:32
Località: everywhere

Precedente

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti