home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Pic Micro
Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...ecc


Arduino non è stabile.
     
Autore Messaggio opzioni
paperoga63





postato il:
17.05.2020, alle ore 10:56
Arduino non è stabile. 

Buongiorno a tutti.
Non so se capita solo a me o se magari e' normale ma noto che in alcuni casi Arduino, nel mio caso Arduino Nano, non e' perfettamente stabile e cerco di spiegarmi con un paio di esempi.
Ho realizzato un voltmetro (https://www.progettiarduino.com/59-arduino-voltmetro-digital…) con partitore resistivo e display I2C e devo dire che funziona ma ha delle piccole fluttuazioni che non rilevo con il multimetro. Il valore letto da una batteria al litio oscilla di continuo tra 4,13 e 4,18 volt.
La stessa cosa succede con un’altra realizzazione, un termometro con LM35 dove la temperatura oscilla anche qui costantemente tra 20,15 e 19,85 °C oppure, tra 19,2 e 18,7 °C (i valori sono solo un esempio e non posto link in quanto ne ho realizzati diversi).
Nel caso del voltmetro non e' un grosso problema anche se diventa fastidioso vedere il display che lampeggia di continuo tra questi due valori mentre diventa importante nel secondo caso perche' nella realizzazione di un termostato si potrebbero avere degli ON OFF continui.
Praticamente tutte le misure fatte per queste e altre realizzazioni non sono perfettamente stabili.
Ho provato a controllare se ci sono fluttuazioni di tensione sulla USB ma questa e' stabile. Ho provato anche a stabilizzare la tensione ad Arduino con un 7805, verificata e' risultata stabile ma purtroppo Arduino continua ad avere queste piccole oscillazioni. Ho provato anche a sostituire Arduino con un altro, sempre Nano ma non e' cambiato nulla.
La domanda e': capita solo a me? E, a parte il campionamento di più rilevazioni facendo la media, qualcuno ha sperimentato qualche soluzione per rendere stabili queste letture?
Nel ringraziare tutti quanti mi renderanno partecipe delle loro esperienze in merito auguro una buona giornata.
gironico




una ogni 100 livelli


postato il:
17.05.2020, alle ore 11:53
E, a parte il campionamento di più rilevazioni facendo la media, qualcuno ha sperimentato qualche soluzione per rendere stabili queste letture?


ritengo sia normale avere delle fluttuazioni nelle misure in adc, bisogna vedere la loro entità chiaramente.

Normalmente è più facile smorzarle con il software, trovando un giusto compromesso.

Poi c'è la parte hardware, un conto se fai queste misure su una breadboard, li di rumori elettrici ci sono tantissimi considerando il contatto farlocco...

L'alminetatore, se specialmente è uno switching introduce rumore....

Le connessioni con l'oggetto da misurare compreso il contatto sono sottoposte a possibili rumori che per forza di cose fanno oscillare un pò la misura.

Si può ridurre i rumori elettrici per esempio con un piccolo condensatore, ma in qualche modo, tende ad influire la lettura. Una volta trovata la costante di errore si compensa con il software.

Aime, adc è sempre la nota più dolente di un micro...



La vita è troppo breve per bere vini mediocri
MB54




una ogni 100 livelli


postato il:
17.05.2020, alle ore 12:08
Hai usato il Vref interno a 1,1V ?
Hai messo un low pass all' ingresso dell' ADC?
Il partitore resistivo assicura un' impedenza di uscita sufficientemente bassa ( massimo pochi kohm) ?


Sui PIC e Arduino non ho notato stranezze, con costanza dei valori di non troppi LSB. Le ho notate invece sul ESP32, ma ne ho già scritto.
Con i PIC definisco sempre le condizioni di acquisizione e conversione, immagino che con Arduino si possa fare altrettanto.

Come dice Gironico bisogna vedere nello specifico a quanto ammontano queste fluttuazioni.
lorebaro





postato il:
17.05.2020, alle ore 12:32
Ciao paperoga63,

sei capitato anche tu nelle gioie e dolori delle misure. Purtroppo il mondo è rumoroso, anche dal punto di vista elettromagnetico.
Gli adc, compresi quelli di arduino sono molto sensibili, per cui captano questo rumore che è una bellezza. Il risultato lo vedi con delle letture non stabili.

Ti faccio un analogia, pensa ad amplificatore audio non eccelso, che fai per ridurre il rumore? Abbassi gli alti. Poi se senti il rumore di alternata, metti un filtro per togliere l'alternata.

La stessa logica la puoi usare con arduino.

Quindi il senso è tagliare gli alti e togliere l'onnipresente rumore di alternata.

Come si fa?

Puoi farlo per via analogica, o per via software.

Via software è più semplice, non devi modificare il circuito.

Fare un filtro digitale è semplice, guarda questo video:





in questo link è spiegato come fare un filtro a media mobile, se vai al sul github di Aliverti, puoi prendere gli esempi.

Togliere i 50 Hz in maniera semplice lo puoi fare campionando il tuo segnale per il tempo di un'ciclo della frequenza di rete. Il senso è questo: visto che i disturbi dovuti alla rete hanno media nulla nel periodo. Campioni il segnale per un periodo, in questo modo la rete enel non la senti.
Puoi fare in questo modo:

// un periodo della frequenza di rete è 20ms = (1/50) * 1000
int misura=0;
for (int i=0; i<20; i++){
misura = misura + analogRead(pin); // non sfora mai anche a 16 bit con segno.
delay(1) // 20 misure per distanziate di 1ms per un totale di 20ms
}

float misuraFloat =(float) misura/20.0;
Spero di esserti stato utile.
Lorenzo
MB54




una ogni 100 livelli


postato il:
17.05.2020, alle ore 13:35
paperoga63:
...
La domanda e': capita solo a me?


Forse si, variazioni così grandi non devono capitare.Qualche per mille (pochi) è la norma.
Misura anche l' uscita dell' LM35 con un voltmetro digitale, e vedi se è stabile.


paperoga63:
...
E, a parte il campionamento di più rilevazioni facendo la media,


Prima cerca di individuare il problema, trovare delle soluzioni tampone non risolve.
Medie a parte, che potrebbero solo mediare misure ad minchiam, la prima condizione è verificare l' impedenza di uscita che presentano i tuoi partitori, come da manuale di arducoso. Se per consumare poca corrente hai ridotto la Vbatt con dei 10K NON va bene ( o modificare le modalità di acquisizione o mettere un buffer).
Poi, se il partitore è idoneo, prova ad alimentare il tutto a batteria, così vedi se è un problema che deriva dall' alimentatore a commutazione, se è a commutazione. (per le prove quindi niente USB o altre diavolerie).
Poi usa Vref

double_wrap




una ogni 100 livelli
una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
17.05.2020, alle ore 15:49
L'ADC dell'atmega328P (ed moltissimi altri ADC) sono RATIOMETRICI cioe' forniscono un risultato di misura IN PERCENTUALE rispetto al Vref . Non e' un difetto, li fanno apposta cosi' per esere indipendenti dall'alimentazione e vanno usati con sensori RATIOMETRICI (che forniscono uscite in percentuale sull'alimentazione Vcc)

La board arduino uno ha tre Vref: DEFAULT (l'alimentazione Vcc), INTERNAL (un valore fisso di CIRCA 1,1 volt) ed EXTERNAL (il pin Vref).

Se usi il riferimento di default (senza usare l'istruzione AnalogReference) allora il valore <1023> corrisponde a Vcc=CIRCA 5 volt, quindi se il segnale in ingresso e' ASSOLUTO (valore di tensione fisso o LM35) allora il valore letto dipende dal valore di Vcc che e' tutto tranne che stabile a livello di millivolt.

Come ti hanno suggerito, usa AnalogReference(INTERNAL) oppure EXTERNAL (con una resistenza in serie e calcolando la caduta di tensione) per sensori con uscita ASSOLUTA.
Se invece usi sensori RATIOMETRICI puoi invece usare tranquillamente in riferimeto DEFAULT perche' l'ADC sara' sempre preciso (+/-2 bit come da datasheet)





"se peso cado, ma se cado non peso"
adamatj.altervista.org
paperoga63





postato il:
17.05.2020, alle ore 16:30
Onestamente non credevo in una partecipazione così consistente e per questo ovviamente ringrazio tutti quanti. Da quanto ho capito Arduino funziona benissimo per certi automatismi (tralasciando naturalmente wireless, bluetooth, ecc. che non ho ancora sperimentato) ma se si va su certe misurazioni, per ottenere risultati accettabili occorre fare dei giri strani come utilizzare AnalogReference, considerare i valori delle impedenze, ecc..
Devo dire che ho trasformato una stufa a legna in pellet creando naturalmente l'automatismo per l'alimentazione e la ventola e sono andato benissimo.
Cercherò di documentarmi su quanto mi avete consigliato devo dire in modo esauriente. Grazie veramente a tutti.
rcc.roberto



[pagine pubblicate]

postato il:
17.05.2020, alle ore 16:38
Se è per una stufa a pellet non mi preoccuperei tanto della precisione.

Quella che ho in montagna segna, tipo, 13 gradi mentre in casa ce ne sono 20 e va a tutto spiano.

Poi segna a rovescio e via così.

Alla fine abbiamo scoperto che dipende soprattutto dall'aria che entra dal foro esterno di alimentazione dell'aria, per cui è soggetto all'aria esterna + l'aria interna e fa un conto tutto suo.

Che poi in una stufa devi anche considerare la deriva.
still



[pagine pubblicate]

postato il:
17.05.2020, alle ore 17:12
Sono un po' off topic,io nella termocaldaia a pellet ho usato dei DS18B20 per misurare le temperature di mandata e di ritorno dell'acqua e mi sono tolto i problemi, li leggi in digitale con un bus OneWire e ti levi tutte le rogne. Le ho comprate di quelle con il contenitore cilindrico in inox con cavo in silicone, ottime per l'impiego.


Chi ha argomenti discute serenamente e rispetta le opinioni altrui, chi non ne ha insulta e basta.
Non ti curar di lor, ma guarda e passa
leopierom





postato il:
17.05.2020, alle ore 17:13
vedi mia discussione, potò sbagliarmi ma UNo anche cinese è più stabile, gira tutto! Sul nano stessi programmi o si bloccano o danno errori, con % meno sul nano originale, io da oggi l ho messo da parte.


..non chiedere alla rosa del tuo giardino perchè sboccia.
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale