Nowe wcielenie AK-47
Nowe wcielenie AK-47
Żeby nie zakładać nowego tematu to doczepię się tutaj (Sławku, jeśli masz coś przeciw to wydziel ten post do nowego wątku).
Jak wiadomo włączniki mechaniczne mają stosunkowo dużą rezystancję, przy większych prądach daje się to we znaki, do tego dochodzi sterowanie tylko 1 przyciskiem. O ile 2-3 klik(i) przy małych ilościach trybów można jeszcze przeboleć to większa ich ilość może zacząć dokuczać, włącznik można wymienić na lepszy ale nie koniecznie będzie to możliwe i da nam zadowalający efekt. Postanowiłem więc bazując na AK47 zrobić prototyp sterownika sterowanego tylko 2ma mikroswitchami zwanymi pchełkami, bez żadnych włączników dodatkowych.
Schemat właściwie bez większych zmian poza rozcięciem ścieżki z wyjścia PWMa (dokładnie w ten sam sposób w jaki zrobił to Pyra) i dolutowaniem do 2 gwiazdek rezystorów podciągających wejścia PB3 i PB4 do + zasilania. (u mnie w prototypie sa przewlekane, w powietrzu, docelowo będzie nowe PCB z miejscem na odpowiednie rezystorki SMD). NIEAKTUALNE
Co robi sterownik.
Jako, że są 2 przyciski nazwijmy je umownie P+ i P-. Normalnie po dołączeniu zasilania nic się nie dzieje, dioda nie świeci, jednak gdy przytrzymamy P+ na co najmniej pół sekundy włącza się najsłabszy tryb (zabezpieczenie przed przypadkowym włączeniem). Kolejne naciśnięcia P+ zwiększają tryb o 1 a przytrzymanie P+ w dowolnym trybie włącza tryb BOOST. Gdy jesteśmy w ostatnim trybie przed BOOSTem i chcemy zwiększyć tryb o 1 to latarka 1x zamruga (podobnie będąc w trybie BOOST). P- natomiast jak można się domyśleć zmniejsza tryb o 1 w przypadku naciśnięcia a w przypadku przytrzymania go przez 0,5 sekundy następuje wyłączenie latarki. Tutaj także latarka zamruga gdy osiągnęliśmy tryb minimalny. Oczywiście cały czas napięcie akumulatora jest monitorowane i przy napięciu 3V po 2-krotnym mrugnięciu tryb jest zmniejszany i tak do momentu osiągnięcia minimalnego trybu. Po obniżeniu napięcia akumulatora do 2,85V po 4-krotnym mrugnięciu następuje wyłączenie latarki (ale pewnie szybciej zmienimy akusy, niz bedziemy cierpliwie czekac na jej wylaczenie).
Opisu dużo a 1 film wart więcej niż 1000 słów:
Jako, że jest to prototyp to mikroswitche zastąpione są kawałkiem przewodu
Na filmie sterownik ma 5 trybów + boost (każde zwiększenie trybu to 2x większa ilość światła a nie prądu w diody)
[youtube]http://www.youtube.com/watch?v=xv55EE8xZoM[/youtube]
Teraz kilka "ciekawostek".
Prąd płynący przy wyłączonej diodzie to 0,4mA (wynikający głównie z dzielnika 10/3kΩ - zostanie on zmieniony celem zmniejszenia prądu spoczynkowego), przy włączonej diodzie minimum 2,2mA (ok 1,3mA w diodę).
PWM pracuje na częstotliwości ok 5kHz (można ją podwyższyć eliminując delikatnie widoczne "migotanie" diody przy szybkim jej ruchu względem oka ale przy 5kHz AMCki pracują jeszcze dosyć dobrze).
Program napisany w bascomie (modyfikowany prawie codziennie od 2 tygodni) zajmuje 82% pamięci.
Jak wiadomo włączniki mechaniczne mają stosunkowo dużą rezystancję, przy większych prądach daje się to we znaki, do tego dochodzi sterowanie tylko 1 przyciskiem. O ile 2-3 klik(i) przy małych ilościach trybów można jeszcze przeboleć to większa ich ilość może zacząć dokuczać, włącznik można wymienić na lepszy ale nie koniecznie będzie to możliwe i da nam zadowalający efekt. Postanowiłem więc bazując na AK47 zrobić prototyp sterownika sterowanego tylko 2ma mikroswitchami zwanymi pchełkami, bez żadnych włączników dodatkowych.
Schemat właściwie bez większych zmian poza rozcięciem ścieżki z wyjścia PWMa (dokładnie w ten sam sposób w jaki zrobił to Pyra) i dolutowaniem do 2 gwiazdek rezystorów podciągających wejścia PB3 i PB4 do + zasilania. (u mnie w prototypie sa przewlekane, w powietrzu, docelowo będzie nowe PCB z miejscem na odpowiednie rezystorki SMD). NIEAKTUALNE
Co robi sterownik.
Jako, że są 2 przyciski nazwijmy je umownie P+ i P-. Normalnie po dołączeniu zasilania nic się nie dzieje, dioda nie świeci, jednak gdy przytrzymamy P+ na co najmniej pół sekundy włącza się najsłabszy tryb (zabezpieczenie przed przypadkowym włączeniem). Kolejne naciśnięcia P+ zwiększają tryb o 1 a przytrzymanie P+ w dowolnym trybie włącza tryb BOOST. Gdy jesteśmy w ostatnim trybie przed BOOSTem i chcemy zwiększyć tryb o 1 to latarka 1x zamruga (podobnie będąc w trybie BOOST). P- natomiast jak można się domyśleć zmniejsza tryb o 1 w przypadku naciśnięcia a w przypadku przytrzymania go przez 0,5 sekundy następuje wyłączenie latarki. Tutaj także latarka zamruga gdy osiągnęliśmy tryb minimalny. Oczywiście cały czas napięcie akumulatora jest monitorowane i przy napięciu 3V po 2-krotnym mrugnięciu tryb jest zmniejszany i tak do momentu osiągnięcia minimalnego trybu. Po obniżeniu napięcia akumulatora do 2,85V po 4-krotnym mrugnięciu następuje wyłączenie latarki (ale pewnie szybciej zmienimy akusy, niz bedziemy cierpliwie czekac na jej wylaczenie).
Opisu dużo a 1 film wart więcej niż 1000 słów:
Jako, że jest to prototyp to mikroswitche zastąpione są kawałkiem przewodu
Na filmie sterownik ma 5 trybów + boost (każde zwiększenie trybu to 2x większa ilość światła a nie prądu w diody)
[youtube]http://www.youtube.com/watch?v=xv55EE8xZoM[/youtube]
Teraz kilka "ciekawostek".
Prąd płynący przy wyłączonej diodzie to 0,4mA (wynikający głównie z dzielnika 10/3kΩ - zostanie on zmieniony celem zmniejszenia prądu spoczynkowego), przy włączonej diodzie minimum 2,2mA (ok 1,3mA w diodę).
PWM pracuje na częstotliwości ok 5kHz (można ją podwyższyć eliminując delikatnie widoczne "migotanie" diody przy szybkim jej ruchu względem oka ale przy 5kHz AMCki pracują jeszcze dosyć dobrze).
Program napisany w bascomie (modyfikowany prawie codziennie od 2 tygodni) zajmuje 82% pamięci.
Ostatnio zmieniony sobota 08 gru 2012, 21:51 przez ElSor, łącznie zmieniany 1 raz.
Witam
Bardzo ciekawe podejście do tematu i na tyle inne, że wydzieliłem. Należy się Tobie nowy temat.
Drobna uwaga, nie musisz podciągać portów do plusa, bo procek ma wewnętrzne rezystory. Definiujesz port jako wejście, a następnie ustawiasz na nim stan wysoki, to domyślnie powoduje załączenie wewnętrznego rezystora podciągającego. Oszczędzasz miejsce i dwa rezystory.
Pozdrawiam
Bardzo ciekawe podejście do tematu i na tyle inne, że wydzieliłem. Należy się Tobie nowy temat.
Drobna uwaga, nie musisz podciągać portów do plusa, bo procek ma wewnętrzne rezystory. Definiujesz port jako wejście, a następnie ustawiasz na nim stan wysoki, to domyślnie powoduje załączenie wewnętrznego rezystora podciągającego. Oszczędzasz miejsce i dwa rezystory.
Pozdrawiam
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
Piszmy po polsku, wszak jesteśmy Polakami.
Musze jeszcze raz to sprawdzić ale bez zewnętrznych rezystorów się nie chciał budzić z uśpienia. Tyle już prób różnych robiłem, że powoli zapominam co i jak działało
Edit:
Krótkie spojrzenie na listing ... to może (powinno) zadziałać.
Testy także pokazują, że działa.
Czas jeszcze na inne mody (dodanie czujnika temperatury ew odczyt na podstawie różnicy Vf LEDa)
Edit:
Krótkie spojrzenie na listing ... to może (powinno) zadziałać.
Testy także pokazują, że działa.
Czas jeszcze na inne mody (dodanie czujnika temperatury ew odczyt na podstawie różnicy Vf LEDa)
Ostatnio zmieniony sobota 08 gru 2012, 21:07 przez ElSor, łącznie zmieniany 1 raz.
Jak wczoraj włączyłem światełko z filmu (w trybie max pozostawiając na pastwę losu) tak dziś nadal świeci- tyle że w trybie 1, bo na więcej akumulator nie pozwala Długo też jeszcze później świecił w trybach pośrednich a trzeba zauważyć, że tryb 3/4 jest jeszcze użyteczny na zewnątrz, 2 do domu a 1 raczej do czytania książki.
Nie jest potrzebne podciąganie wejść zewnętrznym rezystorem do Vcc. Wewnętrzne rezystory są właśnie od tego. Wybudzenie przerwaniem z trybu uśpienia działa bez problemu (zwarcie podciągniętego wejścia do masy).
Jak to uczynić w AVR C mogę podać, natomiast Bascomu nie znam i nie używam ze względu na sporo ograniczeń tego środowiska.
Jak to uczynić w AVR C mogę podać, natomiast Bascomu nie znam i nie używam ze względu na sporo ograniczeń tego środowiska.
Sterownik extended v3.5 HE <klik>
Instrukcje sterowników w PDF <klik>
kontakt: info(at)krypton(dot)pl
(podstawić @ i . w stosowne miejsca)
Instrukcje sterowników w PDF <klik>
kontakt: info(at)krypton(dot)pl
(podstawić @ i . w stosowne miejsca)
Na C będę przechodził po świętach z racji świątecznego prezentu Także w razie potrzeby zgłoszę się do Ciebie po radę. Na razie próbuję wycisnąć z bascoma ostatnie soki i nawet przechodzę na bezpośrednie wpisy do rejestrów zamiast zabawy typu config timer .... itp itd - niby to też działa ale nie mam pełnej kontroli nad tym ani świadomości co tak naprawdę kompilator bascoma robi. Ograniczenia tez zaczynam zauważać, gdy np 1 prosta komenda zjada mi czasem 2% pamięci a wiem, że w asm to 2 linijki kodu.greg pisze:Jak to uczynić w AVR C mogę podać, natomiast Bascomu nie znam i nie używam ze względu na sporo ograniczeń tego środowiska.
Co do rezystora podciągającego to dobra wiadomość, widzę też po wczorajszych pomiarach, że mogę go użyć razem z 1 pinem jako rezystor do dzielnika napięcia i tym sposobem mierzyć napięcie w momencie kiedy tego potrzebuję redukując tym samym prąd w uśpieniu do minimum. Nie wiem na ile dokładne to będzie ale to czas pokaże.
To robi się ciut inaczej. Zewnętrzny dzielnik napięcia podłączasz do jednego z portów procesora zamiast to Vcc. Port masz w stanie wysokiej impedancji. Następnie przed pomiarem wystawiasz na ten port logiczne "1". Po pomiarze ustawiasz z powrotem stan wysokiej impedancji.ElSor pisze:Co do rezystora podciągającego to dobra wiadomość, widzę też po wczorajszych pomiarach, że mogę go użyć razem z 1 pinem jako rezystor do dzielnika napięcia i tym sposobem mierzyć napięcie w momencie kiedy tego potrzebuję redukując tym samym prąd w uśpieniu do minimum. Nie wiem na ile dokładne to będzie ale to czas pokaże.
Dzięki temu pobór prądu w stanie uśpienia wynosi kilkadziesiąt µA. Procesor może oczekiwać na klawisz 2-3 lata, zanim rozładuje ogniwo
Wewnętrzne rezystory podciągające nie nadają się do budowy dzielnika. Wg karty katalogowej wejście przetwornika AC powinno być zasilane ze źródła o impedancji 10kΩ lub niższej. W praktyce dzielnik 40kΩ też działa, lecz zapewne dokładność pomiaru spada.
Przekopałem kolejny już raz notę katalogową w poszukiwaniu info o wejściu ADC. Rzeczywiście zalecają użycie źródła napięcia mierzonego o impedancji <10kΩ jednak widać, że to głównie ze względu na pojemność CS/H wynoszącą max 14pF, która to jest pojemnością pasożytniczą całego wejścia przetwornika. Zgodzę się, że będzie to miało duży wpływ na pomiar napięcia, jednak przy dobrej filtracji akumulatorka powinno być to pomijalne, tym bardziej, że chcę też uprościć odczyt wartości do 8 najważniejszych bitów (ADLAR=1).
Nie wiem tylko po co dawać zewnętrzny cały dzielnik, skoro można dać zewnętrzny tylko "dolny" rezystor. Podciągający wg moich pomiarów ma 38kΩ, dorzucić zatem można 10kΩ pomiędzy pin i masę a pomiar wykonywać właśnie tak, jak to opisałeś.
Nie wiem tylko po co dawać zewnętrzny cały dzielnik, skoro można dać zewnętrzny tylko "dolny" rezystor. Podciągający wg moich pomiarów ma 38kΩ, dorzucić zatem można 10kΩ pomiędzy pin i masę a pomiar wykonywać właśnie tak, jak to opisałeś.
Obyś się nie zdziwiłElSor pisze:Podciągający wg moich pomiarów ma 38kΩ, dorzucić zatem można 10kΩ pomiędzy pin i masę a pomiar wykonywać właśnie tak, jak to opisałeś.
Pull-Up Resistor, I/O Pin VCC = 5.5V
min. 20 max. 50 kΩ - ładny rozrzut, prawda?
W karcie katalogowej masz kilka wykresów na temat prądów płynących przez Rpu.
Rozrzut w różnych egzemplarzach może rzeczywiście być spory. U mnie przy pomiarze na 2 pinach wynosił ok 38kΩ (delikatnie rożne ale nie więcej niż 0,5kΩ). Myśląc o produkcji seryjnej rzeczywiście będzie trochę pracy, żeby ogarnąć całość ale robiąc dla siebie 1 czy 2 sztuki jest to problem do nie do przeskoczenia. Charakterystyki które są załączone do noty nie pokazują nic niepokojącego. Rpu zachowuje się w dosyć przyzwoicie, jak na rezystor przystało
Dla jednego konkretnego procesora OK, ale to nie jest właściwe podejście projektowe, nie sądzisz? Robisz 3 drivery dla kolegów i klapa. Pomiary rezystorów wewnętrznych + program do zmiany za każdym razem.
Normalnie dajesz zewnętrzny dzielnik o założonej tolerancji elementów i masz powtarzalność każdego egzemplarza sterownika bez każdorazowych badań i zmian w oprogramowaniu. Poza tym koszt dodatkowego rezystora jest jakby pomijalny, a w dodatku masz już go firmowo na PCB. Trzeba tylko zmienić połączenia.
Normalnie dajesz zewnętrzny dzielnik o założonej tolerancji elementów i masz powtarzalność każdego egzemplarza sterownika bez każdorazowych badań i zmian w oprogramowaniu. Poza tym koszt dodatkowego rezystora jest jakby pomijalny, a w dodatku masz już go firmowo na PCB. Trzeba tylko zmienić połączenia.
Chwila, chwila (pogubiłem się już sam).
Dając na pin_x skonfigurowany jako wejście cały dzielnik także będę musiał zrobić pomiary i korektę w programie, bo przecież dzielnik nie będzie podpinany bezpośrednio do Vcc tylko przez wewnętrzny rezystor Rpu a o takie wykorzystanie pinu mi chodzi. Co innego gdybym dzielnik podpinał do pinu_x ustawionego jako wyjście podciągnięte do zasilania a napięcie z dzielnika do innego pinu - wtedy OK, jednak tracę wtedy dodatkowo 1 pin procesora (z 5ciu dostępnych nie licząc resetu). 2 guziki + 2 wyjścia PWM + pomiar aku + pomiar temp i już potrzeba 6 pinów, podpinając 2 dzielniki pod dodatkowy pin wychodzi 7 potrzebnych. Ale idąc inną drogą - 2 piny skonfigurowane jako wejścia podciągnięte przez Rpu do + , dodatkowo obciążone rezystorem (termistorem) do masy, równolegle z nim podpięty przycisk i mamy zaoszczędzone 2(3) piny i możemy w miarę prosty sposób zrealizować całość projektu na 4 nóżkach tylko. Do 5tej można wtedy dołączyć np diodę sygnalizującą wyczerpujący się akumulator.
Co do PCB to będzie nowe, bo za dużo rzeźby trzeba by zrobić w oryginale. Do tego o wymiarze/kształcie, jaki będzie potrzebny.
Dając na pin_x skonfigurowany jako wejście cały dzielnik także będę musiał zrobić pomiary i korektę w programie, bo przecież dzielnik nie będzie podpinany bezpośrednio do Vcc tylko przez wewnętrzny rezystor Rpu a o takie wykorzystanie pinu mi chodzi. Co innego gdybym dzielnik podpinał do pinu_x ustawionego jako wyjście podciągnięte do zasilania a napięcie z dzielnika do innego pinu - wtedy OK, jednak tracę wtedy dodatkowo 1 pin procesora (z 5ciu dostępnych nie licząc resetu). 2 guziki + 2 wyjścia PWM + pomiar aku + pomiar temp i już potrzeba 6 pinów, podpinając 2 dzielniki pod dodatkowy pin wychodzi 7 potrzebnych. Ale idąc inną drogą - 2 piny skonfigurowane jako wejścia podciągnięte przez Rpu do + , dodatkowo obciążone rezystorem (termistorem) do masy, równolegle z nim podpięty przycisk i mamy zaoszczędzone 2(3) piny i możemy w miarę prosty sposób zrealizować całość projektu na 4 nóżkach tylko. Do 5tej można wtedy dołączyć np diodę sygnalizującą wyczerpujący się akumulator.
Co do PCB to będzie nowe, bo za dużo rzeźby trzeba by zrobić w oryginale. Do tego o wymiarze/kształcie, jaki będzie potrzebny.
Jak robisz cały projekt od nowa, to weź większy procesor i masz ciut więcej wejść, po co się na wstępnie ograniczać
Sterownik extended v3.5 HE <klik>
Instrukcje sterowników w PDF <klik>
kontakt: info(at)krypton(dot)pl
(podstawić @ i . w stosowne miejsca)
Instrukcje sterowników w PDF <klik>
kontakt: info(at)krypton(dot)pl
(podstawić @ i . w stosowne miejsca)
Miniaturyzacja Poza tym takie ograniczenia zmuszają mnie do twórczego myślenia, odkrywania czegoś nowego, ... może kiedyś ta umiejętność przyda się jak już hardwarowo nie pójdzie wejść na "wyższy" poziom a będzie trzeba zrobić coś mając ograniczone zasoby.
Choć największym ograniczeniem w ATTINY13 jest dla mnie brak 2giego timera a dołączając do tego bascoma to kolejnego kilobajta pamięci Mam leżeć już z 2 lata attiny 25 i 85 więc może któryś z nich trafi do finalnego sterownika ale na razie męczę attiny13, bo mam ich jednak więcej (z 5 szt+ ze 3 zablokowane w chinskich driverach).
Gdyby jednak nie udało się uzyskać zadowalających efektów z 8 nóżkowych procków, to mam też 14 nóżkowe modele a także wersje MEGA i arduino prawie we wszystkich odmianach, także jest w czym wybierać
Choć największym ograniczeniem w ATTINY13 jest dla mnie brak 2giego timera a dołączając do tego bascoma to kolejnego kilobajta pamięci Mam leżeć już z 2 lata attiny 25 i 85 więc może któryś z nich trafi do finalnego sterownika ale na razie męczę attiny13, bo mam ich jednak więcej (z 5 szt+ ze 3 zablokowane w chinskich driverach).
Gdyby jednak nie udało się uzyskać zadowalających efektów z 8 nóżkowych procków, to mam też 14 nóżkowe modele a także wersje MEGA i arduino prawie we wszystkich odmianach, także jest w czym wybierać