Driver programowalny Nanjg 105 by alienth - nowe wersje!
: sobota 21 mar 2015, 10:35
Witam.
Dokonałem dwóch modyfikacji poniższego sterownika.
Wersja v2 i wersja v2.1. Bazą opisu jest wersja poprzednia (poniższa).
Na końcu tego tematu opisze zmiany w nowych wersjach.
Kilku użytkowników tego forum posiada już własne projekty czy modyfikacje klasycznego sterownika Nanjg 105 tak bardzo przez nas lubianego i stosowanego.
Postanowiłem zatem dołączyć przynajmniej oficjalnie do tego grona
W zasadzie nie ma tu nic odkrywczego, wszystko bądź prawie wszystko już było w tej czy innej formie. Będzie to po prostu moje spojrzenie na temat prostego drivera, który z założenia miał być prosty i poniekąd intuicyjny a dodatkowo by posiadał najpotrzebniejsze rzeczy.
Oczywiście z racji małej pamięci Attiny13 nie znajdziecie tam tyle funkcjonalności co w driverze Grega czy Bociana, zresztą nie takie były założenia by stworzyć kolejny kombajn do wszystkiego
Podstawowe dane:
Baza to klasyczny Nanjg105 8x AMC7135 i jego krótka charakterystyka:
- maksymalny prąd podawany na diodę w zależności od wersji AMC 2,8A lub 3A
- stabilizacja prądu diody do około 80% pojemności ogniwa (zależne od kondycji ogniwa)
- średnica 17mm, czyli w większości przypadków standard
- ochrona przed odwrotną polaryzacją
- napięcie zasilania od 2,8V do 4,5V
Charakterystyka:
- sterowanie łącznikiem latarki tzw. krótkimi klikami (wciśnięcie łącznika do połowy) poniżej 0,5s, które generują chwilowy spadek napięcia zasilania na układzie (łącznik typu reverse)
- dla użytkownika dostępne są 2 banki trybów po 4 tryby w każdym
- każdy z trybów można zaprogramować mając do wyboru 13 możliwych poziomów jasności
- sterowanie dwustronne w pełnej pętli tzw. up/down
- dostępne stroboskopy taktyczny 12,5Hz, rowerowy 3Hz, BEACON 0,5Hz
- możliwość włączenia lub wyłączenia pamięci trybu osobno dla każdego z banku trybów
- ochrona ogniwa przed nadmiernym rozładowaniem poniżej około 2,9V
- zabezpieczenie termiczne latarki przed uszkodzeniem elektroniki (55*-60*)
Podstawowe kliki:
1 klik - następny tryb świecenia w pętli (z ostatniego przeskakujemy do pierwszego)
2 klik - poprzedni tryb świecenia w pętli ( z pierwszego wskakujemy na ostatni)
3 klik - stroboskop taktyczny 12,5Hz o 100% mocy
4 klik - stroboskop rowerowy o mocy aktualnego trybu z którego został wywołany z wyjątkiem trybu 100% w którym uruchamia się BEACON
6 klik - procedura programowania aktualnego trybu (opisana poniżej)
8 klik - przełączanie aktualnego banku trybu
10 klik - włączenie/wyłączenie pamięci trybów dla aktualnego banku trybów
Programowanie aktualnego trybu
Tę opcje starałem się jak najbardziej uprościć i stwierdziłem, że wykorzystam tutaj genialny pomysł użytkownika Elsora
Wybieramy tryb który chcemy zaprogramować, wykonujemy 6 klik, latarka mrugnie 3x po czym ustawi pierwszy poziom z palety 13 dostępnych poziomów świecenia. W tym momencie wykonując 1 klik lub 2 klik (tak jak zostało to opisane wyżej) przełączamy się po poziomach jasności mając czas na dokładne oszacowanie czy obecny poziom światła jest dla nas wystarczający. Jest to bardzo pomocne i wielce wygodne w stosunku do wyświetlania wszystkich poziomów w pętli czasowej, gdyż nie działamy pod presją czasu i możemy na spokojnie testować dany poziom jasności. Gdy akceptujemy dany tryb wykonujemy 3 klik, latarka mrugnie 3x i kończy procedurę programowania wybranego trybu
Gdy latarka znajduje się w trybie programowania będzie nas o tym informować przygasając jeden raz na 5 sekund
Dostępne poziomy jasności
Tutaj sprawa jest prosta, wykonujemy 8 klik, latarka mrugnie 4x, przełączy się na drugi bank trybów i ustawi pierwszy tryb świecenia. Przykładowo mamy dwa tryby EDC i rower. Będąc w trybach EDC po wykonaniu 8 kliku przełączamy się na rowerowy i na odwrót - będąc w rowerowym przełączamy się na EDC.
Z racji tego, że są tylko dwa banki trybów wykorzystujemy tylko jedną sekwencję klików - prostsze rozwiązanie niż osobne sekwencje dla każdego banku trybów.
Włączenie/wyłączenie pamięci trybów dla aktualnego banku trybów
Dokładna analogia tego co powyżej. Będąc w trybach np EDC wykonujemy 10 klik, latarka mrugnie 5x i przestawi opcję pamięci trybów. Jeśli była włączona to ją wyłączy i na odwrót - jeśli była wyłączona to ją włączy.
Ochrona ogniwa przed nadmiernym rozładowaniem
Klasyczne podejście. Procesor stale bada napięcie zasilania i w momencie jego spadku poniżej około 2,9V-3V redukuje PWM o połowę zapobiegając niekontrolowanemu rozładowaniu ogniwa. Ostatnim wyświetlanym poziomem jasności jest MOON, po którym latarka wyłączy się i procesor przejdzie w stan uśpienia.
Zabezpieczenie termiczne
Realizowane na zewnętrznym czujniku temperatury ma za zadanie chronić elektronikę latarki. Przy osiągnięciu temp. około 55*60* sterownik płynnie obniża prąd do poziomu, który pozwoli na stabilizację temperatury układu sterowania. Przy wychłodzeniu się głowicy latarki następuje płynne zwiększanie mocy. Z racji tego, że jest to zabezpieczenie elektroniki, która znosi więcej niż ludzka ręka, głowica latarki może się nagrzewać nawet do około 60*. Ma to jednak miejsce w totalnym bezruchu np na stole. Podczas normalnego użytkowania EDC/Rower zabezpieczenie praktycznie się nie włącza.
Na koniec coś od siebie. Oprogramowanie tworzyłem trochę pod swoje upodobania,
które poniżej opiszę.
Dlaczego dwa banki trybów?
Bo jeden to za mało, a więcej się sensownie nie zmieściło
Tak na poważnie. Klasycznie zazwyczaj używa się latarki jako EDC i Rowerową - mamy więc to co najczęściej potrzebujemy.
Dlaczego tylko po 4 tryby? (bo więcej się nie zmieściło? Taaaaa... )
Z doświadczenia wiem, że więcej jak 4 przydaje się gdy mamy predefiniowane stroboskopy jako pozycje w bankach trybów, tutaj są one wywoływane niezależnie więc takiej potrzeby nie ma. Z kolei 3 tryby to może być mało, gdy ktoś chce używać trybu MOON. Poza tym 4 tryby to wartość optymalna na rower
Pamięć trybów on/off
Tutaj są różne szkoły. Od zawsze jak pamiętam większość użytkowników chciała mieć pamięć trybów. Powstaje pytanie - po co? Wg mnie przydaje się to na rowerze w EDC niekoniecznie. Chociażby z tego powodu, że mając pod ręką EDC chciałbym mieć pewność jak się ona zachowa przy każdym włączeniu. Dajmy na to wieczorem na podwórku przeganiałem złodzieja i miałem tryb 100% i tak latarkę wyłączyłem. W nocy chcę przyświecić idąc do ubikacji i oczy mam wypalone
Proste rozwiązanie, wyłączyć pamięć trybów. Programujemy tak:
1 tryb - poziom np 2 lub 3 (nie za jasno, ale już dużo widać i nie oślepia, w sam raz na tryb podstawowy)
2 tryb - 100% mocy
3 tryb - np 36% mocy
4 tryb - MOON
Działamy:
włączamy latarkę, z racji braku pamięci trybu uruchomi nam zawsze tryb pierwszy. Mamy dość jasno do chodzenia po podwórku świecąc pod nogi.
Chcemy 100% mocy wystarczy jeden klik
Chcemy iść w nocy do toalety i chcemy jeszcze ciemniej, po włączeniu szybki dwuklik i mamy MOON (przeskakujemy w pętli z pierwszego do ostatniego)
Jak widać mamy szybki dostęp do podstawowego trybu i 2 skrajnych zaraz po włączeniu lampki. To oczywiście tylko propozycja, każdy może programować jak chce
Stroboskopy - dlaczego tak a nie inaczej
Pierwszy STROBO TAKTYCZNE.
Podstawowe pytanie do czego to ma służyć? Do dezorientacji i odstraszania zwierząt bądź napastników(bez broni palnej bądź miotanej ). Dlatego jest ustawiony na stałe 100% i pod 3 klikiem, by można go szybko wywołać z dowolnego trybu i jasności.
Rowerowy 3Hz regulowany.
Jeśli jeździmy dużo na rowerze ze stroboskopem sygnalizującym nasze położenie to optymalnym rozwiązaniem jest możliwość dostosowania jego mocy do otoczenia.
Należy pamiętać, że uruchamia się zawsze o mocy aktualnego trybu z wyjątkiem 100%
BEACON tylko 100%
Ten tryb ma za zadanie sygnalizować w nocy nasze położenie więc nie widzę tutaj potrzeby mieć możliwości zmiany jego mocy. Tryb 100% jest optymalny. Jeden krótki błysk co 2s w nocy widać naprawdę z bardzo daleka - testowane
Stroboskopy nie są zapamiętywane po wyłączeniu latarki (brak zasilania powyżej 0,5s)
Zabezpieczenie termiczne
Bo lepiej mieć jak nie mieć
Na koniec. Nie ma tu nic odkrywczego. Jest to zlepek różnych rozwiązań ułożonych w jedną całość jako moje podejście do tematu.
--------------------------------------------------------------------------------------------------------
Wersja v2
Dodano pomiar napięcia ogniwa.
Funkcję wywołujemy 5-cio klikiem.
Ilość błysków informuje nas o napięciu ogniwa (mierzone pod obciążeniem)
Oczywiście nie jest to typowy woltomierz. Są to wartości zawsze przybliżone.
Wynika to z odchyleń/toleracji wartości pewnych elementów/stałych w procesorze dopuszczalnych przez producenta.
Zmianie uległ sposób przełączania pamięci trybów.
Teraz by wyłączyć/włączyć pamięć ostatniego trybu w danym banku trybów należy
wywołać opcję programowania (6cio klik w dowolnym trybie) po czym po 3 błyskach należy wyłączyć latarkę.
Pamieć trybu została zmieniona.
Poprzednia funkcjonalność 10cio kliku jest nieaktywna
Wersja v2.1
W tej opcji dodano identyczną funkcjonalność zgodnie z opisem wersji v2.
Zmiana obejmuje usunięcie jednego banku trybów, oraz pamięć trybu wyłączamy/włączamy 8mio klikiem (poprzednio był 10cio klik)
Pozostaje 5 trybów z możliwością dostosowania ich ilości. Czyli możemy zaprogramować latarkę tak by miała np 2 tryby,4 tryby itp.
Zmiany dokonujemy wywołując 7mio klik, przy czym każde wywołanie tej funkcji dodaje nam jeden dodatkowy tryb do obecnej ilości. Gdy mamy już 5 aktywnych trybów latarka ustawia tylko jeden aktywny. Ilość zaprogramowanych trybów latarka sygnalizuje błyskami,
Np. mamy aktywne 3 tryby, wykonujemy 7mio klik, latarka mrugnie 4x i mamy aktywne 4 tryby świecenia.
Powyższe wersje powstały by zapełnić pewną powstałą lukę w funkcjonalności
prostego drivera opartego na AtTiny13. Z racji jego skromnej pojemności na kod programowy mamy do wyboru 3 wersje funkcjonalności by każdy mógł znaleźć coś dla siebie.
Gratulacje dla tego, kto dotrwał do końca
Dokonałem dwóch modyfikacji poniższego sterownika.
Wersja v2 i wersja v2.1. Bazą opisu jest wersja poprzednia (poniższa).
Na końcu tego tematu opisze zmiany w nowych wersjach.
Kilku użytkowników tego forum posiada już własne projekty czy modyfikacje klasycznego sterownika Nanjg 105 tak bardzo przez nas lubianego i stosowanego.
Postanowiłem zatem dołączyć przynajmniej oficjalnie do tego grona
W zasadzie nie ma tu nic odkrywczego, wszystko bądź prawie wszystko już było w tej czy innej formie. Będzie to po prostu moje spojrzenie na temat prostego drivera, który z założenia miał być prosty i poniekąd intuicyjny a dodatkowo by posiadał najpotrzebniejsze rzeczy.
Oczywiście z racji małej pamięci Attiny13 nie znajdziecie tam tyle funkcjonalności co w driverze Grega czy Bociana, zresztą nie takie były założenia by stworzyć kolejny kombajn do wszystkiego
Podstawowe dane:
Baza to klasyczny Nanjg105 8x AMC7135 i jego krótka charakterystyka:
- maksymalny prąd podawany na diodę w zależności od wersji AMC 2,8A lub 3A
- stabilizacja prądu diody do około 80% pojemności ogniwa (zależne od kondycji ogniwa)
- średnica 17mm, czyli w większości przypadków standard
- ochrona przed odwrotną polaryzacją
- napięcie zasilania od 2,8V do 4,5V
Charakterystyka:
- sterowanie łącznikiem latarki tzw. krótkimi klikami (wciśnięcie łącznika do połowy) poniżej 0,5s, które generują chwilowy spadek napięcia zasilania na układzie (łącznik typu reverse)
- dla użytkownika dostępne są 2 banki trybów po 4 tryby w każdym
- każdy z trybów można zaprogramować mając do wyboru 13 możliwych poziomów jasności
- sterowanie dwustronne w pełnej pętli tzw. up/down
- dostępne stroboskopy taktyczny 12,5Hz, rowerowy 3Hz, BEACON 0,5Hz
- możliwość włączenia lub wyłączenia pamięci trybu osobno dla każdego z banku trybów
- ochrona ogniwa przed nadmiernym rozładowaniem poniżej około 2,9V
- zabezpieczenie termiczne latarki przed uszkodzeniem elektroniki (55*-60*)
Podstawowe kliki:
1 klik - następny tryb świecenia w pętli (z ostatniego przeskakujemy do pierwszego)
2 klik - poprzedni tryb świecenia w pętli ( z pierwszego wskakujemy na ostatni)
3 klik - stroboskop taktyczny 12,5Hz o 100% mocy
4 klik - stroboskop rowerowy o mocy aktualnego trybu z którego został wywołany z wyjątkiem trybu 100% w którym uruchamia się BEACON
6 klik - procedura programowania aktualnego trybu (opisana poniżej)
8 klik - przełączanie aktualnego banku trybu
10 klik - włączenie/wyłączenie pamięci trybów dla aktualnego banku trybów
Programowanie aktualnego trybu
Tę opcje starałem się jak najbardziej uprościć i stwierdziłem, że wykorzystam tutaj genialny pomysł użytkownika Elsora
Wybieramy tryb który chcemy zaprogramować, wykonujemy 6 klik, latarka mrugnie 3x po czym ustawi pierwszy poziom z palety 13 dostępnych poziomów świecenia. W tym momencie wykonując 1 klik lub 2 klik (tak jak zostało to opisane wyżej) przełączamy się po poziomach jasności mając czas na dokładne oszacowanie czy obecny poziom światła jest dla nas wystarczający. Jest to bardzo pomocne i wielce wygodne w stosunku do wyświetlania wszystkich poziomów w pętli czasowej, gdyż nie działamy pod presją czasu i możemy na spokojnie testować dany poziom jasności. Gdy akceptujemy dany tryb wykonujemy 3 klik, latarka mrugnie 3x i kończy procedurę programowania wybranego trybu
Gdy latarka znajduje się w trybie programowania będzie nas o tym informować przygasając jeden raz na 5 sekund
Dostępne poziomy jasności
Zmiana aktualnego banku trybówtryb | prąd diody [%]
MOON | 0,035
1 | 0,5
2 | 1
3 | 2
4 | 4
5 | 9
6 | 15
7 | 25
8 | 36
9 | 48
10 | 62
11 | 78
12 | 100
Tutaj sprawa jest prosta, wykonujemy 8 klik, latarka mrugnie 4x, przełączy się na drugi bank trybów i ustawi pierwszy tryb świecenia. Przykładowo mamy dwa tryby EDC i rower. Będąc w trybach EDC po wykonaniu 8 kliku przełączamy się na rowerowy i na odwrót - będąc w rowerowym przełączamy się na EDC.
Z racji tego, że są tylko dwa banki trybów wykorzystujemy tylko jedną sekwencję klików - prostsze rozwiązanie niż osobne sekwencje dla każdego banku trybów.
Włączenie/wyłączenie pamięci trybów dla aktualnego banku trybów
Dokładna analogia tego co powyżej. Będąc w trybach np EDC wykonujemy 10 klik, latarka mrugnie 5x i przestawi opcję pamięci trybów. Jeśli była włączona to ją wyłączy i na odwrót - jeśli była wyłączona to ją włączy.
Ochrona ogniwa przed nadmiernym rozładowaniem
Klasyczne podejście. Procesor stale bada napięcie zasilania i w momencie jego spadku poniżej około 2,9V-3V redukuje PWM o połowę zapobiegając niekontrolowanemu rozładowaniu ogniwa. Ostatnim wyświetlanym poziomem jasności jest MOON, po którym latarka wyłączy się i procesor przejdzie w stan uśpienia.
Zabezpieczenie termiczne
Realizowane na zewnętrznym czujniku temperatury ma za zadanie chronić elektronikę latarki. Przy osiągnięciu temp. około 55*60* sterownik płynnie obniża prąd do poziomu, który pozwoli na stabilizację temperatury układu sterowania. Przy wychłodzeniu się głowicy latarki następuje płynne zwiększanie mocy. Z racji tego, że jest to zabezpieczenie elektroniki, która znosi więcej niż ludzka ręka, głowica latarki może się nagrzewać nawet do około 60*. Ma to jednak miejsce w totalnym bezruchu np na stole. Podczas normalnego użytkowania EDC/Rower zabezpieczenie praktycznie się nie włącza.
Na koniec coś od siebie. Oprogramowanie tworzyłem trochę pod swoje upodobania,
które poniżej opiszę.
Dlaczego dwa banki trybów?
Bo jeden to za mało, a więcej się sensownie nie zmieściło
Tak na poważnie. Klasycznie zazwyczaj używa się latarki jako EDC i Rowerową - mamy więc to co najczęściej potrzebujemy.
Dlaczego tylko po 4 tryby? (bo więcej się nie zmieściło? Taaaaa... )
Z doświadczenia wiem, że więcej jak 4 przydaje się gdy mamy predefiniowane stroboskopy jako pozycje w bankach trybów, tutaj są one wywoływane niezależnie więc takiej potrzeby nie ma. Z kolei 3 tryby to może być mało, gdy ktoś chce używać trybu MOON. Poza tym 4 tryby to wartość optymalna na rower
Pamięć trybów on/off
Tutaj są różne szkoły. Od zawsze jak pamiętam większość użytkowników chciała mieć pamięć trybów. Powstaje pytanie - po co? Wg mnie przydaje się to na rowerze w EDC niekoniecznie. Chociażby z tego powodu, że mając pod ręką EDC chciałbym mieć pewność jak się ona zachowa przy każdym włączeniu. Dajmy na to wieczorem na podwórku przeganiałem złodzieja i miałem tryb 100% i tak latarkę wyłączyłem. W nocy chcę przyświecić idąc do ubikacji i oczy mam wypalone
Proste rozwiązanie, wyłączyć pamięć trybów. Programujemy tak:
1 tryb - poziom np 2 lub 3 (nie za jasno, ale już dużo widać i nie oślepia, w sam raz na tryb podstawowy)
2 tryb - 100% mocy
3 tryb - np 36% mocy
4 tryb - MOON
Działamy:
włączamy latarkę, z racji braku pamięci trybu uruchomi nam zawsze tryb pierwszy. Mamy dość jasno do chodzenia po podwórku świecąc pod nogi.
Chcemy 100% mocy wystarczy jeden klik
Chcemy iść w nocy do toalety i chcemy jeszcze ciemniej, po włączeniu szybki dwuklik i mamy MOON (przeskakujemy w pętli z pierwszego do ostatniego)
Jak widać mamy szybki dostęp do podstawowego trybu i 2 skrajnych zaraz po włączeniu lampki. To oczywiście tylko propozycja, każdy może programować jak chce
Stroboskopy - dlaczego tak a nie inaczej
Pierwszy STROBO TAKTYCZNE.
Podstawowe pytanie do czego to ma służyć? Do dezorientacji i odstraszania zwierząt bądź napastników(bez broni palnej bądź miotanej ). Dlatego jest ustawiony na stałe 100% i pod 3 klikiem, by można go szybko wywołać z dowolnego trybu i jasności.
Rowerowy 3Hz regulowany.
Jeśli jeździmy dużo na rowerze ze stroboskopem sygnalizującym nasze położenie to optymalnym rozwiązaniem jest możliwość dostosowania jego mocy do otoczenia.
Należy pamiętać, że uruchamia się zawsze o mocy aktualnego trybu z wyjątkiem 100%
BEACON tylko 100%
Ten tryb ma za zadanie sygnalizować w nocy nasze położenie więc nie widzę tutaj potrzeby mieć możliwości zmiany jego mocy. Tryb 100% jest optymalny. Jeden krótki błysk co 2s w nocy widać naprawdę z bardzo daleka - testowane
Stroboskopy nie są zapamiętywane po wyłączeniu latarki (brak zasilania powyżej 0,5s)
Zabezpieczenie termiczne
Bo lepiej mieć jak nie mieć
Na koniec. Nie ma tu nic odkrywczego. Jest to zlepek różnych rozwiązań ułożonych w jedną całość jako moje podejście do tematu.
--------------------------------------------------------------------------------------------------------
Wersja v2
Dodano pomiar napięcia ogniwa.
Funkcję wywołujemy 5-cio klikiem.
Ilość błysków informuje nas o napięciu ogniwa (mierzone pod obciążeniem)
Kod: Zaznacz cały
5 błysków - napięcie powyżej 3,8V
4 błyski - napięcie powyżej 3,6V
3 błyski - napięcie powyżej 3,4V
2 błyski - napięcie powyżej 3,2V
1 błysk - napięcie powyżej 3V
Wynika to z odchyleń/toleracji wartości pewnych elementów/stałych w procesorze dopuszczalnych przez producenta.
Zmianie uległ sposób przełączania pamięci trybów.
Teraz by wyłączyć/włączyć pamięć ostatniego trybu w danym banku trybów należy
wywołać opcję programowania (6cio klik w dowolnym trybie) po czym po 3 błyskach należy wyłączyć latarkę.
Pamieć trybu została zmieniona.
Poprzednia funkcjonalność 10cio kliku jest nieaktywna
Wersja v2.1
W tej opcji dodano identyczną funkcjonalność zgodnie z opisem wersji v2.
Zmiana obejmuje usunięcie jednego banku trybów, oraz pamięć trybu wyłączamy/włączamy 8mio klikiem (poprzednio był 10cio klik)
Pozostaje 5 trybów z możliwością dostosowania ich ilości. Czyli możemy zaprogramować latarkę tak by miała np 2 tryby,4 tryby itp.
Zmiany dokonujemy wywołując 7mio klik, przy czym każde wywołanie tej funkcji dodaje nam jeden dodatkowy tryb do obecnej ilości. Gdy mamy już 5 aktywnych trybów latarka ustawia tylko jeden aktywny. Ilość zaprogramowanych trybów latarka sygnalizuje błyskami,
Np. mamy aktywne 3 tryby, wykonujemy 7mio klik, latarka mrugnie 4x i mamy aktywne 4 tryby świecenia.
Powyższe wersje powstały by zapełnić pewną powstałą lukę w funkcjonalności
prostego drivera opartego na AtTiny13. Z racji jego skromnej pojemności na kod programowy mamy do wyboru 3 wersje funkcjonalności by każdy mógł znaleźć coś dla siebie.
Gratulacje dla tego, kto dotrwał do końca