1 votos

Fabricación de un osciloscopio sencillo (pero útil) con un Arduino Uno

Soy un estudiante de primer año de EE que también tiene interés en CS. Con el fin de aumentar mis conocimientos en ambos campos decidí hacer un proyecto que requiere el uso de mis habilidades en ambos campos.

Se me ocurrió que puedo hacer un osciloscopio simple pero preciso usando el voltímetro de Arduino Uno R3 y luego trazar los datos en mi portátil usando Python o Matlab. Después de investigar un poco descubrí que tengo dos grandes problemas.

Primero: El Arduino Uno tiene una limitación de 5 V (o 1,1 V si se quiere medir en milivoltios) a la hora de sondear el voltaje, así que tuve que buscar una forma de escalar el voltaje. Después de buscar encontré dos formas de hacerlo pero me cuesta elegir entre ellas. 1 2

así que la pregunta aquí es: ¿cuál de estas formas debo elegir? y ¿por qué?

Segundo: Según mi búsqueda, en frecuencias más altas el Arduino perderá su precisión por lo que tengo que encontrar una manera de dividir o escalar la frecuencia también. He encontrado este pero no estoy seguro de que ayude o no.

y en esta parte pregunto principalmente: ¿Hay alguna forma de reducir la frecuencia para que sea simplemente medible? o ¿debo utilizar un enfoque diferente?

Cualquier ayuda con cualquiera de los problemas mencionados es muy bienvenida. Como soy de primer año, puede que tenga dificultades para entender algunos conceptos de nivel superior.

1voto

user42875 Puntos 511

Primero: el método n°1, es decir, un "amplificador no inversor", sólo es capaz de amplificar una señal, no de atenuarla. El método n°2 extrae corriente de lo que está midiendo, por lo que dependiendo de cuánta corriente fluya ya en el circuito que está midiendo, puede alterarlo. Para evitar esto, tienes que insertar lo que llamamos un búfer entre lo que estés midiendo y tu divisor de tensión. Esto debería ser suficiente para una etapa de entrada gruesa muy básica.

Segundo: Las sondas de osciloscopio no cambian la frecuencia de la señal de entrada. X1 y X10 son atenuaciones de tensión, no de frecuencia, y el trimmer del filtro sólo sirve para recortar el rendimiento en alta frecuencia. Así que no destroces ninguna, son caras y valiosas para tu osciloscopio real. Ten en cuenta que incluso si encuentras una forma sencilla de escalar la frecuencia, tendrás que compensar la latencia. Al fin y al cabo, el tiempo no se puede comprimir ni estirar. Lo que PUEDES hacer es cambiar lo que se llama la configuración del "preescalador" del ADC para acelerar la conversión a cambio de algo de precisión.

De hecho, es posible que te encuentres con el siguiente cuello de botella, que es la transmisión en serie a tu ordenador, a la máxima velocidad de transmisión en serie. O bien optas por hacer disparos individuales y post-procesar los resultados después de una transmisión "larga", o de nuevo hacer algunos nuevos compromisos. Usted puede decidir utilizar una placa más potente compatible con Arduino y conectar una pantalla + controles para hacer todo el procesamiento a bordo en tiempo real.

0voto

Alan Wills Puntos 11

Primero: necesitas alguna vez un divisor (tensión demasiado alta) o un amplificador (tensión demasiado baja). Una mezcla de los dos es por lo tanto interesante.

Segundo: no olvides que el Arduino tarda algún tiempo en convertir una muestra de tensión (~ 100 us). Las muestras deben tomarse con la ayuda de un temporizador bajo interrupción.
Utilice eventualmente algún software de ayuda (algo como "ticker", o #include <TimerOne.h>).

0voto

JRE Puntos 4167

Tienes más problemas de los que crees. Has nombrado dos, y yo añadiré otros dos que tendrás que abordar.

  1. Límites de tensión.

Tendrás que reducir los voltajes grandes para que se ajusten al rango de escala completa del Arduino. Es decir, o bien 0-1,1V, o bien 0-5V. Puede utilizar divisores de resistencia (pasivo) o un circuito con ganancia seleccionable utilizando un amplificador operacional.

  1. Frecuencia de muestreo.

El software típico de Arduino está limitado a unas diez mil muestras por segundo. Debido al Límite de Nyquist, sólo puede muestrear correctamente señales de hasta unos 5 kHz. Tendrás que filtrar todo lo que esté por encima de 5 kHz. Si te das una vuelta por las librerías de Arduino y accedes directamente al ADC, he leído que el Uno puede muestrear hasta un millón de muestras por segundo. Eso te daría una frecuencia máxima de señal de 500kHz.

  1. Ancho de banda de la sección analógica.

Independientemente de la frecuencia de muestreo que utilices, tu circuito analógico tendrá que ser capaz de manejar el ancho de banda de la señal. A 8kHz es fácil, pero a 1Mhz es más difícil.

  1. Ancho de banda de las comunicaciones serie.

Desea transmitir los datos a un PC para visualizarlos. El Arduino tiene un límite de 1 millón de bits por segundo a través del convertidor USB/UART. El Arduino tiene un ADC de 10 bits, por lo que cada valor tiene una longitud de 10 bits. Puedes (probablemente) enviar datos de 10kHz casi en tiempo real al PC. A 1MHz, puedes olvidarlo. Necesitarías enviar datos a 10 millones de bits por segundo a través del convertidor UDB/UART - pero sólo puede hacer 1 millón de bits por segundo. Podrías intentar almacenar los datos en la Uno y transmitirlos más tarde, pero la Uno sólo tiene un par de kilobytes de RAM. Eso no es ni siquiera un segundo a 10kHz.

Cualquier cosa que hagas con la Uno será un juguete. Acepta sus límites y utilízalo para aprender sobre ancho de banda y muestreo y sobre cómo diseñar circuitos analógicos. No esperes que sea una herramienta de trabajo. Espera que sea una herramienta de aprendizaje, y luego aprende lo que te enseña.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X