Spisu treści:
- Krok 1: Funkcje i koszt
- Krok 2: Schemat i teoria działania
- Krok 3: PCB i elektronika
- Krok 4: Obudowa i montaż
- Krok 5: Kod Arduino
- Krok 6: Kod Java
- Krok 7: Sukces
Wideo: Cyfrowe zasilanie bateryjne: 7 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Czy kiedykolwiek chciałeś zasilacza, którego możesz używać w podróży, nawet bez gniazdka ściennego w pobliżu? I czy nie byłoby fajnie, gdyby był również bardzo precyzyjny, cyfrowy i sterowany za pomocą komputera?
W tej instrukcji pokażę, jak dokładnie to zbudować: cyfrowy zasilacz na baterie, który jest kompatybilny z arduino i może być kontrolowany przez komputer przez USB.
Jakiś czas temu zbudowałem zasilacz ze starego zasilacza ATX i chociaż działa świetnie, chciałem ulepszyć moją grę dzięki cyfrowemu zasilaczowi. Jak już powiedziano, jest zasilany bateriami (a dokładniej 2 ogniwa litowe) i może dostarczać maksymalnie 20 V przy 1 A; co jest wystarczające dla większości moich projektów, które wymagają precyzyjnego zasilania.
Pokażę cały proces projektowania, a wszystkie pliki projektu można znaleźć na mojej stronie GitHub:
Zacznijmy!
Krok 1: Funkcje i koszt
Cechy
- Tryby stałego napięcia i stałego prądu
- Wykorzystuje regulator liniowy o niskim poziomie szumów, poprzedzony wstępnym regulatorem śledzącym, aby zminimalizować rozpraszanie mocy
- Korzystanie z ręcznie lutowanych komponentów, aby projekt był dostępny
- Zasilany przez ATMEGA328P, zaprogramowany z Arduino IDE
- Komunikacja z komputerem przez aplikację Java przez micro USB
- Zasilany przez 2 chronione ogniwa litowo-jonowe 18650
- Rozstawione wtyki bananowe 18 mm dla kompatybilności z adapterami BNC
Specyfikacje
- 0 - 1A, kroki co 1 mA (10-bitowy przetwornik cyfrowo-analogowy)
- 0 - 20 V, kroki co 20 mV (10 bit DAC) (prawdziwe działanie 0 V)
- Pomiar napięcia: rozdzielczość 20 mV (10 bit ADC)
-
Pomiar prądu:
- < 40mA: rozdzielczość 10uA (ina219)
- < 80mA: rozdzielczość 20uA (ina219)
- < 160mA: rozdzielczość 40uA (ina219)
- <320mA: rozdzielczość 80uA (ina219)
- > 320mA: rozdzielczość 1mA (10-bitowy ADC)
Koszt
Kompletny zasilacz kosztował mnie około 135 dolarów, ze wszystkimi jednorazowymi komponentami. Baterie są najdroższą częścią (30 USD za 2 ogniwa), ponieważ są chronione ogniwami litowymi 18650. Istnieje możliwość znacznego obniżenia kosztów, jeśli nie jest wymagana praca na baterii. Pomijając baterie i układy ładujące, cena spada do około 100 USD. Chociaż może się to wydawać drogie, zasilacze o znacznie mniejszej wydajności i funkcjach często kosztują więcej.
Jeśli nie masz nic przeciwko zamawianiu komponentów z serwisu eBay lub aliexpress, cena z bateriami spadnie do 100 USD, a 70 USD bez. Dostarczenie części zajmuje więcej czasu, ale jest to realna opcja.
Krok 2: Schemat i teoria działania
Aby zrozumieć działanie obwodu, będziemy musieli spojrzeć na schemat. Podzieliłem go na funkcjonalne bloki, aby łatwiej było go zrozumieć; Wyjaśnię więc krok po kroku działanie. Ta część jest dość dogłębna i wymaga dobrej znajomości elektroniki. Jeśli chcesz tylko wiedzieć, jak zbudować tor, możesz przejść do następnego kroku.
Główny blok
Działanie opiera się na układzie LT3080: jest to liniowy regulator napięcia, który może obniżać napięcia na podstawie sygnału sterującego. Ten sygnał sterujący będzie generowany przez mikrokontroler; jak to się robi, zostanie szczegółowo wyjaśnione później.
Ustawienie napięcia
Obwody wokół LT3080 generują odpowiednie sygnały sterujące. Najpierw przyjrzymy się, jak ustawione jest napięcie. Ustawienie napięcia z mikrokontrolera to sygnał PWM (PWM_Vset), który jest filtrowany przez filtr dolnoprzepustowy (C9 i R26). Daje to napięcie analogowe – od 0 do 5 V – proporcjonalne do pożądanego napięcia wyjściowego. Ponieważ nasz zakres wyjściowy wynosi 0 - 20 V, będziemy musieli wzmocnić ten sygnał ze współczynnikiem 4. Odbywa się to przez nieodwracającą konfigurację wzmacniacza operacyjnego U3C. Wzmocnienie ustawionego pinu jest określone przez R23//R24//R25 i R34. Rezystory te mają tolerancję 0,1%, aby zminimalizować błędy. R39 i R36 nie mają tutaj znaczenia, ponieważ są częścią pętli sprzężenia zwrotnego.
Obecne ustawienie
Ten zestaw pinów może być również użyty do drugiego ustawienia: bieżącego trybu. Chcemy zmierzyć pobór prądu i wyłączyć wyjście, gdy przekroczy on pożądany prąd. Dlatego zaczynamy ponownie od sygnału PWM (PWM_Iset), generowanego przez mikrokontroler, który jest teraz filtrowany dolnoprzepustowo i tłumiony, aby przejść z zakresu 0-5 V do zakresu 0-2 V. To napięcie jest teraz porównywane ze spadkiem napięcia na rezystorze czujnika prądu (ADC_Iout, patrz poniżej) przez konfigurację komparatora wzmacniacza operacyjnego U3D. Jeśli prąd jest zbyt wysoki, włączy się dioda LED, a także pociągnie ustawioną linię LT3080 do masy (poprzez Q2), wyłączając w ten sposób wyjście. Pomiar prądu i generowanie sygnału ADC_Iout odbywa się w następujący sposób. Prąd wyjściowy płynie przez rezystory R7 - R16. Łącznie 1 ohm; powód, dla którego nie używamy 1R jest dwojaki: 1 rezystor musiałby mieć wyższą moc znamionową (musi rozpraszać co najmniej 1 W), a stosując równolegle 10 1% rezystorów, uzyskujemy wyższą precyzję niż z pojedynczym opornikiem 1%. Dobry film o tym, dlaczego to działa, można znaleźć tutaj: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Gdy prąd przepływa przez te rezystory, tworzy spadek napięcia, który możemy zmierzyć i jest umieszczony przed LT3080, ponieważ spadek napięcia na nim nie powinien wpływać na napięcie wyjściowe. Spadek napięcia mierzony jest wzmacniaczem różnicowym (U3B) o wzmocnieniu 2. Daje to zakres napięć 0-2 V (o tym później), stąd dzielnik napięcia przy sygnale PWM prądu. Bufor (U3A) służy do upewnienia się, że prąd płynący do rezystorów R21, R32 i R33 nie przechodzi przez rezystor wykrywający prąd, co wpłynęłoby na jego odczyt. Należy również pamiętać, że powinien to być wzmacniacz operacyjny rail-to-rail, ponieważ napięcie wejściowe na wejściu dodatnim jest równe napięciu zasilania. Wzmacniacz nieodwracający służy tylko do pomiaru przebiegu, jednak do bardzo precyzyjnych pomiarów mamy na pokładzie układ INA219. Ten chip pozwala nam mierzyć bardzo małe prądy i jest adresowany przez I2C.
Dodatkowe rzeczy
Na wyjściu LT3080 mamy trochę więcej rzeczy. Przede wszystkim jest to zlew prądu (LM334). To pobiera stały prąd 677 uA (ustawiony przez rezystor R41), aby ustabilizować LT3080. Nie jest jednak podłączony do masy, ale do VEE, napięcia ujemnego. Jest to potrzebne, aby umożliwić LT3080 pracę przy 0 V. Po podłączeniu do masy najniższe napięcie wyniesie około 0,7 V. Wydaje się to wystarczająco niskie, ale pamiętaj, że uniemożliwia to całkowite wyłączenie zasilacza. Dioda Zenera D3 służy do ograniczania napięcia wyjściowego, jeśli przekroczy ono 22 V, a dzielnik rezystorowy obniża zakres napięcia wyjściowego z 0–20 V do 0–2 V (ADC_Vout). Niestety obwody te są na wyjściu LT3080, co oznacza, że ich prąd będzie miał wpływ na prąd wyjściowy, który chcemy zmierzyć. Na szczęście prądy te są stałe, jeśli napięcie pozostaje stałe; dzięki czemu możemy skalibrować prąd, gdy obciążenie zostanie najpierw odłączone.
Pompa zasilająca
Ujemne napięcie, o którym wspomnieliśmy wcześniej, jest generowane przez ciekawy mały obwód: pompę ładującą. Do jego działania odsyłałbym tutaj: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Jest zasilany przez 50% PWM mikrokontrolera (PWM)
Wzmacniacz
Przyjrzyjmy się teraz napięciu wejściowemu naszego głównego bloku: Vboost. Widzimy, że to 8 - 24V, ale czekaj, 2 ogniwa litowe szeregowo dają maksymalnie 8,4 V? Rzeczywiście i dlatego musimy podbić napięcie za pomocą tak zwanego konwertera doładowania. Zawsze mogliśmy podnieść napięcie do 24 V, bez względu na to, jakiej mocy chcemy; jednak zmarnowałoby to dużo energii w LT3080 i zrobiłoby się upalnie! Więc zamiast tego, zwiększymy napięcie do nieco więcej niż napięcie wyjściowe. Około 2,5 V wyższe jest odpowiednie, aby uwzględnić spadek napięcia w rezystorze czujnika prądu i spadek napięcia LT3080. Napięcie jest ustawiane przez rezystory na sygnale wyjściowym przetwornicy doładowania. Aby zmienić to napięcie w locie, używamy cyfrowego potencjometru MCP41010, który jest sterowany przez SPI.
Ładowanie baterii
To prowadzi nas do rzeczywistego napięcia wejściowego: baterii! Ponieważ używamy chronionych ogniw, wystarczy połączyć je szeregowo i gotowe! Ważne jest, aby używać tutaj chronionych ogniw, aby uniknąć przetężenia lub nadmiernego rozładowania, a tym samym uszkodzenia ogniw. Ponownie używamy dzielnika napięcia do pomiaru napięcia baterii i obniżania go do użytecznego zakresu. Przejdźmy teraz do interesującej części: obwodu ładowania. W tym celu używamy układu BQ2057WSN: w połączeniu z TIP32CG sam w sobie tworzy liniowy zasilacz. Ten chip ładuje ogniwa po odpowiedniej trajektorii CV CC. Ponieważ moje baterie nie mają czujnika temperatury, to wejście powinno być powiązane z połową napięcia baterii. Na tym kończy się część regulująca napięcie zasilacza.
Regulator 5V
Napięcie zasilania 5 V arduino jest wykonane za pomocą tego prostego regulatora napięcia. Nie jest to jednak najdokładniejsze wyjście 5 V, ale zostanie to rozwiązane poniżej.
Napięcie odniesienia 2,048 V
Ten mały chip zapewnia bardzo dokładne napięcie odniesienia 2,048 V. Jest używany jako odniesienie dla sygnałów analogowych ADC_Vout, ADC_Iout, ADC_Vbatt. Dlatego potrzebowaliśmy dzielników napięcia, aby sprowadzić te sygnały do 2 V. Mikrokontroler Mózgiem tego projektu jest ATMEGA328P, jest to ten sam układ, który jest używany w Arduino Uno. Przeanalizowaliśmy już większość sygnałów sterujących, ale mimo to jest kilka interesujących dodatków. Enkodery obrotowe są podłączone do 2 jedynych zewnętrznych pinów przerwań arduino: PD2 i PD3. Jest to potrzebne do niezawodnej implementacji oprogramowania. Przełączniki pod spodem wykorzystują wewnętrzny rezystor podciągający. Następnie jest ten dziwny dzielnik napięcia na linii wyboru chipa potencjometru (Pot). Dzielnik napięcia na wyjściu, do czego to służy; mógłbyś powiedzieć. Jak wspomniano wcześniej, zasilanie 5 V nie jest strasznie dokładne. Byłoby zatem dobrze zmierzyć to dokładnie i odpowiednio dostosować cykl pracy sygnału PWM. Ale ponieważ nie miałem już wolnych wejść, musiałem zrobić podwójne obciążenie. Kiedy zasilacz się uruchamia, ten pin jest najpierw ustawiany jako wejście: mierzy szynę zasilającą i sam się kalibruje. Następnie jest ustawiany jako wyjście i może sterować linią wyboru chipów.
Sterownik ekranu
Do wyświetlacza zależało mi na ogólnodostępnym – i tanim – ekranie LCD Hitachi. Napędzane są na 6 pinów, ale ponieważ nie miałem już pinów, potrzebowałem innego rozwiązania. Rejestr zmianowy na ratunek! 74HC595 pozwala mi używać linii SPI do sterowania wyświetlaczem, dzięki czemu potrzebuję tylko 1 dodatkowej linii wyboru chipów.
FTDI
Ostatnią częścią tego zasilacza jest połączenie z okrutnym, zewnętrznym światem. W tym celu musimy przekonwertować sygnały szeregowe na sygnały USB. Odbywa się to za pomocą układu FTDI, który jest podłączony do portu micro USB w celu łatwego połączenia.
I to wszystko!
Krok 3: PCB i elektronika
Teraz, gdy rozumiemy, jak działa obwód, możemy zacząć go budować! Możesz po prostu zamówić PCB online od swojego ulubionego producenta (mój kosztuje około 10 USD), pliki gerber można znaleźć na moim GitHubie wraz z wykazem materiałów. Montaż PCB jest więc zasadniczo kwestią przylutowania komponentów na miejscu zgodnie z sitodrukiem i zestawieniem materiałów.
Pierwszym krokiem jest przylutowanie elementów SMD. Większość z nich jest łatwa do wykonania ręcznie, z wyjątkiem układu FTDI i złącza micro USB. Dlatego możesz uniknąć samodzielnego lutowania tych 2 komponentów i zamiast tego użyć płytki zaciskowej FTDI. Dostarczyłem piny do nagłówka, na których można to przylutować.
Po zakończeniu pracy SMD możesz przejść do wszystkich elementów przewlekanych. To bardzo proste. W przypadku chipów możesz chcieć użyć gniazd zamiast lutować je bezpośrednio do płyty. Zaleca się użycie ATMEGA328P z bootloaderem Arduino, w przeciwnym razie będziesz musiał przesłać go za pomocą nagłówka ICSP (pokazanego tutaj).
Jedyną częścią, która wymaga nieco więcej uwagi, jest ekran LCD, ponieważ trzeba go zamontować pod kątem. Przylutuj do niego kilka męskich nagłówków kątowych, tak aby plastikowy element był skierowany do spodu ekranu. Umożliwi to dobre umieszczenie ekranu na płytce drukowanej. Następnie można go przylutować, tak jak każdy inny element przewlekany.
Pozostało tylko dodać 2 przewody, które połączą się z zaciskami bananowymi na płycie czołowej.
Krok 4: Obudowa i montaż
Po wykonaniu płytki możemy przejść do obudowy. Specjalnie zaprojektowałem płytkę PCB wokół tej obudowy hammonda, więc używanie innej obudowy nie jest zalecane. Jednak zawsze możesz wydrukować w 3D etui o tych samych wymiarach.
Pierwszym krokiem jest przygotowanie panelu końcowego. Będziemy musieli wywiercić kilka otworów na śruby, przełączniki itp. Zrobiłem to ręcznie, ale jeśli masz dostęp do CNC, byłaby to dokładniejsza opcja. Wykonałem otwory zgodnie ze schematem i nacisnąłem otwory na śruby.
Dobrym pomysłem jest dodanie teraz jedwabnych podkładek i przytrzymanie ich na miejscu niewielką kroplą super kleju. Odizolują one LT3080 i TIP32 od tylnej płyty, jednocześnie umożliwiając przenoszenie ciepła. Nie zapomnij o nich! Przykręcając żetony do tylnego panelu, użyj podkładki z miki, aby zapewnić izolację!
Możemy teraz skupić się na przednim panelu, który po prostu wsuwa się na miejsce. Możemy teraz dodać wtyki bananowe i pokrętła dla enkoderów obrotowych.
Mając oba panele na swoim miejscu, możemy teraz włożyć zespół do obudowy, dodać baterie i zamknąć wszystko. Upewnij się, że używasz chronionych baterii, nie chcesz, aby ogniwa eksplodowały!
W tym momencie sprzęt jest gotowy, teraz pozostaje tylko tchnąć w niego trochę życia za pomocą oprogramowania!
Krok 5: Kod Arduino
Mózgiem tego projektu jest ATMEGA328P, który będziemy programować za pomocą Arduino IDE. W tej sekcji przejdę przez podstawowe działanie kodu, szczegóły można znaleźć w komentarzach wewnątrz kodu.
Kod w zasadzie zapętla się przez te kroki:
- Odczytaj dane szeregowe z java
- Przyciski ankiety
- Zmierz napięcie
- Zmierz prąd
- Zmierz prąd za pomocą INA219
- Wyślij dane szeregowe do java
- Skonfiguruj konwerter boost
- Uzyskaj ładowanie baterii
- Ekran aktualizacji
Enkodery obrotowe są obsługiwane przez procedurę obsługi przerwań, aby były jak najbardziej responsywne.
Kod można teraz wgrać na płytkę przez port micro USB (jeśli chip ma bootloader). Płytka: Arduino pro lub pro mini Programator: AVR ISP / AVRISP MKII
Teraz możemy przyjrzeć się interakcji między Arduino a komputerem.
Krok 6: Kod Java
Do logowania danych i sterowania zasilaczem za pomocą komputera PC wykonałem aplikację java. Pozwala nam to na łatwe sterowanie płytą poprzez GUI. Podobnie jak w przypadku kodu Arduino, nie będę wchodził w szczegóły, ale podam przegląd.
Zaczynamy od stworzenia okna z przyciskami, polami tekstowymi itp; podstawowe rzeczy GUI.
Teraz fajna część: dodanie portów USB, do których użyłem biblioteki jSerialComm. Po wybraniu portu java będzie nasłuchiwać wszelkich przychodzących danych. Możemy również przesłać dane do urządzenia.
Ponadto wszystkie przychodzące dane są zapisywane w pliku csv w celu późniejszego przetwarzania danych.
Uruchamiając plik.jar, powinniśmy najpierw wybrać odpowiedni port z menu rozwijanego. Po podłączeniu zaczną napływać dane i możemy wysłać nasze ustawienia do zasilacza.
Chociaż program jest dość prosty, bardzo przydatne może być sterowanie nim za pomocą komputera i rejestrowanie jego danych.
Krok 7: Sukces
Po całej tej pracy mamy teraz w pełni funkcjonalny zasilacz!
Muszę też podziękować niektórym osobom za wsparcie:
- Projekt został oparty na projekcie uSupply EEVBLOG i jego schemacie Rev C. Tak więc szczególne podziękowania dla Davida L. Jonesa za udostępnienie swoich schematów na licencji open source i podzielenie się całą swoją wiedzą.
- Ogromne podziękowania dla Johana Pattyna za wyprodukowanie prototypów tego projektu.
- Również Cedric Busschots i Hans Ingelberts zasługują na uznanie za pomoc w rozwiązywaniu problemów.
Możemy teraz cieszyć się naszym własnym domowym zasilaczem, który przyda się podczas pracy nad innymi niesamowitymi projektami! A co najważniejsze: po drodze nauczyliśmy się wielu rzeczy.
Jeśli podobał Ci się ten projekt, zagłosuj na mnie w konkursie powersupply, naprawdę będę wdzięczny!
II nagroda w konkursie na zasilacze
Zalecana:
Zasilanie bateryjne: 4 kroki
Zasilanie bateryjne: Na potrzeby konkursu Zasilanie bateryjne tworzymy reagującą na dźwięk dekorację LED Cloud. Wygląda jak chmura, ale dioda LED pulsuje w rytm każdej piosenki, której słuchasz
Zasilanie bateryjne Phantom: 6 kroków (ze zdjęciami)
Zasilanie Phantom Battery: Heyo.Moja córka zamieniła trochę sprzętu audio i skończyła z mikrofonem pojemnościowym, który wygląda całkiem ładnie. Problem polega na tym, że potrzebuje zasilania fantomowego, a żaden z jej urządzeń nie był dostępny. Istnieje wiele zasilaczy fantomowych
CYFROWE WIELOFUNKCYJNE NARZĘDZIE POMIAROWE: 21 kroków (ze zdjęciami)
CYFROWE WIELOFUNKCYJNE NARZĘDZIE POMIAROWE: Cześć wszystkim. Zawsze chciałem mieć urządzenie, które pomogłoby mi w wypoziomowaniu łóżka drukarki 3D i jakieś inne urządzenie, które pomogłoby mi uzyskać przybliżoną długość zakrzywionej powierzchni, aby móc łatwo wyciąć odpowiednią długość naklejki do
Cyfrowe zasilanie Bluetooth USB C: 8 kroków (ze zdjęciami)
Zasilacz Bluetooth z cyfrowym złączem USB C: Czy kiedykolwiek chciałeś zasilacza, którego możesz używać w podróży, nawet bez gniazdka ściennego w pobliżu? Czy nie byłoby fajnie, gdyby był również bardzo precyzyjny, cyfrowy i można go było sterować za pomocą komputera i telefonu? W tej instrukcji pokażę, jak dokładnie zbudować
Podtrzymanie bateryjne dla bazy telefonu bezprzewodowego: 6 kroków
Podtrzymanie bateryjne bazy telefonu bezprzewodowego: wprowadzenieZapewnij podtrzymanie bateryjne bazy telefonu bezprzewodowego, aby wszystkie słuchawki mogły działać podczas przerwy w dostawie prądu.