Tylna Lampka - Kwadraciak na Attiyn13
Tylna Lampka - Kwadraciak na Attiyn13
Witam forumowiczów.
Rozpocząłem budowę tylnej lampki do roweru, może się to wydać nonsensowne, jednak nie trafiłem na żadną czerwoną lampkę która by mi pasowała do rowerku.
Faktem jest, że zainspirowałem się latarką Flagiusza.
Założenia:
porządna dioda (raczej nie 20x hiperjasna 5mm z allegro)
sterowanie Attiny13
dowolnie dobierane tryby
światło STOP
Sterowanie PWM
Pomiar prądu diody - wartość maksymalna ustawiana na stałe w kodzie programu
Konstrukcja jest oparta o klasyczne kwadratowe rurki
Jako diody zastosowałem dwie czerwone diody dostępne na DX
Połączone w szereg świecą zasilane nawet pojedynczym ogniwem 18650
Jest to mój pierwszy układ oparty na mikrokontrolerze, dlatego sporo jest niedoróbek.
Kod źródłowy: klik
Co już działa:
- przełączanie trybów (3 ciągłe i następnie 3 mrugające) przycisk CHANGE
- Power Off po dojściu do ostatniego trybu lampka się wyłącza, aby wyłączyć należy również przytrzymać przycisk zmiany trybu dłużej niż 0.3s
- podczas generacji dłuższych przerw w świeceniu procesor w stanie obniżonego poboru mocy (Iddle), tak samo podczas trybów ciągłych
- działa przycisk STOP - włącza lampkę z maksymalną jasnością na czas naciśnięcia przycisku + 0.2s (w każdym trybie oprócz Power Off)
- mocowanie do roweru - całość Aluminium + nity + śruby
Do zrobienia:
- Pomiar prądu diody
- być może przepisanie w Asemblerze
- Czujnik STOP - nie mam w ogóle na to koncepcji
- Złącze programowania w obudowie
- jakiś koszyczek na ogniwo 18650
- przerobienie na sterowanie zmianą trybów tak jak w driverze Flagiusza
Rozpocząłem budowę tylnej lampki do roweru, może się to wydać nonsensowne, jednak nie trafiłem na żadną czerwoną lampkę która by mi pasowała do rowerku.
Faktem jest, że zainspirowałem się latarką Flagiusza.
Założenia:
porządna dioda (raczej nie 20x hiperjasna 5mm z allegro)
sterowanie Attiny13
dowolnie dobierane tryby
światło STOP
Sterowanie PWM
Pomiar prądu diody - wartość maksymalna ustawiana na stałe w kodzie programu
Konstrukcja jest oparta o klasyczne kwadratowe rurki
Jako diody zastosowałem dwie czerwone diody dostępne na DX
Połączone w szereg świecą zasilane nawet pojedynczym ogniwem 18650
Jest to mój pierwszy układ oparty na mikrokontrolerze, dlatego sporo jest niedoróbek.
Kod źródłowy: klik
Co już działa:
- przełączanie trybów (3 ciągłe i następnie 3 mrugające) przycisk CHANGE
- Power Off po dojściu do ostatniego trybu lampka się wyłącza, aby wyłączyć należy również przytrzymać przycisk zmiany trybu dłużej niż 0.3s
- podczas generacji dłuższych przerw w świeceniu procesor w stanie obniżonego poboru mocy (Iddle), tak samo podczas trybów ciągłych
- działa przycisk STOP - włącza lampkę z maksymalną jasnością na czas naciśnięcia przycisku + 0.2s (w każdym trybie oprócz Power Off)
- mocowanie do roweru - całość Aluminium + nity + śruby
Do zrobienia:
- Pomiar prądu diody
- być może przepisanie w Asemblerze
- Czujnik STOP - nie mam w ogóle na to koncepcji
- Złącze programowania w obudowie
- jakiś koszyczek na ogniwo 18650
- przerobienie na sterowanie zmianą trybów tak jak w driverze Flagiusza
- Calineczka
- Posty: 7578
- Rejestracja: niedziela 11 lis 2007, 20:19
- Lokalizacja: Wejherowo
- Kontakt:
...gratuluję, zapowiada się bardzo ciekawie
Rozumiem, że do pomiaru prądu dojdzie jakiś układ całkujący RC?
Może warto by wydłużyć czas przytrzymania do wyłączenia?0,3s nie jest za krótko?
Jaki masz prąd procesora w stanie wyłączenia?
Można wiedzieć, z jakiej literatury korzystałes ucząc się programowania Attiny?
Rozumiem, że do pomiaru prądu dojdzie jakiś układ całkujący RC?
Może warto by wydłużyć czas przytrzymania do wyłączenia?0,3s nie jest za krótko?
Jaki masz prąd procesora w stanie wyłączenia?
Można wiedzieć, z jakiej literatury korzystałes ucząc się programowania Attiny?
Czas 0.3s to chodzi o to, że jak się przytrzyma przycisk Change dłużej to wyłącza procesor.CalineczkaM pisze:...gratuluję, zapowiada się bardzo ciekawie
Rozumiem, że do pomiaru prądu dojdzie jakiś układ całkujący RC?
Może warto by wydłużyć czas przytrzymania do wyłączenia?0,3s nie jest za krótko?
Jaki masz prąd procesora w stanie wyłączenia?
Można wiedzieć, z jakiej literatury korzystałes ucząc się programowania Attiny?
Sam kondensator dałem 100uF i przy częstotliwości 4.8Mhz i włączonym wewnętrznym preskalerze /8 trzyma napięcie przez ponad 1s.
Jak procesor przechodzi w stan wyłączenia Power Off to prąd wynosi około 1-2uA
W trakcie normalnej pracy <1mA.
Co do literatury:
Rafał Baranowski - Mikrokontrolery AVR ATmega w praktyce [ATmega16]
Rafał Baranowski - Mikrokontrolery AVR ATtiny w praktyce [ATtiny26]
Jarosław Doliński - Mikrokontrolery AVR w praktyce [AT90S2313]
Co do pomiaru prądu to trzeba zapytać Flagiusza jak zrobił to w swoim driverze, od strony elektrycznej miał tez tylko rezystor pomiarowy podpięty do wejścia przetwornika ADC.
- Calineczka
- Posty: 7578
- Rejestracja: niedziela 11 lis 2007, 20:19
- Lokalizacja: Wejherowo
- Kontakt:
Dzięki za namiaryMardoQ pisze:Co do pomiaru prądu to trzeba zapytać Flagiusza jak zrobił to w swoim driverze, od strony elektrycznej miał tez tylko rezystor pomiarowy podpięty do wejścia przetwornika ADC.
Nie tylko rezystor. NA rezystorze szeregowym masz PWM-a, musisz go wygładzić, uśrednić....stosuje się do tego układy RC.
Hmm to teraz czekam na odpowiedz Flagiusza jak on zrobił u siebie.
PS filmik demo http://www.youtube.com/watch?v=_O6BCwLV7xE
PS filmik demo http://www.youtube.com/watch?v=_O6BCwLV7xE
- Calineczka
- Posty: 7578
- Rejestracja: niedziela 11 lis 2007, 20:19
- Lokalizacja: Wejherowo
- Kontakt:
Zmieniłem schemat na poniższy:
Nie mam kondensatora takiego jak dałeś w swoim schemacie dałem 2.2uF i zmieniłem wartość Rezystora aby częstotliwość filtru była taka sama, nie jestem pewny czy rezystor R1 u ciebie pomiędzy filtrem a wejściem ADC jest potrzebny przecież wejście procesora już ma sporą oporność wejściową.
Coś zmieniać czy można robić kolejną płytkę do prototypów.
PS ma ktoś z Wrocławia tranzystor jakiś do tego N-Mosfet albo NPN ?
Nie mam kondensatora takiego jak dałeś w swoim schemacie dałem 2.2uF i zmieniłem wartość Rezystora aby częstotliwość filtru była taka sama, nie jestem pewny czy rezystor R1 u ciebie pomiędzy filtrem a wejściem ADC jest potrzebny przecież wejście procesora już ma sporą oporność wejściową.
Coś zmieniać czy można robić kolejną płytkę do prototypów.
PS ma ktoś z Wrocławia tranzystor jakiś do tego N-Mosfet albo NPN ?
- Calineczka
- Posty: 7578
- Rejestracja: niedziela 11 lis 2007, 20:19
- Lokalizacja: Wejherowo
- Kontakt:
Rezystora na wejście Attiny nie trzeba dawać-ja wkleiłem jakis na szybko znaleziony schemacik, a rezystor mam po to, zeby móc programować on board-w przeciwnym wypadku filtr RC uniemozliwia komunikację z prockiem.Wpinam się z pinami do programowania bezpośrednio na ściezki/piny procka a R=10k powodujue ze filtr RC nie przeszkadza.
Z wartościami potrenuj sobie
Twój led jest czerwony? Dał bym większe wartości R szeregowych. vf RED LED jest NISKIE! Nasz ma wartość R100 bo Vf białych led jest zblizone do napięcia ogniwa litowo jonowego.
Z wartościami potrenuj sobie
Twój led jest czerwony? Dał bym większe wartości R szeregowych. vf RED LED jest NISKIE! Nasz ma wartość R100 bo Vf białych led jest zblizone do napięcia ogniwa litowo jonowego.
Bawiłem się trochę driverkami chińskimi na AMC z procesorami PIC12F629, a teraz ostatnio jest to ATtiny13V. Tzn. robiłem tam inne oprogramowanie.
No i wydaje mi się, że taki gotowy driverek jest najlepszą bazą do modyfikacji. AMC7135 nie działa źle.
Co do podtrzymania zasilania ja testowałem na dużo mniejszych pojemnościach. W tych chińskich jest 10u, z tego co pamiętam. Ale tam są jeszcze jakieś dodatkowe oporniki - nie wiem do czego tak na prawdę. Da się to zrobić na jeszcze mniejszych kondensatorach.
Ten tranzystor BSS to rozumiem, tylko na schemacie jest taki?
Ogólnie zdecydowanie polecam jakieś sterowane źródło prądowe niż sterowanie w takiej postaci.
No i wydaje mi się, że taki gotowy driverek jest najlepszą bazą do modyfikacji. AMC7135 nie działa źle.
Co do podtrzymania zasilania ja testowałem na dużo mniejszych pojemnościach. W tych chińskich jest 10u, z tego co pamiętam. Ale tam są jeszcze jakieś dodatkowe oporniki - nie wiem do czego tak na prawdę. Da się to zrobić na jeszcze mniejszych kondensatorach.
Ten tranzystor BSS to rozumiem, tylko na schemacie jest taki?
Ogólnie zdecydowanie polecam jakieś sterowane źródło prądowe niż sterowanie w takiej postaci.
Pozdrawiam
--
EdiM
Zapraszam do sklepu http://sklep.ledim.pl/
Zapytaj jak zdobyć dodatkowy rabat 15-20%
--
EdiM
Zapraszam do sklepu http://sklep.ledim.pl/
Zapytaj jak zdobyć dodatkowy rabat 15-20%
Edim, w pełni się z Tobą zgadzam.EdiM pisze:Bawiłem się trochę driverkami chińskimi na AMC z procesorami PIC12F629, a teraz ostatnio jest to ATtiny13V. Tzn. robiłem tam inne oprogramowanie.
No i wydaje mi się, że taki gotowy driverek jest najlepszą bazą do modyfikacji. AMC7135 nie działa źle.
Czy mógłbyś podać namiary na te driverki z ATtiny (DX lub Kai)?
Bo to, co sobie przejrzałem i mogło wyglądać obiecująco na zdjęciach dalej ma PIC-e.
Ciekawe, czy chińczycy zrobili je "z głową" i sterują AMC`kami z pinu 5 lub 6 (sprzętowy PWM na Timer0), czy też poszli po najprostszej linii oporu i użyli pierwszy lepszy port I/O z programowym sterowaniem.
Natomiast co do kondensatora blokującego zasilanie, to da się też zrobić działające rozwiązanie bez żadnej pojemności. Oczywiście nie będzie to rozwiązanie architektonicznie eleganckie, ale chodzi mi tu raczej o inny sposób logiki sterowania, która nie wymaga podtrzymywania napięcia procka w czasie zaniku zasilania.
Bo można to zrobić co najmniej na 3 różne sposoby:
1. Zastosowany w naszym rozwiązaniu (df&cali) mechanizm podtrzymania na tantalu procesora przez min. 1 sek, przez czas w którym wykrywane są zaniki zasilania sterujące logiką softu
- zalety: zachowuje pełną ciągłość pracy MCU (stany / wartości rejestrów)
- wady: wymaga kondensatora o poj. rzędu 10uF+ i diody (najlepiej schottky z uwagi na 0,3V)
2. Zastosowanie w naszym "koncepcyjnym" minimalistycznym rozwiązanie (najmnieszy driverek na światełkach) polegające na zapisach stanów w EEPROMie
- zalety: znikoma ilość elementów (cały driver to zaledwie 2 elementy: MCU+MOSFET)
- wady: zapisy do EEPROM`a przy każdym włączeniu i zmianie trybu (ograniczona żywotność), z czym można sobie jednak dość dobrze radzić rozpraszając zapisy po całej przestrzeni lub dokonywując addytywnych zapisów komórek bez każdorazowych cykli ich kasowania (0xFF-owania).
3. Zastosowanie zewnętrznych "elementarnych" komórek pamięci w postaci małych kondensatorów podłączanych między port, a masę. MCU może ustawiać na nich stany (I/O w trybie wyjściowym) jak i czytać z nich stany w wystarczającym do zmiany trybu czasie przerwy pracy procesora
- zalety: nie wymaga podtrzymania zasilania MCU ani persystentnych zapisów (EEPROM)
- wady: mała liczba kombinacji przechowywanych w ten sposób stanów (2^n), dodatkowe elementy, utrata stanu w czasie (co nie nadaje się do trwałego przechowywania stanu, ale jest wystarczające do zachowania chwilowej informacji na czas zmiany trybu)
Z mojego punktu widzenia rozwiązanie 1 jest najlepsze i najbardziej eleganckie.
Rozwiązanie 2-gie też działa, choć osobiście mniej mi się podoba.
Rozwiązanie 3-cie ma chyba zbyt wiele ograniczeń, choć być może jako koncepcja sama w sobie warta jest opisania.
Pozdrawiam,
Flagiusz
Witam
W sprawie zakupów driverków pytaj Bociana. To dla niego robiłem te softy. Dodam, że robiłem na Attiny, bo już nie dało się kupić z PICami.
Z tego co widzę w sofcie ATTINY to jest PORTB.1, czyli sprzętowy PWM.
Podtrzymanie na tak wielkim tantalu, tam jest chyba 100u to trochę przesada
Wszystko zależy jak się zrobi program. U mnie w PIC10 wystarcza do podtrzymania kondensator 100n. W tiny nie wnikałem, ale jak się wyrzuci rezystory (nie wiem do czego one są, to tez pewnie nie potrzeba dużo więcej)
Ogólnie Attiny ma w porównaniu do PICa 10x mniejszą żywotność EEPROMa według tego co podaje pdf. Tylko 100.000. Nie ma co go trwonić. Ja co prawda stosuję algorytm rozkładający zapisy na wszystkie komórki, czyli mam ok. 50x zwiększoną żywotność.
W rozwiązaniu bezkondensatorowym jakoś nie wyobrażam sobie skąd driver ma wiedzieć, czy była długa, czy krótka przerwa w zasilaniu.
W sprawie zakupów driverków pytaj Bociana. To dla niego robiłem te softy. Dodam, że robiłem na Attiny, bo już nie dało się kupić z PICami.
Z tego co widzę w sofcie ATTINY to jest PORTB.1, czyli sprzętowy PWM.
Podtrzymanie na tak wielkim tantalu, tam jest chyba 100u to trochę przesada
Wszystko zależy jak się zrobi program. U mnie w PIC10 wystarcza do podtrzymania kondensator 100n. W tiny nie wnikałem, ale jak się wyrzuci rezystory (nie wiem do czego one są, to tez pewnie nie potrzeba dużo więcej)
Ogólnie Attiny ma w porównaniu do PICa 10x mniejszą żywotność EEPROMa według tego co podaje pdf. Tylko 100.000. Nie ma co go trwonić. Ja co prawda stosuję algorytm rozkładający zapisy na wszystkie komórki, czyli mam ok. 50x zwiększoną żywotność.
W rozwiązaniu bezkondensatorowym jakoś nie wyobrażam sobie skąd driver ma wiedzieć, czy była długa, czy krótka przerwa w zasilaniu.
Pozdrawiam
--
EdiM
Zapraszam do sklepu http://sklep.ledim.pl/
Zapytaj jak zdobyć dodatkowy rabat 15-20%
--
EdiM
Zapraszam do sklepu http://sklep.ledim.pl/
Zapytaj jak zdobyć dodatkowy rabat 15-20%
Edku, driver nie musi tego wiedzieć, jak się dobrze przemyśli model sterowania.EdiM pisze:W rozwiązaniu bezkondensatorowym jakoś nie wyobrażam sobie skąd driver ma wiedzieć, czy była długa, czy krótka przerwa w zasilaniu.
Już Ci tłumaczę ... (będę nieco upraszczał by było łatwiej to zrozumieć)
Załóżmy, że mamy kondensator o bardzo małej pojemności lub nie mamy go w ogóle.
A więc nawet krótkie odcięcie zasilania powoduje reset procesora.
Procesor po starcie robi coś (o czym za chwilę...), a następnie odlicza sobie czas i w odpowiednich chwilach zapisuje do pamięci nieulotnej wartości:
np. wartość 0 w sekundzie zerowej i wartość 1 w sekundzie 1-wszej.
I teraz uważaj, bo cały patent polega na tym, że w chwili zaniku napięcia zasilania w pamięci nieulotnej pozostaje informacja o tym, czy latarkę wyłączono w czasie 1-wszej sekundy pracy (wartość 0), czy po czasie >1s (wartość 1).
A tym "magicznym" czymś co procesor tuż po starcie robi, to odczyt wartości i podjęcie decyzji:
- jeżeli jest 0 (latarka w ostatnim cyklu pracowała <1s) to zmieniamy tryb i zapisujemy jego numer w innej komórce pamięci
- jeżeli jest 1 (latarka w ostatnim cyklu pracowała >1s) to odtwarzamy tryb ostatnio używany, który mamy już zapisany w inne komórce
I jak widzisz w tym moim rozwiązaniu nie musisz mieć informacji o czasie zaniku napięcia.
Procesor nie musi mieć żadnego podtrzymania.
Ma pamięć ostatniego trybu? - ma.
Ma możliwość przełączania trybów (podwójnym kliknięciem) - ma.
Ma możliwość detekcji wieloklików - ma (na 3-ciej komórce zliczasz kolejne włączenia w czasie <1s).
Da się? Da!
Jak widzisz jest to możliwe.
Tak jak napisałem rozwiązania 1 i 2 były przeze mnie wielokrotnie testowane na różne sposoby i oba rozwiązania dobrze działają pracując sobie w różnych latarkach, choć niewątpliwie lepszym rozwiązaniem jest rozwiązanie 1 - czyli z podtrzymaniem.
Oj straszny off-top zrobiliśmy...
(może szanowni admini przesuną tę część dyskusji do bardziej "technicznego" działu)
Pozdrawiam
Flagiusz
Czyli tak jak wspominałem procesor nie wie czy był wyłączony na długo, czy krótko .
Ale może wiedzieć czy był ostatnio załączony na krótko. Tak więc może być i tak to robione rzeczywiście...
Wracając do moich rozwiązań z małym kondensatorem tam oczywiście jest reset procesora. Domyślam się, że w Twoim rozwiązaniu przy większym kondensatorze nie dochodzi wcale do resetu.
Ale może wiedzieć czy był ostatnio załączony na krótko. Tak więc może być i tak to robione rzeczywiście...
Wracając do moich rozwiązań z małym kondensatorem tam oczywiście jest reset procesora. Domyślam się, że w Twoim rozwiązaniu przy większym kondensatorze nie dochodzi wcale do resetu.
Pozdrawiam
--
EdiM
Zapraszam do sklepu http://sklep.ledim.pl/
Zapytaj jak zdobyć dodatkowy rabat 15-20%
--
EdiM
Zapraszam do sklepu http://sklep.ledim.pl/
Zapytaj jak zdobyć dodatkowy rabat 15-20%