Mikroprocesorowy sterownik latarki (Flagiusz)

co i jak zrobiłem...
Awatar użytkownika
df
Posty: 307
Rejestracja: piątek 23 lis 2007, 15:38
Lokalizacja: z nienacka
Kontakt:

Post autor: df »

EdiM pisze:Zapis do pamięci w chwili wykrycia spadku napięcia przy wyłączaniu trochę nie ma sensu, przecież i tak za każdym cyklem włącz-wyłącz zapisujemy
Pojemność 100uF utrzymuje procesor przy życiu przez ok. 1s.
Wykrywanie zaniku zasilania na porcie we. "widoczne" jest praktycznie od razu.
Na "kliki" związane z przełączaniem trybów przewidziałem okno czasowe o szerokości max. 0,5s (tyle mógł trwać najdłuższy stan przyciśnięcia, który sterownik interpretował jako klik).
Po tych 0,5s sterownik (który dalej utrzymywał się w stanie pracy na C) robił zapis.

Celem było właśnie "przetrzymanie" operacji zapisu przy każdym kliku związanym z przełączaniem trybów i robienie go tylko wtedy, gdy sterownik się wyłącza (utrata zasilania na >0,5s) właśnie po to by do minimum zmniejszyć liczbę ich cykli.
EdiM pisze:Ja chyba jednak zrobię zapisy do EE, tylko zaimplementuję algorytmy zwielokratniające ilość zapisów.
Tzn. będziesz pisał w simple-mode po różnych komórkach?
EdiM pisze:Za to w małym PICu który stosuję np w UP100, jako podtrzymanie do przełączania trybów wystarcza nawet bardzo mały kondensatorek - 100n.
Zgadza się - i to właśnie jest jedna z rzeczy, które bardzo mi się nie podobają w Atmelach.
Analizowałem, co tak naprawdę tyle ciągnie prądu, włączając i wyłączając różne peryferia i ku wielkiemu zdumieniu wyszło, że to wewnętrzny zegar RC, który bierze ok. 1mA.
Faktycznie PIC`e są pod tym względem dużo ekonomiczniejsze i o ile na sprawność całego rozwiązania nie ma to żadnego wpływu (niecały 1mA różnicy), to na czas podtrzymania zasilania na kondensatorze ma to już spore znaczenie.

Byćmoże wiesz, że Atmel ok. 2 miesięcy temu rozszerzył swoją ofertę MCU w technologii pico-power i np. kończy produkcję ATtiny13v zastępując tę linię ATtiny13a (w 100% zgodny z v-ką, ale w właśnie w p-p), która ma mieć do 30% mniejsze zużycie energii.
To bardzo dobry krok Atmela, choć ucieszyłbym się jeszcze bardziej, gdyby wypuścił linię mikrokontrolerów AVR w obudowach sot23-6, tak jak to zrobił Microchip ze swoimi PIC10F20x.
Flagiusz
Awatar użytkownika
EdiM
Posty: 307
Rejestracja: czwartek 17 sty 2008, 07:35
Lokalizacja: Radom
Kontakt:

Post autor: EdiM »

Witam
Nie wiem co masz na myśli pisząc o simple-mode przy zapisywaniu.

Co do Atmela to oczywiście wiem, że wprowadzają nowe procesorki z mniejszym poborem prądu. Ale jest taka zmiana nie jest jakaś bardzo rewolucyjna. Ogólnie takie procesorki mają stosunkowo mały pobór prądu. Trochę dziwne, że zegar RC tyle ciągnie. Raczej dokumentacje Atmela są szczegółowe i takie informacje się tam znajdują. Właśnie znalazłem, rzeczywiście wygląda na co najmniej 1mA, ale w trybie pracy nie ma to przecież większego znaczenia, no może poza kondensatorem podtrzymującym.

Mam jeszcze pytanie odnośnie częstotliwości PWM z jaką sa sterowane LEDy w Twoim programie? Jaka powinna być wystarczająca?
W swoim sterowniku na małym PICu mam 1,2kHz i to jest dosyć dobrze. Patrzyłem teraz w sterowniku z DXa i jest np. 700Hz w najniższym trybie i częstotliwość zależy od trybu, tak więc nie jest to PWM ze stałą częstotliwością.
Teraz pracuję nad nowym softem na pica i mam problem z uzyskaniem podobnej częstotliwości. Chyba będę musiał nieco zmniejszyć rozdzielczość. Teraz mam możliwość 100 kroków, chyba trochę za dużo. Aczkolwiek jak dla Super-LOW 1% wypełnienia wygląda z sensem.
Pozdrawiam
--
EdiM
Zapraszam do sklepu http://sklep.ledim.pl/
Zapytaj jak zdobyć dodatkowy rabat 15-20%
Awatar użytkownika
df
Posty: 307
Rejestracja: piątek 23 lis 2007, 15:38
Lokalizacja: z nienacka
Kontakt:

Post autor: df »

EdiM pisze:Nie wiem co masz na myśli pisząc o simple-mode przy zapisywaniu.
Mam na myśli najprostszy sposób programowania pojedynczych komórek EEPROMa, czyli metodę Atomic Byte Programming, która robi w jednym podejściu zarówno erase jak i write.
W wersji Split Byte Progr. są osobne operacje erase (do 0xFF) oraz write (zerowanie bitów) i w pewnych sytuacjach można by robić wiele zerujących bity zapisów bez erase`a, który to stanowi faktyczne ograniczenie trwałości pamięci.
EdiM pisze:Trochę dziwne, że zegar RC tyle ciągnie. Raczej dokumentacje Atmela są szczegółowe i takie informacje się tam znajdują.
Właśnie znalazłem, rzeczywiście wygląda na co najmniej 1mA, ale w trybie pracy nie ma to przecież większego znaczenia, no może poza kondensatorem podtrzymującym.
No niestety jawnie nie jest tam nigdzie napisane, że internal RC ciągnie 1mA, choć oczywiście można do tego dojść porównując wykresy poboru prądu Icc dla danego fclk pomiędzy wykresami z internal i external clock.
EdiM pisze:Mam jeszcze pytanie odnośnie częstotliwości PWM z jaką sa sterowane LEDy w Twoim programie?
Ostatnie wersje mają 8kHz oraz 16kHz (bo te z 8k niektórym piszczały).
EdiM pisze:Jaka powinna być wystarczająca?
Na tyle duża, by nie było widać flickeringu, na tyle mała by nie interferować z ewentualną przetwornicą impulsową (większość z nich ma limity na fpwm) oraz nie pogarszać sprawności (czas przełączania) i najlepiej jeszcze poza zakresem akustycznym.
EdiM pisze:W swoim sterowniku na małym PICu mam 1,2kHz i to jest dosyć dobrze. Patrzyłem teraz w sterowniku z DXa i jest np. 700Hz w najniższym trybie i częstotliwość zależy od trybu, tak więc nie jest to PWM ze stałą częstotliwością. Teraz pracuję nad nowym softem na pica i mam problem z uzyskaniem podobnej częstotliwości. Chyba będę musiał nieco zmniejszyć rozdzielczość. Teraz mam możliwość 100 kroków, chyba trochę za dużo. Aczkolwiek jak dla Super-LOW 1% wypełnienia wygląda z sensem.
Nasza najnowsza implementacja PWM`a pracuje z rozdzielczością 2^12, ale z uwagi na logarytmiczne nastawy i łatwość obsługi zdecydowaliśmy się na podział na 13 wybieralnych przez użytkownika poziomów.
Mamy oczywiście inne wersje, z liniowym podziałem (testowaliśmy je z Arkiem) gdzie jasność zmieniała się płynnie w 256 poziomach/krokach, ale stwierdziliśmy, że nie jest to zbyt wygodne.
W wersji 8-bitowego PWM`a (9 poziomów) mamy low na poziomie 0,4% - i to w większości zastosowań w zupełności wystarcza.
W wersji 12-bitowej (13 poziomów) low schodzi aż do 1:4096, czyli 0,024% (w ciemnej nocy widać, że struktura ledwo świeci) - tę wersję zalecamy dla naprawdę mocnych latarek, gdzie ktoś przy użyciu naprawdę wypasionego throwera chciałby sobie nocą spojrzeć na zegarek ;-)
Flagiusz
Awatar użytkownika
EdiM
Posty: 307
Rejestracja: czwartek 17 sty 2008, 07:35
Lokalizacja: Radom
Kontakt:

Post autor: EdiM »

Dziękuję za szczegółowe dane :)
Ja niestety w PICu nie mam wcale sprzętowego PWM, więc ciężko zrobić szybki PWM w inny sposób, dodatkowo obsługując inne funkcje. No w AVRkach nie ma problemu.
Pozdrawiam
--
EdiM
Zapraszam do sklepu http://sklep.ledim.pl/
Zapytaj jak zdobyć dodatkowy rabat 15-20%
Awatar użytkownika
df
Posty: 307
Rejestracja: piątek 23 lis 2007, 15:38
Lokalizacja: z nienacka
Kontakt:

Post autor: df »

EdiM pisze:Dziękuję za szczegółowe dane :)
Nie ma sprawy
EdiM pisze:Ja niestety w PICu nie mam wcale sprzętowego PWM, więc ciężko zrobić szybki PWM w inny sposób, dodatkowo obsługując inne funkcje. No w AVRkach nie ma problemu.
Zgadza się, to jest naprawdę bardzo wygodne rozwiązanie i daje możliwość uzyskiwania dość wysokich częstotliwości bez zastanawiania się co procesor w danej chwili robi (jaki kod wykonuje) i na ile czasu go zajmiemy.

W pierwszych wersjach (<3.4) zrobiony mieliśmy w pełni aplikacyjny PWM na bazie w miarę szybko chodzącego Timera, gdzie na przerwaniu mieliśmy kawałek krytycznej czasowo logiki odpowiedzialnej za zliczanie liczby przejść (wypełnienia) i sterowanie portem wyjściowym.

Tam z kolei aby zmniejszyć flickering stosowaliśmy metodę skracania cyklu, która nie była czystym PWM`em, bo w zależności od wypełnienia zmieniała się częstotliwość (czas cyklu) i przy taktowaniu procesora zegarem 1,2MHz na najniższych jasnościach dawało się przy szybkich ruchach dostrzec przebieg kluczujący.

A teraz od wersji 3.4 wzwyż główna część PWM`a pracuje na szybkim przebiegu praktycznie całkowicie sprzętowo (8 lub 16kHz), co znakomicie odciąża ALU, która w teraz w dużej części czasu odpoczywa sobie w idle`u czekając na sleep`ie i od czasu do czasu coś tam sobie sprawdzi i zrobi.
Flagiusz
Macio
Posty: 15
Rejestracja: niedziela 28 gru 2008, 23:52
Lokalizacja: Poznań

Post autor: Macio »

Chciałbym użyć wzmocniony driver do MC-E, jako źródło zasilania planuje2 x CR123A (mam na myśli baterie) co da nam 6v, Czy driver to wytrzyma? czy lepiej użyć 1 x 18650 ?

Jakieś sugestie ?
Awatar użytkownika
greg
Posty: 3535
Rejestracja: środa 08 paź 2008, 00:16
Lokalizacja: Wrocław
Kontakt:

Post autor: greg »

Atmel podaje w specyfikacji dla ATtiny13A:
Operating Voltage: 1.8 - 5.5V

ja bym nie próbował więcej, chociaż, może ktoś już testował 6V? :)
Marcin S.
Posty: 435
Rejestracja: piątek 12 wrz 2008, 10:11

Post autor: Marcin S. »

Powiem tak: mega32 12V przeżyła (choć odmówiła pracy przy takim zasilaniu).

Pozdrawiam sylwestrowo i noworocznie
Marcin S.
Awatar użytkownika
Calineczka
Posty: 7578
Rejestracja: niedziela 11 lis 2007, 20:19
Lokalizacja: Wejherowo
Kontakt:

Post autor: Calineczka »

Macio pisze:Chciałbym użyć wzmocniony driver do MC-E, jako źródło zasilania planuje2 x CR123A (mam na myśli baterie) co da nam 6v, Czy driver to wytrzyma? czy lepiej użyć 1 x 18650 ?

Jakieś sugestie ?
Driver MOŻe wytrzyma 6V. Nie wiem, jaką masz wersję. Od pewnego czasu równolegle do zasilania procka dolutowuję zenerkę 5,1V, +0,6V na diodzie szeregowej-zasilania nie więcej jak 5,7V powinno być. Po co jednak tak wysokie, w dodatku do MC-E?marnowanie energii.Przypomnę, driverek docelowo został zaprojektowany do zasilania z li-iona, gdzie Uzas jest niewiele wieksze od Vf diody.
Macio
Posty: 15
Rejestracja: niedziela 28 gru 2008, 23:52
Lokalizacja: Poznań

Post autor: Macio »

Calineczka,
Nie wiem, jaką masz wersję.

- jeszcze nie mam, planuje zamówić, szczegóły wyśle na priva
Driver MOŻe wytrzyma 6V

Więc zasadniczym zasilaniem planuje 1 x 18650 ale w sytuacji awaryjnej rozważam 2x CR123A

Kod: Zaznacz cały

Od pewnego czasu równolegle do zasilania procka dolutowuję zenerkę 5,1V, +0,6V na diodzie szeregowej-zasilania nie więcej jak 5,7V powinno być.
Więc jeśli zamówie nową wersje wzmocnianą to da rady z tymi 6v :shock:

Ps. Happy new Year
Awatar użytkownika
Calineczka
Posty: 7578
Rejestracja: niedziela 11 lis 2007, 20:19
Lokalizacja: Wejherowo
Kontakt:

Post autor: Calineczka »

...jak będziesz zamawiał napisz że chcesz też zasilać z 6V, dodatkowy rez.szeregowy w zasilanie Attiny rozwiąże sprawę.
ODPOWIEDZ