- Wymagane materiały
- Schemat obwodu
- Jednostka miary
- Jednostka obliczeniowa i wyświetlająca
- Programowanie Arduino
- Jak mierzyć z większą dokładnością?
- Praca i testowanie
Jako inżynierowie elektronicy zawsze polegamy na miernikach / przyrządach do pomiaru i analizy działania obwodu. Począwszy od prostego multimetru do złożonych analizatorów jakości energii lub DSO, wszystko ma swoje własne, unikalne zastosowania. Większość z tych mierników jest łatwo dostępna i można je kupić na podstawie mierzonych parametrów i ich dokładności. Ale czasami możemy znaleźć się w sytuacji, w której musimy zbudować własne liczniki. Załóżmy na przykład, że pracujesz nad projektem fotowoltaiki słonecznej i chcesz obliczyć zużycie energii przez swoje obciążenie, w takich scenariuszach możemy zbudować własny watomierz za pomocą prostej platformy mikrokontrolera, takiej jak Arduino.
Budowanie własnych liczników nie tylko obniża koszty testowania, ale także daje nam możliwość ułatwienia procesu testowania. Podobnie, watomierz zbudowany przy użyciu Arduino można łatwo dostosować, aby monitorować wyniki na monitorze szeregowym i wykreślić wykres na ploterze szeregowym lub dodać kartę SD, aby automatycznie rejestrować wartości napięcia, prądu i mocy w określonych odstępach czasu. Brzmi interesująco, prawda !? Więc zacznijmy…
Wymagane materiały
- Arduino Nano
- LM358 Op-Amp
- 7805 Regulator napięcia
- Wyświetlacz LCD 16 * 2
- Rezystor bocznikowy 0,22 oma 2 W.
- Potencjometr 10k
- Rezystory 10k, 20k, 2,2k, 1k
- Kondensatory 0,1 uF
- Obciążenie testowe
- Płyta perf lub płytka prototypowa
- Zestaw do lutowania (opcjonalnie)
Schemat obwodu
Pełny schemat obwodu projektu watomierza arduino znajduje się poniżej.
Dla ułatwienia zrozumienia obwód watomierza arduino podzielono na dwie jednostki. Górna część obwodu to jednostka pomiarowa, a dolna część obwodu to jednostka obliczeniowa i wyświetlająca. Dla osób, które są nowicjuszami w tego typu obwodach, przestrzegano etykiet. Przykład + 5V to etykieta, co oznacza, że wszystkie piny, do których jest podłączona etykieta, powinny być brane pod uwagę, ponieważ są połączone ze sobą. Etykiety są zwykle używane, aby schemat obwodu wyglądał schludnie.
Obwód jest zaprojektowany tak, aby pasował do systemów pracujących w zakresie 0-24V z zakresem prądu 0-1A, biorąc pod uwagę specyfikację PV. Ale możesz łatwo rozszerzyć zakres, gdy zrozumiesz działanie obwodu. Podstawową zasadą obwodu jest pomiar napięcia na obciążeniu i prądu przez niego w celu obliczenia pobieranej przez nie mocy. Wszystkie zmierzone wartości zostaną wyświetlone na 16 * 2 alfanumerycznym wyświetlaczu LCD.
Poniżej podzielmy obwód na małe segmenty, abyśmy mogli uzyskać jasny obraz tego, jak obwód jest wcięty do pracy.
Jednostka miary
Jednostka pomiarowa składa się z dzielnika potencjału, który pomaga nam zmierzyć napięcie, oraz rezystora zamkniętego z nieodwracającym wzmacniaczem operacyjnym, który pomaga nam zmierzyć prąd w obwodzie. Część dzielnika potencjału z powyższego obwodu pokazano poniżej
Tutaj napięcie wejściowe jest reprezentowane przez Vcc, jak powiedziano wcześniej, projektujemy obwód dla zakresu napięcia od 0 V do 24 V. Ale mikrokontroler, taki jak Arduino, nie może mierzyć tak wysokich wartości napięcia; może mierzyć napięcie tylko od 0-5 V. Musimy więc zmapować (przeliczyć) zakres napięć od 0-24V do 0-5V. Można to łatwo zrobić, używając potencjalnego obwodu dzielnika, jak pokazano poniżej. Rezystor 10k i 2,2k razem tworzy obwód dzielnika potencjału. Napięcie wyjściowe dzielnika potencjału można obliczyć za pomocą poniższych wzorów. To samo służy do decydowania o wartości rezystorów, możesz skorzystać z naszego kalkulatora online, aby obliczyć wartość rezystora, jeśli ponownie projektujesz obwód.
Vout = (Vin × R2) / (R1 + R2)
Odwzorowane 0-5 V można uzyskać ze środkowej części oznaczonej jako Napięcie. To zmapowane napięcie można następnie podać na pin analogowy Arduino.
Następnie musimy zmierzyć prąd płynący przez LOAD. Jak wiemy mikrokontrolery potrafią odczytać tylko napięcie analogowe, więc musimy jakoś zamienić wartość prądu na napięcie. Można to zrobić, po prostu dodając rezystor (rezystor bocznikowy) do ścieżki, który zgodnie z prawem Ohma spowoduje spadek wartości napięcia na nim proporcjonalnie do przepływającego przez niego prądu. Wartość tego spadku napięcia będzie znacznie mniejsza, więc do jego wzmocnienia używamy wzmacniacza operacyjnego. Obwód tego samego pokazano poniżej
Tutaj wartość rezystora bocznikowego (SR1) wynosi 0,22 oma. Jak wspomniano wcześniej, projektujemy obwód dla 0-1 A, więc w oparciu o prawo Ohma możemy obliczyć spadek napięcia na tym rezystorze, który wyniesie około 0,2 V, gdy przez obciążenie przepływa maksymalnie 1 A prądu. To napięcie jest bardzo małe, aby mikrokontroler mógł odczytać, używamy wzmacniacza operacyjnego w trybie wzmacniacza nieodwracającego, aby zwiększyć napięcie z 0,2 V do wyższego poziomu, aby Arduino mogło odczytać.
Wzmacniacz operacyjny w trybie nieodwracającym pokazano powyżej. Wzmacniacz zaprojektowano tak, aby miał wzmocnienie równe 21, czyli 0,2 * 21 = 4,2 V. Wzory do obliczenia wzmocnienia wzmacniacza operacyjnego podano poniżej, możesz również użyć tego kalkulatora wzmocnienia online, aby uzyskać wartość rezystora, jeśli ponownie projektujesz obwód.
Zysk = Vout / Vin = 1 + (Rf / Rin)
Tutaj w naszym przypadku wartość Rf wynosi 20k, a wartość Rin wynosi 1k, co daje nam wartość gian 21. Wzmocnione napięcie ze wzmacniacza operacyjnego jest następnie podawane do filtra RC z rezystorem 1k i kondensatorem 0,1 uF do filtruj wszelkie sprzężone szumy. Na koniec napięcie jest następnie podawane na pin analogowy Arduino.
Ostatnią częścią, która pozostaje w jednostce pomiarowej, jest część regulatora napięcia. Ponieważ będziemy podawać zmienne napięcie wejściowe, potrzebujemy regulowanego napięcia + 5 V do działania Arduino i wzmacniacza operacyjnego. To regulowane napięcie będzie dostarczane przez regulator napięcia 7805. Na wyjściu dodawany jest kondensator filtrujący szum.
Jednostka obliczeniowa i wyświetlająca
W jednostce pomiarowej zaprojektowaliśmy układ konwertujący parametry napięcia i prądu na 0-5V, które można podać na piny analogowe Arduino. Teraz w tej części obwodu podłączymy te sygnały napięciowe do Arduino, a także połączymy wyświetlacz alfanumeryczny 16 × 2 z Arduino, abyśmy mogli zobaczyć wyniki. Obwód tego samego pokazano poniżej
Jak widać, pin napięcia jest podłączony do pinu analogowego A3, a pin prądowy jest podłączony do pinu analogowego A4. Wyświetlacz LCD jest zasilany napięciem + 5 V z 7805 i jest podłączony do cyfrowych pinów Arduino do pracy w trybie 4-bitowym. Użyliśmy również potencjometru (10k) podłączonego do pinu Con, aby zmieniać kontrast wyświetlacza LCD.
Programowanie Arduino
Teraz, gdy już dobrze rozumiemy sprzęt, otwórzmy Arduino i zacznijmy programować. Celem kodu jest odczytanie napięcia analogowego na pinach A3 i A4 oraz obliczenie wartości napięcia, prądu i mocy, a następnie wyświetlenie ich na ekranie LCD. Kompletny program do tego samego jest podany na końcu strony, który może być użyty jako taki dla sprzętu omówionego powyżej. Następnie kod jest podzielony na małe fragmenty i wyjaśniony.
Jak wszystkie programy, od których zaczynamy, definiowanie używanych przez nas pinów. W naszym projekcie pin A3 i A4 służy do pomiaru odpowiednio napięcia i prądu, a piny cyfrowe 3,4,8,9,10 i 11 są używane do połączenia LCD z Arduino
int Read_Voltage = A3; int Read_Current = A4; const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; // Podaj numer pinu do podłączenia LCD LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Dołączyliśmy również plik nagłówkowy o nazwie ciekłokrystaliczny do połączenia wyświetlacza LCD z Arduino. Następnie w funkcji konfiguracji inicjalizujemy wyświetlacz LCD i wyświetlamy tekst wprowadzający jako „Wattmeter Arduino” i czekamy dwie sekundy przed wyczyszczeniem go. Kod tego samego jest pokazany poniżej.
void setup () { lcd.begin (16, 2); // Inicjalizacja 16 * 2 LCD lcd.print ("Arduino Wattmeter"); // Intro Message line 1 lcd.setCursor (0, 1); lcd.print ("- Circuitdigest"); // Intro Message line 2 delay (2000); lcd.clear (); }
W funkcji pętli głównej używamy funkcji odczytu analogowego, aby odczytać wartość napięcia z pinu A3 i A4. Jak wiemy, wartość wyjściowa ADC Arduino od 0-1203, ponieważ ma 10-bitowy ADC. Wartość tę należy następnie przeliczyć na 0-5 V, co można zrobić mnożąc przez (5/1023). Następnie ponownie wcześniej w sprzęcie zmapowaliśmy rzeczywistą wartość napięcia z 0-24V na 0-5V i aktualną wartość prądu z 0-1A na 0-5V. Więc teraz musimy użyć mnożnika, aby przywrócić te wartości z powrotem do wartości rzeczywistej. Można to zrobić, mnożąc go przez wartość mnożnika. Wartość mnożnika można obliczyć teoretycznie za pomocą wzorów podanych w sekcji sprzętowej lub, jeśli masz znany zestaw wartości napięcia i prądu, możesz go obliczyć praktycznie.Skorzystałem z tej drugiej opcji, ponieważ jest ona bardziej dokładna w czasie rzeczywistym. Więc tutaj wartość mnożników wynosi 6,46 i 0,239. Stąd kod wygląda jak poniżej
float Voltage_Value = analogRead (Read_Voltage); float Current_Value = analogRead (Read_Current); Wartość_napięcia = Wartość_napięcia * (5,0 / 1023,0) * 6,46; Current_Value = Current_Value * (5,0 / 1023,0) * 0,239;
Jak mierzyć z większą dokładnością?
Powyższy sposób obliczenia wartości rzeczywistego napięcia i prądu będzie działał dobrze. Ale ma jedną wadę, to znaczy, że zależność między zmierzonym napięciem ADC a rzeczywistym napięciem nie będzie liniowa, stąd pojedynczy mnożnik nie da bardzo dokładnych wyników, to samo dotyczy prądu.
Aby poprawić dokładność, możemy wykreślić zestaw zmierzonych wartości ADC z rzeczywistymi wartościami przy użyciu znanego zestawu wartości, a następnie użyć tych danych do wykreślenia wykresu i wyprowadzenia równania mnożnika za pomocą metody regresji liniowej. Możesz odnieść się do miernika dB Arduino, w którym zastosowałem podobną metodę.
Wreszcie, po obliczeniu wartości rzeczywistego napięcia i rzeczywistego prądu przez obciążenie, możemy obliczyć moc za pomocą wzorów (P = V * I). Następnie wyświetlamy wszystkie trzy wartości na wyświetlaczu LCD, używając poniższego kodu.
lcd.setCursor (0, 0); lcd.print ("V ="); lcd.print (Voltage_Value); lcd.print (""); lcd.print ("I ="); lcd.print (Current_Value); float Power_Value = Voltage_Value * Current_Value; lcd.setCursor (0, 1); lcd.print ("Power ="); lcd.print (Power_Value);
Praca i testowanie
Ze względu na samouczek użyłem płytki perf do lutowania wszystkich komponentów, jak pokazano na obwodzie. Użyłem zacisku śrubowego Phoenix do podłączenia obciążenia i normalnego gniazda DC do podłączenia źródła zasilania. Płytka Arduino Nano i wyświetlacz LCD są zamontowane na żeńskim Bergstik, dzięki czemu można je ponownie wykorzystać w razie potrzeby później.
Po przygotowaniu sprzętu prześlij kod Arduino na swoją płytkę Nano. Dostosuj potencjometr, aby kontrolować poziom kontrastu wyświetlacza LCD, aż pojawi się wyraźny tekst wprowadzający. Aby przetestować płytkę, podłącz obciążenie do złącza śrubowego, a źródło do gniazda beczki. Aby ten projekt działał, napięcie źródła powinno być większe niż 6V, ponieważ Arduino wymaga + 5V do działania. JEŚLI wszystko działa poprawnie, powinieneś zobaczyć wartość napięcia na obciążeniu i przepływający przez nie prąd wyświetlany w pierwszym wierszu wyświetlacza LCD oraz obliczoną moc wyświetlaną w drugim wierszu wyświetlacza LCD, jak pokazano poniżej.
Najfajniejsza część budowania czegoś polega na testowaniu tego, aby sprawdzić, jak dobrze będzie działać. Aby to zrobić, użyłem bąbelków samochodowych wskaźników 12V jako obciążenia i RPS jako źródła. Ponieważ sam RPS może mierzyć i wyświetlać wartość prądu i napięcia, łatwo będzie nam sprawdzić krzyżowo dokładność i wydajność naszego obwodu. I tak, użyłem również mojego RPS do skalibrowania mojej wartości mnożnika, aby zbliżyć się do dokładnej wartości.
Całość pracy można znaleźć na wideo podanym na końcu tej strony. Mam nadzieję, że zrozumiałeś schemat i program i nauczyłeś się czegoś przydatnego. Jeśli masz jakiś problem z uruchomieniem tego, opublikuj go w sekcji komentarzy poniżej lub napisz na naszych forach, aby uzyskać więcej pomocy technicznej.
Ten projekt watomierza oparty na Arduino ma wiele innych ulepszeń, które można dodać, aby zwiększyć wydajność automatycznego rejestrowania danych, kreślenia wykresów, powiadamiania o przepięciach lub przekroczeniach prądu itp. Więc bądź ciekawy i daj mi znać, do czego byś tego użył.