AIUTO! - disturbo input analogico

Ciao a tutti,
con arduino sto cercando di leggere dei valori analogici (nell'ordine dei mV) da un circuito. Il mio scopo sarebbe quello di plottare questi dati a monitor per ottenere un grafico in real time.

Il problema è che quello che ottengo è solo disturbo, talvolta anche valori nulli con qualche spike random. Facendo delle prove con l'oscilloscopio il segnale risulta avere la forma d'onda desiderata! In questo modo posso escludere un difetto del circuito il quale è alimentato a +5V -5V e GND tutto da batteria.
Per leggere i dati con arduino collego il pin A0 all'uscita del circuito e come riferimento collego il GND dell'arduino con quello della batteria.

Ho provato a fare ogni sorta di prova (cambiare usb, cambiare arduino, controllare l'alimentazione, usare un altro pc portatile, ricaricare i driver, ricaricare lo script, lavorare con portalite alimentato o batteria,...) ma il problema persiste.
Un paio di volte sono riuscito a leggere i dati correttamente, ma dall'oggi al domani, rimettendomi sempre nelle stesse condizioni, il disturbo ritornava.

Sapreste aiutarmi?? perché non so più che prove fare! Grazie mille

mhh,hai altro collegato all'arduino?
la massa del segnale è collegata alla massa ANALOGICA dell'arduino?

altra cosa..potresti fare un po' di letture e tenerti il valore medio o mediano..

Se vuoi misurare dei segnali di qualche mV non ci riesci con Arduino perché l'con riferimento 5V ogni ADC é dolo ca 5mA. Se usi il riferiemnto interno da 1,1V allora ogni ADC corrisponde a ca 1mV.

Senza schema elettrico e sketch non so aiutarti.
Ciao Uwe

Domanda: ma se alimenti il tuo circuito con +/- 5V significa che anche l'uscita varia di conseguenza (a meno che tu non consideri solo semiode positive).

Non è che stai fornendo all'ingresso di Arduino direttamente questa uscita?

cyberhs mi e venuto anche a me questo dubbio. Col schema del circuito si capisce cosa fa woodstock.
Ciao Uwe

m_ri:
la massa del segnale è collegata alla massa ANALOGICA dell'arduino?

Arduino non ha una massa analogica.

astrobeed:

m_ri:
la massa del segnale è collegata alla massa ANALOGICA dell'arduino?

Arduino non ha una massa analogica.

Si, in effetti, il pin AGND non c'è. Probabilmente è collegato internamente.

sorry,la gnd analogica è solo interna..vabbè,a sto punto ti servirebbe un condensatore tra massa e vcc per togliere un po' le schifezze causate da segnali digitali con la massa in comune..

Eccomi... scusate il ritardo della risposta...
Innanzitutto vi ringrazio per la vostra disponibilità!! Vi allego tutto quello che mi avete chiesto (circuito, schema di collegamento e script).

Come potete vedere non ho altro collegato all' arduino. In effetti usare il riferimento interno, sia perché non ci ho pensato e sia perché inizialmente il segnale lo vedevo bene come se fosse con l'oscilloscopio.

Per plottare i dati ho usato MegunoLink e lo script di esempio fornito dal programma stesso. Ma il problema riscontrato salta fuori anche quando uso lo sketch presente in "esempi/01.Basics/AnalogRead" e visualizzando i dati con il SerialMonitor.

Script:

Send data to MegunoLink for plotting.
This program reads the first three analog input values
and sends them to MegunoLink for plotting.

Download MegunoLink, a free tool for uploading programs,
monitoring, logging and plotting Arduino data, from:
MegunoLink Pro | The swiss army knife for Arduino
****************************************************** */

#include <GraphSeries.h>

GraphSeries g_aGraphs[] = {"ADC0"};

void setup()
{
// The data is sent via the serial port. Initialize it.
Serial.begin(57600);
}

void loop()
{
int nADCInput = 0;

// Read values from the ADC converter and send them out the serial port.
//for (nADCInput = 0; nADCInput <= 2; ++nADCInput)
g_aGraphs[nADCInput].SendData(analogRead(nADCInput));

delay(10);
}

In allegato ci sono il circuito e lo schema di collegamento.

Schema.pdf (131 KB)

Come detto nel primo post: ieri avevo in continuazione dei disturbi e niente segnale. Oggi, invece, sempre ponendomi nelle medesime condizioni, il segnale inviato al pc è fisso sullo zero!... non ricevo niente come se il circuito non funzionasse... almeno per "fortuna" l'oscilloscopio smentisce questa cosa!... il segnale c'è sull'oscilloscopio e si vede bene.

Arduino può misurare solo tensioni positive entro il range di valori stabilito da ARef (max 5V).

Il segnale che osservi sull'oscilloscopio rientra in questo range o fornisce anche valori negativi?

Ieri in laboratorio ho fatto le seguenti prove:

  • circuito non collegato ad arduino --> oscilloscopio: segnale si vede perfettamente
  • circuito collegato a GND con arduino --> oscilloscopio: il segnale peggiora
  • circuito collegato a GND e A0 di arduino --> oscilloscopio: segnale assente e presente banda di rumore uniforme sullo zero
  • come sopra ma arduino alimentato esternamente --> oscilloscopio: segnale molto disturbato con la presenza di spike

Il segnale ha anche delle componenti negative e facendo un tentativo ho invertito il verso degli elettrodi in ingresso all'amplificatore differenziale e trovo lo stesso segnale (ma ribaltato al rovescio) e facendo le prove sopra descritte arduino si comporta perfettamente!!... riesco a visualizzare i dati a pc e non induce disturbi.

Come detto prima il segnale ha delle componenti negative ma (non so come) arduino fa un level shifter del segnale... quando lo plotto visualizzo un grafico sempre nel semiasse positivo. Però questa cosa non so spiegarmela.

Per il fatto che invertendo l'ordine degli elettrodi in ingresso il segnale riesco a visualizzarlo proverò come ultima cosa a cambiare l'operazionale se eventualmente si fosse danneggiato.

woodstock:
Per il fatto che invertendo l'ordine degli elettrodi in ingresso il segnale riesco a visualizzarlo proverò come ultima cosa a cambiare l'operazionale se eventualmente si fosse danneggiato.

Scommettiamo che il tuo segnale in realtà è tutto sulla parte negativa, invertendo le cose passa in quella positiva rilevabile da Arduino, e con l'oscilloscopio lo stai osservando in AC, quindi non puoi apprezzare la componente DC.
Una domanda a cui non hai mai risposto è quant'è l'ampiezza del segnale che devi misurare.

Purtroppo avresti perso la scommessa perchè inizialmente controllo sempre sia in AC che in DC.
In entrambi i casi (quindi invertendo gli elettrodi) il segnale è sempre in parte negativo e in parte positivo. Mai tutto traslato nel semiasse negativo. Utilizzando MegunoLink per visualizzare l'onda, vedo un segnale non centrato sullo zero (ma questo è il meno) bensì traslato verso l'alto; il problema di fondo, che non capisco, è come mai il segnale (orientato correttamente) sparisca dall'oscilloscopio nel momento in cui mi collego all' arduino.

Il segnale in uscita dall'operazionale (con un G = 100) ha un'ampiezza circa 150mV.

woodstock:
il problema di fondo, che non capisco, è come mai il segnale (orientato correttamente) sparisca dall'oscilloscopio nel momento in cui mi collego all' arduino.

In questo caso la risposta è molto semplice, l'impedenza d'ingresso di Arduino è troppo bassa rispetto all'impedenza di uscita del tuo circuito e questo ti azzera il segnale.
Soluzione mettere sul segnale un opamp in configurazione voltage follower per ridurre l'impedenza d'uscita.

Astrobeed...molto interessante, questo lo devo provare!...purtroppo dovrò aspettare fino a Lunedì per rimediare il componente... ma sarà la prima cosa che proverò a fare.

Grazie mille, ti farò sapere il risultato di questa correzione!

ciao
l'argomento mi interessa, cercando ho trovato questo doc allegato

stefano

analogico tch_tsa_slides_L06.pdf (329 KB)

Grazie Stefano.. lo leggerò molto volentieri!

Ciao a tutti,
ieri mi è arriva l'operazionale nuovo e sono spariti gran parte dei problemi che avevo. Adesso sull'oscilloscopio in AC vedo il segnale come al solito centrato sullo zero, mentre in DC ho una componente continua che mi shifta il segnale. Se gli elettrodi sono in un modo il segnale è shittato verso l'alto, nell'altro modo verso il basso.
Sinceramente non capisco da dove arrivi questa continua....?!?!? in teoria non dovrei avercela. Diciamo che mi fa comodo avere il segnale nel semipiano positivo così posso convertirlo in digitale con l'ADC. Però il mio dubbio rimane...

Ringrazio nuovamente tutti quelli che mi hanno risposto! Sono sempre utili i vostri consigli.

Domanda stupida... cosa accadrebbe se anzichè mettere come riferimento GND connesso all'arduino mettessi i -5V?