leggere segnale di 50Hz

Ciao ragazzi. Ho la necessità di leggere un segnale tra 0-5V, sinusoidale. La freq è di circa 50Hz. Sto visualizzando la forma d'onda su processing e per frequenze dell'odine di qualche Hz riesco a visualizzarle bene, ma se salgo fino a 50Hz quello che vedo sono solo "montagne frastagliate". Non rientro nella frequenza di campionamento del ADC di arduino UNO?

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:

Arduino campiona al massimo sino a circa 9000 sample/s (singolo canale).

Per il teorerma di Nyquist, se vuoi visualizzare una frequenza di 50Hz devi campionare ad almeno 100 sample/s, ma se vuoi apprezzare i particolari dell'onda si consiglia un campionamento di almeno 4/8/10 volte maggiore.

Quindi, Arduino è perfettamente in grado di campionare a 1k sample/s.

Forse quello che vedi è il rumore della misura.

La frequenza di campionamento la decidi tù, siccome non l'hai detta il sospetto è che la hai impostata troppo bassa

Ragazzi questo è il programmino che mi salva i livelli di tensione binati (campioni) nel buffer usb dal quale me li vado a prelevare per visualizzarli in processing. Se notate qualcosa che non va ve ne sarei davvero grato.

#define ANALOG_IN 0


void setup() {
  Serial.begin(9600); 
}

void loop() {
  int val = analogRead(ANALOG_IN);

  Serial.write( 0xff);
  Serial.write( (val >> 8) & 0xff);
  Serial.write( val & 0xff);
  //delay(1);

}

il collo di bottiglia è la seriale a 9600, 1000 campionamenti al secondo scarsi, impostala a 115200 e riprova

una cosa: perchè hai messo Serial.write( 0xff);?

Allora ti spiego. Ho preso un progetto di "oscilloscopio" da internet e ne ho editato qualcosa, perché purtroppo non ho tempo di farlo da zero. Il problema è il seguente: ho spinto anche la velocità della porta a 250000, sia in scrittura su Arduino con Serial.begin(250000); che in lettura con processing, sempre a 250000, ma il risultato è un'onda di questo genere:

Come si vede nell'immagine ho le forme d'onda seghettate e non va bene :.

Percaso la tua onda sinusoidale va sotto i zero Volt? Hai controllato che sia effettivamente sinusoidale? PErché potrebbe essere distorta da qualcosa.

Dal grafico non si capisce se il segnale è tra 0 e 2Vdc.

Se è così ed il segnale è sinusoidale a 50Hz, evidentemente è un sotto campionamento (frequenza inferiore od uguale a 100Hz).

Spiega quel 0xff cosa fa. Ed anche da dove viene il tuo 50 Hz che invii alla A0.

Potresti limitarti a spedire il valore.

Inoltre... dipende anche da come interpreti i dati che giungono al PC. Spiega come sincronizzi l'asse x.