Strona 1 z 2

Detekcja ogniw, pomiar napięcia i zabezpieczenie (Flagiusz)

: sobota 24 maja 2008, 10:30
autor: df
Kolejną funkcjonalnością, o którą aktualnie wzbogacony jest nasz sterownik, to automatyczna identyfikacja, pomiar napięcia i zabezpieczenie przed nadmiernym rozładowaniem źródła zasilania.

Także i tym razem poprosiłbym Was o opinie.

Opracowany aktualnie propozycja obejmuje:

1. Automatyczna identyfikacja użytegej liczby i typu ogniw:

- 1x NiCd/NiMH (1,2V)
- 2x NiCd/NiMH (2,4V)
- 3x NiCd/NiMH (3,6V)
- 4x NiCd/NiMH (4,8V)

- 1x Li-Ion (3,6V)
- 2x Li-Ion (7,2V)

[czy coś jeszcze warto brać pod uwagę?]

Detekcja typu ogniwa następuje zaraz po włączeniu latarki.
W celu jej identyfikacji możliwe jest wstępne badanie napięcia baterii bez lub pod obciążeniem. Pierwszy pomiar określający typ zajmuje ułamek sekundy.
Wydaje mi się, że pomiar bez obciążenia jest trochę lepszy, bo daje wiarygodniejsze dane - nie zaburzone przez silnie rozładowane ogniwo.

[czy uważacie, że w fazie detekcji ogniwo powinno być pod chwilowym np. pełnym obciążeniem?]

2. Jako alternatywa do automatycznego wykrywania typu baterii jest przewidziana opcja "kalibracji" dostępna w setupie. Polega ono na wejściu do setupu i wyborze jednego z ustawień, po wykonaniu którego przeprowadzony zostanie automatyczny proces detekcji.
W tym modelu detekcja wymuszana byłaby przez użytkownika i pamiętana przez kontroler, a nie jak poprzednio realizowana automatycznie przy każdym włączeniu latarki.

[który z modeli jest Waszym zdaniem lepszy - automatyczny przy włączeniu, czy manualny wymuszony przez użytkownika?]

3. Konfigurowalna opcja pomiaru napięcia baterii (typu: on/off) - umieszczona w setup`ie dawałaby użytkownikowi możliwość włączenia lub wyłączenia mechanizmu detekcji i pomiaru stanu ogniwa oraz sygnalizacji niskiego stanu i zabezpieczenia przed nadmiernym rozładowaniem.

4. Sprzętowa możliwość wyłączenia pomiaru (rozwiązanie czysto technicznie, dla prostrzej implementacji różnych wersji PCB) - przy zwarciu linii pomiarowej ADC do masy kontroler odczyta wartość napięcia =0V i samemu uzna, że funkcja pomiaru jest wyłączona i nie będzie z niej korzystał. Funkcjonalnie niczemu to nie przeszkadza, bo przy zerowym napięciu i tak driver pracował nie będzie ;-)

5. Każde z wykrywanych typów ogniw opisane jest 3-ma parametrami:
- Umin - napięcie minimalne, poniżej którego sterownik powinien się wyłączyć (power-off)
- Uwarn - napięcie ostrzegające o niskim stanie energii
- Umax - napięcie maksymalne dla danego typu zasilania (bez lub pod obciążeniem)

I tak Umin / Uwarn / Umax dla typowych kombinaci wynoszą:
- 1x NiCd: 1,05 / 1,15 / 1,4V
- 2x NiCd: 2,10 / 2,30 / 2,8V
- 3x NiCd oraz 1x Li-Ion: 3,2 / 3,5 / 4,25V
- 4x NiCd: 4,20 / 4,60 / 5,6V
- 2x Li-Ion: 6,40 / 7,00 / 8,50V

6. Informacja o niskim stanie baterii (Umin < Ubat < Uwarn)
Dla trybów ciągłych proponuję jedno "ciemne" mignięcie co 2-3 sekundy (tak jak w obecnej wersji sterownika użytkownik informowany jest o zbliżającym się stanie auto-power-off).
Dla trybów sekwecyjnych i strobe`ów chyba nie ma za bardzo jak to sygnalizować.

[pytanie, czy po przekroczeniu Uwarn oprócz sygnalizacji sterownik ma podejmować jeszcze jakieś inne działania - np. zmniejszać jasność lub przełączać tryb pracy?]

Niski stan napięcia zasilania będzie dodatkowo sygnalizowany na jednym z pinów kontrolera, dzięki czemu będzie istniała prosta możliwość dodatkowej sygnalizacji na zewnętrznej diodzie LED (np. czerwonej) podświetlającej cokolwiek.

: sobota 24 maja 2008, 11:48
autor: Hoffer007
Ewentualnie CRK mozna by dorzucic bo nie wiem jak by byly rozpoznawane jako 2x AA ?

Moim zdaniem dobrze by bylo jak by w step upie byla mozliwosc wyboru co ma robic driver po przekroczeniu "tragicznego" pradu.

Np. jeden woli jak w awaryjnej sytuacji moze jeszcze korzystac z latarki i zostanie tylko poinformowany (wlasnie dodatkowym led-em) ze juz jest koniec bezpiecznej granicy akusa a drugi bedzie wolal zeby sie wyłączyło (lub zmienilo tryb tylko na low) i nie niszczyc aku.

(ja tak napisalem z punktu widzenia zwyklego zjadacza chleba)

: sobota 24 maja 2008, 19:48
autor: lennin
Kto używa na forum baterii CR123? Po drugie niech one bedą zabijane do końca ;)

: środa 28 maja 2008, 23:27
autor: df
Nowa funkcjonalność jest już przygotowana i właśnie przechodzi ostatnie testy.

Sterownik ma zaimplementowany mechanizm automatycznej detekcji zastosowanego źródła zasilania i wykrywa następujące typy ogniw:
1x NiCd/NiMH
2x NiCd/NiMH
3x NiCd/NiMH
1x Li-Ion
2x Li-Ion
1x 12V

Detekcja typu zastosowanego źródła następuje w chwili włączenia latarki, a następnie latarka bada na bieżąco stan napięcia zasilania i po przekroczeniu pierwszego "ostrzegawczego" progu sygnalizuje użytkownikowi niski stan energii pojedynczymi "ciemnymi" krótkimi błyskami powtarzanymi co 4 sek oraz stanem wysokim na jednym z wolnych portów (możliwość sygnalizacji na dodatkowej diodzie LED - np. czerwonej).
Natomiast po zejściu poniżej drugiego - "minimalnego" progu automatycznie gasi LED oraz wyłącza (zatrzymuje) procesor.
Ponowne uruchomienie sterownika możliwe jest dopiero po odłączeniu zasilania, co podczas wymiany baterii ma miejsce.

Progi: alarmowy oraz wyłączenia zdefiniowane są indywidualnie dla każdego z wykrywanych źródeł zasilania z osobna.

Zabezpieczenie to jest szczególnie istotne dla akumulatorów nie posiadających własnych zabezpieczeń (np. Li-Ion unprotected, czy NiMH), w których głębokie rozładowanie powoduje ich silną degradację, a więc po prostu niszczy je.

Funkcję tą można wyłączyć w setupie - wówczas sterownik będzie wyciągał z baterii tyle ile się da - aż do ostatniej kropli ;-) co w pewnych okolicznościach, np. gdy stosujemy zwykłe baterie, ma uzasadniony sens.

Mechanizm ten może być stosowany praktycznie we wszystkich powszechnie używanych kombinacjach rodzajów zasilania od 1,2 do 12V oraz niezależnie od tego czy i jaki typ układu/przetwornicy (boost, buck, Iconst., DD, itp.) został w danej latarce zastosowany.

Oprócz tego sterownik zachowuje wszystkie dotychczasowe funkcjonalności dostępne we wcześniejszych wersjach poza funkcją automatycznego wyłączenia po czasie braku aktywności, z której na rzecz pomiaru napięcia zrezygnowałem.

: środa 28 maja 2008, 23:33
autor: Hoffer007
Idealnie ;) czekamy na koniec testów.

: czwartek 29 maja 2008, 07:44
autor: Calineczka
Gratuluję DArku :mrgreen:
Juz mnie programator swędzi :mrgreen:
Zastanawia mnie sens dodania funkojonalności wykrywania baterii 1,5V (1,2,3,4szt) i ogniw litowych 3V(1,2szt).CO prawda wysysa się je do końca....ale może miło by było wiedzieć, że ów koniec się zbliża?
Czy detekcji rodzaju ogniwa dokonujesz pod obciążeniem, np. włączonym LEDzie?

: czwartek 29 maja 2008, 08:13
autor: df
Uznałem, że baterie 1,5V i 3V będą mapowały się w dolne progi odpowiednio NiMH (czyli 1,15V warning i 1,05V off) i 2x NiMH (czyli 2,30V warning i 2,10V off).

Dodanie nakładających się (i w znacznej części pokrywających) obszarów detekcji mogłoby prowadzić do błędnych identyfikacji, co jest złe.

Dlatego też uznałem, że bazą do detekcji są akumulatorki różnych typów i konfiguracji, bo to je przede wszystkim trzeba chronić.

A zatem baterie (jednorazowe) będą korzystały z progów swoich "akumulatorowych" braci lub będą używane do końca - czyli przy wyłączeniu w setupie opcji ich pomiaru.

Identyfikacja ogniwa jest realizowana jak najbliżej jego SEM - czyli bez obciążenia.
Startuje procesor, odczytuje konfigurację z pamięci, inicjalizuje peryferia, dioda jest wyłączona, robi pomiar napięcia, rzutuje uzyskany wynik na typ ogniwa, ustawia właściwe dla niego punkty warningu i odcięcia, a następnie włącza diodę i startuje swój właściwy program.

Co 1 sek. robi pomiar napięcia na ogniwie i jak przekroczy próg warning, to ostrzega użytkownika (okresowo migając w trybach ciągłych) i stanem na jednym z wolnych pinów, a jak przekroczy drugi próg (odcięcia), to wyłącza diodę i peryferia, poczym sam się zatrzymuje.

: czwartek 29 maja 2008, 08:32
autor: Calineczka
...w trybach specjalnych zabezpieczenie/ochrona też działa?Sygnalizacji nie ma?

: czwartek 29 maja 2008, 09:40
autor: lennin
Qrcze tylko brakuje krawatowiazacza jeszcze :mrgreen: Rewelacyjna funkcja. Nie trzeba sie już martwić o ogniwa niezabezpieczone.

: czwartek 29 maja 2008, 13:00
autor: Bocian
A jak przykładowo sterownik rozpoznaje jak np. ciut rozładowane 3xAAA alkaliki ~ 4,2V że nie jest to świeżo naładowany Li-ionek? Mierzy rezystancję wewnętrzną ogniw? Mierzy napięcie startowe i dopasowuje je do zaprogramowanego wzorca, monitoruje spadek napięcia pod obciązeniem?

: czwartek 29 maja 2008, 13:38
autor: df
Bocian pisze:A jak przykładowo sterownik rozpoznaje jak np. ciut rozładowane 3xAAA alkaliki ~ 4,2V że nie jest to świeżo naładowany Li-ionek? Mierzy rezystancję wewnętrzną ogniw? Mierzy napięcie startowe i dopasowuje je do zaprogramowanego wzorca, monitoruje spadek napięcia pod obciązeniem?
Na razie przy detekcji rodzaju ogniwa wyłącznie mierzy napięcie bez obciążenia (SEM) - na chwilę obecną wydało mi się to najbardziej skuteczne, a na prawidłowej detekcji zależało mi najbardziej.

Późniejszy pomiar jest oczywiście realizowany w normalnych warunkach, czyli podczas pracy z takim obciążeniem jakie w danej chwili ma.

Najgorszym błędem detekcji byłoby potraktowanie mocno rozładowanego ogniwa jako ogniwa o niższym napięciu - np. wzięcie rozładowanego Li-Ion`a za NiMH.
A takie właśnie prawdopodobieństwo się pojawia przy pomiarze pod obciążeniem - stąd przyjąłem, że bezpieczniej jest sprawdzać SEM podchodząc jak najbardziej delikatnie.

Co do bliskości 3xAA i 1xLi-Iona, to dokładnie w tych dwóch przypadkach założyłem progi napięć odcięcia takie jak są w Li-Ion - czyli ostrzeżenie na 3,50V i wyłączenie na 3,20V.
A to przy założeniu równomiernego zbalansowania da na każdym z NiMH odpowiednio: 1,16 dla ostrzeżenia i 1,06V dla wyłączenia. Czyli jest w sam raz tak jak trzeba. Ale zgadzam się, że obserwując samo napięcie ciężko jest je rozróżnić.

Zobaczymy jak się to sprawdzi w testach i ew. dodam drugi pomiar z innymi kryteriami pod obciążeniem.

Tak jak napisałem jest to na razie działający prototyp - jeżeli będą pojawiać się problemy, będę je poprawiał, w skrajnym przypadku zrezygnuję z automatycznej detekcji na rzecz predefiniowanych (lub wybieranych w setupie) przez użytkownika typów ogniw.

Pozostałe kombinacje dość ładnie się układają, więc raczej nie spodziewam się tu większych problemów - moim zdaniem ma szansę to dobrze działać.
Calineczka pisze:...w trybach specjalnych zabezpieczenie/ochrona też działa?Sygnalizacji nie ma?
Arku, rzeczywiście w testowej wersji odłączyłem pomiar prądu diody (przetwornik ADC użyłem do pomiaru napięcia - w chwili obecnej nie jest on przełączany na multiplekserze), więc puki co obu tych rzeczy na raz nie mam - sorki za przeoczenie.

[ Dodano: Czw Maj 29, 2008 1:49 pm ]
Poniżej tabelka z wartościami progów jakie na chwilę obecną używam do pomiarów na przetworniku ADC i odpowiadające im napięcia po stronie zasilania:

.equ batt_null = 16 ; 0,7V (max)
.equ batt_1aa = 35 ; 1,5V (max)
.equ batt_2aa = 70 ; 3,0V (max)
.equ batt_1li = 99 ; 4,25V (max) lub 4,50V - 3x 1,5V
.equ batt_2li = 189 ; 8,5V (max)
;.equ batt_12v = 70 ; >...

.equ batt_warn_1aa = 27 ; 1,15V
.equ batt_warn_2aa = 54 ; 2,30V
.equ batt_warn_1li = 81 ; 3,50V
.equ batt_warn_2li = 163 ; 7,00V
.equ batt_warn_12v = 250 ; 11,00V ???

.equ batt_off_1aa = 24 ; 1,05V
.equ batt_off_2aa = 49 ; 2,10V
.equ batt_off_1li = 74 ; 3,20V
.equ batt_off_2li = 149 ; 6,40V
.equ batt_off_12v = 233 ; 10,00V ???

Czyli przykładowo dla 1x AA:
- próg detekcji <1,5V (bez obciążenia)
- ostrzeżenie <1,15V (pod obciążeniem nominalnym w danym trybie pracy)
- odłączenie <1,05V (pod obciążeniem nominalnym w danym trybie pracy)

: czwartek 29 maja 2008, 22:27
autor: pawelsz
a o jakim sterowniku mowa ? - może coś przeoczyłem , no widzę zasilanie od AA aż do 2xlion a nawet 12v
no miło by było coś takiego mieć, aczkolwiek wsio co jest za bardzo uniwersalne, nie jest dobre do czegoś konkretnego

: czwartek 29 maja 2008, 23:20
autor: Serkules
pawelsz
a o jakim sterowniku mowa ?
Właśnie, czy chodzi o ten legendarny driverek Df&Cali ? Bo zdaje się, że on nie chodzi na 12V?

Jeszcze mam uwagę odnośnie reakcji po przekroczeniu dolnego progu. Myślę, że lepszym rozwiązaniem byłoby przejście w jakiś tryb ultra-low. Niekiedy "niemoc" ogniwa może nas dopaść w najmniej oczekiwanej sytuacji, w całkowitej ciemności. Pozwoli to nam na bezpieczne wyjście z jakiegoś pomieszczenia lub ewentualnie odnalezienie swieżego ogniwa.

Inną wersją może być w trybie ostrzeżenia stopniowe zmniejszanie jasności aż do napięcia wyłączenia.

: piątek 30 maja 2008, 00:00
autor: Calineczka
...mowa o przyszłości... :mrgreen:
...a i w obecnym sterowniczku duuuże zmiany nastąpiły...np. ZERO migotania :mrgreen:

: piątek 30 maja 2008, 11:51
autor: pawelsz
ahha- to fajnie
to bym sugerował jednak manualne ustawianie rodzaju zasilania i może nie aż tak szeroki zakres stosowanych ogniw- większa szansa na poprawną pracę.
+ opcja wyczerpania ogniwa na maxa w sytuacjach krytycznych (co może być problemem jeśli już zadziała protekcja- ciężko wtedy wejść do setupu i wyłączyć tą opcję)