Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Buat Voltmeter DIY dengan Arduino dan Layar Nokia 5110 – Panduan Langkah demi Langkah

Komponen dan Perlengkapan

Aplikasi dan Layanan Online

Tentang Proyek Ini

Dalam tutorial ini, saya akan menunjukkan kepada Anda cara membuat Voltmeter dengan layar LCD Nokia 5110 yang besar menggunakan Arduino.

Membuat voltmeter adalah pengalaman belajar yang hebat. Setelah menyelesaikan proyek ini, Anda akan lebih memahami cara kerja voltmeter, menyegarkan pengetahuan Anda tentang hukum Ohm, dan melihat langsung sekuat apa platform Arduino dapat bekerja. Dengan proyek ini sebagai dasar dan pengalaman yang diperoleh, Anda akan dapat dengan mudah membangun proyek yang lebih kompleks di masa depan.

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 menciptakan voltmeter kustom yang sesuai dengan kebutuhan Anda.

Tanpa jeda lagi, mari kita mulai!

Langkah 1: Dapatkan Semua Komponen

Komponen yang diperlukan untuk membangun proyek ini adalah sebagai berikut:

Biaya proyek sangat rendah, sekitar 10$.

Langkah 2: Modul Sensor Tegangan

Mari kita lihat bagaimana modul sensor ini bekerja. Sensor tegangan ini sangat sederhana dan dapat mengukur tegangan DC dari 0-25V. Ini terdiri dari hanya dua resistor! Anda dapat membuatnya sendiri jika ingin, atau membeli modul sensor ini dengan kurang dari satu dolar jika ingin sesuatu yang sudah jadi. Ini cara kerjanya. Sensor ini sebenarnya adalah pembagi tegangan. Rangkaian pembagi tegangan adalah rangkaian yang sangat umum yang mengambil tegangan lebih tinggi dan mengubahnya menjadi yang lebih rendah dengan menggunakan pasang resistor. Rumus untuk menghitung tegangan keluaran didasarkan pada hukum Ohm. Silakan periksa gambar yang dilampirkan.

Dalam modul ini, R1 adalah 30.000 Ohm, dan R2 adalah 7500 Ohm. Jika kita memberikan 25V pada input dan melakukan perhitungan, kita mendapatkan 5V pada output! Dan itu adalah tegangan maksimum yang dapat ditangani oleh pin analog Arduino. Jadi, jika kita melebihi 25V pada input, kita akan membakar pin analog Arduino. Jika kita memberikan 0 volt pada input, kita mendapatkan 0V pada output. Jadi, jika kita memberikan tegangan dari 0-25V pada input, kita akan mendapatkan tegangan dari 0-5V pada output.

Arduino Uno memiliki ADC 10bit, jadi 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 papan Arduino Due menggunakan level logika 3.3V, dan tegangan di atas itu akan merusak pin analognya.

Langkah 3: LCD Nokia 5110

Nokia 5110 adalah layar favorit saya untuk proyek Arduino.

Nokia 5110 adalah layar LCD grafik dasar yang awalnya ditujukan untuk layar ponsel. Ini menggunakan pengontrol PCD8544 yang merupakan pengontrol/driver LCD CMOS daya rendah. Karena itulah, layar ini memiliki konsumsi daya yang mengesankan. Ini hanya menggunakan 0,4mA saat menyala tetapi lampu belakang dinonaktifkan. Ini menggunakan kurang dari 0,06mA saat dalam mode tidur! Itu salah satu alasan yang membuat layar ini menjadi favorit saya.

PCD8544 berinterface dengan mikrokontroler melalui antarmuka bus serial. Itu membuat layar sangat mudah digunakan dengan Arduino. Anda hanya perlu menghubungkan 8 kabel dan menggunakan perpustakaan berikut: https://www.rinkydinkelectronics.com/library.php?id=47

Perpustakaan mengesankan ini dikembangkan oleh Henning Karlsen, yang telah berusaha besar untuk membantu komunitas Arduino maju dengan perpustakaannya.

Saya telah menyiapkan tutorial terperinci tentang cara menggunakan layar LCD Nokia 5110 dengan Arduino. Saya melampirkan video tersebut dalam tutorial ini, yang akan memberikan informasi berguna tentang layar, jadi saya mendorong Anda untuk menontonnya dengan seksama.

Sekarang, mari kita lanjutkan!

Langkah 4: Membangun Voltmeter

Sekarang kita menghubungkan semua komponen bersama-sama.

Pertama kita menghubungkan sensor tegangan. Ini hanya memiliki 3 pin. Dari itu, kita hanya perlu menghubungkan 2.

Menghubungkan Sensor Tegangan

Langkah berikutnya adalah menghubungkan layar LCD Nokia 5110.

Menghubungkan Layar LCD Nokia 5110

Sekarang setelah semua komponen terhubung, yang kita lakukan hanyalah memuat kode. Layar sambutan ditampilkan selama beberapa detik dan kemudian kita dapat mulai mengukur tegangan.

Langkah 5: Kode Proyek

Kode proyek terdiri dari 2 berkas:

Kode ui.c - Grafik untuk Proyek Kita

Pada berkas pertama ui.c, terdapat nilai biner dari 2 ikon yang ditampilkan pada layar LCD Nokia 5110. Terdapat ikon sambutan dan Antarmuka Pengguna untuk voltmeter yang muncul setelahnya. Silakan tonton video yang telah saya siapkan untuk melihat cara memuat grafik kustom ke proyek Arduino Anda.

Kode VoltMeter.ino - Program Utama

Kode utama proyek ini sangat sederhana. Kita perlu menyertakan perpustakaan Nokia 5110. Selanjutnya kita mendeklarasikan beberapa variabel. Kita menginisialisasi layar dan menampilkan layar sambutan selama 3 detik. Setelah itu, kita mencetak ikon ui sekali, dan membaca nilai analog dari sensor setiap detik.

Semua keajaiban terjadi pada fungsi berikut:

float readVoltage(){ sensorValue = analogRead(sensorPin); vout = (sensorValue * 5.0) / 1024.0; vin = vout / (R2/(R1+R2)); return vin;}

Metode di atas membaca nilai dari sensor dan mengubahnya menjadi tegangan dari 0 hingga 25V. Jika Anda menggunakan sensor tegangan buatan sendiri, Anda harus mengubah variabel R1 dan R2 untuk mencerminkan nilai resistor sensor Anda.

Setelah membaca nilai dari sensor, kode mengubah nilai menjadi String dan menampilkannya pada layar.

Saya telah melampirkan kode ke tutorial ini. Untuk mengunduh versi terbaru kode, Anda dapat mengunjungi halaman proyek: educ8s.tv/arduino-voltmeter-project/

F4FWJORIRXTXQG8.cFY005LHIRXTXQG9.ino

Langkah 6: Menguji Proyek

Sekarang kode telah dimuat, kita dapat menguji voltmeter dengan beberapa baterai. Saya mengujinya dengan baterai AA rechargeable, baterai 18650, dan baterai alarm 12V besar.

Seperti yang Anda lihat pada gambar yang dilampirkan, Voltmeter bekerja dengan baik. Untuk perbandingan, saya juga menggunakan multimeter. Pembacaan Voltmeter "buatan tangan" kami sangat dekat dengan pembacaan Multimeter profesional. Hebat, bukan?

Seperti yang Anda lihat, proyek ini adalah demonstrasi hebat dari apa yang dapat dilakukan oleh perangkat keras dan perangkat lunak open source. Dalam beberapa menit seseorang dapat membangun proyek yang mengesankan ini! Proyek ini ideal untuk pemula dan seperti yang saya katakan di awal, proyek ini adalah pengalaman belajar yang hebat.

Saya akan senang mendengar pendapat Anda tentang proyek ini. Apakah Anda menemukannya berguna? Apakah ada perbaikan yang dapat diterapkan pada proyek ini? Silakan posting komentar atau ide Anda di bagian komentar di bawah!

Kode

Voltmeter.inoC/C++
 ////////////////////////////////////////////// // Arduino Voltmeter Project // // with NOKIA 5110 LCD // // https://www.educ8s.tv // ///////////////////////////////////////////// #include <LCD5110_Graph.h> // THE LIBRARY I AM USING IS THIS: https://www.rinkydinkelectronics.com/library.php?id=47 LCD5110 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; float R2 = 7500.0; void setup() { Serial.begin(9600); lcd.InitLCD(); lcd.drawBitmap(0, 0, startScreen, 84, 48); lcd.update(); delay(3000); lcd.setFont(BigNumbers); delay(1000); } void loop() { lcd.clrScr(); lcd.drawBitmap(0, 0, ui, 84, 48); voltage = readVoltage(); Serial.println(voltage); voltageString = String(voltage,1); stringLength = voltageString.length(); displayVoltage(stringLength); lcd.update(); delay(1000); } float readVoltage() { sensorValue = analogRead(sensorPin); vout = (sensorValue * 5.0) / 1024.0; vin = vout / (R2/(R1+R2)); return vin; } void displayVoltage(int length) { switch(length) { case 3: lcd.print(voltageString,14,19); break; case 4: lcd.print(voltageString,2,19); break; default: lcd.print(voltageString,2,19); break; } } 
ui.cC/C++
Data Antarmuka Pengguna
#include <avr/pgmspace.h> 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, 0x31, 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, 0xC0, 0xC3, 0xCF, 0xCC, 0xC3, 0xC0, 0xC0, 0xC0, 0xC3, 0xC7, 0xCC, 0xC8, 0xC8, 0xC8, 0xC7, 0xC3, 0xC0, 0xC0, 0xC8, 0xCF, 0xCF, 0xC8, 0xC8, 0xC8, 0xCC, 0xC0, 0xC0, 0xC8, 0xCF, 0xCF, 0xC8, 0xC0, 0xC0, 0xC0, 0xC0, 0xC8, 0xCC, 0xCB, 0xC1, 0xC1, 0xC1, 0xCF, 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, 0x00, 0x20, 0x60, 0xE0, 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, 0x00, 0x00, 0x00, 0x03, 0x1F, 0x7F, 0xFF, 0xFF, 0xF8, 0xE0, 0x00, 0x00, 0x00, 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, 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, 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, 0x80, 0xC0, 0x60, 0x20, 0x20, 0x20, 0x60, 0xC0, 0x80, 0x20, 0xE0, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x60, 0x20, 0xE0, 0xE0, 0x20, 0x60, 0xE0, 0x00, 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, 0x00, 0xC0, 0xF0, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0x0F, 0x03, 0x00, 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, 0x38, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x3F, 0x20, 0x00, 0x00, 0x20, 0x38, 0x27, 0x04, 0x04, 0x27, 0x3F, 0x3C, 0x20, 0x0F, 0x1F, 0x30, 0x20, 0x20, 0x24, 0x3C, 0x3C, 0x04, 0x20, 0x3F, 0x3F, 0x22, 0x22, 0x22, 0x20, 0x38, 0x00, 0x00, 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, 0x00, 0x08, 0xF8, 0x18, 0xF8, 0xE0, 0x00, 0xE0, 0x18, 0xF8, 0xF8, 0x08, 0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00, 0x38, 0x18, 0x08, 0xF8, 0xF8, 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, 0x00, 0x00, 0x60, 0x7C, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x1E, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0xC3, 0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x08, 0x00, 0x07, 0x07, 0x00, 0x08, 0x0F, 0x0F, 0x08, 0x08, 0x0F, 0x0F, 0x08, 0x08, 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, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; 

Proses manufaktur

  1. Membangun Stasiun Udara & Cuaca Raspberry Pi dengan InfluxDB & Grafana
  2. Membuat Game Pong Klasik pada Arduino UNO dengan Layar OLED – Tutorial Langkah demi Langkah
  3. Membuat Osiloskop Arduino 20 kHz pada Layar LCD Nokia 5110 – Panduan DIY Mudah
  4. Buat Voltmeter Cerdas dengan Arduino & Smartphone – Proyek DIY Mudah
  5. Arduino Pemantau Suhu & Jam Real-Time dengan Layar TFT 3.2”
  6. Proyek HMI Nextion Interaktif Menggunakan Arduino Mega dan Sensor
  7. Buat Voltmeter DIY dengan Arduino dan Layar Nokia 5110 – Panduan Langkah demi Langkah
  8. Panduan Membangun Aplikasi Fridgeye dengan Tampilan Nextion: Langkah demi Langkah
  9. Buat Nada Musik dengan Arduino: Panduan Langkah demi Langkah
  10. Proyek Arduino GPS dan Layar Sentuh TFT: Tampilan Lokasi Real-Time