Tentang proyek ini
Kali ini saya akan menunjukkan cara membuat osiloskop Arduino sederhana. Frekuensi sinyal maksimum yang dapat ditampilkan osiloskop adalah 20 kHz, dan tegangan input maksimum adalah 5 V tanpa pembagi tegangan.
Osiloskop dikendalikan oleh empat tombol:
- Tombol "TAHAN" - yang berfungsi untuk membekukan keadaan layar saat ini
- Tombol sinkronisasi yang memungkinkan Anda mengatur tingkat sinkronisasi.
- Dan Tombol "+" dan "-" yang mengontrol sapuan, tingkat sinkronisasi, dan memindahkan gambar sinyal dalam mode TAHAN.
Pada layar Nokia 5110, secara vertikal setiap sel adalah 1 V, secara horizontal satu sel sama dengan resolusi pemindaian, yang memiliki nilai (berikut) dari:0.1, 0.2, 0.5, 1.0, 2.0, 5.0, 10.0, 20.0 dan 50.0 ms . Nilai sapuan diubah dengan tombol "+" dan "-", yang ditampilkan di sudut kiri atas. Level pemicu ditampilkan sebagai bilah kecil di sisi kiri layar, dan tegangan pemicu ditampilkan di sudut kanan atas layar. Proyek ini dipublikasikan di halaman arduino.ru di mana Anda dapat membaca lebih detail.
Perangkat ini sangat sederhana untuk dibuat dan hanya terdiri dari beberapa komponen - mikrokontroler Arduino Nano
- Layar LCD Nokia N5110
- empat tombol
- empat resistor pull-down
- Colokan masukan
- Dan sakelar Daya dan Led
Saya menguji osiloskop dengan generator sinyal sinus dan persegi panjang. 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.
Terakhir, perangkat ditempatkan dalam kotak yang cocok yang terbuat dari PVC dan dilapisi dengan wallpaper berperekat.
Kode
Kode ArduinoC/C++
#include #include #include Adafruit_PCD8544 display =Adafruit_PCD8544(7, 6, 5, 4, 3);//CLK,DIN,DC,CE, RST |||| VCC +3.3 V , BL ++ 200 OM ++ 3.3 V int izm,x,y,u,i2,zz,hold,h0,h1,h2,raz=0,menu,sss=512,u_dig,data[168] ]{};lama tidak ditandatangani,kali;float per;byte i; void setup() {Serial.begin(9600); display.begin();display.clearDisplay();display.display(); display.setContrast(40); // pengaturan kontras display.setTextSize(1); // mengatur ukuran font display.setTextColor(HITAM); // mengatur warna teks pinMode(10,INPUT); // + pinMode(11,INPUT); // - pinMode(12,INPUT); // tahan pinMode(13,INPUT); // ADMUX =0b01000000; // 0B0100000 10 bit A0 // 0B01100000 8 bit A0 ADCSRA =0b11110010;// CLK/4; analogWrite (9, 127); // PWM 9 OUTPUT} void loop() {/////////////////////////BUTTON CONTROL////////// //////////////////// if(menu==0){ if(digitalRead(10)==HIGH){if(hold==0){raz++;} if(hold==1){i2=i2+1;}delay(100);} if(digitalRead(11)==HIGH){if(hold==0){raz--;}if(hold==1&&hold>0){i2=i2-1;}delay(100);} } if(digitalRead(12)==HIGH){hold++;i2=0;delay(100);} if(digitalRead(13)==TINGGI){menu++;delay(100);} if(hold>1){hold=0;}if(menu>1||menu<0){menu=0;} if(raz<=0){raz=0;}jika(raz>8){raz=8;} jika(menu==1){hold=0; if(digitalRead(10)==HIGH){sss+=24;delay(100);} if(digitalRead(11)==HIGH){sss-=24;delay(100);} if(sss>1023){ sss=1023;}jika(sss<0){sss=0;} } display.setCursor(0,0); // mengatur posisi kursor/////////////////////////SWEEP TIME dikalibrasi oleh generator /////////////// ///////////// if(raz==0){zz=1;h2=2;per=0.1;} if(raz==1){zz=1;h2=1; per=0.2;} if(raz==2){zz=12;h2=1;per=0.5;} if(raz==3){zz=32;h2=1;per=1;} if(raz ==4){zz=75;h2=1;per=2;} jika(raz==5){zz=200;h2=1;per=5;} jika(raz==6){zz=380;h2=1;per=10;} if(raz==7){zz=750;h2=1;per=20;} if(raz==8){zz=1900;h2=1;per=50;}//////////////////////////////////////////////////////////////// /////////////////// if(hold==0&&millis()-time>0){ ads(); while(izm5000){break;}}h0=0;// SYNCHRONISATION times=micros(); while(i<167){i++;delayMikrodetik(zz); iklan();data[i]=izm; // PENGUKURAN 10 bit }i=0;kali=mikro()-kali; Serial.println(kali); }///////////////////OUTPUT PADA DISPLAY////////////////////////////////////// ///// if(millis()-time>100){ display.clearDisplay(); if(sss<204&&sss>100){u_dig=10;display.setCursor(0,40);display.print("0.4V");} else if(sss<100){u_dig=5; display.setCursor(0,40);display.print("0.2V");} else{u_dig=25;} display.setCursor(0,0); while(i<167){i++;setka(); display.drawLine(i*h2-i2, 47-data[i]/u_dig,i*h2-i2+h2-1, 47-data[i+1]/u_dig, BLACK);}i=0; display.print(per,1);display.print(" mS "); if(menu==0){if(hold==1){display.print("HOLD ");}else{display.print("AUTO ");}} if(menu==1){display.print (sss/200.0,1);display.print(" V ");} if(menu==1){display.drawLine(0, 48-sss/u_dig,4, 48-sss/u_dig, HITAM);} waktu=milis();} display.display(); }// loop void iklan(){ //////// 10 bit /////////// do{ADCSRA |=(1 < Skema