Witajcie przyjaciele, mam nadzieję, że wszystko u was w porządku i macie się dobrze.
W dzisiejszym projekcie zobaczymy, jak wyświetlić wartość ADC na wyświetlaczu LCD przy użyciu Arduino w Proteus ISIS. Jest to dość prosty projekt, w którym będziemy mierzyć napięcie na pinach przetwornika ADC, a następnie wyświetlać je na LCD. Mikrokontroler, którego używam w tym projekcie to Arduino. Symulacja została zaprojektowana w programie Proteus ISIS. JEŚLI pracujesz na mikrokontrolerze PIC, to powinieneś rzucić okiem na to jak wyświetlać wartość ADC na LCD używając mikrokontrolera PIC w Proteus ISIS.
Arduino posiada 10 bitowe piny ADC, więc za każdym razem, gdy podamy napięcie na te piny, poda nam wartość z zakresu od 0 do 1023 w zależności od podanego napięcia. Można łatwo uzyskać tę wartość za pomocą prostej funkcji w Arduino – analogRead(); – ale prawdziwym problemem jest przekonwertowanie tej wartości analogowej na rzeczywiste napięcie obecne na pinie. Załóżmy, że używasz pinu A0 Arduino i dostarczasz 3,3 V do tego pinu. Teraz, kiedy używasz funkcji analoagRead(), to da ci jakąś wartość, powiedzmy 543, ale chcesz wiedzieć jakie jest rzeczywiste napięcie na tym pinie, które wynosi 3,3 V, więc teraz konwersja tego 543 do 3,3 jest trochę podchwytliwą kwestią. Nie jest to trudne, ale wymaga trochę obliczeń, które dziś szczegółowo omówię. Zanim przejdziesz dalej, upewnij się, że masz już zainstalowaną bibliotekę Arduino dla Proteusa. Jeśli nie, to najpierw to zrób, ponieważ bez tej biblioteki nie będziesz w stanie używać Arduino w Proteusie. Tak więc, zacznijmy od tego jak wyświetlić wartość ADC na LCD używając Arduino.
Wyświetlanie wartości ADC na LCD przy użyciu Arduino w Proteus ISIS
Podzieliłem ten poradnik na to jak wyświetlić wartość ADC na LCD przy użyciu Arduino na kilka kroków. Wykonaj te kroki uważnie i jeśli natrafisz do jakieś problemy, zadaj pytania w komentarzach i postaram się jak najlepiej, aby je rozwiązać. Wszystkie materiały do pobrania są podane na końcu kroku 1, ale sugeruję, że można zaprojektować własne tak, że popełniasz własne błędy i uczyć się na nich. Ponadto, powinieneś również spojrzeć na projekty Arduino dla początkujących. W każdym razie, zaczynajmy.
Krok 1: Projektowanie obwodów w Proteusie
Po pierwsze, zaprojektowałem układ w Proteusie do wyświetlania wartości ADC na LCD przy użyciu Arduino.
W tym obwodzie użyłem dwóch transformatorów, które nazwałem transformatorem potencjału i transformatorem prądu. Do tych transformatorów doprowadzam napięcie 220 V, które następnie jest zamieniane na 5 V.
Wybrałem transformatory o takiej przekładni uzwojeń aby dawały maksymalnie 5 V na wyjściu.
Teraz, reszta układu jest prosta, po prostu podłączyłem LCD z Arduino, abyśmy mogli wyświetlać wartości ADC na LCD.
Oto schemat układu do wyświetlania wartości ADC na LCD przy użyciu Arduino w Proteus ISIS:
Możesz pobrać symulację Proteusa i plik hex dla Arduino do wyświetlania wartości ADC na LCD przy użyciu Arduino klikając link na końcu artykułu.
Jest to dość proste i niewymagające wyjaśnień. Po zaprojektowaniu schematu układu, przejdźmy do drugiego kroku, którym jest zaprojektowanie kodu do wyświetlania wartości ADC na LCD przy użyciu Arduino.
Krok 2 Projektowanie kodu Arduino
Teraz skopiuj poniższy kod i wklej go do programu Arduino. Skompiluj swój kod i uzyskaj plik heksadecymalny Arduino.
Jeśli nie wiesz jak uzyskać plik hex z Arduino to przeczytaj bibliotekę Arduino dla Proteusa. Wyjaśniłem to tam szczegółowo.
#include <LiquidCrystal.h>
#define NUM_SAMPLES 10
int sum = 0;
unsigned char sample_count = 0;
float voltage = 0.0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int PT = A0;
const int CT = A1;
float Cur;
float Vol;
float Power;
void setup() {
// ustawianie liczby kolumn i wierszy LCD:
lcd.begin(20, 4);
// Wyświetl komunikat na LCD.
lcd.setCursor(6,1);
lcd.print("Welcome To");
lcd.setCursor(5,2);
lcd.print("Energy Meter");
//delay(5000);
lcd.clear();
Constants();
}
void loop() {
lcd.setCursor(0, 2);
ShowVoltage(9, 0, PT);
Vol = voltage;
ShowVoltage(9, 1, CT);
Cur = voltage;
Power = Vol * Cur;
lcd.setCursor(7,2);
lcd.print(Power);
}
void Constants()
{
lcd.setCursor(0,0);
lcd.print("Voltage: ");
lcd.setCursor(0,1);
lcd.print("Current: ");
lcd.setCursor(0,2);
lcd.print("Power: ");
lcd.setCursor(14,0);
lcd.print("V");
lcd.setCursor(14,1);
lcd.print("A");
lcd.setCursor(12,2);
lcd.print("W");
}
void ShowVoltage (int x,int y, unsigned int value)
{
while (sample_count < NUM_SAMPLES)
{
sum += analogRead(value);
sample_count++;
delay(10);
}
voltage = ((float)sum / (float)NUM_SAMPLES * 5.015) / 1024.0;
lcd.setCursor(x, y);
lcd.print(voltage);
sample_count = 0;
sum = 0;
}
Kod jest dość prosty i niewymagający wyjaśnień, jedyną trudnością jest funkcja ShowVoltage. W tej funkcji, najpierw wziąłem średnią z 10 wartości ADC, a następnie zastosowałem na nich prostą formułę, a wtedy zacznie podawać wartości napięcia, które po prostu wyświetliłem na LCD.
Teraz wszystko jest gotowe, więc pobierz swój plik Hex z oprogramowania Arduino i sprawdźmy wyniki. Czy wyświetliły wartość ADC na LCD używając Arduino czy nie?
Krok 3: Rezultat
Zaprojektowaliśmy układ elektroniczny w Proteusie, a także zaprojektowaliśmy nasz kod i wgraliśmy plik hex do Arduino.
Teraz naciśnij przycisk start i zobaczysz coś takiego:
Teraz jeśli porównamy napięcia w woltomierzu i na LCD, zobaczymy, że są dokładnie takie same. Możesz sprawdzić wartość zmiennego rezystora, a wartości na wyświetlaczu LCD również będą się zmieniać wraz ze zmianą napięcia na woltomierzu.
To wszystko na dziś, mam nadzieję, że przekazałem dziś trochę wiedzy i teraz możesz łatwo wyświetlać wartość ADC na LCD używając Arduino.
W następnym poście poznamy więcej funkcji Arduino.
Do tego czasu dbajcie o siebie i bawcie się dobrze!