Osciloscopio con arduino y matlab

Osciloscopio con arduino y matlab

Osciloscopio con arduino y matlab

arduino ve matlab kullanarak osiloskop tasarımı

He estado tratando de leer las señales analógicas a través de arduino uno y trazarlas en MATLAB. Cuando di mi onda de entrada del generador de funciones y traté de trazarla, las señales trazadas no eran correctas, por ejemplo, una onda sinusoidal de entrada no dio una onda sinusoidal. ¿Cuál podría ser la razón? ¿Necesito algún circuito externo para una lectura suave?

¡Estás adquiriendo 1 punto (100 us), luego lo envías a través de una conexión serial (así que 10 bits cada byte) con un PRINTLN! (así que envías, por ejemplo, 6 bytes, es decir, «1023» + CR + LF). Así que 60 bytes, a 9600 bps son más de 6 ms. Supongamos que son 7 ms por cada punto.

Si quieres ver tu onda intenta tener AL MENOS 10 puntos por cada onda (es decir, no pases de 15 Hz). Si quieres ver una onda mejor, intenta usar una interpolación sinc en lugar de una interpolación simple.

adquisición de datos de sensores e instrumentos con matlab

Si alguna vez has querido trazar formas utilizando un osciloscopio, el YouTuber Electronoobs te revela los trucos en su último vídeo. En él, dibuja un árbol de Navidad, junto con algunas otras formas, y aunque esa festividad ya ha pasado, siempre queda el 2019. Por supuesto, no hace falta esperar, ya que estos conceptos pueden aplicarse a todo lo que quieras durante el año.

En el vídeo, Electronoobs utiliza un Arduino Nano para producir señales PWM en dos canales, filtrando cada uno de ellos con un condensador y una resistencia. Como él explica, las formas deben ser bastante simples, y terminar en el mismo lugar en el que empezaron. Incluso con estas restricciones, una vez que el osciloscopio se pone en modo de trazado x/y y se sintoniza la señal, los resultados son bastante buenos.

En este tutorial utilizaremos dos pines del Arduino para crear señales PWM rápidas. Con un pequeño filtro, cambiamos la amplitud de esa señal según el ancho del pulso PWM. Con ello, podemos dibujar formas en el osciloscopio cuando está en modo XY.

Hay osciloscopios de todas las formas y tamaños, y ahora, con unos pocos componentes discretos, el fabricante Peter Balch ha sido capaz de convertir un Arduino Nano en un osciloscopio del tamaño de una caja de cerillas.

arduino + matlab (osciloscopio)

Como no tengo un generador de funciones en mi habitación, como muchos otros he utilizado Audacity para generar ondas sinusoidales. Como a la onda pura se le pueden añadir efectos muy chulos, será interesante ver cómo responde el osciloscopio. La salida de la toma de audio macho-macho se da a una toma de audio TRS-3,5mm. Sin tener en cuenta las clavijas estéreo y de micrófono, dibuja los cables sólo desde el manguito (a tierra) y la punta al condensador de acoplamiento electrolítico. Dado que el arduino no puede leer voltajes negativos, necesitamos sujetar la entrada a . (Observa que el circuito anterior puede leer la onda sinusoidal completa incluso si el cero está ligeramente sujetado porque el voltaje pico de una toma de audio directa será , pero aún así he empleado un divisor de voltaje de resistencias iguales (k cada una). para el divisor se toma del propio arduino. El divisor se conecta a un filtro RC de paso bajo, que elimina la mayor parte del ruido y finalmente la salida del filtro se alimenta al pin A1.

Se prefiere una tasa de baudios alta para que la onda sea más limpia, una vez que se cargue esto, habría que ejecutar el código de MatLab. Cada vez que el código del arduino imprime el valor de lectura analógica, en realidad lo está guardando en el buffer serial, el código de MatLab es tal que cada vez que hay una interacción entre MatLab y el arduino obtiene 500 muestras, al hacer esto en cada interacción el código de MatLab tiene que esperar por s (el retardo se ha establecido en s ya que se eligió una tasa de muestreo de kHz en Audacity). Pero antes de ejecutar el siguiente código debes haber ejecutado ya el arduino.m, que he adjuntado al final.

control de aplicaciones en tiempo real con simulink

MATLAB tiene una interfaz de puerto serie bastante nueva (R2019B+), Serialport. Parte de mi código de control del arduino había utilizado anteriormente el comando serie que MATLAB ha dejado de utilizar. Así que tenía curiosidad por comparar las interfaces antiguas y las nuevas. Además también comparé IOPort, el controlador serial de PTB.

Para la prueba básicamente cambié el estado de un pin digital en un Seeduino Xiao lo más rápido posible. Utilicé el sketch de la interfaz de MATLAB del arduino, que recibe y envía los datos a través de comandos de serie USB. La tasa de baudios se estableció en 115200. MATLAB R2020B en Ubutnu 20.10.

Utilicé un osciloscopio para asegurarme de que la señal de salida estaba bien formada, y utilicé su función de medición para medir la anchura media del tiempo de subida. También usé un método simplista[1] para generar un TTL de 1ms usando digitalWrite(1);WaitSecs(0.001);digitalWrite(0) para ver lo cerca que estábamos de 1ms:

El nuevo serialport es claramente más rápido que el antiguo, y la variación es considerablemente menor. Sin embargo, IOPort sigue siendo mucho más rápido que cualquiera de las dos opciones de MATLAB, me sorprendió bastante, ya que normalmente no se pueden conseguir tiempos de respuesta de comandos tan rápidos con dispositivos USB (el Seeduino Xiao es más rápido que un Arduino Uno y utiliza USB 3). Si necesitas enviar disparos en un bucle de dibujo PTB y no tienes mucha sobrecarga (es decir, un monitor rápido o estímulos complejos), entonces esto debería ayudar…

Acerca del autor

admin

Ver todos los artículos