Daftar Isi:

Arduino Volt Meter (0-100V DC) - Versi 2 (lebih baik): 3 Langkah
Arduino Volt Meter (0-100V DC) - Versi 2 (lebih baik): 3 Langkah

Video: Arduino Volt Meter (0-100V DC) - Versi 2 (lebih baik): 3 Langkah

Video: Arduino Volt Meter (0-100V DC) - Versi 2 (lebih baik): 3 Langkah
Video: MASALAH PADA VOLTMETER 2 KABEL DAN CARA MENGATASINYA 2024, November
Anonim
Image
Image
Langkah 1: Skema
Langkah 1: Skema

Dalam instruksi ini, saya telah membuat voltmeter untuk mengukur tegangan tinggi DC (0-100v) dengan presisi dan akurasi relatif menggunakan Arduino Nano dan ADS 1115 ADC.

Ini adalah voltmeter versi kedua yang menggunakan instruksi saya sebelumnya di sini:

Pengukuran tes yang saya lakukan akurat, sebagian besar dalam 0,1v dari tegangan aktual yang diukur dengan voltmeter standar (saya menggunakan Astro AI DM6000AR).

Ini jauh lebih baik, dan lebih mudah menurut saya daripada menggunakan referensi tegangan eksternal pada Arduino.

Perlengkapan

1 x Arduino Nano - Tautan

1 x Layar Oled (SSD 1306) - Tautan

1 x ADS 1115 - ADC 16 bit - Tautan

1 x 1/4W (saya sarankan menggunakan resistor 1W) Resistor 1% - 220k ohm - Tautan

1 x 1/4W (saya sarankan menggunakan resistor 1W) Resistor 1% - 10k ohm - Tautan

Papan tempat memotong roti dan kabel - Tautan

Astro AI DM6000AR - Tautan

Bank Daya USB - Tautan

Baterai 9V - Tautan

CanadianWinters adalah peserta dalam Program Associates Amazon Services LLC, program periklanan afiliasi yang dirancang untuk menyediakan sarana bagi situs untuk mendapatkan biaya dengan menautkan ke Amazon.com dan situs afiliasi. Dengan menggunakan tautan ini, sebagai Rekanan Amazon, saya memperoleh penghasilan dari pembelian yang memenuhi syarat, bahkan jika Anda membeli sesuatu yang lain--dan itu tidak akan dikenakan biaya apa pun.

Langkah 1: Langkah 1: Skema

Langkah 1: Skema
Langkah 1: Skema

Saya menghubungkan semua bagian sesuai skema di atas.

Saya mengikat pin ADDR dari ADC1115 ke ground. Ini menetapkan alamat ADC ke 0x48.

Langkah 2: Langkah 2: Perhitungan Kode dan Resistor

Langkah 2: Perhitungan Kode dan Resistor
Langkah 2: Perhitungan Kode dan Resistor

Seperti pada instruksi sebelumnya, gagasan rangkaian adalah bahwa tegangan DC yang akan diukur melewati resistor tegangan. Tegangan yang telah diskalakan kemudian masuk ke pin analog konverter ADC untuk dibaca, kemudian diteruskan ke Arduino melalui I2C dan kemudian diskalakan kembali dan ditampilkan pada layar OLed.

Saya tidak menggunakan rata-rata atau perataan dalam kode dalam kasus ini, karena pembacaan tampaknya cukup akurat dan tepat. Untuk mengurangi kebisingan, Anda mungkin ingin menambahkan kapasitor kecil antara A0 (pada ADC) dan ground. Itu tidak diperlukan untuk pengujian saya.

Satu hal yang saya perhatikan, adalah sedikit noise ketika tidak ada baterai yang terpasang (0 volt). Saya menggunakan monitor serial Arduino untuk menampilkan nilai ADC dan mengoreksi/menyesuaikannya melalui kode.

Seperti pada instruksi sebelumnya, saya membuat spreadsheet yang mengotomatiskan perhitungan jika Anda ingin menggunakan nilai resistor yang berbeda di pembagi tegangan: Tautan ke Google Sheet

Berikut adalah kode yang saya gunakan untuk proyek ini:

#termasuk

#sertakan #sertakan #sertakan iklan Adafruit_ADS1115 (0x48); //Alamat ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);// (rotasi, [reset]) int calib = 7; // Nilai kalibrasi ADS1115 untuk mengurangi error float voltage = 0; // digunakan untuk menyimpan nilai tegangan float Radjust = 0.043421905; // Faktor pembagi tegangan (R2 / R1+R2) float vbat = 0; //tegangan akhir setelah kals- tegangan baterai //variabel untuk menyegarkan layar tanpa menggunakan penundaan lama yang tidak ditandatangani sebelumnyaMillis = 0; // akan menyimpan terakhir kali layar di-refresh // konstanta tidak akan berubah: const long interval = 250; // interval untuk me-refresh layar (milidetik) void setup(void) { Serial.begin(9600); u8g2.begin(); iklan.mulai(); } void loop(void) { int16_t adc0; // 16 bit ADC membaca input A0 adc0 = ads.readADC_SingleEnded(0); tegangan = ((adc0 + kalib) * 0,1875)/1000; unsigned long currentMillis = milis(); vbat = tegangan/Sesuaikan; //Mencegah menampilkan tegangan negatif saat baterai terputus jika (vbat = interval) { sebelumnyaMillis = saat iniMillis; u8g2.clearBuffer(); // hapus memori internal //Paket tampilan Voltage - Font di halaman ini: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // 20px font u8g2.setFont(u8g2_font_fub35_tr); // font 35px u8g2.setCursor (1, 42); u8g2.print(vbat, 2); u8g2.setFont(u8g2_font_8x13B_mr); // font 10 px u8g2.setCursor (1, 60); u8g2.print("Volt"); } u8g2.sendBuffer(); // transfer memori internal ke penundaan tampilan(1); }

Langkah 3: Langkah 3: Mari Mengujinya

Langkah 3: Mari Mengujinya!
Langkah 3: Mari Mengujinya!

Untuk menguji voltmeter ini saya menggunakan baterai 10x 9v yang saya dapatkan di toko lokal. Kali ini saya bisa mengukur hingga 97 volt! Saya berencana untuk menggunakan voltmeter ini untuk mengukur tegangan pada baterai sepeda listrik saya (mereka memiliki tegangan mulai dari 24-60v dengan kadang-kadang 72v).

Setelah elektronik dikemas ke dalam PCB dan kotak kecil, ini akan membuat meteran baterai yang bagus dan portabel. Grafik dan font pada OLED dapat disesuaikan agar sesuai dengan kebutuhan Anda (misalnya font yang lebih besar agar mudah dibaca). Tujuan saya adalah agar pembacaan voltase pada pengukur Oled/Arduino tidak terlalu jauh dari Multi Meter Digital saya. Saya membidik +/-0, delta maks 3v.

Seperti yang Anda lihat dari video di awal Instructable, saya dapat mengarsipkan ini! Sebagian besar bacaan tepat!

Saya harap Anda menikmati Instruksi ini dan beri tahu saya pendapat Anda!

Direkomendasikan: