Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

DIY voltmeter met Arduino en een Nokia 5110-display

Componenten en benodigdheden

Arduino UNO
× 1
Spanningssensor (algemeen)
× 1
Nokia 5110 LCD-scherm
× 1
Broodplank (algemeen)
× 1
Jumperdraden (algemeen)
× 1

Apps en online services

Arduino IDE

Over dit project

In deze tutorial laat ik je zien hoe je een Voltmeter . bouwt met een groot Nokia 5110 LCD-scherm met Arduino.

Het bouwen van een voltmeter is een geweldige leerervaring. Als je klaar bent met het bouwen van dit project, zul je beter begrijpen hoe voltmeters werken, je kennis van de wet van Ohm opfrissen en in actie zien 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.

U kunt dit project gebruiken om gelijkspanning van verschillende elektronische circuits te meten of eenvoudig de batterijstatus van uw Arduino-projecten te bewaken. Met de opgedane kennis kunt u ook eenvoudig uw eigen spanningssensor bouwen om een ​​aangepaste voltmeter te maken die aan uw behoeften voldoet.

Laten we zonder verder uitstel beginnen!

Stap 1:Verkrijg alle onderdelen

De onderdelen die nodig zijn om dit project te bouwen zijn deze:

  • Een Arduino Uno
  • Een spanningssensor
  • Een Nokia 5110 LCD-scherm
  • Een kleine broodplank
  • Sommige draden

De kosten van het project zijn erg laag. Het is ongeveer 10 $.

Stap 2:De spanningssensormodule

Laten we eens kijken hoe deze sensormodule werkt. Deze spanningssensor is heel eenvoudig en hij kan gelijkspanning meten van 0-25V. Het bestaat uit slechts twee weerstanden! Je kunt je eigen eenvoudig bouwen als je wilt, of je kunt deze modulesensor kopen voor minder dan een dollar als je iets al gebouwd wilt hebben. Dit is hoe het werkt. Deze sensor is eigenlijk een spanningsdeler. Een spanningsdelercircuit is een veel voorkomend circuit dat een hogere spanning neemt en deze omzet in een lagere door een paar weerstanden te gebruiken. De formule voor het berekenen van de uitgangsspanning is gebaseerd op de wet van Ohm. Controleer de bijgevoegde afbeelding.

In deze module is de R1 30.000 Ohm, de R2 is 7500 Ohm. Als we 25V op de ingang zetten en als we de berekeningen maken, krijgen we 5V aan de uitgang! En dat is de maximale spanning die een analoge pin van Arduino aankan. Dus als we 25V overschrijden aan de ingang, zullen we de analoge pin van Arduino verbranden. Als we 0 volt in de ingang zetten, krijgen we 0V aan de uitgang. Dus als we een spanning van 0-25V aan de ingang zetten, krijgen we een spanning van 0-5V aan de uitgang.

De Arduino Uno heeft een 10bit ADC, dus de resolutie die we kunnen bereiken met deze sensor is 25mV. Als we een Arduino Due gebruiken, kunnen we een nog betere resolutie bereiken omdat deze 12-bits ADC's heeft. Maar we moeten natuurlijk onze eigen spanningssensor bouwen, omdat het Arduino Due-bord logische niveaus van 3,3 V gebruikt, en elke spanning daarbuiten zal de analoge pin vernietigen.

Stap 3:Nokia 5110 LCD

De Nokia 5110 is mijn favoriete display voor mijn Arduino-projecten.

De Nokia 5110 is een eenvoudig grafisch LCD-scherm dat oorspronkelijk bedoeld was als scherm voor een mobiele telefoon. Het maakt gebruik van de PCD8544-controller, een CMOS LCD-controller/driver met laag vermogen. Hierdoor heeft dit beeldscherm een ​​indrukwekkend stroomverbruik. Het gebruikt slechts 0,4 mA wanneer het is ingeschakeld, maar de achtergrondverlichting is uitgeschakeld. Het gebruikt minder dan 0,06 mA in de slaapstand! Dat is een van de redenen waarom dit scherm mijn favoriet is.

De PCD8544 is gekoppeld aan microcontrollers via een seriële businterface. Dat maakt het display heel gemakkelijk te gebruiken met Arduino. U hoeft slechts 8 draden aan te sluiten en de volgende bibliotheek te gebruiken:http://www.rinkydinkelectronics.com/library.php?id=47

Deze indrukwekkende bibliotheek is ontwikkeld door Henning Karlsen, die enorm veel moeite heeft gedaan om de Arduino-gemeenschap vooruit te helpen met zijn bibliotheken.

Ik heb een gedetailleerde tutorial voorbereid over het gebruik van het Nokia 5110 LCD-scherm met Arduino. Ik heb die video in deze tutorial bijgevoegd, deze zal mogelijk nuttige informatie over het scherm geven, dus ik moedig je aan om deze zorgvuldig te bekijken.

Laten we nu verder gaan!

Stap 4:De voltmeter bouwen

Laten we nu alle onderdelen met elkaar verbinden.

Eerst sluiten we de spanningssensor aan. Hij heeft maar 3 pinnen. Daarvan hoeven we er maar 2 te verbinden.

De spanningssensor aansluiten

  • - Pin gaat naar Arduino's GND
  • + Pin blijft niet verbonden
  • S-pin gaat naar analoge pin 0

De volgende stap is het aansluiten van het Nokia 5110 LCD-scherm.

Het Nokia 5110 LCD-scherm aansluiten

  • RST gaat naar digitale pin 12 van de Arduino
  • CE gaat naar digitale pin 11 van de Arduino
  • DC gaat naar digitale pin 10 van de Arduino
  • DIN gaat naar digitale pin 9 van de Arduino
  • CLK gaat naar digitale pin 8 van de Arduino
  • VCC gaat naar Arduino 3.3V
  • LICHT gaat naar Arduino GND (achtergrondverlichting aan)
  • GND gaat naar Arduino GND

Nu we alle onderdelen met elkaar hebben verbonden, hoeven we alleen nog maar de code te laden. Er wordt een paar seconden een opstartscherm weergegeven en dan kunnen we beginnen met het meten van de spanning.

Stap 5:De code van het project

De code van het project bestaat uit 2 bestanden.

  • ui.c
  • VoltMeter.ino

ui.c-code - afbeeldingen voor ons project

In het eerste bestand ui.c staan ​​de binaire waarden van 2 pictogrammen die worden weergegeven op het LCD-scherm van de Nokia 5110. Er is het splash-pictogram en de gebruikersinterface voor de voltmeter die daarna verschijnt. Bekijk de bijgevoegde video die ik heb voorbereid om te zien hoe u uw aangepaste afbeeldingen in uw Arduino-project kunt laden.

VoltMeter.ino-code - Hoofdprogramma

De hoofdcode van het project is heel eenvoudig. We moeten de Nokia 5110-bibliotheek opnemen. Vervolgens declareren we enkele variabelen. We initialiseren het display en we geven het opstartscherm 3 seconden weer. Daarna drukken we het ui-pictogram één keer af en lezen we elke seconde de analoge waarde van de sensor.

Alle magie gebeurt in de volgende functie:

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

Deze bovenstaande methode leest de waarde van de sensor en zet deze om naar een spanning van 0 tot 25V. Als u uw op maat gemaakte spanningssensor gebruikt, moet u de R1- en R2-variabelen wijzigen om de weerstandswaarden van uw sensor weer te geven.

Na het lezen van de waarde van de sensor, converteert de code de waarde naar een String en toont deze op het scherm.

Ik heb de code aan deze tutorial toegevoegd. Om de nieuwste versie van de code te downloaden, kunt u de webpagina van het project bezoeken:educ8s.tv/arduino-voltmeter-project/

F4FWJORIRXTXQG8.c FY005LHIRXTXQG9.ino

Stap 6:het project testen

Nu de code is geladen kunnen we de voltmeter testen met enkele batterijen. Ik test het met een oplaadbare AA-batterij, een 18650-batterij en een grote 12V-alarmbatterij.

Zoals u op de bijgevoegde foto's kunt zien, werkt de Voltmeter prima. Ter vergelijking heb ik ook mijn multimeter gebruikt. Onze "handgemaakte" voltmeter-uitlezingen liggen zeer dicht bij die van de professionele multimeter. Geweldig toch?

Zoals je kunt zien, is dit project een geweldige demonstratie van waartoe open source hardware en software in staat is. Binnen een paar minuten kan men zo'n indrukwekkend project bouwen! Dit project is ideaal voor beginners en zoals ik in het begin al zei, is dit project een geweldige leerervaring.

Ik hoor graag uw mening over dit project. Vind je het handig? Zijn er verbeteringen die kunnen worden doorgevoerd in dit project? Plaats uw opmerkingen of ideeën in de opmerkingen hieronder!

Code

  • Voltmeter.ino
  • ui.c
Voltmeter.inoC/C++
 ////////////////////////////////////////////// / / Arduino Voltmeter Project // // met NOKIA 5110 LCD //// http://www.educ8s.tv ///////////////////////// //////////////////////#include  // DE BIBLIOTHEEK DIE IK GEBRUIK IS DEZE: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; vlottersensor Waarde =0.0f; String voltageString ="0.0";int stringLength =0;float vout =0.0;float vin =0.0;float R1 =30000.0; vlotter R2 =7500.0; void setup() { Serial.begin(9600); lcd.InitLCD(); lcd.drawBitmap (0, 0, startScreen, 84, 48); lcd.update(); vertraging (3000); lcd.setFont(BigNumbers); vertraging(1000);}void loop() { lcd.clrScr(); lcd.drawBitmap (0, 0, ui, 84, 48); spanning =leesVoltage(); Serial.println(spanning); voltageString =String (spanning, 1); stringLength =spanningString.length(); displayVoltage(stringLength); lcd.update(); delay(1000);}float readVoltage(){ sensorValue =analogRead(sensorPin); vout =(sensorWaarde * 5.0) / 1024.0; vin =vout / (R2/(R1+R2)); return vin;}void displayVoltage(int lengte){ switch(length) { case 3:lcd.print(voltageString,14,19); pauze; geval 4:lcd.print(voltageString,2,19); pauze; standaard:lcd.print(voltageString,2,19); pauze; }}
ui.cC/C++
Gebruikersinterface data
#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,31, 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, 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,0c 0xC0, 0xC8, 0xCF, 0xCF, 0xC8, 0xC8, 0xC8, 0xCC, 0xC0, 0xC0, 0xC8, 0xCF, 0xCF, 0xC8, 0xC0,0xC0, 0xC0, 0xC0, 0xC8,xC, 0x1,C1, 0xCB 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,00 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x20, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x20, 0x60, 0xE0, 0xE0, 0xE0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x 0x00, 0x 0x00, 0x 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 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, 0x00, 0x00,0x01, 0x0F, 0x3F, 0xFF, 0xFF, 0xFC, 0xF0, 0xFE, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, FF, 0x, 0x 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, 0x00, 0x80, 0xF0, 0xFC, 0xFC, 0xFC, 0xFC,0xFC, 0x7C, 0x1C, 0x04, 0x00, 0x20, 0xE0, 0xE0, 0x20, 0x00, 0x00, 0x20,0xE0, 0x ,0x60, 0x20, 0x20, 0x20, 0x60, 0xC0, 0x80, 0x20, 0xE0, 0xE0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,0xE0, 0x60, 0x20, 0xE0, 0xE060, 0x20, 0 , 0x00, 0x00, 0xE0, 0xE0, 0xE0, 0x00, 0x00,0x00, 0x80, 0xC0, 0x60, 0x20, 0x20, 0x20, 0x60, 0xE0, 0x00, 0x20, 0xE0, 0xE0, 0x20, 0x20, , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFE, 0xFF, 0xFF,0xFF, 0x3F, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,00x00, 0x00, , 0x07, 0x3F, 0x38, 0x38, 0x07,0x00, 0x00, 0x0F, 0x1F, 0x30, 0x20, 0x20, 0x20, 0x30, 0x1F, 0x0F, 0x20, 0x3F, 0x3F, 0x20, 0x20,0x30,00 , 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,00, 0xE0, 0xF8, 0xFE, 0xFF,0xFF, 0x3F, 0x0F, 0x83, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0,x38000, 0x00, 0 0x08, 0xF8, 0x18, 0xF8, 0xE0, 0x00, 0xE0, 0x18, 0xF8, 0xF8, 0x08,0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00, 0x38, 0x18,8 0x08, 0x18,0x38, 0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88, 0x18, 0x00, 0x00, 0x08, 0xF8, 0xF8, 0x88, 0x88, 0x88,0xF8, 0x70, 0x00, 0x00, 0x00,00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x7C, 0x3F,0x3F, 0x3F, 0x1F, 0x1F, 0x1E, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0xC3, 0x 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x08, 0x00, 0x07, 0x07, 0x00,0x08, 0x0F, 0x0F, 0x08, 0x08, 0x,0F, 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,00x00, 0x00, , 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0xE0, 0xFE, 0x7F,0x9F, 0x87, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x 0x00, 0x00 , 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, };

Productieproces

  1. DIY-monitor voor milieu en luchtkwaliteit
  2. Arduino Pong Game - OLED-scherm
  3. DIY Eenvoudige 20 kHz Arduino-oscilloscoop op Nokia 5110 LCD
  4. DIY voltmeter met Arduino en smartphone
  5. Arduino Temp. Monitor en realtimeklok met 3.2-weergave
  6. Spelen met Nextion Display
  7. DIY voltmeter met Arduino en een Nokia 5110-display
  8. Bouw de Fridgeye-app met een Nextion-display
  9. Muziek maken met een Arduino
  10. GPS-locatieweergave met GPS- en TFT-schermschilden
  11. Smart Battery Charger Multiplexer met Smart Display