LW IT Solutions
« Przegląd bloga /Raspberry Pi/Tutorials / Tutorial: Dobór zasilacza UPS do Raspberry Pi...
Ten artykuł w innych językach:

Tutorial: Dobór zasilacza UPS do Raspberry Pi i konfiguracja automatycznego wyłączenia

Tutorial: Dobór zasilacza UPS do Raspberry Pi i konfiguracja automatycznego wyłączenia
Spis treści
  1. Ile układ naprawdę pobiera
  2. Od miliamperogodzin do watogodzin
  3. Część pakietu, która nigdy nie staje się czasem pracy
  4. Wyłączenie przed osiągnięciem progu
  5. Próba, która musi się odbyć celowo
  6. Co zmieniają dwa lata
  7. Pytania i odpowiedzi
  8. Źródła

Zasilacz UPS do Raspberry Pi kupuje się według jednej liczby, a ocenia według innej. Na opakowaniu widnieje pojemność ogniw. Liczy się natomiast to, jak długo maszyna pracuje dalej – a między jednym a drugim stoją trzy potrącenia, dające razem mniej więcej jedną trzecią.

Poniżej rachunek w kolejności, w jakiej należy go przeprowadzić, oraz ta część, która rachunkiem wcale nie jest: wyłączenie musi nastąpić, dopóki energia jeszcze jest, bo pakiet rozładowany do końca zabiera ze sobą system plików.

Poziomy pasek o wartości 25,2 watogodziny podzielony na energię użyteczną, rezerwę na wyłączenie, część poniżej napięcia odcięcia i stratę przetwornicy, obok tabela czasów pracy przy trzech poziomach mocy
Z 25,2 watogodziny w ogniwach czasem pracy staje się 17,8. Trzy pozostałe odcinki nie są stratami do naprawienia – należy je wliczyć.

Ile układ naprawdę pobiera

Karty katalogowe opisują zasilacz, a nie zużycie. Oficjalny zasilacz 27 W do Raspberry Pi 5 nie mówi nic o samej maszynie, lecz o tym, ile wolno jej pobrać w szczycie przy pełnym obciążeniu USB.

Rzeczywistą wartość da się zmierzyć na samej płytce. Pi 4 i Pi 5 mają układ zarządzania zasilaniem, którego szyny są odczytywalne, a suma po wszystkich szynach daje pobór całkowity.

vcgencmd pmic_read_adc | awk '
  /_A current/ { split($1, n, "_"); a[n[1]] = $2 + 0 }
  /_V volt/    { split($1, n, "_"); v[n[1]] = $2 + 0 }
  END { for (r in a) s += a[r] * v[r]; printf "%.2f W\n", s }'

Zmierzone w ten sposób Pi 5 pobiera na biegu jałowym około 2,7 wata, a przy czterech obciążonych rdzeniach dochodzi do mniej więcej 9 watów. Dysk NVMe pod obciążeniem dokłada półtora do dwóch i pół wata, aktywne chłodzenie pół wata, a dysk USB dwa do trzech. Realistyczna wartość do planowania małego serwera domowego mieści się więc między sześcioma a dwunastoma watami, a oba końce tego zakresu warto przeliczyć.

Jeden pomiar nie wystarczy, bo ciekawa chwila to nie średnia. Przerwa w zasilaniu podczas kopii zapasowej zastaje maszynę w szczycie, a liczy się czas pracy pod obciążeniem.

Od miliamperogodzin do watogodzin

Ogniwa opisuje się w miliamperogodzinach, a to ładunek, nie energia. Dopiero pomnożenie przez napięcie znamionowe daje wielkość porównywalną.

Wh = mAh × V / 1000

3400 mAh × 3,7 V / 1000 = 12,58 Wh na ogniwo
dwa ogniwa równolegle     = 25,2 Wh

Owe 3,7 wolta to średnia z krzywej rozładowania, a nie napięcie pełnego naładowania wynoszące 4,2. Wstawienie 4,2 do wzoru podnosi wynik o dobre dziesięć procent i jest najczęstszą przyczyną zbyt optymistycznego rachunku.

Porównanie warte zapamiętania: powerbank z oznaczeniem 20 000 mAh mierzony jest na poziomie ogniw, a nie na gnieździe USB. Przy 3,7 wolta daje to 74 watogodziny, z czego po przetworzeniu na 5 woltów zostaje około 55 – i właśnie tę liczbę ukrywa oznaczenie reklamowe.

Część pakietu, która nigdy nie staje się czasem pracy

Między ogniwami a maszyną stoją trzy potrącenia, każde o innej przyczynie.

Pierwsze to przetwornica. Ogniwa dają od 4,2 do 3,0 wolta, a Pi potrzebuje stabilnych 5,1. Przetwornica podwyższająca pracuje przy zwykłym obciążeniu ze sprawnością około 88 procent, co kosztuje trzy z 25,2 watogodziny. Tanie moduły spadają przy małym obciążeniu poniżej 80 procent – a małe obciążenie to dokładnie to, co wytwarza czekające Pi.

Drugie to próg napięcia. Ogniwa litowe odcina się przy około trzech woltach na ogniwo, a energia poniżej tej linii zostaje w pakiecie. Nie jest to marnotrawstwo, lecz ochrona: głębsze rozładowanie starzy ogniwo nieproporcjonalnie, a poniżej 2,5 wolta uszkadza je trwale. Poniżej tej linii leży około pięciu procent pakietu.

Trzecie jako jedyne podlega wyborowi, a nie jest narzucone. Wyłączanie trwa od dziesięciu do trzydziestu sekund i musi się zacząć, dopóki przetwornica podaje jeszcze stabilne pięć woltów. Rezerwa piętnastu procent energii netto robi na to miejsce – a przy okazji także na pakiet postarzały i na drugą przerwę kilka minut po pierwszej.

Z 25,2 watogodziny zostaje 17,8. Czasy pracy wynikają z tego wprost.

Obciążenie Typowa sytuacja Czas pracy z 17,8 Wh
6 W Pi 5, bieg jałowy, karta SD 2 h 58 min
9 W Pi 5 z NVMe, średnie obciążenie 1 h 59 min
12 W Wszystkie rdzenie zajęte, dysk i chłodzenie 1 h 29 min

Wyłączenie przed osiągnięciem progu

Każdy UPS zasługujący na tę nazwę jakoś zgłasza zanik napięcia sieciowego. Dwa mechanizmy obejmują niemal wszystkie płytki na rynku, a prostszy obywa się całkowicie bez oprogramowania.

Płytka HAT ściągająca pin GPIO do masy potrafi wyzwolić wyłączenie przez nakładkę drzewa urządzeń. Jedna linia w konfiguracji startowej to całe wdrożenie.

# /boot/firmware/config.txt
dtoverlay=gpio-shutdown,gpio_pin=17,active_low=1,gpio_pull=up

Zaleta: działa bez uruchomionej usługi, a nawet w trakcie startu. Wada: wyłącza natychmiast, co przy czterosekundowej przerwie jest błędem. Krótkie opóźnienie stanowi różnicę między przemyślaną reakcją a nocnym restartem.

#!/bin/bash
# /usr/local/bin/usv-wacht.sh - czeka na trwały zanik zasilania
while gpiomon --num-events=1 --falling-edge gpiochip0 17 >/dev/null; do
  sleep 60
  if gpioget gpiochip0 17 | grep -q '^0$'; then
    logger -t usv "brak sieci od 60 s - wyłączanie"
    /sbin/shutdown -h now
  fi
done
# /etc/systemd/system/usv-wacht.service
[Unit]
Description=Straż UPS
After=multi-user.target

[Service]
ExecStart=/usr/local/bin/usv-wacht.sh
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Drugi mechanizm to wskaźnik naładowania po I2C – MAX17048 albo INA219 siedzi na większości lepszych płytek. MAX17048 podaje stan naładowania bezpośrednio w procentach, INA219 mierzy tylko napięcie i prąd, a wartość procentową wylicza z nich dopiero oprogramowanie. Dzięki temu wyzwolenie zależy od pakietu, a nie od zegara, co jest kryterium uczciwszym: wyłączenie poniżej dwudziestu procent, niezależnie od tego, jak długo brakuje prądu.

Którakolwiek droga zostanie wybrana, należy do niej jedno ustawienie. Maszyna wyłączająca się przy przerwie musi po powrocie napięcia wrócić sama – w Pi 5 to sprawa bootloadera, a nie systemu operacyjnego.

sudo rpi-eeprom-config --edit
# POWER_OFF_ON_HALT=1
# WAKE_ON_GPIO=0
# PSU_MAX_CURRENT=5000

Próba, która musi się odbyć celowo

Nigdy niesprawdzony UPS jest założeniem. Próba jest niewidowiskowa i kosztuje jedno popołudnie: obciążyć maszynę tak, jak będzie obciążona naprawdę, wyciągnąć wtyczkę i zanotować dwa czasy – kiedy zaczęło się wyłączanie i kiedy pakiet się poddał.

Potem dowód stoi w dzienniku poprzedniego uruchomienia. Czyste wyłączenie kończy się komunikatem zatrzymania systemu plików; nagły koniec nie pokazuje niczego, i to samo w sobie jest wynikiem.

journalctl -b -1 -n 30 --no-pager

Dwa wyniki zdarzają się często i oba są użyteczne. Jeżeli wyłączanie ruszyło, ale pakiet padł przed jego końcem, rezerwa jest za mała. Jeżeli pakiet miał jeszcze ładunek kilka minut po wyłączeniu maszyny, rezerwa jest hojna – to dobre położenie, które lepiej znać, niż zakładać.

Powtórzenie tej próby raz w roku kosztuje godzinę i wyłapuje awarię niemającą innego objawu: pakiet, który w stanie pełnego naładowania po cichu stracił połowę pojemności.

Co zmieniają dwa lata

Ogniwa litowe tracą pojemność na dwa sposoby, a tylko jeden z nich powstaje przez użytkowanie. Od trzystu do pięciuset pełnych cykli doprowadza ogniwo do około osiemdziesięciu procent pierwotnej pojemności – dla UPS-a rozładowującego się kilka razy w roku bez znaczenia.

Drugim sposobem jest czas i to on dotyczy tego przypadku. Ogniwo trzymane stale w pełnym naładowaniu i w temperaturze wnętrza zamkniętej obudowy starzeje się wyraźnie szybciej niż to samo ogniwo przy ładunku magazynowym. Po dwóch latach w ciepłej szafce dwadzieścia do trzydziestu procent utraty pojemności to norma, a nie usterka.

Wynikają z tego dwie rzeczy. Płytki ładujące do 4,1 zamiast 4,2 wolta oddają około dziesięciu procent pojemności znamionowej, a w zamian z grubsza podwajają trwałość kalendarzową – dobra zamiana dla urządzenia spędzającego życie na czekaniu. A dobór na początku lepiej przeprowadzić z pakietem, jaki będzie za dwa lata, niż z tym prosto z opakowania: rezerwę należy dobrać tak, by wyłączenie uniosło także osiemdziesiąt procent pakietu.

Pytania i odpowiedzi

Czy nakładkę gpio-shutdown i skrypt z opóźnieniem da się stosować jednocześnie?

Nie, to albo jedno, albo drugie. Nakładka wyzwala wyłączanie już przy pierwszym zboczu opadającym, na długo przed upływem 60 sekund skryptu, i zajmuje pin przez sterownik jądra, tak że gpiomon w ogóle nie może się do niego dostać. Zachowanie opóźnienia wymaga pominięcia tej linii w config.txt.

Skrypt wyłącza system po 60 sekundach. Po co w takim razie rachunek czasu pracy?

Tabela podaje górną granicę, a skrypt wybiera, ile z niej wykorzystać. Przy 60 sekundach pakiet pozostaje prawie pełny: UPS przetrzymuje krótkie zaniki, przy każdej dłuższej przerwie Pi wyłącza się czysto, a pakiet ma potem prawie cały ładunek na drugą przerwę tuż po powrocie sieci.

Jeśli maszyna ma przetrwać dłuższą przerwę, czas oczekiwania da się wydłużyć, ale tylko z myślą o najgorszym wierszu tabeli i o postarzałym pakiecie. Przy 80 procentach pojemności z 17,8 Wh zostaje około 14,2 Wh, co przy 12 W daje około 1 h 11 min zamiast 1 h 29 min; przy utracie 30 procent jest to 12,5 Wh i około 1 h 2 min. Stały czas oczekiwania musi mieścić się poniżej tej wartości, a nie poniżej wartości z tabeli.

Wygodniejsze jest wtedy wyzwalanie według stanu naładowania, opisane w artykule: moment wyłączenia zależy od pakietu, a nie od zegara, i odpada rachunek z najgorszym obciążeniem.

Czy Pi uruchomi się samo, jeśli sieć wróci, zanim pakiet się rozładuje?

Niekoniecznie. Pi widzi tylko pięć woltów z UPS-a, a nie sieć za nim. Jeśli sieć wraca, gdy pakiet ma jeszcze ładunek, te pięć woltów nigdy nie znika i wyłączone Pi pozostaje wyłączone. POWER_OFF_ON_HALT=1 sprawia, że Pi w stanie zatrzymania prawie niczego nie pobiera, ale start wyzwala dopiero powrót zasilania albo ręczna ingerencja. Jeśli natomiast sieć wraca dopiero po odcięciu pakietu, Pi dostaje zasilanie od nowa i startuje, o ile płytka ponownie włącza wyjście.

Niezawodny samoczynny ponowny start wymaga więc płytki UPS, która po wyłączeniu systemu odcina wyjście i włącza je ponownie, gdy wraca sieć; czy dana płytka to potrafi, podaje jej opis. Próbę z artykułu da się odpowiednio rozszerzyć: ponowne włożenie wtyczki po wyłączeniu, gdy pakiet ma jeszcze ładunek, pokazuje, czy maszyna startuje sama.

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Napisanie komentarza

Doświadczenia z innymi modelami i pytania o konfigurację są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.

Artykuły i kategorie

CCTV

Śledź tę kategorię przez RSS

Cloud & AI

Wszystkie artykuły w tej kategorii (17) Śledź tę kategorię przez RSS

Data Privacy

Wszystkie artykuły w tej kategorii (19) Śledź tę kategorię przez RSS

Digital Analytics

Wszystkie artykuły w tej kategorii (58) Śledź tę kategorię przez RSS

Digital Marketing

Wszystkie artykuły w tej kategorii (37) Śledź tę kategorię przez RSS

IT & Networks

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Music Production

Wszystkie artykuły w tej kategorii (17) Śledź tę kategorię przez RSS

Raspberry Pi

Śledź tę kategorię przez RSS

SaaS & Internet Earning

Śledź tę kategorię przez RSS

Smart Home

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Tworzenie stron internetowych

Wszystkie artykuły w tej kategorii (11) Śledź tę kategorię przez RSS

Wtyczki i triki WordPress

Wszystkie artykuły w tej kategorii (14) Śledź tę kategorię przez RSS