Arduino – prosty woltomierz z wyświetlaczem LCD

0
638
Arduino - prosty woltomierz z wyświetlaczem LCD

Arduino – prosty woltomierz z wyświetlaczem LCD

Płytki Arduino słyną ze swojej wszechstronności. Podłączając różne podzespoły zewnętrzne, możemy stworzyć wiele ciekawych i praktycznych urządzeń. Tym razem wykorzystamy Arduino do pomiaru napięcia, a co więcej – podłączymy do Arduino LCD – wyświetlacz ciekłokrystaliczny do obrazowania wyniku pomiaru napięcia z dodatkowym smaczkiem wizualnym!

Pomiar napięcia z Arduino

Niniejszy artykuł przedstawia projekt prostego woltomierza zbudowanego w oparciu o płytkę Arduino MEGA 2560 z wykorzystaniem wyświetlacza LCD w układzie 16×2.

Koncepcja pomiaru napięcia za pomocą Arduino

Płytka Arduino MEGA 2560 jest oparta na 8-bitowym mikrokontrolerze ATMEGA 2560. Architektura tego mikrokontrolera zawiera w sobie 10-bitowy przetwornik analogowo-cyfrowy, tj. taki, który może operować na liczbach od 0 do 1023. Ten komponent odpowiada za wykonywanie pomiarów napięcia na wejściu (sygnał analogowy) i przetwarzanie wartości tego napięcia na postać cyfrową. Odczyt napięcia na poziomie programowym odbywa się za pomocą funkcji analogRead(). To, z jaką dokładnością (rozdzielczością napięciową) będzie pracował przetwornik ADC, zależeć będzie od wartości napięcia referencyjnego. W naszym przypadku to napięcie będzie wynosiło 5V, co przy 10-bitowej rozdzielczości, umożliwia pomiar napięcia z rozdzielczością na poziomie 4,89mV. Wynik pomiaru będzie wyświetlany na wyświetlaczu Arduino LCD w układzie 16×2 (Maksymalnie 16 znaków w wierszu, 2 wiersze). 

Pomiar napięcia do wartości 5V – zestawienie podzespołów

W celu wykonania woltomierza umożliwiającego pomiar napięcia w przedziale 0V – 5V niezbędne będą następujące podzespoły:

  • płytka Arduino MEGA 2560
  • przewód USB-A na USB-B
  • wyświetlacz LCD 16×2 niebieski
  • potencjometr obrotowy 5kΩ liniowy
  • płytka stykowa 830-polowa
  • przewody połączeniowe do płytek stykowych

Pomiar napięcia do wartości 5V – podłączenie układu

Użyty w naszym projekcie wyświetlacz LCD, ma łącznie szesnaście wyprowadzeń. Patrząc na wyświetlacz LCD, opis wyprowadzeń od prawej strony do lewej strony i ich sposób podłączenia do płytki Arduino MEGA 2560, jest następujący:

1 – GND -> GND (sekcja “POWER”)

2 – VCC -> 5V (sekcja “POWER”)

3 – VEE -> wyprowadzenie nr 2 (środkowe) potencjometru obrotowego

4 – RS -> D8 (sekcja “DIGITAL/PWM”)

5 – R/W -> niepodłączony

6 – EN -> D9 (sekcja “DIGITAL/PWM”)

7 – DB0 -> niepodłączony

8 – DB1 -> niepodłączony

9 – DB2 > niepodłączony

10 – DB3 -> niepodłączony

11 –  DB4 -> D4 (sekcja “DIGITAL/PWM”)

12 – DB5 -> D5 (sekcja “DIGITAL/PWM”)

13 – DB6 -> D6 (sekcja “DIGITAL/PWM”)

14 – DB7 -> D7 (sekcja “DIGITAL/PWM”)

15 – LED+ -> 5V (sekcja “POWER”)

16 – LED- -> GND (sekcja “POWER”)

Natomiast podłączenie wyprowadzeń potencjometru obrotowego jest następujące:

1 -> GND (sekcja “POWER”)

2 -> A0 (sekcja “ANALOG IN”)

3 -> 5V (sekcja “POWER”)

Pomiar napięcia z Arduino – kod programu

Nasz prosty woltomierz mierzy napięcie, którego wartość będzie się zmieniać w zależności od ustawienia potencjometru. Ponieważ środkowe wyprowadzenie potencjometru jest połączone jednocześnie z wejściem wyświetlacza do regulacji jasności oraz z wejściem przetwornika ADC w płytce Arduino MEGA 2560, wyświetlany wynik pomiaru będzie odpowiednio mniej lub bardziej podświetlony. Program bazuje na bibliotece “LiquidCrystal.h”, której inicjalizacja znacząco upraszcza kod docelowy. 

 

#include „LiquidCrystal.h” // Inicjalizacja biblioteki do obslugi wyswietlacza LCD

 

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

 

float napiecie = 0.0;

float temp=0.0;

void setup()

{

  Serial.begin(9600);     //  uruchomienie transmisji szeregowej

  lcd.begin(16, 2);       // liczba znakow w jednym wierszu i liczba wierszy wyswietlacza LCD:

  lcd.print(„POMIAR NAPIECIA”); // wyswietla komunikat “POMIAR NAPIECIA”

}

void loop()

{

 

// Wzor ogolny do obliczenia napiecia z przetwornika ADC

 

  int analog_value = analogRead(A0);

  input_voltage = (analog_value * 5.0) / 1024.0;

 

// Wyswietlanie wyniku pomiaru 

 

  if (napiecie < 0.1)

  {

    napiecie=0.0;

  }

   Serial.print(„v= „);

   Serial.println(napiecie);

   lcd.setCursor(0, 1);

   lcd.print(„NAPIECIE= „);

   lcd.print(napiecie); 

   delay(250); // nastepny cykl pomiarowy za 250ms

}

ZOSTAW ODPOWIEDŹ

Proszę wpisać swój komentarz!
Proszę podać swoje imię tutaj