desktop

[Aporte] Osciloscopio en base a una PC con Arduino

Fogonazo

"Qualified exorcist approved by the Vatican"
Osciloscopio PC usando un Arduino
Ramalingam Balaji

Los osciloscopios son herramienta esenciales para aficionados a la electrónica y profesionales para verificar que sus diseños funcionarían como se esperaba.

1591058451959.png
1591058493423.png
Puntuación de osciloscopios basada en PC sobre osciloscopios independientes debido a su tamaño compacto, bajo costo y capacidad hacer análisis fuera de línea.
Aquí te describimos cómo puedes hacer su propio osciloscopio en un muy bajo costo usando su PC y un Placa Arduino como hardware para adquisición de señal.
Puedes usar esto osciloscopio para capturar señales de frecuencia hasta 5kHz.
El tablero de Arduino, el corazón del osciloscopio, lee los valores de su análogo incorporado
convertidor digital (ADC) y los empuja a la PC a través del puerto USB.
Hemos proporcionado aquí un Arduino boceto, que puedes compilar y
cargar directamente al Arduino.
Tu también necesita instalar un archivo ejecutable o aplicación en tu PC con Windows.
Esta aplicación funciona como el front-end para trazar señales de entrada como formas de onda en
la pantalla de tu computadora La placa Arduino consta de El microcontrolador AVR de Atmel, que puede ser de 8, 16 o 32 bits según el tipo de tablero.
Para este proyecto tu puede usar cualquier variante del Arduino como hardware.
El microcontrolador AVR tiene un ADC incorporado.
En el proyecto nosotros use el pin A0 para capturar la señal de entrada.
La señal de entrada capturada se alimenta a UART a través del convertidor UART-USB en el Arduino a la PC. Un COM virtual
Windows crea el puerto cada vez Arduino se conecta a la PC. UNA
Aplicación basada en Windows desarrollada usando NI LabWindows abre el puerto COM virtual y comienza a trazar
Señales visuales utilizando bibliotecas Graph.
La velocidad de muestreo del osciloscopio está limitado por la velocidad de transmisión
de la UART.
El boceto de Arduino es codificado para leer el ADC usando ISR, y la velocidad de transmisión UART está configurada
en 115200, que envía datos a Intervalos de 85 μs.
Esto da una efectiva frecuencia de muestreo de 12kSa / s.

Construcción

La configuración del alcance de la PC es bastante simple y directo como se muestra la
Fig. 1.
La placa Arduino se conecta a su computadora portátil o PC a través del USB cable.
Cualquier fuente de alimentación externa para el tablero no se requiere como el la placa solo funciona con USB.
Conecte los diodos de conmutación (D1 y D2) como circuito de protección de entrada a pin A0 del ADC de Arduino. usted
necesita boceto Arduino (pcscope.ino) y software de PC o archivo ejecutable (PCScope.exe) para usar esto circuito.
Instalar PCScope. programa exe (desarrollado por autor) en tu Windows PC y abra el solicitud.
Siguiente, abierto el bosquejo de Arduino de Arduino IDE y compilar el boceto Conecta el
Placa Arduino para PC y muestra el boceto el microcontrolador en El tablero Arduino.
El ADC de Arduino puede medir voltajes a 5V. Por eso es recomendable para agregar una pequeña protección
circuito para limitar la entrada voltaje a 5V y abrazadera El voltaje negativo. UNA
baja potencia, cambio rápido diodo como 1N4148 puede ser
utilizado para proteger la entrada alfiler.
Conecte un 10 kiloohmios resistencia en serie con la entrada Va a trabajar como limitador de corriente
en caso de que la entrada vaya más allá de 5V.
Adicional los divisores de voltaje pueden ser utilizado en caso de que necesite medir voltajes más altos
de 5V.

Software

Bosquejo Arduino. los frecuencia de muestreo de esta PC la aplicación del alcance es limitada
por la velocidad a la que Los datos se envían a la PC.
Baudios de 115000 da intervalo de tiempo de alrededor 85 μs.
Es importante obtener las señales de ADC mucho antes de este momento para ser confiable
trazado de datos. El bosquejo lee pin A0 de Board1 y envía a UART
a 115200 baudios.
A esta velocidad, bytes de la entrada son empujados a tiempo intervalos de alrededor de 85 μs.
Por defecto, la configuración ADC del Arduino da muestras cada 116μs. Entonces aquí está configurado el ADC
con líneas de código adicionales para obtener muestras más rápido que 85μs configurando el preescalador a 16.
Con esto, usted obtenga conversión ADC cada 20 μs que es mucho mas rapido que la transferencia de datos UART
Velocidad.

Software para PC.

Como dicho anteriormente, la interfaz Software para PC para adquisición de señal y se desarrolla el procesamiento
usando NI LabWindows. Los datos del puerto serie son capturado a través de Arduino
a intervalos regulares de tiempo y trazado como un gráfico
en la pantalla usando el Trazar biblioteca de funciones. los puntos de visualización a lo largo de Xaxis
se calculan en base en el tiempo definido por el usuario escala. El rango del eje Y
se establece usando el voltaje control de selección.




1591058537078.pngbas

Pruebas

Después de instalar la PC aplicación de alcance, haga clic en Botón "Conectar" en su Pantalla de PC para conectarse
la placa Arduino (Fig.2) Cuando el tablero se pone conectado a su PC, usted recibirá una confirmación
mensaje por tres segundos como se muestra en la figura 3.
Alimenta cualquier onda cuadrada entrada de hasta 5 kHz a
CON1. El software debe trazar su forma de onda de salida
en tu PC Plaza y formas de onda de salida triangular de 525Hz y 530Hz capturado en el
pantalla durante la prueba son mostrado en las figuras 4 y 5, respectivamente. Similar,
puedes alimentar rectangular o pulso entradas (pero no ondas sinusoidales) para obtener
formas de onda de salida.

1591058596496.png
 

Adjuntos

  • PCBasedOscilloscopeUsingArduino.zip
    2.7 MB · Visitas: 306
Saludos, estaba rompiéndose el coco para realizar algo parecido por necesidad y en la búsqueda encontré su trabajo y me parece que me viene como anillo al dedo, pero lo necesito para mas voltaje, como 240V, no tengo problemas con adaptar el nivel de voltaje pero me parece que hay una nota que dice no sinusoidal, habría alguna solución para utilizarla con ésta señal.
 
Saludos, estaba rompiéndose el coco para realizar algo parecido por necesidad y en la búsqueda encontré su trabajo y me parece que me viene como anillo al dedo, pero lo necesito para mas voltaje, como 240V, no tengo problemas con adaptar el nivel de voltaje pero me parece que hay una nota que dice no sinusoidal, habría alguna solución para utilizarla con ésta señal.

Osciloscopio PC usando un Arduino
Ramalingam Balaji


Los osciloscopios son herramienta esenciales para aficionados a la electrónica y profesionales para verificar que sus diseños funcionarían como se esperaba. . . . .

No es mi trabajo, tal como se menciona, es un trabajo de Ramalingam Balaji ;)

¿ Donde leíste lo de "No sinusoidal" ?
 
Lo siento lo de sinusoidal era para la salidas, el traductor me engañó, después de leerlo sin la traducción lo entendí, bueno todavía tengo que hacer que resista con los 240V ac, si tienen alguna idea por favor soy todos ojos
 
Lo siento lo de sinusoidal era para la salidas, el traductor me engañó, después de leerlo sin la traducción lo entendí, bueno todavía tengo que hacer que resista con los 240V ac, si tienen alguna idea por favor soy todos ojos
Ten en cuenta que estarias manejando la red electrica directamente.
Lo que puedes hacer es, o usar un transformador de entrada 220V a un voltaje mas manejable, por ejemplo 22V (para tener una relacion facil de implementar), o usar un transformador de aislacion, de 220V a 220V, aislado galvanicamente.
Sino, usar optoacopladores, si solo quieres medir frecuencias.

Gracias por el aporte lo probaré, para ver la forma de Honda de la salida de los amplificadores con su respectivo divisor resistivo.
Honda = Marca de vehículos
Onda = Tipo de forma

Para anbos;
Recuerden que tienen voltajes negativos, asi que o usan diodos en serie, o algun amplificador operacional.
Otra cosa, en la entrada recuerden poner un zener para proteger la entrada del Arduino, por mas que tenga los diodos externos para la misma proteccion
 
Buenas noches.

Solo quiero añadir un par de comentarios acerca del tema: Arduino convierte señales entre o y +5V, proporcionando 1024 posibles valores (2 ^ 10); y la velocidad de conexión del Arduino puede ser de hasta 1 Mbaudio en un puerto USB 2.0 y 2 Mbaudios en un USB 3.0 ( estos valores los he comprobado personalmente ya que tengo una aplicación que lee datos de un Arduino para introducirlos en una BBDD Access, y la comunicación la hago a 1 Mbaudio, 1.000.000 baudios)
 
Arduino es una plataforma de aprendisaje, y NO todos los microcontroladores que usan lleva de forma nativa un puerto USB.
Mejor da detalles del microcontrolador o cuál placa de desarrollo te refieres
 
Hola DJ13.

Lo he probado con un Arduino Uno original, un Arduino UNO Rev 3 clánico (chino), y un Arduino Nano clónico (chino).
También he probado con placas ESP32, como la ESP32-DOIT-DEVKIT-V1, tanto en su versión de 30 como de 36 pin, con resultados ampliamente satisfactorios.

Y sí, tienes razón, Arduino es una plataforma de aprendizaje, pero muchos dispositivos comerciales, tanto de microcontroladores como IoT se han programado con Arduino. Es un poco como Visual Basic, se lo considera como plataforma de aprendizaje, pero hay miles o cientos de miles de aplicaciones escritas con Visual Basic funcionando por el mundo, y no por ello son peores.

Un saludo.
 
pero muchos dispositivos comerciales, tanto de microcontroladores como IoT se han programado con Arduino
Mas que con el IDE de Arduino, seguro con el IDE de Atmel Studio.
Sin importar si es clonico o no (ya que es hardware y software totalmente libre, eso quiere decir que puedes crear tu propia placa), lo que importa es el microcontrolador que incorpora cada placa.

Por otro lado, el UNO y el Nano llevan el mismo microcontrolador (Atmel ATMEGA328P), y para la conexion USB, un conversor USB-TTL, como el microcontrolador Atmel ATMEGA16u2, el CH341A, u alguno de Maxim o similar.

Aparte de eso, tiene relacion el cristal utilizado...

Si tienes los resultados de cada placa, seria interesante que los publiques
 
Buenas noches.

Solo quiero añadir un par de comentarios acerca del tema: Arduino convierte señales entre o y +5V, proporcionando 1024 posibles valores (2 ^ 10); y la velocidad de conexión del Arduino puede ser de hasta 1 Mbaudio en un puerto USB 2.0 y 2 Mbaudios en un USB 3.0 ( estos valores los he comprobado personalmente ya que tengo una aplicación que lee datos de un Arduino para introducirlos en una BBDD Access, y la comunicación la hago a 1 Mbaudio, 1.000.000 baudios)

Lastima que el Atmega328 solo samplee a 15K muestras por segundo (Máximo). Si tomamos que son 14 bits y para redondear enviamos 16bits, eso necesitaría una velocidad de 15k * 16bits = 240kbaudios. Con 250K y cristal de 8MHZ o 16MHZ alcanza y sobra.

Con 8MHZ solo se llega a 1Mbaudio/S.
 
Atrás
Arriba