Ładowarka Arduino z wyświetlaczem. Kontroler ładowania słonecznego Arduino PWM

Kontroler ładowania słonecznego Arduino PWM
Jak zrobić bardzo mały, prosty i tani kontroler ładowania słonecznego PWM z Arduino? Pro Mini na 12V poza siatką instalacyjną. Rozmiar płytka drukowana pasuje do rozmiaru miniboardu Pro, dzięki czemu można je połączyć. Plany PCB dla uniwersalnej płytki prototypowej.

Podłączanie i używanie tego kontrolera ładowania słonecznego Arduino jest bardzo proste - z panelu są 2 przewody wejściowe panele słoneczne(+ i -) oraz 2 przewody wyjściowe do akumulatora kwasowo-ołowiowego. Podstawa panelu słonecznego i baterie są ze sobą połączone. Każde obciążenie musi być podłączone bezpośrednio do zacisków akumulatora, a kontroler ładowania automatycznie zajmie się resztą.

Arduino regularnie mierzy napięcie akumulatora ołowiowego i kwasowego zgodnie z określoną wartością, przełącza się na MOSFET, aby naładować akumulator z panelu słonecznego, i wyłącza MOSFET, gdy akumulator jest w pełni naładowany. Gdy obciążenie pobiera energię z akumulatora, sterownik wykrywa spadek napięcia i natychmiast rozpoczyna ponowne ładowanie akumulatora. W nocy, kiedy panel słoneczny przestaje produkować, sterownik czeka, aż panel ponownie zacznie generować.


Dodatni przewód do panelu słonecznego wymaga ochronnej diody Schottky'ego zamontowanej bezpośrednio na kablu (owiniętej w rurkę termokurczliwą). Nie jest to zawarte w głównej płytce drukowanej, ponieważ ułatwia jej wymianę i jednoczesne chłodzenie. Możesz łatwo wydłużyć płytkę, aby zmieściła się w niej inny rodzaj diody.

Schemat i opis funkcji:

Funkcja opiera się na N-kanałowym tranzystorze MOSFET IRF3205 po wysokiej stronie obwodu. Wymaga to napięcia bramki wyższego niż 12 V, aby poprawnie włączyć MOSFET. Aby wyeliminować potrzebę stosowania zewnętrznego sterownika MOSFET, jest on napędzany przez pompę ładującą utworzoną z diod, 2 kondensatorów i dwóch pinów wyjściowych Arduino PWM (3 i 11). Pin A1 mierzy napięcie akumulatora, a pin 9 kontroluje cykl MOSFET ON/OFF. Arduino Pro Zintegrowana mini dioda LED podłączona do styku 13 służy do pokazywania aktualnego cyklu sygnału PWM.

Regulator napięcia i wszystkie kondensatory wokół (C6, C5 i C4) można pominąć, ponieważ w Arduino Pro Mini znajduje się regulator. Jednakże, ponieważ używałem taniej płyty do klonowania, nie chcę polegać na jej zdolności do obsługi wyższych napięć niż 12V przez dłuższy czas. LP2950 jest bardzo tani i wydajny do 30 V, więc i tak warto go mieć na pokładzie.


Lista części: Regulator niskiego napięcia LP2950ACZ-5.0 Tranzystory 2N3904 2N3906 x 2 N-kanałowy MOSFET IRF3205 Rezystory 82K (1%) 20K (1%) 220K x3 (wystarczy 0,4W) 4K7 (wystarczy 0,4W) Diody 1N4148 x 5 P6KE33CA 90SQ035 (lub dowolna podobna dioda Schottky'ego 35V min 9A) Kondensatory 47N / 50V x2 ceramiczne 220P / 100V ceramiczne 1M / 50V (1000nF) ceramiczne 4M7 / 10V tantalowe 1M / 35V tantalowe x 2

Schemat i kod tego kontrolera ładowania są autorstwa Juliana Yletta, on jest inspiracją tej inteligentnej rzeczy. To wszystko to tylko wyrafinowana dokumentacja i dopasowany projekt PCB, aby idealnie pasował do płytki Arduino Pro Mini. Udostępnia wideo wydajniejszego regulatora ładowania Arduino MPPT, ale jego konstrukcja jest znacznie bardziej złożona, a projekt nie jest jeszcze ukończony. Jeśli możesz w jakikolwiek sposób ulepszyć kod lub projekt, podziel się swoimi ulepszeniami w komentarzach.

Arduino i dodany do niego układ ładowania może służyć do monitorowania i sterowania ładowaniem akumulatorów NiMH, np.:

Gotowe urządzenie

Akumulatory to świetny sposób na zasilanie przenośnej elektroniki. Po prawidłowym naładowaniu mogą zaoszczędzić sporo pieniędzy. Abyś mógł w pełni wykorzystać swoje baterie muszą być odpowiednio naładowane. Oznacza to, że potrzebujesz dobra Ładowarka. Możesz wydać dużo pieniędzy kupując gotową ładowarkę lub możesz się dobrze bawić, robiąc ją samemu. W tym artykule przyjrzymy się, jak stworzyć ładowarkę sterowaną Arduino.

Po pierwsze, należy zauważyć, że nie ma uniwersalny sposóbładowanie, które byłoby odpowiednie dla wszystkich akumulatorów. Różne rodzaje baterii wykorzystują różne procesy chemiczne, aby działały. W rezultacie, różne rodzaje Baterie muszą być ładowane inaczej. W tym artykule nie możemy omówić wszystkich typów baterii i metod ładowania. Dlatego dla uproszczenia skupimy się na najpopularniejszym typie baterii rozmiaru AA, akumulatorze niklowo-metalowo-wodorkowym (NiMH).

Akcesoria

Lista części od lewej do prawej:

  • potężny rezystor 10 omów (minimum 5 watów);
  • rezystor 1 MΩ;
  • kondensator 1uF;
  • Tranzystor MOSFET IRF510;
  • czujnik temperatury TMP36;
  • zasilanie 5 V;

Jak ładować akumulatory NiMH AA

Zwiększenie szybkości ładowania zwiększa ryzyko uszkodzenia baterii.

Istnieje wiele sposobów ładowania akumulatorów NiMH. Wybór metody zależy głównie od tego, jak szybko chcesz naładować baterię. Szybkość ładowania jest mierzona w stosunku do pojemności akumulatora. Jeśli Twoja bateria ma pojemność 2500 mAh, a ładujesz ją 2500 mA, to ładujesz ją z szybkością 1C. Jeśli ładujesz ten sam akumulator prądem 250 mA, ładujesz go w C/10.

Podczas szybkie ładowanie akumulator (w tempie powyżej C/10), należy uważnie monitorować napięcie i temperaturę akumulatora, aby go nie przeładować. Może to poważnie uszkodzić baterię. Jednakże, gdy ładujesz baterię powoli (z szybkością poniżej C/10), jest znacznie mniej prawdopodobne, że uszkodzisz baterię, jeśli przypadkowo ją przeładujesz. Dlatego powolne metody ładowania są ogólnie uważane za bezpieczniejsze i pomagają wydłużyć żywotność baterii. Dlatego w naszej domowej ładowarce zastosujemy szybkość ładowania C/10.

obwód ładowania

Dla tej ładowarki podstawą jest układ do sterowania zasilaczem za pomocą Arduino. Obwód jest zasilany z zasilacza 5 V, takiego jak zasilacz sieciowy lub blok komputerowy odżywianie. Większość portów USB nie nadaje się do tego projektu ze względu na obecne ograniczenia. Źródło 5V ładuje akumulator przez potężny rezystor 10 omów i potężny tranzystor MOSFET. Tranzystor MOSFET kontroluje ilość prądu przepływającego przez baterię. Rezystor jest dodawany jako łatwy sposób kontrolowania prądu. Kontrola prądu odbywa się poprzez podłączenie każdego pinu rezystora do pinów wejścia analogowego Arduino i pomiar napięcia z każdej strony. Tranzystor MOSFET jest sterowany przez pin wyjściowy PWM Arduino. Impulsy sygnału modulującego szerokość impulsu są wygładzane do stałego napięcia przez filtr na rezystorze 1 MΩ i kondensatorze 1 µF. Obwód ten pozwala Arduino monitorować i kontrolować prąd przepływający przez baterię.


czujnik temperatury

Czujnik temperatury służy do zapobiegania przeładowaniu baterii i zapewnienia bezpieczeństwa.

Jako dodatkowy środek ostrożności do ładowarki dodano czujnik temperatury TMP36, który monitoruje temperaturę akumulatora. Ten czujnik wytwarza napięcie zależne liniowo od temperatury. Dlatego w przeciwieństwie do termistorów nie wymaga kalibracji ani wyważania. Czujnik jest montowany w wywierconym otworze w obudowie uchwytu baterii i wklejany w otwór tak, aby podczas montażu w uchwycie był dociskany do baterii. Piny czujnika są podłączone do szyny 5V, do obudowy oraz do pinu wejścia analogowego Arduino.

Uchwyt baterii AA przed i po instalacji na płytce stykowej

Kod


Kod tego projektu jest dość prosty. Zmienne na początku kodu źródłowego pozwalają dostosować ładowarkę, wprowadzając pojemność akumulatora i dokładną rezystancję rezystora mocy. Dodano również bezpieczne zmienne progowe. Maksymalne dopuszczalne napięcie akumulatora jest ustawione na 1,6 wolta. Maksymalna temperatura baterii jest ustawiona na 35 stopni Celsjusza. Maksymalny czas ładowania jest ustawiony na 13 godzin. Jeśli którykolwiek z tych progów bezpieczeństwa zostanie przekroczony, ładowarka wyłączy się.

W treści programu widać, że układ stale mierzy napięcia na wyjściach mocnego rezystora. Służy do obliczania wartości napięcia na akumulatorze i przepływającego przez niego prądu. Prąd jest porównywany z wartością docelową, która wynosi C/10. Jeżeli obliczony prąd różni się od wartości docelowej o więcej niż 10 mA, system automatycznie dostosowuje wartość wyjściową, aby ją skorygować.

Arduino wykorzystuje interfejs szeregowy do wyświetlania wszystkich aktualnych danych. Jeśli chcesz sterować ładowarką, możesz podłączyć Arduino do Port USB komputer, ale nie jest to konieczne, ponieważ Arduino zasilane jest z zasilacza 5V z ładowarki.

Int pojemność baterii = 2500; // wartość pojemności baterii w mAh rezystancja pływaka = 10,0; // zmierzono rezystancję rezystora mocy int cutoffVoltage = 1600; // maksymalne napięcie akumulatora (w mV), którego nie wolno przekraczać float cutoffTemperatureC = 35; // maksymalna temperatura akumulatora, której nie należy przekraczać (w stopniach C) //float cutoffTemperatureF = 95; // maksymalna temperatura akumulatora, której nie należy przekraczać (w stopniach F) long cutoffTime = 46800000; // maksymalny czas ładowania 13 godzin, którego nie wolno przekraczać int outputPin = 9; // przewód wyjściowy podłączony do pinu cyfrowego 9 int outputValue = 150; // wartość wyjściowa PWM int analogPinOne = 0; // pierwsza sonda napięciowa podłączona do pinu analogowego 0 float valueProbeOne = 0; // zmienna do przechowywania wartości na analogPinOne float voltageProbeOne = 0; // obliczone napięcie na analogPinOne int analogPinTwo = 1; // druga sonda napięciowa podłączona do pinu analogowego 1 float valueProbeTwo = 0; // zmienna do przechowywania wartości na analogPinTwo float voltageProbeTwo = 0; // obliczone napięcie na analogPinTwo int analogPinThree = 2; // trzecia sonda napięciowa podłączona do pinu analogowego 2 float valueProbeThree = 0; // zmienna do przechowywania wartości na analogPinThree float tmp36Voltage = 0; // napięcie wyliczone na analogowejPinThree float temperatureC = 0; // obliczona temperatura czujnika w stopniach C //temperatura pływakaF = 0; // obliczona temperatura czujnika w stopniach F float voltageDifference = 0; // różnica między napięciami na analogowymPinOne i analogowymPinTwo float batteryVoltage = 0; // obliczony prąd podtrzymania napięcia akumulatora = 0; // obliczony prąd przepływający przez obciążenie w (mA) float targetCurrent = batteryCapacity / 10; // docelowy prąd wyjściowy (w mA) jest ustawiony na // C/10 lub 1/10 pojemności akumulatora float currentError = 0; // różnica między prądem docelowym a rzeczywistym (w mA) void setup() ( Serial.begin(9600); // konfiguracja interfejsu szeregowego pinMode(outputPin, OUTPUT); // ustawienie pinu jako wyjścia ) void loop() ( analogWrite ( outputPin, outputValue); // zapisz wartość wyjściową do pinu wyjściowego Serial. print("Wyjście: "); // pokaż wartości wyjściowe do sterowania na komputerze Serial. println(outputValue); valueProbeOne = analogRead(analogPinOne // odczytaj wartość wejściową na pierwszej sondzie voltageProbeOne = (valueProbeOne*5000)/1023 // oblicz napięcie na pierwszej sondzie w miliwoltach Serial.print("Voltage Probe One (mV): "); // pokaż napięcie na pierwszej sondzie Serial.println( voltageProbeOne); valueProbeTwo = analogRead(analogPinTwo); // odczytaj wartość wejściową na drugiej sondzie voltageProbeTwo = (valueProbeTwo*5000)/1023; // oblicz napięcie na drugiej sondzie w miliwoltach Serial.print("Voltage Probe Two (mV): " ); // pokaż napięcie na drugiej sondzie Serial.println(NapięcieProbeTwo); bateriaNapięcie = 5000 - napięcieProbeTwo; // oblicz napięcie akumulatora Serial.print("Napięcie akumulatora (mV): "); // pokaż napięcie baterii Serial.println(batteryVoltage); prąd = (napięcieProbeTwo - napięcieProbeOne) / rezystancja; // oblicz prąd ładowania Serial.print("Prąd docelowy (mA): "); // pokaż aktualny cel Serial.println(targetCurrent); Serial.print("Prąd akumulatora (mA): "); // pokaż aktualny bieżący Serial.println(current); currentError = targetCurrent - aktualny; // różnica między prądem docelowym a zmierzonym Serial.print("Błąd prądu (mA): "); // pokaż aktualny błąd ustawień Serial.println(currentError); valueProbeThree = analogRead(analogPinThree); // odczytaj wartość wejściową trzeciej sondy, tmp36Voltage = valueProbeThree * 5. 0; // zamiana na napięcie tmp36Voltage /= 1024.0; temperaturaC = (tmp36Voltage - 0.5) * 100 ; // konwersja oparta na 10 mV na stopień z przesunięciem 500 mV // ((napięcie - 500 mV) razy 100) Serial. print("Temperatura (stopnie C)"); // pokaż temperaturę w stopniach Celsjusza Serial.println(temperatureC); /* temperaturaF = (temperaturaC * 9,0 / 5,0) + 32,0; //konwertuj do Fahrenheita Serial.print("Temperatura (stopnie F)"); Serial.println(temperaturaF); */ Serial.println(); // dodatkowe puste wiersze ułatwiające odczytywanie danych podczas debugowania Serial.println(); if(abs(currentError) > 10) // jeśli bieżący błąd ustawień jest wystarczająco duży, dostosuj napięcie wyjściowe(wartośćwyjściowa = wartośćwyjściowa + bieżący błąd / 10; if(wartośćwyjściowa< 1) // выходное значение никогда не может быть ниже 0 { outputValue = 0; } if(outputValue >254) // wartość wyjściowa nigdy nie może być wyższa niż 255 ( outputValue = 255; ) analogWrite(outputPin, outputValue); // zapisz nową wartość wyjściową ) if(temperatureC > cutoffTemperatureC) // zatrzymaj ładowanie, jeśli temperatura akumulatora przekroczy bezpieczny próg ( outputValue = 0; Serial.print("Max Temperature Exceeded"); ) /* if(temperatureF > cutoffTemperatureF) / / zatrzymaj ładowanie, jeśli temperatura akumulatora przekroczy bezpieczny próg ( outputValue = 0; ) */ if(batteryVoltage > cutoffVoltage) // zatrzymaj ładowanie, jeśli napięcie akumulatora przekroczy bezpieczny próg ( outputValue = 0; Serial.print("Max Voltage Exceeded" ); ) if (millis() > cutoffTime) // zatrzymaj ładowanie, jeśli czas ładowania przekroczy próg ( outputValue = 0; Serial.print("Przekroczono maksymalny czas ładowania"); ) delay(10000); // opóźnienie 10 sekund przed następną iteracją pętli )

Wersję kodu źródłowego do pobrania można znaleźć pod poniższym linkiem.

Nie tylko ciekawy, ale i użyteczny projekt dla Arduino w życiu codziennym zaprezentował na swoim blogu zespół Electro-Labs. W ramach tego projektu opracowano programowalną nakładkę dla Arduino, która pełni rolę ładowarki do akumulatorów litowych. Tarcza zawiera wyświetlacz LCD oraz interfejs przycisków pozwalający użytkownikowi na regulację napięcia od 2V do 10V oraz prądu od 50mA do 1,1A. Urządzenie zapewnia również możliwość kontroli procesu ładowania.

Nakładka oparta jest na układzie LT1510 i sterowana jest przez Arduino Uno. Wyświetlacz wykorzystuje prosty i niedrogi wyświetlacz LCD Nokia 5110. Jest podłączony przez interfejs SPI i zasilany jest napięciem 3,3V. Ponieważ piny arduino I/O pracują przy napięciu 5V, zaleca się podłączenie modułu LCD poprzez rezystory połączone szeregowo z liniami sygnałowymi. Dostępne są dwa złącza do podłączenia akumulatorów Li-Ion. Cztery przyciski sterujące są podłączone do pinów Arduino A2-A5. Napięcie akumulatora i prąd ładowania są sterowane przez analogowe piny A0 i A1. Szczegóły konwersji A/D są wyjaśnione w kod źródłowy projekt. Do sygnalizacji pracy urządzenia wykorzystywane są dwie diody LED SMD.

Schemat ideowy projektu został opracowany w SoloCapture z pakietu SoloPCBtools. Shield może pracować bez kontroli mikrokontrolera. Gdy Arduino nie jest zaprogramowane, ładowarka domyślnie ma napięcie odcięcia 4,2 V i maksymalny prądładowanie 1.1A. Płytka drukowana została zaprojektowana w SoloPSB. Projekt PCB i sam program SoloPSB można pobrać ze strony electro-labs.com. Wymiary nakładki dobierane są ze względu na jej umiejscowienie na Arduino Uno. Diody LED, interfejs przycisków, wyświetlacz LCD i złącza baterii znajdują się na górze dla wygody. Wszystkie inne elementy znajdują się z Odwrotna strona tarcza.

Wyświetlacz LCD jest zaprogramowany do wyświetlania czterech stron, które pozwalają użytkownikowi wprowadzić parametry ładowania i kontrolować proces ładowania. Na pierwszej stronie użytkownik może ustawić napięcie odcięcia i maksymalny prąd ładowania, przejść do strony stanu akumulatora i rozpocząć ładowanie. Przyciski góra i dół służą do poruszania się między opcjami, a przyciski prawy i lewy służą do zmiany parametrów i wybierania opcji. Druga strona pokazuje stan baterii. W nim widać aktualne napięcie na akumulatorze. Trzecia strona pokazuje napięcie i prąd ładowania. W lewo lub kliknij prawym przyciskiem myszy Na tej stronie możesz zatrzymać proces ładowania i powrócić do strony ustawień. Gdy napięcie baterii osiągnie ustalić wartość, ładowarka zatrzymuje się i wyświetla komunikat „Ładowanie zakończone”. Aby wyjść, naciśnij lewy klawisz.



Indukcja magnetyczna to technologia, którą prawdopodobnie pamiętasz z lekcji fizyki w liceum. Do transmisja bezprzewodowa energii, będziesz potrzebować dwóch cewek: cewki nadawczej i cewki odbiorczej. Prąd przemienny w cewce nadajnika wytwarza pole magnetyczne, które indukuje napięcie w cewce odbiornika. To napięcie można wykorzystać do zasilania urządzenie przenośne lub naładować baterię.


Nie mniej ważnymi elementami będą induktory, które możesz sam wykonać. Te proste cewki są nawinięte drutami miedzianymi i nazywane są cewkami powietrznymi. Stworzenie takiego uzwojenia na nasz cel to bardzo proste zadanie. Znajdź okrągły cylinder o średnicy około 5 centymetrów i owiń go drutem tak, aby każdy zwój nie zachodził na drugi, ale jednocześnie był jak najbliżej drugiego zwoju. Okrągły cylinder może być na przykład rurką PVC. Może być konieczne użycie taśmy klejącej lub taśmy w 2-3 miejscach, aby zapewnić stabilność konstrukcji.


Oprócz Arduino i cewek będziemy potrzebować: jednego tranzystora 2N3055 NPN, jednego mostka diodowego 1A (zespół diodowy mają cztery wyprowadzenia), jednej diody LED, jednego rezystora 100 omów, dwóch kondensatorów 47 nF, baterii 9 V do zasilać Arduino, a najlepiej dwie płytki prototypowe. Schemat podłączenia elementów w celu stworzenia bezprzewodowego urządzenia do transmisji danych przedstawia poniższy rysunek.



Obwód można przetestować za pomocą prostego kodu Arduino poniżej.


void setup() ( pinMode(13,WYJŚCIE); ) void loop() ( digitalWrite(13,HIGH); delay(0.5); digitalWrite(13,LOW); delay(0.5); )

Jednak proste bezprzewodowe urządzenie do przesyłania zasilania może być wykonane bez Arduino. W zasadzie możemy użyć tylko jednego tranzystora 2N2222. Podłącz jego przewód podstawy do pierwszego końca wężownicy, a kolektor do drugiego końca wężownicy. Zacisk emitera jest podłączony do akumulatora. W efekcie taka prosta konstrukcja może wyglądać tak: