Campionamento sinusoide 50Hz problema

Salve sto testando la funzione analogRead di arduino ,ma ho riscontrato un problema un po strano .

il segnale da campionare è una sinusoide con componente continua di 2.5Volt ampiezza 0.754Volt e frequenza 50Hz

il problema è che per i primi 10-15 campioni è ok ,ma dopo si crea una sorta di inviluppo come se la frequenza di campionamento o la frequenza del segnale cambiassero

byte Apin1=2;
float Vs=0;


void setup() {


  Serial.begin(9600);

  
}

void loop() {
   Vs=analogRead(Apin1)*0.00489;
   Serial.println(Vs);
}

allego un grafico di quello che ottengo in rosso ,in blu il segnale da campionare.

Quale è l'impedenza del generatore del segnale ? Perché se fosse troppo alta non avresti corrente sufficiente per caricare in tempo il condensatore di S/H del ADC e quindi avresti valori errati ...

Atmel specifica che l'impedenza della "sorgente" del segnale deve essere < 10 KΩ

Guglielmo

Serial.println(Vs); dove il valore trasmesso presumo che sia di 3 cifre dura con 9600 Baud 8N1 circa 4ms. Hai in un periodo di 20ms solo ca 5 campionamenti.

Cosa succede se aumenti la velocitá della seriale?

Ciao Uwe

l'impedenza di uscita è 20ohm

se fosse un problema di ritardi non capisco come mai per i primi campioni sia corretto e il problema si presenti solo dopo 10 15 campioni.
appena posso provo a vedere cosa succede aumentando la velocità seriale

irolokirt:
se fosse un problema di ritardi non capisco come mai per i primi campioni sia corretto e il problema si presenti solo dopo 10 15 campioni.

... Ok per l'impedenza, va bene ... invece il problema della seriale c'è. All'inizio hai il "buffer" vuoto e quindi vai a piena velocità, dopo un po' il buffer si riempie e quindi la velocità cala ai tempi che ti ha indicato Uwe.

Guglielmo