Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Osciloscopio DIY de 10Hz-50kHz en pantalla LCD de 128x64

Componentes y suministros

Arduino Nano R3
× 1
Condensador 100 µF
× 1
ST7920 LCD 128x64
× 1
Potenciómetro giratorio (genérico)
× 2
Interruptor de botón, momentáneo
× 3

Herramientas y máquinas necesarias

Soldador (genérico)

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Este proyecto describe una forma de hacer un osciloscopio simple que tiene un rango de 10 Hz a 50 kHz. Este es un rango extremadamente grande, dado que el dispositivo no usa un chip convertidor de digital a analógico externo, sino solo Arduino.

El resultado se muestra en una pantalla LCD relativamente grande (ST7920) con una resolución de 128x64 píxeles. El área de visualización de medición es 96x64 y el área de visualización de información es 32x64, donde se muestra la frecuencia de la señal de prueba, Vpp, etc.

Es extremadamente simple de construir y consta de solo unos pocos componentes:

- Arduino Nano

- Pantalla LCD ST7920 con resolución 128x64

- tres interruptores momentáneos

- dos potenciómetros

- y un condensador de 100 microF

El dispositivo tiene varias funciones como:disparo automático (pantalla muy estable), velocidad de escaneo:0.02ms / div ~ 10ms / div, de acuerdo con 1-2-5 llevar y dividir en nueve niveles y función Hold:congelar la forma de onda y los parámetros de la pantalla. Este proyecto está publicado en el blog de Wu Hanqing, donde puede encontrar el código original. Hice cambios mínimos porque estaba construyendo el osciloscopio basado en el hardware de uno de mis proyectos anteriores. Como puede ver en el video, el instrumento tiene una vista muy clara debido a la pantalla grande, y también un disparador automático sorprendentemente bueno. La posición vertical de la imagen se ajusta con el potenciómetro de 50 kohms, y el contraste con el potenciómetro de 10 kohms. Probé el osciloscopio con un generador de señal sinusoidal y rectangular.

Por último, aunque no es un instrumento profesional o muy utilizable, aún se puede utilizar con fines educativos o en su laboratorio, para probar señales de baja frecuencia, especialmente sabiendo que el dispositivo es muy fácil de fabricar y extremadamente barato.

Código

  • código Arduino
Código Arduino C / C ++
 #include  U8GLIB_ST7920_128X64_4X u8g (6, 5, 4); int Entrada =A0; int Key_add =8; int Key_sub =9; int Key_hold =10; int x, y; int i, i1, i2, V_min, V_max, V_mid, t, t0, t1, sta, Key =1, hold =0; frecuencia larga; flotar Vpp; int Y [96]; int Buffer [192]; const uint8_t L [] PROGMEM ={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xC0, 0x01, 0x80, 0x60, 0x00, 0x00, 0x00, 0x08, 0x10FC, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x01, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x01, 0xE3, 0xDF, 0xB6, 0xF, 0x00, 0x8 0x08, 0x10, 0x00, 0x00, 0x03, 0x8F, 0xFF, 0x00, 0x01, 0xE3, 0x1B, 0xB6, 0x6D, 0x9B, 0x80, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0x03x, 0x33, 0x31, 0xB6, 0x6C, 0xB1, 0x80, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x03, 0xF 3, 0x31, 0xB6, 0x6C, 0xB1, 0x80, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x06, 0x33, 0x1B, 0xB6, 0x6C, 0x9B, 0x10, 0x08, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x06, 0x1B, 0x1F, 0xBE, 0x6C, 0x8F, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0F, 0x00, 0x08 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 0x00, 0x08, 0x10, 0x0C, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0 x08, 0x10, 0x0E, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0x1E, 0x3C, 0xF8, 0xF0, 0x00, 0x00, 0x08, 0x10, 0x0E, 0x01, 0xFF, 0x00, 0x80, 0x80 0x0D, 0x93, 0x6E, 0xCD, 0x90, 0x00, 0x00, 0x08, 0x10, 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x00, 0x00, 0x0F, 0x30, 0xC6, 0xCF, 0xF8x, 0x00, 0xCF, 0xF8x, 0x00, 0x08 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x00, 0x00, 0x03, 0xB0, 0xC6, 0xCF, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0xDx, 0x9x0, 0x6C, 0xCD, 0xB0, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x07, 0x9E, 0x3C, 0xF9, 0xE0, 0x00, 0x00, 0x08 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x08, 0x10, 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0 0x00, 0x07, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0 0, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0 x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00}; configuración vacía () {pinMode (Key_add, INPUT); digitalWrite (Key_add, HIGH); pinMode (Key_sub, ENTRADA); digitalWrite (Key_sub, HIGH); pinMode (Key_hold, INPUT); digitalWrite (Key_hold, HIGH); ADMUX =0x60; ADCSRA =0xe2; u8g.setFont (u8g_font_5x7); u8g.firstPage (); hacer {u8g.drawBitmapP (0, 0, 16, 64, L); } while (u8g.nextPage ()); retraso (2000); } bucle vacío () {muestra (); La medida( ); Transformar (); Key_scan (); if (mantener ==0) {u8g.firstPage (); hacer {dibujar (); } while (u8g.nextPage ()); }} muestra vacía () {para (i =0; i <192; i ++) {Buffer [i] =ADCH; switch (Key) {caso 1:romper; caso 2:delayMicroseconds (4); descanso; caso 3:delayMicroseconds (10); descanso; caso 4:delayMicroseconds (23); descanso; caso 5:delayMicroseconds (60); descanso; caso 6:delayMicroseconds (123); descanso; caso 7:delayMicroseconds (248); descanso; caso 8:delayMicroseconds (623); descanso; caso 9:delayMicroseconds (1247); descanso; predeterminado:descanso; }}} void Measure () {V_max =Buffer [0]; V_min =Buffer [0]; para (i =0; i <192; i ++) {if (Buffer [i]> V_max) V_max =Buffer [i]; if (Tampón [i]  =V_mid) {i1 =i; descanso; }} para (i =i1 + 1; i <98 + i1; i ++) {if (Buffer [i]  =V_mid) {i2 =i; descanso; }} t =i2-i1; si (t> 0) Freq =8000 / t; else Freq =0;} void Transform () {for (sta =0; sta <96; sta ++) {if (Buffer [sta] <128 &&Buffer [sta + 2]> 128) break; } para (i =0; i <96; i ++) Y [i] =63- (Tampón [i + sta]>> 2); } vacío dibujar () {para (x =0; x <95; x ++) u8g.drawLine (x, Y [x], x, Y [x + 1]); u8g.drawFrame (0,0,97,64); u8g.drawLine (48,0,48,63); u8g.drawLine (0,32,96,32); para (x =0; x <96; x + =8) u8g.drawLine (x, 31, x, 33); para (y =0; y <64; y + =8) u8g.drawLine (47, y, 49, y); para (x =8; x <96; x + =8) {para (y =8; y <64; y + =8) u8g.drawPixel (x, y); } u8g.drawStr (98,7, "MS / div"); u8g.drawStr (98,23, "V / div"); u8g.drawStr (98,30, "0.324"); u8g.drawStr (98,40, "Vpp"); u8g.setPrintPos (98, 47); u8g.print (Vpp); u8g.drawStr (118,47, "V"); u8g.drawStr (98,55, "F (HZ)"); cambiar (tecla) {caso 1:u8g.drawStr (98,14, "0.02"); u8g.setPrintPos (98, 62); u8g.print (Freq * 50); descanso; caso 2:u8g.drawStr (98,14, "0.05"); u8g.setPrintPos (98, 62); u8g.print (Freq * 20); descanso; caso 3:u8g.drawStr (98,14, "0.1"); u8g.setPrintPos (98, 62); u8g.print (Freq * 10); descanso; caso 4:u8g.drawStr (98,14, "0.2"); u8g.setPrintPos (98, 62); u8g.print (Freq * 5); descanso; caso 5:u8g.drawStr (98,14, "0.5"); u8g.setPrintPos (98, 62); u8g.print (Freq * 2); descanso; caso 6:u8g.drawStr (98,14, "1"); u8g.setPrintPos (98, 62); u8g.print (Freq); descanso; caso 7:u8g.drawStr (98,14, "2"); u8g.setPrintPos (98, 62); u8g.print (Freq / 2); descanso; caso 8:u8g.drawStr (98,14, "5"); u8g.setPrintPos (98, 62); u8g.print (Freq / 5); descanso; caso 9:u8g.drawStr (98,14, "10"); u8g.setPrintPos (98, 62); u8g.print (Freq / 10); descanso; predeterminado:descanso; }} void Key_scan () {if (digitalRead (Key_add) ==LOW) {while (digitalRead (Key_add) ==LOW); Key ++; if (Clave ==10) Clave =9; retraso (10); } if (digitalRead (Key_sub) ==LOW) {while (digitalRead (Key_sub) ==LOW); Llave--; if (Clave ==0) Clave =1; retraso (10); } if (digitalRead (Key_hold) ==LOW) {while (digitalRead (Key_hold) ==LOW); mantener =~ mantener; retraso (10); }} 

Esquemas


Proceso de manufactura

  1. Visualizador de música DIY LUMAZOID Arduino
  2. DIY Osciloscopio Arduino simple de 20 kHz en Nokia 5110 LCD
  3. Iron Man
  4. Encuéntrame
  5. Matriz LED + Pantalla de puerta con sensor de movimiento [Arduino Holiday]
  6. Control del humidificador Arduino
  7. Voltímetro de bricolaje con Arduino y una pantalla Nokia 5110
  8. Sonda usando arduino y visualización en procesamiento IDE
  9. MobBob:Robot Arduino DIY controlado por un teléfono inteligente Android
  10. Osciloscopio DIY de 10Hz-50kHz en pantalla LCD de 128x64
  11. Joystick de Arduino