Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Osciloscópio DIY 10Hz-50kHz em tela LCD 128x64

Componentes e suprimentos

Arduino Nano R3
× 1
Capacitor 100 µF
× 1
ST7920 LCD 128x64
× 1
Potenciômetro rotativo (genérico)
× 2
Botão de pressão, momentâneo
× 3

Ferramentas e máquinas necessárias

Ferro de soldar (genérico)

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


Este projeto descreve uma maneira de fazer um osciloscópio simples que tem uma faixa de 10Hz a 50kHz. Essa é uma faixa extremamente grande, visto que o dispositivo não utiliza um chip conversor externo de digital para analógico, mas apenas Arduino.

O resultado é exibido em uma tela LCD relativamente grande (ST7920) com resolução de 128x64 pixels. A área de exibição de medição é 96x64 e a área de exibição de informações é 32x64, onde é mostrada a frequência do sinal de teste, Vpp etc.

É extremamente simples de construir e consiste em apenas alguns componentes:

- Arduino Nano

- Visor LCD ST7920 com resolução de 128x64

- três interruptores momentâneos

- dois potenciomêmeros

- e um capacitor 100 microF

O dispositivo tem várias funções como:disparo automático (display muito estável), Velocidade de varredura:0,02ms / div ~ 10ms / div, de acordo com o transporte e divisão 1-2-5 em nove níveis e função Hold:Congela a forma de onda e os parâmetros do display. Este projeto está publicado no blog de Wu Hanqing, onde você pode encontrar o código original. Fiz alterações mínimas porque estava construindo o osciloscópio com base no hardware de um de meus projetos anteriores. Como você pode ver no vídeo, o instrumento tem uma visão muito clara devido à tela grande e também um disparador automático surpreendentemente bom. A posição vertical da imagem é ajustada com o potenciômetro de 50 kohms, e o contraste com o potenciômetro de 10 kohms. Testei o osciloscópio com um gerador de sinal senoidal e retangular.

Por último, mesmo não sendo um instrumento profissional ou muito utilizável, pode ainda ser utilizado para fins educacionais ou em seu laboratório, para testar sinais de baixa frequência, principalmente sabendo que o dispositivo é muito fácil de fazer e extremamente barato.

Código

  • código Arduino
Código do Arduino C / C ++
 #include  U8GLIB_ST7920_128X64_4X u8g (6, 5, 4); entrada int =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; long Freq; float Vpp; int Y [96]; Buffer int [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, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 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, 0x00, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x00, 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, 0x00, 0x08, 0x10, 0x00, 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, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xC0, 0x01, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x01, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xE3, 0xDF, 0xB6, 0x6F, 0x8F, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0x8F, 0xFF, 0x00, 0x01, 0xE3, 0x1B, 0xB6, 0x6D, 0x9B, 0x80, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x03, 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, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x06, 0x1B, 0x1F, 0xBE, 0x6C, 0x8F, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0C, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0C, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xFF, 0x80, 0x00, 0x00, 0x0D, 0x93, 0x6E, 0xCD, 0x90, 0x00, 0x00, 0x08, 0x10, 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x80, 0x00, 0x00, 0x0F, 0x30, 0xC6, 0xCF, 0xF8, 0x00, 0x00, 0x08, 0x10, 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x00, 0x00, 0x03, 0xB0, 0xC6, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x0D, 0x9B, 0x6C, 0xCD, 0xB0, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x07, 0x9E, 0x3C, 0xF9, 0xE0, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x08, 0x10, 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x08, 0x10, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 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, 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, 0x00, 0x00, 0x08, 0x10, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x10, 0x00, 0x07, 0x83, 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, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 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, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 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, 0x00, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 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, 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, 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}; void setup () {pinMode (Key_add, INPUT); digitalWrite (Key_add, HIGH); pinMode (Key_sub, INPUT); digitalWrite (sub-chave, ALTO); pinMode (Key_hold, INPUT); digitalWrite (Key_hold, HIGH); ADMUX =0x60; ADCSRA =0xe2; u8g.setFont (u8g_font_5x7); u8g.firstPage (); faça {u8g.drawBitmapP (0, 0, 16, 64, L); } while (u8g.nextPage ()); atraso (2000); } void loop () {amostra (); A medida( ); Transformar (); Key_scan (); if (mantenha ==0) {u8g.firstPage (); fazer {desenhar (); } while (u8g.nextPage ()); }} void sample () {para (i =0; i <192; i ++) {Buffer [i] =ADCH; interruptor (chave) {caso 1:quebra; caso 2:atraso Microssegundos (4); pausa; caso 3:atraso Microssegundos (10); pausa; caso 4:atraso Microssegundos (23); pausa; caso 5:atraso Microssegundos (60); pausa; caso 6:atraso Microssegundos (123); pausa; caso 7:atraso Microssegundos (248); pausa; caso 8:atraso Microssegundos (623); pausa; caso 9:atraso Microssegundos (1247); pausa; padrão:break; }}} 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 (Buffer [i]  =V_mid) {i1 =i; pausa; }} para (i =i1 + 1; i <98 + i1; i ++) {if (Buffer [i]  =V_mid) {i2 =i; pausa; }} t =i2-i1; se (t> 0) Freq =8000 / t; else Freq =0;} void Transform () {for (sta =0; sta <96; sta ++) {if (Buffer [sta] <128 &&Buffer [sta + 2]> 128) quebrar; } para (i =0; i <96; i ++) Y [i] =63- (Tampão [i + sta]>> 2); } void draw () {for (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); for (y =0; y <64; y + =8) u8g.drawLine (47, y, 49, y); for (x =8; x <96; x + =8) {for (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)"); switch (chave) {caso 1:u8g.drawStr (98,14, "0,02"); u8g.setPrintPos (98, 62); u8g.print (Freq * 50); pausa; caso 2:u8g.drawStr (98,14, "0,05"); u8g.setPrintPos (98, 62); u8g.print (Freq * 20); pausa; caso 3:u8g.drawStr (98,14, "0,1"); u8g.setPrintPos (98, 62); u8g.print (Freq * 10); pausa; caso 4:u8g.drawStr (98,14, "0,2"); u8g.setPrintPos (98, 62); u8g.print (Freq * 5); pausa; caso 5:u8g.drawStr (98,14, "0,5"); u8g.setPrintPos (98, 62); u8g.print (Freq * 2); pausa; caso 6:u8g.drawStr (98,14, "1"); u8g.setPrintPos (98, 62); u8g.print (Freq); pausa; caso 7:u8g.drawStr (98,14, "2"); u8g.setPrintPos (98, 62); u8g.print (Freq / 2); pausa; caso 8:u8g.drawStr (98,14, "5"); u8g.setPrintPos (98, 62); u8g.print (Freq / 5); pausa; caso 9:u8g.drawStr (98,14, "10"); u8g.setPrintPos (98, 62); u8g.print (Freq / 10); pausa; padrão:break; }} void Key_scan () {if (digitalRead (Key_add) ==LOW) {while (digitalRead (Key_add) ==LOW); Key ++; if (Chave ==10) Chave =9; atraso (10); } if (digitalRead (Key_sub) ==LOW) {while (digitalRead (Key_sub) ==LOW); Chave--; if (Chave ==0) Chave =1; atraso (10); } if (digitalRead (Key_hold) ==LOW) {while (digitalRead (Key_hold) ==LOW); segure =~ segure; atraso (10); }} 

Esquemas


Processo de manufatura

  1. DIY LUMAZOID Arduino Music Visualiser
  2. DIY Simple 20 kHz Arduino Oscilloscope no Nokia 5110 LCD
  3. Homem de Ferro
  4. Encontre-me
  5. Matriz LED + Display da porta do sensor de movimento [Arduino Holiday]
  6. Controle do umidificador Arduino
  7. Voltímetro DIY com Arduino e um visor Nokia 5110
  8. Sonar usando arduino e exibição no IDE de processamento
  9. MobBob:DIY Arduino Robot Controlado por Smartphone Android
  10. Osciloscópio DIY 10Hz-50kHz em tela LCD 128x64