Membuat Osiloskop Digital Via Arduino: 3 Langkah

Membuat Osiloskop Digital Via Arduino: 3 Langkah

Daftar Isi:

Anonim

Sering terlihat orang membuat osiloskop digital online, DSO harus memiliki unit konversi digital-analog, menurut d / sirkuit konversi dapat dibagi menjadi dua mode: 1. Chip ADC khusus + chip tunggal, 2. menggunakan chip ADC tunggal menghitung di dalam konverter. Untuk model pertama saya mencoba dua (lihat blog saya: http://blog.Sina.com.CN/ntwhq), sirkuit ini sedikit lebih kompleks, komponen lebih sulit untuk diselesaikan, sulit untuk pemula. Struktur kedua relatif sederhana, mudah dibuat, tetapi memiliki kelemahan signifikan, yaitu, dengan bandwidth sempit, salah satu karya yang lebih khas adalah teman-teman luar negeri dari http://www.serasidis.gr/circuits/AVR_oscilloscope/avr_oscilloscope. htm, bandwidth dari osiloskop hanya 7.7KHz. Pengguna domestik dan produksi AVR chip tunggal STC, tetapi bandwidth sebenarnya kurang dari 10KHz. Anda juga dapat memilih untuk menggunakan Fusion PCB untuk membuat papan PCB daripada menyolder sendiri.

Persediaan:

Langkah 1: Kode

Baru-baru ini melihat seorang teman bersih dengan osiloskop Arduino, mungkin lebih mudah daripada metode kedua di atas, tetapi hasilnya tidak ideal, bandwidthnya sempit. Jadi saya ingin mencoba dan melihat dan tidak ada cara yang baik untuk menyelesaikan masalah ini. Diproduksi oleh eksperimen, dan terus-menerus mengubah kode, dan meningkatkan laju sampel konversi, hasil yang sangat baik telah dicapai.

Parameter utama produk akhir: Respons frekuensi: 10Hz-50KHz Catu daya: 5V LCD Layar LCD: 128x64 (ST7920) Area tampilan pengukuran: 96x64 Tampilan informasi: 32x64, menampilkan frekuensi sinyal uji, Vpp, dan banyak lagi Sinkronisasi: pemicu tepi naik Kecepatan pindai: 0,02 ms / div ~ 10 ms / div, membawa sembilan fungsi 1-2-5 Tahan: membekukan bentuk gelombang dan parameter yang ditampilkan Kedua, uji dasar Menggunakan keunggulan terbesar proyek Arduino adalah sumber dayanya yang kaya, dan tidak perlu banyak pengetahuan tentang SCM. Saya dibuat menggunakan repositori u8glib LCD, membuatnya lebih mudah diprogram, atau drive LCD akan menghabiskan banyak waktu. Unduhan U8glib: u8glib_arduino_v1.13.zip (989.55 KB, unduhan: 2577) Ini adalah sirkuit tes pertama saya untuk bangunan Arduino UNO, dari 12864 LCD LCD menggunakan kontrol ST7920. Selama metode input dalam kode berikut, dikompilasi setelah pengunduhan, Anda dapat mencapai fungsi dasar osiloskop digital, bukankah itu lebih sederhana? # Sertakan // statement U8GLIB_ST7920_128X64_4X u8g (13, 12, 11); Pernyataan LCD SPI Com: SCK = 13, MOSI = 12, CS = 11 int x, y; Painted point koordinat ke Buffer 128; Susunan array penyimpanan cache () {} Contoh sampel kosong () {untuk (x = 0; x <128; x ++) Buffer x = analogRead (A0); Pengambilan sampel sinyal untuk (x = 0; x <128; x ++) Penyangga x = 63- (Penyangga x >> 4); Hitung nilai y} Tampilkan void draw () {for (x = 0; x <127; x ++) u8g.drawLine (x, Buffer x, x, Buffer x + 1); Gambarlah dua baris u8g.drawLine (64,0,64,63); Gambarkan sumbu u8g.drawLine (0,32.128,32); Untuk (x = 0; x <128; x + = 8) // gambar skala sumbu u8g.drawLine (x, 31, x, 33); untuk (x = 0; x <64; x + = 8) u8g.drawLine (63, x, 65, x); u8g.drawFrame (0,0128,64); Draw border} void loop () {sample (); Contoh u8g.firstPage (); Hapus layar jangan menggambar (); Tampilkan sementara (u8g.nextPage ());

}

Langkah 2: Sirkuit

Menggunakan sirkuit tes, Arduino saya diukur secara langsung menggunakan fungsi analogRead () untuk menyelesaikan iklan / konversi untuk kecepatan konversi sekitar 111 μs lambat, sehingga banyak bandwidthnya adalah 1KHz, prioritas berikutnya adalah meningkatkan kecepatan digital-analog konversi, sambil menambahkan fitur lainnya.

Ketiga, program terbaru Berikut adalah kode sumber terbaru yang digunakan, harap simpan LOGO boot saya, HA HA. Arduino_oscilloscope.zip (2.72 KB, unduhan: 2710)

Program chip 1.1V ADC menggunakan referensi tegangan yang disebutkan di atas, jika Anda ingin menggunakan tegangan referensi 5V eksternal harus program ADMUX = 0xe0; Kepada: ADMUX = 0x60; Vpp = (V_max-V_min) * 1.1 / 255; baca: Vpp = (V_max-V_min) * 5/255;

Gunakan Fusion PCB dapat membuat papan sirkuit yang jauh lebih baik.

Keempat, Eksperimen buatan mesin menggunakan Arduino UNO di atas, kartu aktual saat menggunakan Arduino PRO mini, sehingga memiliki volume yang lebih kecil.

Diagram sirkuit:

Daftar komponen utama: Nama nomor Arduino PRO mini 1 LCD12864 LCD (ST7920) 1 kapasitor elektrolitik (100 μ 25V) 1 potensiometer (50k) 1 lubang pelat 3 sakelar daya 3 kartrid baterai 2 sakelar tombol (dengan baterai yang dapat diisi ulang, 7) 1 Kasing 1

1, pengelasan Arduino PRO mini PIN.

2, pengelasan komponen papan sirkuit

3, membuat pelat lubang LCD

4, merakit papan sirkuit

5, membuat case saya menggunakan restrukturisasi pengisian kotak harta dengan casing plastik, di tempat yang sesuai di lubang.

6, Majelis

Masukkan papan sirkuit ke dalam case, dengan Panel putih tebal, yang terpasang di bagian dalam panel depan.

Langkah 3: Unggah dan Uji

Karena mini Arduino PRO tidak mengubah sirkuit port serial USB, jadi untuk mentransfer melalui port serial USB mengunduh sebelum mengunduh program.

Oscilloscope debugging sangat sederhana, hanya perlu menyesuaikan potensiometer 50k di tengah scanlines horizontal. Saya menggunakan sumber sinyal generator sinyal.

Boot LOGO

Pengujian:

beberapa penjelasan

1, ini adalah salah satu Osiloskop digital paling sederhana, Anda dapat lebih meningkatkan atas dasar ini;

2, Anda mungkin telah memperhatikan bahwa saya tidak menggunakan port I / O 0-7, yang kebetulan merupakan mikrokomputer dan mulut chip tunggal 8-bit AVR, inilah yang saya siapkan untuk peningkatan selanjutnya, menggunakan chip ADC khusus, itu dapat digunakan sebagai entri data, jika Anda tertarik pada osiloskop, maka saya akan mempertimbangkan untuk meningkatkan;

3, pekerjaan terburu-buru dan memiliki cacat dan kekurangan, mohon saran, Anda memiliki pertanyaan Anda juga bisa di sini.