In acest articol vom realiza un voltmetru simplu. Acesta se poate folosi pe scara 0-5V si afisarea valorii citite va fi facuta pe un display LCD.
Display-ul folosit este unul de 16*2 impreuna cu o interfata I2C pentru a folosi cat mai putini pini pentru conectarea acestuia la Arduino. Modul de conectare se poate citi in acest articol.
Pentru a simula o anumita tensiune vom folosi un potentiometru de 10 kiloOhmi. Acesta se conecteaza cu cursorul la pinul analog 0 (se pot folosi oricare pini analogici intre 0 si 5) si celelalte 2 terminale la +5V si masa.
Pentru a citi valoarea tensiunii vom folosi mai intai urmatorul cod:
int nivelVoltaj = analogRead(A0);
Acest cod va face conversia de la o valoare analogica la una digitala iar valoarea returnata va fi intre 0 si 1023.
Pentru a face conversia in volti va trebui sa folosim urmatoarea formula:
Voltaj = nivelVoltaj * (5V / 1024)
unde 5V este voltajul maxim aplicat la iesire iar 1023 este numarul maxim de unitati returnate de catre convertorul analog digital.
Rezolutia rezultata (5/1024) este de 4,9mV per unitate.
Iar pentru a afisa pe display valoarea citita vom folosi urmatoul cod:
voltaj = nivelVoltaj * 5.0 / 1024.0;
Dar conform informatiilor citite aici va trebui sa facem o corectie si de aceea codul va fi acesta:
voltaj = (nivelVoltaj + 0.5) * 5.0 / 1024.0;
Sketchul rezultat este cel de mai jos:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int voltmetru = A0;
int nivelVoltaj;
float voltaj;
void setup()
{
lcd.begin();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Voltmetru");
lcd.setCursor(5, 1);
lcd.print("cu Arduino");
delay(3000);
}
void loop()
{
lcd.clear();
nivelVoltaj = analogRead(voltmetru);
voltaj = (nivelVoltaj + 0.5) * 5.0 / 1024.0;
lcd.setCursor(0, 0);
lcd.print("Valoare: ");
lcd.setCursor(9, 0);
lcd.print(nivelVoltaj);
lcd.setCursor(0, 1);
lcd.print("Tensiune: ");
lcd.setCursor(10, 1);
lcd.print(voltaj);
lcd.print("V");
delay(500);
}
Poze cu montajul in functiune sunt mai jos:





