Strona 1 z 3

Własny kontroler trybów - przekazanie i sterowanie mocą

: sobota 29 gru 2012, 00:50
autor: Majsterkowicz
Witam wszystkich ;)

Razem z moim szwagrem, jesteśmy w trakcie rozwoju mojego oświetlenia rowerowego. Na warsztat poszedł µC ATmega8, który to ma być głównym dowodzącym fotonową imprezą serwowaną z dwóch latarek po 1xXP-G każda. Dodatkowo całość ma dopełnić podwójny reflektor z pomarańczowych LED'ów na tyle. Podwójny - ma się rozumieć jako dwie sekcje, czyli prawą i lewą, gdzie w każdej z nich jest po 8 jasnych diod o kącie świecenia 120° każda.

Do zasilania użyję 2x (jak na razie, bo planuję dołożenie jeszcze większej ilości...) akku Li-Ion z zabezpieczeniami. Ograniczeniem prądu na LED'ach zajmą się dwa układy po 4x AMC7135 każdy dając maksymalnie prąd 1.4A na diodę.

Na chwilę obecną jest już swoisty program, który umożliwia główne funkcje:
- Sterowanie PWM - światła przód
- Włączanie/wyłączanie świateł 'długich'
- Sterowanie trybami świateł tylnych.

Sterowanie PWM odbywa się w małych skokach dla świateł 'krótkich' - od 0 do 100% (około 6 przeskoków). To wszystko realizowane jest poprzez jeden przycisk. Przy dotarciu do 100% i wciśnięciu, program zaczyna się od początku, czyli światło gaśnie.
Światła 'długie' włączane są osobnym przyciskiem, a jasność jest narzucona odgórnie ze świateł krótkich.
Tryby, jakie są dostępne dla świateł tylnych, realizowane są jednym przyciskiem i włączane są w kolejności:
'Kogut policyjny' - dwa razy lewa + dwa razy prawa > miganie na przemian > świecenie ciągłe > OFF.

Dodatkowo wprowadzony jest też kod służący do kierunkowskazów, ale uznałem to jedynie jako bajer, z którego nie wiem, czy będę korzystał w zgiełku ulicznym. Po pierwsze, Pan Henio jadąc z pracy, czym prędzej chciałby wyprzedzić takiego rowerzystę, jak ja nie patrząc na nic. Po drugie, gdy jednak się okaże, że chcę gdzieś skręcić, lepszą metodą kierunkowskazywania będzie wyciągnięta ręka (dodatkowo odblask w rękawiczkach +10 do widoczności :wink: ), aniżeli jakaś lampka pod siedziskiem.

Teraz kolej na pytania :mrgreen:
- W jaki sposób radzicie przekazać sygnał PWM z kontrolera na regulator prądowy? Dodam, ze jest on zakupiony ze sklepu forumowego Kolegi EdiM'a, także bez jakichkolwiek dodatkowych sterowników,
- Jakie funkcje 'tak naprawdę' zainstalować w sterowniku, aby nie był to przesyt formy nad treścią? Z czego zrezygnować, co dodać...
- Sterowanie trybami - rzecz niemal najważniejsza... Jak to uczynić, aby jak najmniejszą ilością przycisków móc zrobić jak najwięcej ;) A także jakie zastosować?
- Czy możliwe jest monitorowanie napięcia na akku podczas pracy, jego analiza i przekazanie sygnału np. na diodę RGB jako sygnalizator poziomu naładowania akumulatorów?
- Rzecz najważniejsza, jak zasilić sam kontroler? Czy z tego samego źródła co LED'y, czy z zewnętrznego?

Pozdrawiam

: sobota 29 gru 2012, 01:13
autor: ElSor
Majsterkowicz pisze:- W jaki sposób radzicie przekazać sygnał PWM z kontrolera na regulator prądowy? Dodam, ze jest on zakupiony ze sklepu forumowego Kolegi EdiM'a, także bez jakichkolwiek dodatkowych sterowników,
Masz AMCki od niego czy jakiś driver na AMCkach? Link byłby pomocny
Majsterkowicz pisze:- Jakie funkcje 'tak naprawdę' zainstalować w sterowniku, aby nie był to przesyt formy nad treścią? Z czego zrezygnować, co dodać...
Bankowo trzeba dodać kontrolę napięcia akumulatora zasilającego, można dołożyć kontrolę temperatury
- Rzecz najważniejsza, jak zasilić sam kontroler? Czy z tego samego źródła co LED'y, czy z zewnętrznego?
Najlepiej z tego samego, bo nawet gdy LEDy wykończą akusy a procesor odetnie im zasilanie to sam będzie pobierał bardzo niewiele prądu (szczególnie w trybie uśpienia) i nie zaszkodzi to akumulatorowi (no chyba, że przez kolejne kilka miesięcy nie wymienisz/doładujesz aku).
Majsterkowicz pisze:- Sterowanie trybami - rzecz niemal najważniejsza... Jak to uczynić, aby jak najmniejszą ilością przycisków móc zrobić jak najwięcej ;) A także jakie zastosować?
Można nawet na 1 guziku (jeśli nie będzie kierunkowskazów) wtedy masz do dyspozycji różne akcje dla krótkiego klika, dla długiego a także można dorzucić wielo-klik (ale już nie będzie potrzebny, bo po co chyba, że do aktywacji jakiś ukrytych funkcji).

: sobota 29 gru 2012, 01:32
autor: Majsterkowicz
ElSor pisze:Masz AMCki od niego czy jakiś driver na AMCkach? Link byłby pomocny
Najzwyklejszy regulator na 4x AMC7135: http://sklep.ledim.pl/?misc=81
Najlepiej z tego samego
A nie będzie przeszkodą spadek napięcia na akumulatorach podczas pracy dla kontrolera? Jak wiadomo schodzi ono od około 4.2 do około 3V.
ElSor pisze:Można nawet na 1 guziku
Jak to widzisz? :wink: Albowiem sterowanie PWM, uruchamianie długich w trybie ciągłym oraz 'mrugnięcie' nimi w razie potrzeby, a także i kontrola tylnych świateł? :P
Z kierunkowskazów zrezygnuję praktycznie na bank...

: sobota 29 gru 2012, 01:56
autor: ElSor
Majsterkowicz pisze:A nie będzie przeszkodą spadek napięcia na akumulatorach podczas pracy dla kontrolera? Jak wiadomo schodzi ono od około 4.2 do około 3V.
Jeśli nie zastosujesz zbyt szybkiego rezonatora to problemu nie będzie, szczególnie jeśli będzie to ATMega8A, która pracuje poprawnie chyba od 1,8V.
Majsterkowicz pisze:Jak to widzisz? :wink: Albowiem sterowanie PWM, uruchamianie długich w trybie ciągłym oraz 'mrugnięcie' nimi w razie potrzeby, a także i kontrola tylnych świateł? :P
Krótkie kliki normalnie zmieniają jasność 0-6-0 ... W momencie wciśnięcia guzika na chwilkę dłużej dopalasz długie (jeśli potrzymasz odpowiednio długo to zapalają się na stałe). Od tego momentu krótkie kliki sterują jasnością obu przednich świateł. Klikasz na chwilę dłużej, ale nie za długo guzik i przenosisz się do sterowania tylnym światłem. Krótkie kliki wtedy będą sterowały tylnym oświetleniem (powiedzmy kilka sekund, ustawiasz żeby krótkie kliki sterowały po chwili znów sterowały przednimi światłami) ... to tylko przykład na szybko .. ma swoje wady i będzie niewygodny ale w końcu pytałeś o jak najmniejszą ilość przycisków. :razz:
Możesz dać nawet i 12 (3 x ON/OFF/UP/DOWN), bo ATMega8 ma wiele nóżek i to Cię nie ogranicza, tutaj sam narzuć sobie najwygodniejszy dla siebie UI (user interface) i daj tyle, żeby było dla Ciebie logicznie, wygodnie i łatwo od strony programowej. 8kB kodu nawet bascomie też Cię nie ograniczy, nie wspominając o C.
Majsterkowicz pisze: Najzwyklejszy regulator na 4x AMC7135: http://sklep.ledim.pl/?misc=81
Majsterkowicz pisze:- W jaki sposób radzicie przekazać sygnał PWM z kontrolera na regulator prądowy? Dodam, ze jest on zakupiony ze sklepu forumowego Kolegi EdiM'a, także bez jakichkolwiek dodatkowych sterowników,
Najlepiej odlutować AMCki i przenieśc na swoje PCB z ATMegą.
A jeśli wykorzystując PCB sterownika to odlutować trzeba diodę szklaną > fabryczny + podpiąć do + aku natomiast zasilanie AMCków (pole diody, gdzie była kreska) na wyjście PWMa nie pomijając masy (-). Możesz tylko napotkać problem, bo z tego, co mi wiadomo, to AMCki od LEDIMa nie za dobrze współpracują z PWMem (była taka informacja kiedyś na forum i może jest już nieaktualna - najlepiej zapytać u źródła)

: sobota 29 gru 2012, 02:20
autor: Majsterkowicz
ElSor pisze:[...]ale w końcu pytałeś o jak najmniejszą ilość przycisków. :razz:
Racja :wink: ale dopuszczałem taką opcję, ażeby wykorzystać np 3 przyciski, po jednym do każdej lampki.
Ważnym elementem dla mnie byłaby możliwość krótkiego mrugnięcia długimi, albo i doświetlenie przy włączonym przycisku. Do tego użyłbym przycisku typu forward, którym to lekko wciskając - włączyłbym chwilowo długie w trybie albo max, albo takim samym, jak krótkie (sam nie wiem, co byłoby lepsze), a wciskając do końca - uruchomiłbym na stałe.
Czytałem, ze niezbyt się on nadaje na rower, bo zmiana trybu wymaga wyłączenia przycisku i ponowne wybieranie, ale mnie to nie przeszkadza, bo gdy zajdzie potrzeba 'nie oślepiania' długimi, to po prostu je wyłączę, a opcja krótkiego mrugnięcia zawsze zostanie :wink:
Krótkimi światłami sterowałbym już przyciskiem reverse, który to najpierw uruchamia latarkę, a później można zmieniać tryby. To już byłoby o wiele bardziej przydatne :)

A co do PWM, to nie można się 'wpiąć' na wyjście z drivera jakimś tranzystorem tuż przed diodą? Czy konieczne jest (albo wygodniejsze), ażeby podawać sygnał na zasilanie drivera?

Sterowania tylnym reflektorem myślę zrealizować na jakimś zwykłym przycisku sprężynowym, bo to tylko zmiana 4 (w sumie z OFF) trybów :)

Pozdrawiam

: sobota 29 gru 2012, 02:49
autor: ElSor
Powiedz szczerze - program masz jakiś gotowy zerżnięty z netu czy masz nikłą wiedzę w zakresie programowania i przenosisz niejako poza mikroprocesor, to, czego nie umiesz w nim zaimplementować? Pytam bo jakoś nielogicznie wygląda mi idea wykorzystania przełączników (wyłączników forward/rewerse) mając mikroprocesor w którym możesz zrobić praktycznie "wszystko" podpinając kosztujące kilkanaście groszy "pchełki" (włączniki chwilowe).
Majsterkowicz pisze:A co do PWM, to nie można się 'wpiąć' na wyjście z drivera jakimś tranzystorem tuż przed diodą? Czy konieczne jest (albo wygodniejsze), ażeby podawać sygnał na zasilanie drivera?
A po co podnosić niepotrzebnie koszty, komplikować układ i podwyższać spadki napięcia pomiędzy diodą a akusem, szczególnie w momencie gdy Uzas zbliża się do Vf? Jak chcesz kluczować tranzystor to lepiej by już było, gdyby był to tranzystor wykorzystany jako element źródła prądowego zbudowanego na elementach dyskretnych, wyszło by na pewno taniej i tak samo dobrze jak w przypadku AMCków sterowanych bezpośrednio przez nóżkę Vcc.

: sobota 29 gru 2012, 12:58
autor: Majsterkowicz
Juz prostuję :) częścią programowania zajmuje się właśnie mój szwagier, a ja zdobywam elementy i widzę, jak je najlepiej wykorzystać. Stąd właśnie ten temat, abyśmy nie błądzili w kółko z niepotrzebnymi gadżetami na kontrolerze.
A co do PWM, to mam rozumieć, ze wystarczy podpiąć kontroler do wejścia zasilania AMC, czyli Vdd i sprawa załatwiona?

: sobota 29 gru 2012, 13:08
autor: ElSor
Dokładnie tak. TUTAJ masz schemat jak to się robi. U siebie dodaj rezystor podciągający reset do Vcc oraz kondensatory filtrujące zasilanie i inne niezbędne rzeczy, bo skoro robisz wszystko od nowa to warto zrobić tak jak sztuka elektroniczna (i producent) nakazuje.

: sobota 29 gru 2012, 14:01
autor: Pyra
Witam
Może podrzucę mój pomysł na sterowanie, który z racji barku czasu cały czas rodzi się w głowie.
Dwa przyciski chwilowe (mikroswitch) jeden główny klasyczny włącznik, ten nie musi być w układzie sterowania.
Przyciski umieszczone pionowo. Górny przycisk przy krótkotrwałym naciśnięciu włącza lub wyłącza "długie", przy długim naciśnięciu podnosi jasność "krótkich". Dolny przycisk przy krótkim naciśnięciu zmienia tryb światła tylnego, długie przytrzymanie obniża jasność światła "krótkiego".
Uważam, że nie potrzeba regulować jasności świateł dalekiego zasięgu, gdyż i tak zapala się je w sytuacjach "ekstremalnych".
Myślę, że UI jest przejrzysty i intuicyjny...

Pozdrawiam

: sobota 29 gru 2012, 14:25
autor: ElSor
Ilu userów tyle UI można podać ;) Ja osobiście bym dał 4 przyciski ułożone w kształcie "+" lub ew "x".
Lewy steruje tylnym (sekwencje 0-1-2-3-...-0), prawy steruje długimi (krotki klik włącza długie na stałe na pełną moc a dłuższe przytrzymanie włącza długie tylko na czas trzymania (powiedzmy od 1sek w góre), górny włącza światła główne po dłuższym przytrzymaniu a po kliku zwiększa jasność, dolny wyłącza światła po dłuższym przytrzymaniu a krótkie kliki zmniejszają jasność.
W przypadku ułożenia "x" lewy dolny to OFF/-; prawy dolny to ON/+; lewy górny tylne światło; prawy górny długie.
Dodatkowo dałbym zabezpieczenie by tylne i długie przy wyłączonych głównych światłach nie włączały się po krótkim kliku. Programowo to żaden problem.
... aż mnie wzięło żeby sobie taki zrobić :razz:

: sobota 29 gru 2012, 16:24
autor: Majsterkowicz
Pyra pisze:Może podrzucę mój pomysł na sterowanie
Przyznam szczerze, że ciekawy pomysł na zastosowanie tylko dwóch przycisków :wink:
Zastanawiam się także, czy dałoby radę wykorzystać przyciski z demontażu telefonu (do dyspozycji mam aż 12 przycisków oraz podświetlanie) do tegoż zestawu. Mógłbym podrzucić fotki owego panelu z przyciskami - dla zainteresowanych ;)
Pyra pisze:Uważam, że nie potrzeba regulować jasności świateł dalekiego zasięgu, gdyż i tak zapala się je w sytuacjach "ekstremalnych".
Zgadza się :) Światła długie włączane są w określonych sytuacjach, gdzie wymagane jest oświetlenie maksymalnego obszaru i gdy nie oślepiamy nikogo z naprzeciwka.
Pyra pisze:przy długim naciśnięciu podnosi jasność "krótkich"
I tu pojawia się mały problem. Nie bardzo wiemy, jak napisać kod do programu, aby można było wykorzystać 'przytrzymanie' przycisku. Obecnie, program działa na zasadzie tego, ze uruchamia daną funkcję dopiero po puszczeniu przycisku (oczywiście z uprzednim jego wciśnięciem), jednak podczas trzymania - cały program się blokuje, a rezultat jest taki, że przy mrugających światłach tylnych zatrzymywana jest och obecna sekwencja (brak jakiegokolwiek działania - migania).

Dodatkowo, jak realizujecie pomiar napięcia na zasilaniu? Bo tego też nie potrafimy ogarnąć :(
ElSor pisze:a dłuższe przytrzymanie włącza długie tylko na czas trzymania (powiedzmy od 1sek w góre)
Jeżeli już, to zrobiłbym odwrotnie, że przytrzymanie na czas min 1s włączyłby na stałe, a ponowne wciśnięcie - wyłączyłoby je. Dodatkowo, przy krótkim wciśnięciu nastąpiłoby mignięcie długimi :wink:
ElSor pisze:Dodatkowo dałbym zabezpieczenie by tylne i długie przy wyłączonych głównych światłach nie włączały się po krótkim kliku.
Fakt :) Takowe zabezpieczenia byłoby bardzo pomocne. Niemniej niekiedy jadąc po drodze widzi się 'Marysię' jadącą samochodem na długich i aż się chce ją o tym 'powiadomić' takim samym gestem... I tu bylibyśmy uziemieni :P

Pozdrawiam :)

: sobota 29 gru 2012, 17:01
autor: Pyra
Witam
Majsterkowicz pisze:
Pyra pisze:przy długim naciśnięciu podnosi jasność "krótkich"
I tu pojawia się mały problem. Nie bardzo wiemy, jak napisać kod do programu, aby można było wykorzystać 'przytrzymanie' przycisku. Obecnie, program działa na zasadzie tego, ze uruchamia daną funkcję dopiero po puszczeniu przycisku (oczywiście z uprzednim jego wciśnięciem), jednak podczas trzymania - cały program się blokuje, a rezultat jest taki, że przy mrugających światłach tylnych zatrzymywana jest och obecna sekwencja (brak jakiegokolwiek działania - migania).
Sprawdzasz stan portu, dopóki jest równy "0" funkcja realizuje w pętli zwiększanie lub zmniejszanie parametru.
Majsterkowicz pisze:Dodatkowo, jak realizujecie pomiar napięcia na zasilaniu? Bo tego też nie potrafimy ogarnąć :(
ATmega ma przetworniki analogowo cyfrowe o rozdzielczości 10bitów, więc możesz na odpowiedni port podać napięcie z dzielnika i dostajesz wartość napięcia w postaci cyfrowej do dalszej obróbki.
Zależnie jakiego języka programowania używacie, to jest dedykowana komenda.

Pozdrawiam

: sobota 29 gru 2012, 17:24
autor: ElSor
Pyra pisze:Zależnie jakiego języka programowania używacie, to jest dedykowana komenda.
Niestety w C nie ma 1 komendy (chyba, że się wpierw to napisze i wywoła w odpowiednim momencie 1 poleceniem). Bo tak byśmy mogli np kilka razy odczytywać tego samego sampla. Niestety (albo i stety) trzeba szczegółowo zapoznać się z notą danego procka.
Pokaże poniżej mój (jeszcze nie sprawdzony pod kątem poprawnego działania) kod napisany w C, który odczytuje 64 próbki 8 bitowe i je uśrednia ostatecznie podając wartość napięcia w postaci cyfry 0-255

Kod: Zaznacz cały

int bateria() {
ADMUX = &#40;1<<REFS0&#41; | &#40;1<<ADLAR&#41; | &#40;1<<MUX0&#41;;  
ADCSRA = &#40;1<<ADEN&#41; |&#40;1<<ADPS2&#41;; 
int a = 0;
napiecie = 0;
for&#40;a=0 ; a<63 ; a++&#41;&#123;
	ADCSRA |=  1<<ADSC; //start
	while&#40;ADCSRA&&#40;1<<ADSC&#41;&#41;;   // czekaj na koniec konwersji
	napiecie |= ADCH;&#125;
	napiecie >>= 6; 
ADCSRA &= ~&#40;1<<ADEN&#41;;
return 0;
&#125;
Kod jest przykładowy, bo można wykorzystać tryb "FREE" i przerwania a można też zrobić to samo ale zupełnie inaczej (pewnie lepiej).
W Bascomie sam wiesz, że wygląda to znacznie przyjaźniej.
Oczywiście ATMega8 ma możliwość pomiaru napięcia zasilania bez użycia zewnętrznych elementów ... ale to nie jest jeszcze przeze mnie przetestowane.
Majsterkowicz pisze:ElSor napisał/a:
Dodatkowo dałbym zabezpieczenie by tylne i długie przy wyłączonych głównych światłach nie włączały się po krótkim kliku.

Fakt :) Takowe zabezpieczenia byłoby bardzo pomocne. Niemniej niekiedy jadąc po drodze widzi się 'Marysię' jadącą samochodem na długich i aż się chce ją o tym 'powiadomić' takim samym gestem... I tu bylibyśmy uziemieni :P
To nie stanowi żadnego problemu, by taką ewentualność uwzględnić programowo.

: piątek 04 sty 2013, 12:23
autor: Majsterkowicz
Witam :)
Dzieki wszystkim za pomoc ;) postanowiliśmy wykorzystać następujące opcje w sterowniku:
1. Światła krótkie włączane będą w sposób mechaniczny poprzez łączenie i rozłączanie obwodu na wyjście diody, a dodatkowo:
- będzie sterowanie jasnością poprzez PWM za pomocą pierwszego przycisku (microswitch), a dokładnie jego przytrzymanie.
- przy ponownym przytrzymaniu jasność zmniejsza się.
- Trybów migających nie mamy w planie.
2. Światła długie nie będą sterowane przez kontroler, a uruchamiane bezpośrednio z zasilania w sposob mechaniczny.
3. Światła tylne sterowane przez PWM będą miały następujące tryby:
- kogut policyjny, czyli 2x lewa > 2x prawa.
- miganie na przemian, płynne przejścia,
- miganie całej lampy, płynnie,
- święcenie ciagle, deklarowana jasność,
- OFF
4. Dodatkowo chcemy zainstalować brzęczyk w roli klaksonu uruchamiany 3cim przyciskiem microswitch. Wraz z generowaniem sygnału na brzęczyk, generowany bedzie sygnał na światła tylne, aby nie zostały zablokowane w programie przez trzymany przycisk.
Pomysl z kierunkowskazami zostanie zrealizowany w programie, ale czy zastosujemy go w rowerze, to sie okaże ;)
Na dokładkę bedzie miernik stanu naładowania baterii (dioda RGB) oraz dwie diodki obrazujące aktualny tryb świateł z tyłu :)
Prosze o opinie, jak widzi sie Wam ten plan? Co szczególnie sie (nie)podoba?
Pozdrawiam

: piątek 04 sty 2013, 15:30
autor: ElSor
Majsterkowicz pisze:Co szczególnie sie (nie)podoba?
No to jedziem ;)
Majsterkowicz pisze:Światła krótkie włączane będą w sposób mechaniczny poprzez łączenie i rozłączanie obwodu na wyjście diody, a dodatkowo:
- będzie sterowanie jasnością poprzez PWM za pomocą pierwszego przycisku (microswitch), a dokładnie jego przytrzymanie.
Straty energii na włączniku, większa jego cena niż mikroswitcha.
Majsterkowicz pisze:2. Światła długie nie będą sterowane przez kontroler, a uruchamiane bezpośrednio z zasilania w sposob mechaniczny.
j.w. Mikroprocesor nie musi sterować nimi ale wystarczy ze po kliku poda logiczne 1 na zasilanie AMCków
Majsterkowicz pisze:Wraz z generowaniem sygnału na brzęczyk, generowany bedzie sygnał na światła tylne, aby nie zostały zablokowane w programie przez trzymany przycisk.
Rozumiem, że nie wiecie jak sterować jednym i 2gim, żeby ze sobą to nie kolidowało ... wystarczy, że użyjecie przerwań (ATmega 8 ma aż 3 timery więc tu nie widzę ograniczeń).