Bouw een DIY Voltmeter met Arduino en Nokia 5110 Display – Stap-voor-Stap Handleiding
Onderdelen en benodigdheden
| Arduino UNO | 1 |
| Spanningssensor (generiek) | 1 |
| Nokia 5110 LCD display | 1 |
| Breadboard (klein) | 1 |
| Draadjes | 1 set |
De kosten van dit project zijn zeer laag, ongeveer €10.
Apps en online diensten
- Arduino IDE
Over dit project
In deze tutorial laat ik zien hoe je een voltmeter bouwt met een groot Nokia 5110 LCD display met behulp van Arduino.
Een voltmeter bouwen is een geweldige leerervaring. Na afloop begrijp je beter hoe voltmeters werken, je verfrischt je kennis van de wet van Ohm en je ziet hoe krachtig het Arduino platform kan zijn. Met dit project als basis en de opgedane ervaring kun je in de toekomst eenvoudig complexere projecten bouwen.
Je kunt dit project gebruiken om DC spanning te meten in diverse elektronische schakelingen of de batterijstatus van je Arduino projecten te monitoren. Met de opgedane kennis kun je ook je eigen spanningssensor bouwen voor een custom voltmeter die aan jouw behoeften voldoet.
Stap 1: Alle onderdelen verzamelen
- Arduino Uno
- Spanningssensor
- Nokia 5110 LCD display
- Klein breadboard
- Wat draadjes
Stap 2: De Spanningssensor Module
Deze sensor is heel simpel en kan DC spanning van 0-25V meten. Het bestaat uit slechts twee weerstanden! Je kunt er eenvoudig zelf een bouwen of een kant-en-klare module kopen voor minder dan een dollar.
De sensor is eigenlijk een spanningsdeler. Een spanningsdeler is een veelvoorkomende schakeling die een hogere spanning omzet in een lagere door twee weerstanden te gebruiken. De formule voor de uitgangsspanning is gebaseerd op de wet van Ohm.
In deze module is R1 = 30.000 Ohm en R2 = 7.500 Ohm. Bij 25V op de ingang berekenen we 5V op de uitgang – de maximale spanning die een analoge pin van de Arduino aankan. Bij meer dan 25V op de ingang brand je de analoge pin. De Arduino Uno heeft een 10-bit ADC, dus de resolutie is 25mV. Met een Arduino Due (12-bit ADC) kun je nog betere resolutie bereiken, maar dan moet je je eigen sensor bouwen omdat de Due 3.3V logica gebruikt.
Stap 3: Nokia 5110 LCD
De Nokia 5110 is mijn favoriete display voor Arduino projecten. Het is een basisch grafisch LCD scherm oorspronkelijk bedoeld voor mobiele telefoons. Het gebruikt de PCD8544 controller, een low-power CMOS LCD controller/driver. Daardoor heeft het een indrukwekkend laag stroomverbruik: slechts 0,4mA aan (backlight uit) en minder dan 0,06mA in slaapmodus!
De PCD8544 communiceert via een seriële businterface, wat het makkelijk te gebruiken maakt met Arduino. Je hoeft maar 8 draden aan te sluiten en de volgende library te gebruiken: https://www.rinkydinkelectronics.com/library.php?id=47
Deze uitgebreide library is ontwikkeld door Henning Karlsen, die veel moeite heeft gedaan om de Arduino community vooruit te helpen.
Stap 4: De Voltmeter Bouwen
Laten we alle onderdelen verbinden.
Spanningssensor aansluiten
De sensor heeft 3 pinnen, waarvan we er 2 gebruiken:
- - Pin → Arduino GND
- + Pin → niet aangesloten
- S Pin → Analog Pin 0 (A0)
Nokia 5110 LCD Display aansluiten
- RST → Digital Pin 12
- CE → Digital Pin 11
- DC → Digital Pin 10
- DIN → Digital Pin 9
- CLK → Digital Pin 8
- VCC → Arduino 3.3V
- LIGHT → Arduino GND (backlight aan)
- GND → Arduino GND
Nu alles aangesloten is, hoeven we alleen nog de code te uploaden. Er verschijnt een splash screen voor een paar seconden, daarna kan je meten.
Stap 5: De Code van het Project
De code bestaat uit 2 bestanden:
ui.c– Grafieken voor ons projectVoltMeter.ino– Hoofdprogramma
ui.c Code – Grafieken
In ui.c zitten de binaire waarden van 2 iconen die op het Nokia 5110 LCD worden getoond: het splash icoon en de gebruikersinterface voor de voltmeter. Bekijk de bijgevoegde video voor uitleg over het laden van custom graphics.
VoltMeter.ino Code – Hoofdprogramma
De hoofdcode is simpel. We includen de Nokia 5110 library, declareren variabelen, initialiseren het display en tonen de splash screen 3 seconden. Daarna printen we het UI icoon eenmaal en lezen we elke seconde de analoge waarde van de sensor.
Alle magie gebeurt in deze functie:
float readVoltage() {
sensorValue = analogRead(sensorPin);
vout = (sensorValue * 5.0) / 1024.0;
vin = vout / (R2/(R1+R2));
return vin;
}
Deze methode leest de sensorwaarde en converteert deze naar een spanning van 0-25V. Als je een zelfgemaakte spanningssensor gebruikt, moet je de R1 en R2 waarden aanpassen aan je weerstandswaarden.
Na het lezen wordt de waarde omgezet naar een String en op het scherm getoond.
De code is bijgevoegd. Voor de nieuwste versie bezoek: educ8s.tv/arduino-voltmeter-project/
Stap 6: Het Project Testen
Nu de code geladen is, testen we de voltmeter met enkele batterijen: een herlaadbare AA batterij, een 18650 batterij en een grote 12V alarmbatterij.
Zoals je ziet, werkt de voltmeter prima. Voor vergelijking heb ik ook een professionele multimeter gebruikt. De metingen van onze "zelfgemaakte" voltmeter liggen heel dicht bij die van de multimeter. Geweldig, toch?
Dit project toont aan wat open source hardware en software kan. Binnen enkele minuten bouw je zo'n indrukwekkend project! Ideaal voor beginners en een geweldige leerervaring.
Ik hoor graag jullie mening. Vind je het nuttig? Zijn er verbeteringen mogelijk? Laat een reactie achter!
Code
VoltMeter.ino (C/C++)
////////////////////////////////////////////////
// Arduino Voltmeter Project
// met NOKIA 5110 LCD
// https://www.educ8s.tv
///////////////////////////////////////////////
#include <LCD5110_Graph.h> // Library: 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.c (C/C++)
#include <avr/pgmspace.h>
const unsigned char ui [] PROGMEM = {
// ... binaire data voor UI icoon ...
};
const unsigned char startScreen [] PROGMEM = {
// ... binaire data voor splash screen ...
};
Productieproces
- Bouw Een Raspberry Pi Luchtkwaliteit & Weerstation Met InfluxDB & Grafana
- Bouw een Klassiek Pong-spel op Arduino UNO met OLED-display – Stap-voor-stap Tutorial
- Bouw een 20 kHz Arduino Oscilloscoop op een Nokia 5110 LCD – Eenvoudige DIY Handleiding
- Een slimme voltmeter bouwen met Arduino en smartphone – Eenvoudig DIY-project
- Arduino Temperatuurbewaking & Realtime Klok met 3.2" TFT-display
- Interactief Nextion HMI-weerstation met Arduino Mega en sensoren
- Bouw een DIY Voltmeter met Arduino en Nokia 5110 Display – Stap-voor-Stap Handleiding
- De Fridgeye-app bouwen met een Nextion-display: stapsgewijze handleiding
- Maak Muzikale Tonen met Arduino: Stapsgewijze Handleiding
- Arduino GPS en TFT Touchscreen Shield Project: Real-Time Locatieweergave
- Geavanceerde slimme batterijlader met multiplexing en digitaal display