Membangun voltmeter adalah pengalaman belajar yang luar biasa. Ketika Anda selesai membangun proyek ini, Anda akan memiliki pemahaman yang lebih baik tentang cara kerja voltmeter, Anda akan menyegarkan pengetahuan Anda tentang hukum Ohm dan Anda akan melihat dalam aksi seberapa kuat platform Arduino. Dengan proyek ini sebagai dasar dan pengalaman yang diperoleh, Anda akan dapat dengan mudah membangun proyek yang lebih kompleks di masa mendatang.
Anda dapat menggunakan proyek ini untuk mengukur tegangan DC dari berbagai rangkaian elektronik atau memantau status baterai proyek Arduino Anda dengan mudah. Selain itu, dengan pengetahuan yang diperoleh, Anda dapat dengan mudah membuat sensor tegangan sendiri untuk membuat voltmeter khusus yang sesuai dengan kebutuhan Anda.
Biaya proyek sangat rendah. Ini adalah sekitar $10.
Mari kita lihat bagaimana modul sensor ini bekerja. Sensor tegangan ini sangat sederhana dan dapat mengukur tegangan DC dari 0-25V. Ini hanya terdiri dari dua resistor! Anda dapat membuat sendiri dengan mudah jika Anda mau, atau Anda dapat membeli sensor modul ini dengan harga kurang dari satu dolar jika Anda menginginkan sesuatu yang sudah dibuat. Begini Cara kerjanya. Sensor ini sebenarnya adalah pembagi tegangan. Rangkaian pembagi tegangan adalah rangkaian yang sangat umum yang mengambil tegangan lebih tinggi dan mengubahnya menjadi lebih rendah dengan menggunakan sepasang resistor. Rumus untuk menghitung tegangan keluaran didasarkan pada hukum Ohm. Silakan periksa gambar terlampir.
Dalam modul ini, R1 adalah 30.000 Ohm, R2 adalah 7500 Ohm. Jika kita menempatkan 25V pada input dan jika kita membuat perhitungan, kita mendapatkan 5V pada output! Dan itulah tegangan maksimum yang dapat ditangani oleh pin analog Arduino. Jadi, jika kita melebihi 25V pada input, kita akan membakar pin Analog Arduino. Jika kita memasukkan 0 volt ke input, kita mendapatkan 0V pada output. Jadi, jika kita menempatkan tegangan dari 0-25V pada input, kita akan mendapatkan tegangan dari 0-5V pada output.
Arduino Uno memiliki ADC 10bit sehingga resolusi yang dapat kita capai menggunakan sensor ini adalah 25mV. Jika kita menggunakan Arduino Due, kita dapat mencapai resolusi yang lebih baik karena memiliki ADC 12bit. Namun, tentu saja, kita perlu membuat sensor tegangan sendiri, karena board Arduino Due menggunakan level logika 3.3V, dan tegangan apa pun di luar itu akan merusak pin analognya.
Nokia 5110 adalah tampilan favorit saya untuk Proyek Arduino saya.
Nokia 5110 adalah layar LCD grafis dasar yang awalnya ditujukan sebagai layar ponsel. Ini menggunakan pengontrol PCD8544 yang merupakan pengontrol / driver LCD CMOS daya rendah. Karena itu, tampilan ini memiliki konsumsi daya yang mengesankan. Ini hanya menggunakan 0,4mA saat menyala tetapi lampu latar dinonaktifkan. Menggunakan kurang dari 0,06mA saat dalam mode tidur! Itulah salah satu alasan yang membuat tampilan ini menjadi favorit saya.
Antarmuka PCD8544 ke mikrokontroler melalui antarmuka bus serial. Itu membuat tampilan sangat mudah digunakan dengan Arduino. Anda hanya perlu menghubungkan 8 kabel dan menggunakan perpustakaan berikut:http://www.rinkydinkelectronics.com/library.php?id=47
Perpustakaan yang mengesankan ini dikembangkan oleh Henning Karlsen, yang telah melakukan banyak upaya untuk membantu komunitas Arduino bergerak maju dengan perpustakaannya.
Saya telah menyiapkan tutorial terperinci tentang cara menggunakan layar LCD Nokia 5110 dengan Arduino. Saya telah melampirkan video itu dalam tutorial ini, itu akan memberikan informasi yang berguna tentang tampilan, jadi saya mendorong Anda untuk menontonnya dengan cermat.
Sekarang mari kita hubungkan semua bagian bersama-sama.
Pada awalnya kami menghubungkan sensor tegangan. Ini hanya memiliki 3 pin. Dari jumlah tersebut, kita hanya perlu menghubungkan 2.
Langkah selanjutnya adalah menghubungkan layar LCD Nokia 5110.
Sekarang kita telah menghubungkan semua bagian bersama-sama, yang harus kita lakukan adalah memuat kode. Layar splash ditampilkan selama beberapa detik dan kemudian kita dapat mulai mengukur voltase.
Kode proyek terdiri dari 2 file.
Pada file pertama ui.c, terdapat nilai biner dari 2 ikon yang ditampilkan pada layar LCD Nokia 5110. Ada ikon splash dan Antarmuka Pengguna untuk voltmeter yang muncul setelahnya. Silakan tonton video terlampir yang telah saya siapkan untuk melihat cara memuat grafik khusus Anda ke Proyek Arduino Anda.
Kode utama proyek ini sangat sederhana. Kita perlu menyertakan perpustakaan Nokia 5110. Selanjutnya kita mendeklarasikan beberapa variabel. Kami menginisialisasi tampilan dan kami menampilkan layar splash selama 3 detik. Setelah itu, kami mencetak ikon ui satu kali, dan kami membaca nilai analog dari sensor setiap detik.
Metode di atas membaca nilai dari sensor dan mengubahnya menjadi tegangan dari 0 hingga 25V. Jika Anda menggunakan sensor tegangan yang dibuat khusus, Anda harus mengubah variabel R1 dan R2 untuk mencerminkan nilai resistor dari sensor Anda.
Setelah membaca nilai dari sensor, kode mengubah nilai menjadi String dan menampilkannya ke layar.
Saya telah melampirkan kode untuk tutorial ini. Untuk mengunduh kode versi terbaru, Anda dapat mengunjungi halaman web proyek:educ8s.tv/arduino-voltmeter-project/
Sekarang setelah kode dimuat, kita dapat menguji voltmeter dengan beberapa baterai. Saya mengujinya dengan baterai AA yang dapat diisi ulang, baterai 18650, dan baterai alarm 12V yang besar.
Seperti yang Anda lihat di foto terlampir, Voltmeter berfungsi dengan baik. Sebagai perbandingan saya juga menggunakan multimeter saya. Pembacaan Voltmeter "buatan tangan" kami sangat dekat dengan Multimeter profesional. Hebat bukan?
Seperti yang Anda lihat, proyek ini adalah demonstrasi hebat tentang kemampuan perangkat keras dan perangkat lunak open source. Dalam beberapa menit, seseorang dapat membangun proyek yang begitu mengesankan! Proyek ini sangat ideal untuk pemula dan seperti yang saya katakan di awal, proyek ini adalah pengalaman belajar yang luar biasa.
Saya akan senang mendengar pendapat Anda tentang proyek ini. Apakah Anda merasa berguna? Apakah ada perbaikan yang dapat diterapkan pada proyek ini? Silakan kirim komentar atau ide Anda di bagian komentar di bawah!
Kode
Voltmeter.inoC/C++
/////////////////////////////////////////// / / Proyek Voltmeter Arduino // // dengan LCD NOKIA 5110 //// http://www.educ8s.tv /////////////////////// /////////////////////#include // PERPUSTAKAAN YANG SAYA GUNAKAN INI:http://www.rinkydinkelectronics.com/library .php?id=47LCD5110 lcd(8,9,10,12,11);extern unsigned char BigNumbers[];extern uint8_t ui[];extern uint8_t startScreen[];float voltage =0.0;int sensorPin =A0; float sensorValue =0,0f; String voltageString ="0.0";int stringLength =0;float vout =0.0;float vin =0.0;float R1 =30000.0; mengapung R2 =7500.0; void setup() { Serial.begin(9600); lcd.InitLCD(); lcd.drawBitmap(0, 0, startScreen, 84, 48); lcd.update(); penundaan(3000); lcd.setFont(Nomor Besar); delay(1000);}void loop() { lcd.clrScr(); lcd.drawBitmap(0, 0, ui, 84, 48); tegangan =readVoltage(); Serial.println(tegangan); voltageString =String(tegangan,1); stringLength =teganganString.length(); tampilanVoltage(panjang string); lcd.update(); delay(1000);}float readVoltage(){ sensorValue =analogRead(sensorPin); vout =(nilai sensor * 5.0) / 1024.0; vin =vout / (R2/(R1+R2)); return vin;}void displayVoltage(int length){ switch(length) { case 3:lcd.print(voltageString,14,19); merusak; kasus 4:lcd.print(voltageString,2,19); merusak; default:lcd.print(voltageString,2,19); merusak; }}
ui.cC/C++
Data Antarmuka Pengguna#include const unsigned char ui []PROGMEM ={0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x11, 0x31, 0xF1, 0xD1, 0x01, 0x01,0x81, 0xF1, 0x11, 0x11, 0xC1, 0xE1, 0x11, 0x11, 0x11, 0x31, 0xE1, 0xC1, 0x01, 0x01, 0x11, 0xF1,0xF1, 0x11, 0x01, 0x01, 0x01, 0x01 0x11, 0x11, 0xF1, 0xF1, 0x11, 0x11, 0x31, 0x01, 0x01, 0x01,0x01, 0x81, 0x61, 0x31, 0xF1, 0xC1, 0x01, 0x01, 0x01, 0xC1, 0xE1, 0x21, 0x11, 0x11, 0x11 0x31,0x31, 0x01, 0x11, 0xF1, 0xF1, 0x91, 0x91, 0x91, 0x31, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,0x01, 0x01, 0x01, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,0xC0, 0xC3, 0xCF, 0xCC, 0xC3, 0xC0, 0xC0, 0xC0, 0xC3, 0xC7, 0xCC, 0xC8, 0xC8, 0xC8, 0xC 0xC0, 0xC8, 0xCF, 0xCF, 0xC8, 0xC8, 0xC8, 0xCC, 0xC0, 0xC0, 0xC8, 0xCF, 0xCF, 0xC8, 0xC0,0xC0, 0xC0, 0xC0, 0xC8, 0xCC, 0xCB, 0xC1, 0xC 0xCE, 0xC8, 0xC0, 0xC3, 0xC7, 0xCC, 0xC8, 0xC8, 0xC9, 0xCF, 0xC7, 0xC1, 0xC8, 0xCF, 0xCF, 0xC8, 0xC8, 0xC8, 0xCC, 0xC0, 0xC0, 0xC0,0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xFF, 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, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x20, 0x60, 0x60 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x20, 0x60, 0xE0, 0xE0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0xFF, 0xFF, 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, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFF, 0xFF, 0xF8, 0xE0,0x00, 0x00, 0x0 0, 0x00, 0xC0, 0xF0, 0xFE, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00,0x01, 0x0F, 0x3F, 0xFF, 0xFF, 0xFC, 0xF0, 0xFE, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0xFF, 0xFF 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x83, 0x83, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80,0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xFF, };const unsigned char startScreen []PROGMEM ={0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x80, 0xF0, 0xFC, 0xFC, 0xFC, 0xFC,0xFC, 0x7C, 0x1C, 0x04, 0x00, 0x20, 0xE0, 0xE0, 0x20, 0x00, 0x00, 0x20, 0xE0, 0x20, 0x20 ,0x60, 0x20, 0x20, 0x20, 0x60, 0xC0, 0x80, 0x20, 0xE0, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,0xE0, 0x60, 0x20, 0xE0, 0xE0, 0x20, 0x60, 0xE , 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0x00, 0x00,0x00, 0x80, 0xC0, 0x60, 0x20, 0x20, 0x20, 0x60, 0xE0, 0x00, 0x20, 0xE0, 0xE0, 0x20, 0x20, 0x20,0x60 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0xFF, 0xFF,0xFF, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x07, 0x3F, 0x38, 0x38, 0x07,0x00, 0x00, 0x0F, 0x1F, 0x30, 0x20, 0x20, 0x20, 0x30, 0x1F, 0x0F, 0x20, 0x3F, 0x3F, 0x20, 0x20,0x30, , 0x00, 0x00, 0x20, 0x3F, 0x3F, 0x20, 0x00, 0x00, 0x20, 0x38, 0x27, 0x04,0x04, 0x27, 0x3F, 0x 3C, 0x20, 0x0F, 0x1F, 0x30, 0x20, 0x20, 0x24, 0x3C, 0x3C, 0x04, 0x20, 0x3F, 0x3F, 0x22, 0x22, 0x22, 0x20, 0x38, 0x00, 0x00, 0x00, 0x00 0xE0, 0xF8, 0xFE, 0xFF,0xFF, 0x3F, 0x0F, 0x83, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0x38,0x00, 0x00, 0x00, 0x00 0x08, 0xF8, 0x18, 0xF8, 0xE0, 0x00, 0xE0, 0x18, 0xF8, 0xF8, 0x08,0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00, 0x38, 0x18, 0x 0x08, 0x18,0x38, 0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00, 0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88,0xF8, 0x70, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x7C, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x1E, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0xF, 0x, 0xF 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x08, 0x00, 0x07, 0x07, 0x00,0x08, 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F, 0x0F 0x08, 0x08, 0x0E, 0x00, 0x00, 0x00, 0x08,0x0F, 0x0F, 0x08, 0x00, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x08, 0x08 , 0x0E, 0x00, 0x08, 0x0F,0x0F, 0x08, 0x01, 0x03, 0x06, 0x0C, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0xE0, 0xFE, 0x7F, 0x9F, 0x87, 0x81, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x7F, 0x7F, 0x3F, 0x1F, 0x0F, 0x03, 0x01, 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, 0 x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };