Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

DIY 10Hz-50kHz Oszilloskop auf 128x64 LCD-Display

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
Kondensator 100 µF
× 1
ST7920 LCD 128x64
× 1
Drehpotentiometer (allgemein)
× 2
Druckschalter, kurzzeitig
× 3

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Dieses Projekt beschreibt eine Möglichkeit, ein einfaches Oszilloskop mit einem Bereich von 10 Hz bis 50 kHz herzustellen. Dies ist ein extrem großer Bereich, da das Gerät keinen externen Digital-Analog-Wandler-Chip verwendet, sondern nur Arduino.

Das Ergebnis wird auf einem relativ großen LCD-Bildschirm (ST7920) mit einer Auflösung von 128x64 Pixel angezeigt. Der Messanzeigebereich ist 96x64 und der Informationsanzeigebereich ist 32x64, wo die Testsignalfrequenz, Vpp usw. angezeigt werden.

Es ist extrem einfach zu bauen und besteht nur aus wenigen Komponenten:

- Arduino Nano

- ST7920 LCD-Display mit 128x64 Auflösung

- drei Taster

- zwei Potentiometer

- und ein Kondensator 100 microF

Das Gerät verfügt über mehrere Funktionen wie:Auto-Trigger (Anzeige sehr stabil), Scan-Geschwindigkeit:0,02 ms/div ~ 10 ms/div, entsprechend 1-2-5 Übertrag und Aufteilung in neun Stufen und Haltefunktion:Anzeigewellenform und Parameter einfrieren. Dieses Projekt wird im Blog von Wu Hanqing veröffentlicht, wo Sie den Originalcode finden. Ich habe nur minimale Änderungen vorgenommen, da ich das Oszilloskop auf der Grundlage der Hardware eines meiner früheren Projekte erstellt habe. Wie Sie im Video sehen können, hat das Instrument aufgrund des großen Bildschirms eine sehr klare Sicht und auch einen überraschend guten Autotrigger. Die vertikale Position des Bildes wird mit dem Potentiometer von 50 kOhm eingestellt, und der Kontrast mit dem 10 kOhm-Potentiometer. Ich habe das Oszilloskop mit einem Sinus- und Rechtecksignalgenerator getestet.

Auch wenn es sich nicht um ein professionelles oder sehr brauchbares Instrument handelt, kann es dennoch zu Bildungszwecken oder in Ihrem Labor zum Testen von Niederfrequenzsignalen verwendet werden, insbesondere da das Gerät sehr einfach herzustellen und extrem billig ist.

Code

  • Arduino-Code
Arduino-CodeC/C++
#include U8GLIB_ST7920_128X64_4X u8g(6, 5, 4); int-Eingang =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; lange Freq; Schwimmer Vpp; int Y[96]; int-Puffer[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, 0x 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 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, 0x01, 0xE0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x,1 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 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, 0x60, 0x08, 0 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, 0 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xC0, 0x01, 0x80, 0x60, 0x00, 0x00, 0x00, 0x08, 0x10, 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, 0x6F, 0x8F,00 0x08, 0x10, 0x00, 0x00, 0x03, 0x8F, 0xFF, 0x00, 0x01, 0xE3, 0x1B, 0xB6, 0x6D, 0x9B, 0x80, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF 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, 0 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, 0x1000, 0x00, 0 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, 0x0C, 0x00, 0x,0 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, 0xFF, 0x80 0x0D, 0x93, 0x6E, 0xCD, 0x90, 0x00, 0x00, 0x08, 0x10, 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x00, 0x00, 0x0F, 0x30, 0xC6, 0xCF, 0xF8, 0x,08, 0x 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x00, 0x00, 0x03, 0xB0, 0xC6, 0xCF, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x, 0x00, 0x 0x6C, 0xCD, 0xB0, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x07, 0x9E, 0x3C, 0xF9, 0xE0, 0x00, 0x00, 0x08, 0 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x08, 0x10, 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 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, 0x08, 0 0x00, 0x07, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x07, 0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0 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, 0 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0 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, 0x0x, 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, 0 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, 0x 0x00, 0x00, 0x00, 0x00}; Void setup () {pinMode (Key_add, INPUT); digitalWrite(Key_add,HIGH); pinMode (Key_sub, INPUT); digitalWrite(Key_sub,HIGH); pinMode (Key_hold, INPUT); digitalWrite(Key_hold,HIGH); ADMUX=0x60; ADCSRA=0xe2; u8g.setFont(u8g_font_5x7); u8g.firstPage(); do { u8g.drawBitmapP( 0, 0, 16, 64, L); } while(u8g.nextPage()); Verzögerung (2000); aufrechtzuerhalten. Void Schleife ( ) { Probe ( ); Messen( ); Transformieren ( ); Key_scan( ); if(hold==0) { u8g.firstPage( ); tun { zeichnen ( ); } while( u8g.nextPage( )); }} Leere Probe () { for(i =0; i <192; i++) { Puffer [i] =ADCH; Schalter (Schlüssel) {Fall 1:Pause; Fall 2:VerzögerungMikrosekunden(4); brechen; Fall 3:VerzögerungMikrosekunden (10); brechen; Fall 4:VerzögerungMikrosekunden (23); brechen; Fall 5:VerzögerungMikrosekunden (60); brechen; Fall 6:VerzögerungMikrosekunden(123); brechen; Fall 7:VerzögerungMikrosekunden (248); brechen; Fall 8:VerzögerungMikrosekunden (623); brechen; Fall 9:VerzögerungMikrosekunden (1247); brechen; Standard:Pause; } }}void Measure () { V_max =Buffer [0]; V_min=Puffer[0]; for(i=0;i<192;i++) { if(Puffer[i]>V_max) V_max=Puffer[i]; if(Puffer[i]=V_mid) { i1=i; brechen; }} for(i=i1+1;i<98+i1;i++) { if(Puffer[i]=V_mid) { i2=i; brechen; }} t=i2-i1; wenn (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; } for(i =0;i <96;i++) Y[i] =63-(Puffer[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); for(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(Key) { Fall 1:u8g.drawStr(98,14,"0.02"); u8g.setPrintPos( 98, 62); u8g.print (Freq*50); brechen; Fall 2:u8g.drawStr(98,14,"0.05"); u8g.setPrintPos( 98, 62); u8g.print (Freq*20); brechen; Fall 3:u8g.drawStr(98,14," 0,1"); u8g.setPrintPos( 98, 62); u8g.print (Freq*10); brechen; Fall 4:u8g.drawStr(98,14," 0,2"); u8g.setPrintPos( 98, 62); u8g.print (Freq*5); brechen; Fall 5:u8g.drawStr(98,14," 0,5"); u8g.setPrintPos( 98, 62); u8g.print (Freq*2); brechen; Fall 6:u8g.drawStr(98,14," 1"); u8g.setPrintPos( 98, 62); u8g.print (Freq); brechen; Fall 7:u8g.drawStr(98,14," 2"); u8g.setPrintPos( 98, 62); u8g.print (Freq/2); brechen; Fall 8:u8g.drawStr(98,14," 5"); u8g.setPrintPos( 98, 62); u8g.print (Freq/5); brechen; Fall 9:u8g.drawStr(98,14," 10"); u8g.setPrintPos( 98, 62); u8g.print (Freq/10); brechen; Standard:Pause; }}void Key_scan () { if (digitalRead (Key_add) ==LOW) { während (digitalRead (Key_add) ==LOW); Schlüssel++; if(Schlüssel==10) Schlüssel=9; Verzögerung(10); aufrechtzuerhalten. Wenn (digitalRead (Key_sub) ==LOW) { während (digitalRead (Key_sub) ==LOW); Taste--; if(Schlüssel==0) Schlüssel=1; Verzögerung(10); aufrechtzuerhalten. Wenn (digitalRead (Key_hold) ==LOW) { Während (digitalRead (Key_hold) ==LOW); halten =~ halten; Verzögerung(10); }} 

Schaltpläne


Herstellungsprozess

  1. DIY LUMAZOID Arduino Music Visualiser
  2. DIY Einfaches 20-kHz-Arduino-Oszilloskop auf Nokia 5110 LCD
  3. Iron Man
  4. Finde mich
  5. LED-Matrix + Bewegungssensor-Türanzeige [Arduino Holiday]
  6. Arduino-Befeuchtersteuerung
  7. DIY Voltmeter mit Arduino und einem Nokia 5110 Display
  8. Sonar mit Arduino und Anzeige bei der Verarbeitung von IDE
  9. MobBob:DIY-Arduino-Roboter, der von einem Android-Smartphone gesteuert wird
  10. DIY 10Hz-50kHz Oszilloskop auf 128x64 LCD-Display