Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Osiloskop DIY 10Hz-50kHz pada Layar LCD 128x64

Komponen dan persediaan

Arduino Nano R3
× 1
Kapasitor 100 F
× 1
ST7920 LCD 128x64
× 1
Potensiometer putar (generik)
× 2
Sakelar Tombol Tekan, Sesaat
× 3

Alat dan mesin yang diperlukan

Besi solder (generik)

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Proyek ini menjelaskan cara membuat osiloskop sederhana yang memiliki rentang dari 10Hz hingga 50kHz. Ini adalah rentang yang sangat besar, mengingat perangkat tidak menggunakan chip konverter digital ke analog eksternal, tetapi hanya Arduino.

Hasilnya ditampilkan pada layar LCD yang relatif besar (ST7920) dengan resolusi 128x64 piksel. Area tampilan pengukuran adalah 96x64 dan area tampilan informasi adalah 32x64, di mana ditampilkan frekuensi sinyal uji, Vpp, dll.

Pembuatannya sangat sederhana dan hanya terdiri dari beberapa komponen:

- Arduino Nano

- Layar LCD ST7920 dengan resolusi 128x64

- tiga sakelar sesaat

- dua potensiomer

- dan satu kapasitor 100 mikroF

Perangkat ini memiliki beberapa fungsi seperti:pemicu otomatis (tampilan sangat stabil), Kecepatan pemindaian:0.02ms/div~10ms/div, menurut 1-2-5 carry dan bagi menjadi sembilan level dan fungsi Hold:Membekukan bentuk gelombang dan parameter tampilan. Proyek ini dipublikasikan di blog Wu Hanqing di mana Anda dapat menemukan kode aslinya. Saya membuat sedikit perubahan karena saya sedang membangun osiloskop berdasarkan perangkat keras dari salah satu proyek saya sebelumnya. Seperti yang Anda lihat di video, instrumen memiliki tampilan yang sangat jelas karena layarnya yang besar, dan juga pemicu otomatis yang sangat bagus. Posisi vertikal gambar diatur dengan potensiometer 50 kohm, dan kontras dengan potensiometer 10 kohm. Saya menguji osiloskop dengan generator sinyal sinus dan persegi panjang.

Terakhir, meskipun bukan merupakan instrumen profesional atau sangat berguna, alat ini masih dapat digunakan untuk tujuan pendidikan atau di laboratorium Anda, untuk menguji sinyal frekuensi rendah, terutama mengetahui bahwa perangkat ini sangat mudah dibuat dan sangat murah.

Kode

  • Kode Arduino
Kode ArduinoC/C++
#include U8GLIB_ST7920_128X64_4X u8g(6, 5, 4); int Masukan =A0; int Kunci_tambah =8; int Kunci_sub =9; int Kunci_tahan =10; int x,y; int i,i1,i2,V_min,V_max,V_mid,t,t0,t1,sta,Kunci=1,tahan=0; frekuensi panjang; mengambang Vpp; int Y[96]; int Penyangga[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, 0x00 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, 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, 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, 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, 0x08, 0x10, 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, 0x10, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF 0x00, 0x01, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x01, 0xE3, 0xDF, 0xB6, 0x6F, 0x8F, 0,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, 0x00 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x06, 0x1B, 0x1F, 0xBE, 0x6C, 0x8F, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00 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, 0x0C, 0x00, 0x0, 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, 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, 0x10,08, 0x10,08, 0x 0x0F, 0x87, 0xFF, 0xF9, 0x80, 0x00, 0x00, 0x03, 0xB0, 0xC6, 0xCF, 0x00, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x6C, 0xCD, 0xB0, 0x00, 0x00, 0x08, 0x10, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x07, 0x9E, 0x3C, 0xF9, 0xE0, 0x00, 0x00, 0x08, 0x10 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, 0xF 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, 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, 0x00 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, 0x106, 0x00 0x03, 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, 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, 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 }; void setup() { pinMode(Key_add,INPUT); digitalWrite(Key_add,TINGGI); pinMode(Key_sub,INPUT); digitalWrite(Key_sub,TINGGI); pinMode(Key_hold,INPUT); digitalWrite(Key_hold,TINGGI); ADMUX=0x60; ADCSRA=0xe2; u8g.setFont(u8g_font_5x7); u8g.HalamanPertama(); lakukan { u8g.drawBitmapP( 0, 0, 16, 64, L); } while( u8g.nextPage() ); penundaan(2000); } void loop() { sampel(); Ukuran( ); Transformasi(); Pemindaian_kunci(); if(hold==0) { u8g.Halaman pertama(); melakukan { menggambar(); } while( u8g.nextPage()); } } void sampel( ) { for(i =0;i <192;i++) { Penyangga[i] =ADCH; switch(Kunci) { kasus 1:istirahat; kasus 2:delayMicroseconds(4); merusak; kasus 3:delayMicroseconds(10); merusak; kasus 4:delayMicroseconds(23); merusak; kasus 5:delayMicroseconds(60); merusak; kasus 6:delayMicroseconds(123); merusak; kasus 7:delayMicroseconds (248); merusak; kasus 8:delayMicroseconds (623); merusak; kasus 9:delayMicroseconds (1247); merusak; default:istirahat; } }}Void Ukur(){ V_max=Buffer[0]; V_min=Penyangga[0]; for(i=0;i<192;i++) { if(Buffer[i]>V_max) V_max=Buffer[i]; if(Penyangga[i]=V_mid) { i1=i; merusak; } } for(i=i1+1;i<98+i1;i++) { if(Buffer[i]=V_mid) { i2=i; merusak; } } t=i2-i1; jika(t>0) Frekuensi=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-(Buffer[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); untuk(y=0;y<64;y+=8) u8g.drawLine(47,y,49,y);untuk(x=8;x<96;x+=8) { untuk(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(Kunci) { kasus 1:u8g.drawStr(98,14,"0.02"); u8g.setPrintPos( 98, 62); u8g.print(Frekuensi*50); merusak; kasus 2:u8g.drawStr(98,14,"0,05"); u8g.setPrintPos( 98, 62); u8g.print(Frekuensi*20); merusak; kasus 3:u8g.drawStr(98,14," 0.1"); u8g.setPrintPos( 98, 62); u8g.print(Frekuensi*10); merusak; kasus 4:u8g.drawStr(98,14," 0.2"); u8g.setPrintPos( 98, 62); u8g.print(Frekuensi*5); merusak; kasus 5:u8g.drawStr(98,14," 0,5"); u8g.setPrintPos( 98, 62); u8g.print(Frekuensi*2); merusak; kasus 6:u8g.drawStr(98,14," 1"); u8g.setPrintPos( 98, 62); u8g.print(Frekuensi); merusak; kasus 7:u8g.drawStr(98,14," 2"); u8g.setPrintPos( 98, 62); u8g.print(Frekuensi/2); merusak; kasus 8:u8g.drawStr(98,14," 5"); u8g.setPrintPos( 98, 62); u8g.print(Frekuensi/5); merusak; kasus 9:u8g.drawStr(98,14," 10"); u8g.setPrintPos( 98, 62); u8g.print(Frekuensi/10); merusak; default:istirahat; }}void Key_scan(){ if(digitalRead(Key_add)==LOW) { while(digitalRead(Key_add)==LOW); Kunci++; if(Kunci==10) Kunci=9; penundaan (10); } if(digitalRead(Key_sub)==LOW) { while(digitalRead(Key_sub)==LOW); Kunci--; if(Kunci==0) Kunci=1; penundaan (10); } if(digitalRead(Key_hold)==LOW) { while(digitalRead(Key_hold)==LOW); tahan=~tahan; penundaan (10); }} 

Skema


Proses manufaktur

  1. DIY LUMAZOID Arduino Music Visualizer
  2. DIY Sederhana 20 kHz Arduino Oscilloscope pada LCD Nokia 5110
  3. Iron Man
  4. Temukan Saya
  5. Matriks LED + Tampilan Pintu Sensor Gerak [Arduino Holiday]
  6. Kontrol Humidifier Arduino
  7. Voltmeter DIY dengan Arduino dan Tampilan Nokia 5110
  8. Sonar menggunakan arduino dan ditampilkan pada pemrosesan IDE
  9. MobBob:Robot Arduino DIY Dikendalikan oleh Smartphone Android
  10. Osiloskop DIY 10Hz-50kHz pada Layar LCD 128x64