Isi kandungan:

Arduino Precise & Accurate Volt Meter (0-90V DC): 3 Langkah
Arduino Precise & Accurate Volt Meter (0-90V DC): 3 Langkah

Video: Arduino Precise & Accurate Volt Meter (0-90V DC): 3 Langkah

Video: Arduino Precise & Accurate Volt Meter (0-90V DC): 3 Langkah
Video: How To Make 4 Digit Digital Voltmeter | 0-100V DC Arduino based 2024, Julai
Anonim

Dalam arahan ini, saya telah membina voltmeter untuk mengukur voltan tinggi DC (0-90v) dengan ketepatan dan ketepatan relatif menggunakan Arduino Nano.

Pengukuran ujian yang saya ambil cukup tepat, kebanyakannya berada dalam lingkungan 0.3v voltan sebenar yang diukur dengan voltmeter standard (saya menggunakan Astro AI DM6000AR). Ini cukup dekat untuk tujuan penggunaan peranti saya.

Untuk mengarkibkan ini, saya menggunakan rujukan voltan (4.096v) dan pembahagi voltan.

Dari segi kod, saya menggunakan, tentu saja, pilihan "rujukan luaran" untuk Arduino Nano dan contoh "Melicinkan" dalam tutorial Arduino.

Bekalan

1 x Arduino Nano - Pautan

1 x Paparan Oled (SSD 1306) - Pautan

1 x 1 / 4W 1% Perintang - 1k ohm - Pautan

1 x 1 / 4W 1% Perintang - 220k ohm - Pautan

1 x 1 / 4W 1% Perintang - 10k ohm - Pautan

Rujukan Voltan 1 x 4.096v LM4040DIZ-4.1 - Pautan

Papan roti dan wayar - Pautan

Astro AI DM6000AR - Pautan

Bank Kuasa USB - Pautan

Bateri 9V - Pautan

CanadianWinters adalah peserta dalam Program Associates Amazon Services LLC, program periklanan afiliasi yang direka untuk menyediakan cara bagi laman web untuk mendapatkan bayaran dengan menghubungkan ke Amazon.com dan laman web gabungan. Dengan menggunakan pautan ini, sebagai Amazon Associate, saya memperoleh hasil dari pembelian yang layak, walaupun anda membeli sesuatu yang lain - dan ia tidak akan dikenakan apa-apa.

Langkah 1: Skematik

Skematik
Skematik
Skematik
Skematik

Saya menghubungkan semua bahagian mengikut skema di atas. Khususnya saya memilih rujukan voltan 4.096 untuk tetap sedekat mungkin dengan tanda 5v untuk mengelakkan kehilangan resolusi.

Mengikuti lembaran data, saya memilih perintang ohm 1K untuk rujukan voltan walaupun nilai yang berbeza dapat digunakan. Voltan untuk rujukan dibekalkan dari pin Nano 5v.

Idea litar adalah bahawa voltan DC yang akan diukur melalui perintang voltan. Voltan skala dan kemudian masuk ke pin analog Arduino untuk diambil sampel, dilicinkan, skala semula dan dipaparkan pada paparan OLed.

Saya cuba memastikan perkara mudah:)

Langkah 2: Pengiraan Kod dan Perintang

Nilai perintang dipilih kerana disarankan (jika saya tidak salah, ini terdapat pada lembar data Arduino / Atmega) untuk memastikan impedans di bawah 10k ohm.

Untuk mempermudah, saya membuat spreadsheet yang mengautomasikan pengiraan sekiranya anda ingin menggunakan nilai perintang yang berbeza: Pautan ke Helaian Google

Inilah kod yang saya gunakan untuk projek ini:

#sertakan

#masuk U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (putaran, [reset]) voltan apungan = 0; // digunakan untuk menyimpan nilai voltan apungan Radjust = 0.043459459; // Faktor pembahagi voltan (R2 / R1 + R2) float vbat = 0; // voltan akhir selepas calcs- voltan bateri mengapung Vref = 4.113; // Rujukan voltan - nilai sebenar diukur. Nilai nominal 4.096v const int numReadings = 50; // bilangan sampel bacaan - meningkat untuk lebih lancar. Kurangkan untuk membaca lebih pantas. bacaan int [numReadings]; // bacaan dari input analog int readIndex = 0; // indeks bacaan semasa yang belum ditandatangani jumlah panjang = 0; // jumlah int purata yang berjalan = 0; // pemboleh ubah untuk menyegarkan skrin tanpa menggunakan penundaan lama yang tidak ditandatangani sebelumnyaMillis = 0; // akan disimpan terakhir kali skrin dikemas kini // pemalar tidak akan berubah: selang panjang const = 50; // selang waktu untuk menyegarkan skrin (milisaat) penyediaan kosong (kekosongan) {analogReference (LUARAN); // gunakan AREF untuk voltan rujukan 4.096. Voltan sebenar rujukan saya ialah 4.113v u8g2.begin (); untuk (int thisReading = 0; thisReading = numReadings) {// … bungkus hingga awal: readIndex = 0; } // hitung rata-rata: purata = (total / numReadings); voltan = purata * (Vref / 1023.0); //4.113 adalah Vref vbat = voltan / Radjust; // Menetapkan kelewatan penyegaran skrin menggunakan Millis jika (currentMillis - sebelumnyaMillis> = selang) {// simpan kali terakhir skrin dikemas kini sebelumnyaMillis = currentMillis; u8g2.clearBuffer (); // kosongkan menu dalaman // Paparan voltan pek u8g2.setFont (u8g2_font_fub20_tr); // Fon 20px u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // fon 10 px u8g2.setCursor (76, 20); u8g2.print ("Volt"); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters '"); u8g2.setCursor (1, 60); u8g2.print ("Voltan Tepat"); } u8g2.sendBuffer (); // pindahkan memori dalaman ke kelewatan paparan (1); }

Harap maklum bahawa saya agak berkarat dengan pengekodan Arduino, jadi jika anda menemui kesilapan atau cara memperbaiki kod, saya terbuka untuk cadangan:)

Langkah 3: Mari Mengujinya

Mari Mengujinya!
Mari Mengujinya!
Mari Mengujinya!
Mari Mengujinya!
Mari Mengujinya!
Mari Mengujinya!

Untuk menguji voltmeter ini, saya menggunakan bateri 8x 9v yang saya dapatkan di sebuah kedai tempatan. Saya merancang untuk menggunakan voltmeter ini untuk mengukur voltan pada pek bateri basikal elektrik saya (voltan antara 24-60v dengan 72v sesekali).

Setelah elektronik dibungkus ke dalam pcb dan kotak kecil, ini akan menjadikan meter pek bateri yang bagus dan mudah alih. Grafik dan fon di OLED dapat disesuaikan untuk memenuhi kebutuhan anda (mis. Fon yang lebih besar agar mudah dibaca).

Tujuan saya adalah agar bacaan voltan pada meter Oled / Arduino tidak terlalu jauh dari Digital Multi Meter saya. Saya bertujuan untuk +/- 0, 3v max delta. Seperti yang anda lihat dari video, saya dapat mengarkibkan ini kecuali di bahagian atas ukuran.

Saya harap anda menikmati Instructable ini dan beritahu saya pendapat anda!

Disyorkan: