Buenas tardes
Soy nuevo en el foro y en esto de Arduino, explicaré lo que estoy haciendo a ver si alguien me puede ayudar o aclararme la duda
Lo que quiero hacer es medir una onda senoidal a 50 HZ de tensión de un generador de funciones con Arduino Uno, le he añadido el offset para que no de tensiones negativas, por lo que la onda oscila entre 3-0.4V aproximadamente.
El esquema de montaje es bastante simple, el generador conectado a una resistencia de 100ohm y arduino mide tensión ahí, no hay problema.
La forma de medir es leer continuamente durante 100ms, parar un tiempo 5s en este caso y volver a medir 100ms, y repetir tantas veces como quiera.
Cuando recojo los datos y los pongo en LibreOffice para representarlos gráficamente, veo no que están del todo correctos.
Como se puede ver en las capturas, en las 2 muestras que he adjuntado, para el primer ciclo toma bastantes más datos que para los siguientes, se puede ver que para el primer ciclo toma unos 60 datos y para los demás 48, pasa siempre para el principio de todas las muestras
Mi duda es si esto se puede solucionar de alguna forma y hacerlo más exacto o es problema de la propia placa Uno que da este problema al principio o si hay otra manera de poner el código.
Muchas gracias de antemano
int cont=0;
int muestras=2;
int sampletime=5000;
unsigned long tiempo=0;
unsigned long t_actualizado=0;
unsigned long t_lectura=100;
// Comienza comunicacion serial
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.flush();
while(cont<muestras) //Ciclo de muestras
{ //Ciclo de lectura de datos
while(tiempo-t_actualizado<t_lectura){
tiempo=millis();
// Lectura de pin 0
int sensorV = analogRead(A0);
Serial.println(sensorV,DEC);
}
tiempo=millis();
t_actualizado=tiempo;
while(tiempo-t_actualizado<sampletime){
tiempo=millis();
}
cont=cont+1; //Aumenta contador del ciclo de muestras
tiempo=millis();
t_actualizado=tiempo;
}
}