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
Ridurre instabilità ADC
Moderatore:
Paolino
38 messaggi
• Pagina 4 di 4 • 1, 2, 3, 4
0
voti
1
voti
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 
2
voti
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
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

2
voti
Bene, complimenti
Ciao.
Paolo.
Ciao.
Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-------------------------------------------------------------
PIC Experience - http://www.picexperience.it
-

Paolino
32,6k 8 12 13 - G.Master EY

- Messaggi: 4226
- Iscritto il: 20 gen 2006, 11:42
- Località: Vigevano (PV)
0
voti
Ecco che ci risiamo
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

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

0
voti
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.
Anche il fatto di non raggiungere 0x400 è normale: i componenti analogici dell'integratore interno al chip hanno le loro esigenze e tolleranze.
-

Candy
32,5k 7 10 13 - CRU - Account cancellato su Richiesta utente
- Messaggi: 10123
- Iscritto il: 14 giu 2010, 22:54
0
voti
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.
0
voti
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
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
38 messaggi
• Pagina 4 di 4 • 1, 2, 3, 4
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 4 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


