Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2015-03-05 12:25:38

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Zasilacz awaryjny dla RPi - prośba do elektroników o pomoc

Witam.

Jako że mój RPi bardzo dziarsko steruje mi piecem CO, światłem w pokoju i paroma drobiazgami umilającymi życie postanowiłem wyposażyć go w zasilaczyk awaryjny.

Tyle że...

Poszukałem trochę po sieci ale nic ciekawego nie znalazłem, i jakoś tak przy kolejnym piwie urodził mi się pomysł :)

Założenia:

1) RPi powinien działać non stop i nie być narażony na chamskie wyłączanie prądu
2) Zaniki zasilania są stosunkowo rzadkie i są albo bardzo krótkie (tzn. bateryjne zasilanie powinno wystarczyć na taką przerwę) albo stosunkowo długie (jakaś awaria - wtedy baterie powinny pozwolić na prawidłowe zamknięcie systemu)
3) RPi ma włączonego watchdoga
4) Baterie są odłączane w momencie zatrzymania się RPi
5) Nie planuję na dziś automatycznego ładowania akumulatorów
6) Koszt jest sprawą pierwszoplanową.
7) Wykorzystuję dowolny pin GPIO dający sie ustawic jako wejście do detekcji obecności zasilania sieciowego oraz pin TxD jako informację o działaniu RPi
8) Mam aktualne backupy na wypadek gdyby to wszystko jednak zdechło.

Jako że w elektronika przestałem się bawić gdzieś tak pod koniec zeszłego tysiąclecia wolałbym, aby ktoś mądrzejszy zerknął na to i się wypowiedział czy to ma szanse zadziałać. A jeśli tak - aby nieco mi pomógł (choćby wprowadzając potrzebne zmiany w układzie czy przynajmniej podając właściwe wartości rezystorów i dokładne typy elementów).

W wersji pierwszej zakładam, że dysponuję zasilaczem 7.5 V oraz czterema ogniwami AA - potrzebna będzie przetwornica obniżająca napięcie do 5V.

[img]http://polip.com/zasilacz/zasilacz_rpi.png[/img]

Rezystory:
R1, R4, R5 - 10k
R2, R3, R6, R7 - 1k

Tranzystory: np. BC 308 i BC 338

Transoptor: np. PC817 lub (w wersji drugiej) PC827

Diody:
D1 - D4: 1N5822
D5 - nie wiem, ale pewnie pierwsza z brzegu się nada

Przekaźnik: nie mam pomysłu

Przetwornica wraz z koniecznymi kondensatorami (wartości?) nie została ujęta na schemacie.

Zasada działania:

Przy zasilaniu z sieci przetwornica zasilana jest przez diodę D2 z 7.5V. Jednocześnie napięcie podane zostaje przez D1 na transoptor powodując ustawienie wybranego pinu na 0, oraz poprzez D4 na przekaźnik. Baterie są odcięte poprzez diodę D3 (napięcie baterii jest niższe niż przychodzące z zasilacza).

Po starcie RPi pin TxD ustawia się automatycznie na 1. Powoduje to przejście obu tranzystorów w stan przewodzenia i podanie dodatkowo napięcia z kolektora T2 na przekaźnik.

Przy zaniku zasilania przekaźnik wciąż jest zasilany z T2, przetwornica dostaje prąd z baterii ale na pin wejściowy zostaje podany stan wysoki.

Działający z crona prosty programik sprawdza, czy RPi ma zasilanie. Jeśli dwa kolejne (co minutę) odczyty pokażą brak zasilania, wywołany jest po prostu "halt". RPi grzecznie się zamyka, odmontowuje kartę i odłącza pin TxD. Jeśli w tym momencie dalej nie mamy zasilania, przekaźnik odpada, przetwornica nie dostaje zasilania i cały system czeka na prąd. Jeśli w międzyczasie zasilanie wróciło - przetwornica wciąż działa i watchdog po chwili startuje komputer.

Program wygląda mniej więcej tak:

Kod:

#!/bin/bash
pin=<wstaw numerek>
plik=/run/shm/power.test
gpio mode $pin input
stan=`gpio $pin read`
if [ "$stan" = "0" ] ; then
    rm -f $plik
elif [ -f $plik ] ; then
    halt
else
    touch $plik
fi

Największy problem sprawi chyba przekaźnik - z jednej strony cewka musi mieć stosunkowo wysoką rezystancję (bo w końcu pobiera prąd z baterii), z drugiej obciążalność styku musi być wystarczająca do przełączania zasilania (zakładam jakieś 1.5 A). Tu już nie mam pomysłu - może ktoś podpowie jaki tu zastosować?

W wersji drugiej korzystamy z oryginalnego zasilacza od RPi (cięcie kosztów) oraz trzech ogniw AA zamiast czterech (napięcie max. 4.5V). Przetwornica powinna być wtedy podwyższająca napięcie (ceny obu typ‎ów są podobne). Innych różnic (poza przekaźnikiem na niższe napięcie) nie ma.

Jeśli cewka przekaźnika będzie miała wystarczającą rezystancję, tranzystory można zastąpić drugim transoptorem (np. wykorzystując drugą połówkę podwójnego). Koszt jest nieco niższy (o jakąś złotówkę), ale układ się ładnie upraszcza.

[img]http://polip.com/zasilacz/zasilacz_rpi2.png[/img]

Dioda D4 jest potrzebna jedynie wtedy, gdy napięcie przepuszczone przez D3 i T2 jest niewystarczające do załączenia przekaźnika, ale wystarczy do jego podtrzymania.

I jak - byłby ktoś chętny do pomocy?


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#2  2015-03-05 15:55:19

  mati75 - Psuj

mati75
Psuj
Skąd: default city
Zarejestrowany: 2010-03-14
Serwis

Re: Zasilacz awaryjny dla RPi - prośba do elektroników o pomoc

Jutro wieczorem zobacze to. Jak coś pilnego to molestuj milygesa.


[img]https://l0calh0st.pl/obrazki/userbar.png[/img]

Offline

 

#3  2015-03-05 16:37:07

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Zasilacz awaryjny dla RPi - prośba do elektroników o pomoc

Po co zatrudniać OS i Crona?

Weź lepiej poszukaj schematu najprostszego możliwego UPSa.

Z resztą, to widziałeś?
http://www.elektroda.pl/rtvforum/topic2769193.html


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2015-03-05 16:53:24

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: Zasilacz awaryjny dla RPi - prośba do elektroników o pomoc

@Jacekalex: patrz punkt 6 (to a propos UPS-a - nie znajdę nic ciekawego poniżej 50 PLN a na tyle wyceniam koszty mojej konstrukcji).

Ten wątek widziałem, prześledziłem zresztą chyba wszystkie (polskie, angielskie, rosyjskie) dotyczące awaryjnego zasilania RPi i nie znalazłem nic interesującego (tzn. działającego). Projekt na indiegogo opiera się na superkondensatorze a nie baterii i do moich celów się nie nadaje.

A poza tym czasem człowiek chce coś zrobić sam ;) W moim przypadku - chciałbym sprawdzić, czy po parunastu latach przerwy jeszcze kumam coś z tych nieszczęsnych tranzystorów czy już do końca życia mam odwiesić lutownicę na kołek :)

Co do zatrudniania OS: każden jeden UPS (przynajmniej z tych profesjonalnych, a nie podłączonych do serwera na tepsianym DSL-u) gada z OS-em. Kiedyś po prostu były to podłączone dwa piny z seriala, dzisiaj większość się opiera na USB, ale zawsze OS dostaje informację od UPS-a że bateria mu sie kończy i ma się szybko zamknąć.

Jako że do RPi i tak kawałek elektroniki jest potrzebny (choćby konwertery poziomów) - po co tam jeszcze UPS?

Ostatnio edytowany przez ethanak (2015-03-05 17:10:31)


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#5  2015-03-05 17:10:49

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: Zasilacz awaryjny dla RPi - prośba do elektroników o pomoc

RPI jest zasilana prądem stałym?
Zatem możesz przy pomocy diod puścić możliwy kierunek przepływu prądu, i w ten sposób podpinasz zasiłkę, akumulatorek, a RPI w ogóle nie powinien wiedzieć, że prąd wyłączyli, czyli masz konstrukcję najnormalniejszego zasilacza UPS online.

UPS z systemem ma gadać wtedy, jak niknie napięcie, a UPS ma uprzedzić, że mu się akumulatory kończą, żeby ślitaśna macierz RAID nie skichała.

Na Twoim miejscu bym kombinował właśnie takie rozwiązanie, żeby RPI w ogóle nie wiedział, że prąd wyłączyli.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#6  2015-03-05 17:15:31

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: Zasilacz awaryjny dla RPi - prośba do elektroników o pomoc

Jacekalex: gdybyś przeczytał pierwszy post w całości to byś wiedział że naisałeś bzdurę.
Cały pic polega na tym, że RPi [b]musi[/b] wiedzieć czy ma zasilanie sieciowe i grzecznie zrobić shutdown jeśli przerwa w zasilaniu jest zbyt długa.
Też nie wierzyłem w te głodne kawałki o konieczności reflashowania karty - ale jak mi ostatnio mój RPi potraktowany trzema wywaleniami bezpiecznika w ciągu minuty wstał bez obsługi USB (czyli bez netu i klawiatury) stwierdziłem, że problem może być poważniejszy niż mi sie wydawało :)

Co do wymuszania za pomocą diod... jak myslisz, do czego służą D2 i D3 na moim schemacie?

Oj, panie Jacekalex, czytanie ze zrozumieniem (a i oglądanie obrazków takoż) się kłania :-P

BTW. wiedziałem że jesteś programistą, adminem i ogólnie informatykiem - ale miło się dowiedzieć że jesteś również elektronikiem (co najmniej tak dobrym jak neo86).

Ostatnio edytowany przez ethanak (2015-03-05 17:24:56)


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#7  2015-03-06 00:31:35

  qluk - Pan inż. Cyc

qluk
Pan inż. Cyc
Skąd: Katowice
Zarejestrowany: 2006-05-22

Re: Zasilacz awaryjny dla RPi - prośba do elektroników o pomoc

Jeden przekaźnik dwutorowy i po sprawie...
Do "informowania" możesz sobie ten transoptor zostawić obojętne po której stronie (zalecane po stronie zasilania sieciowego). Cały ten układ jednak ma istotny minus, nawet bardzo. Skąd wiesz jakim ładunkiem wciąż dysponują ogniwa rezerwowe?

Offline

 

#8  2015-03-06 09:17:42

  ethanak - Użytkownik

ethanak
Użytkownik
Skąd: Ungwenor
Zarejestrowany: 2010-07-19
Serwis

Re: Zasilacz awaryjny dla RPi - prośba do elektroników o pomoc

To akurat nie jest specjalny minus (punkt 2 w pierwszym poście). Zakładając użycie normalnych ogniw alkalicznych mogę spokojnie założyć konieczność ich wymiany po roku (dostaną drugie życie w jakimś pilocie albo innym zegarku co nie potrzebuje prądu mierzonego w amperach) albo po wykryciu n minut pracy na baterii (rpi może mi nawet ślicznego maila wysmażyć na ten temat). Jedyna możliwość niekontrolowanego wyczerpania energii to krótkie zaniki zasilania występujące w większej ilości i nie załapujące się na moment czytania z crona - ale jak wspominałem taka sytuacja nie powinna wystąpić.
Zresztą - na taką sytuację też jest częściowe lekarstwo (mogę użyć przerwań zamiast crona do sprawdzania stanu zasilania i gdzieś to sobie logować). Częściowe - ponieważ i tak wymagać będzie ingerencji (wymiana baterii), ale wtedy mogę dokładniej oszacować czy wymiana jest konieczna.
Tak to sobie zresztą wymyśliłem - ale jeśli się gdzieś mylę to chciałbym wiedzieć jak najszybciej :)


Nim mechaniczne larum zagrasz mi, kanalio,
głosząc nadejście Javy - śmiertelnego wroga!
[i]Zespół Adwokacki Dyskrecja[/i]

Offline

 

#9  2015-03-10 07:57:41

  qluk - Pan inż. Cyc

qluk
Pan inż. Cyc
Skąd: Katowice
Zarejestrowany: 2006-05-22

Re: Zasilacz awaryjny dla RPi - prośba do elektroników o pomoc

Zwykłe NiMh o niskim współczynniku rozładowania, z czasem możesz dorzucić układ sprawdzania spadku napięcia na ogniwie lub całym pakiecie. I przypomniała mi się jeszcze jedna sprawa filtr na kondensatroze, ale do celu podtrzymania na czas przełączenia się przekaźnika.

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.014 seconds, 10 queries executed ]

Informacje debugowania

Time (s) Query
0.00019 SET CHARSET latin2
0.00008 SET NAMES latin2
0.00192 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.224.44.108' WHERE u.id=1
0.00128 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.224.44.108', 1714716184)
0.00074 SELECT * FROM punbb_online WHERE logged<1714715884
0.00118 DELETE FROM punbb_online WHERE ident='47.128.115.170'
0.00087 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=27120 AND t.moved_to IS NULL
0.00006 SELECT search_for, replace_with FROM punbb_censoring
0.00333 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=27120 ORDER BY p.id LIMIT 0,25
0.00117 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=27120
Total query time: 0.01082 s