Nowe wcielenie AK-47

co i jak zrobiłem...
Awatar użytkownika
ElSor
Site Admin
Posty: 5041
Rejestracja: niedziela 13 wrz 2009, 12:52
Lokalizacja: Ozimek

Nowe wcielenie AK-47

Post autor: ElSor »

Ż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 :mrgreen:
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.
Awatar użytkownika
Pyra
Site Admin
Posty: 8527
Rejestracja: niedziela 02 sie 2009, 20:35
Lokalizacja: Gądki

Post autor: Pyra »

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
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
Awatar użytkownika
ElSor
Site Admin
Posty: 5041
Rejestracja: niedziela 13 wrz 2009, 12:52
Lokalizacja: Ozimek

Post autor: ElSor »

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 :oops:

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.
Awatar użytkownika
Pyra
Site Admin
Posty: 8527
Rejestracja: niedziela 02 sie 2009, 20:35
Lokalizacja: Gądki

Post autor: Pyra »

Witam
W sumie to też już nie pamiętam czy przerwania chodziły na wewnętrznym podciągnięciu. Ostatecznie będziesz potrzbował jeden rezystor.
Pozdrawiam
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
Awatar użytkownika
ElSor
Site Admin
Posty: 5041
Rejestracja: niedziela 13 wrz 2009, 12:52
Lokalizacja: Ozimek

Post autor: ElSor »

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.
Awatar użytkownika
greg
Posty: 3535
Rejestracja: środa 08 paź 2008, 00:16
Lokalizacja: Wrocław
Kontakt:

Post autor: greg »

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.
Sterownik extended v3.5 HE <klik>
Instrukcje sterowników w PDF <klik>

kontakt: info(at)krypton(dot)pl
(podstawić @ i . w stosowne miejsca)
Awatar użytkownika
ElSor
Site Admin
Posty: 5041
Rejestracja: niedziela 13 wrz 2009, 12:52
Lokalizacja: Ozimek

Post autor: ElSor »

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.
Na C będę przechodził po świętach z racji świątecznego prezentu :wink: 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. :roll:
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.
Awatar użytkownika
greg
Posty: 3535
Rejestracja: środa 08 paź 2008, 00:16
Lokalizacja: Wrocław
Kontakt:

Post autor: greg »

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.
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.

Dzięki temu pobór prądu w stanie uśpienia wynosi kilkadziesiąt &#181;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&#937; lub niższej. W praktyce dzielnik 40k&#937; też działa, lecz zapewne dokładność pomiaru spada.
Awatar użytkownika
ElSor
Site Admin
Posty: 5041
Rejestracja: niedziela 13 wrz 2009, 12:52
Lokalizacja: Ozimek

Post autor: ElSor »

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&#937; 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&#937;, dorzucić zatem można 10k&#937; pomiędzy pin i masę a pomiar wykonywać właśnie tak, jak to opisałeś.
Awatar użytkownika
greg
Posty: 3535
Rejestracja: środa 08 paź 2008, 00:16
Lokalizacja: Wrocław
Kontakt:

Post autor: greg »

ElSor pisze:Podciągający wg moich pomiarów ma 38k&#937;, dorzucić zatem można 10k&#937; pomiędzy pin i masę a pomiar wykonywać właśnie tak, jak to opisałeś.
Obyś się nie zdziwił :)

Pull-Up Resistor, I/O Pin VCC = 5.5V
min. 20 max. 50 k&#937; - ładny rozrzut, prawda?

W karcie katalogowej masz kilka wykresów na temat prądów płynących przez Rpu.
Awatar użytkownika
ElSor
Site Admin
Posty: 5041
Rejestracja: niedziela 13 wrz 2009, 12:52
Lokalizacja: Ozimek

Post autor: ElSor »

Rozrzut w różnych egzemplarzach może rzeczywiście być spory. U mnie przy pomiarze na 2 pinach wynosił ok 38k&#937; (delikatnie rożne ale nie więcej niż 0,5k&#937;). 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 ;)
Awatar użytkownika
greg
Posty: 3535
Rejestracja: środa 08 paź 2008, 00:16
Lokalizacja: Wrocław
Kontakt:

Post autor: greg »

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.
Awatar użytkownika
ElSor
Site Admin
Posty: 5041
Rejestracja: niedziela 13 wrz 2009, 12:52
Lokalizacja: Ozimek

Post autor: ElSor »

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.
Awatar użytkownika
greg
Posty: 3535
Rejestracja: środa 08 paź 2008, 00:16
Lokalizacja: Wrocław
Kontakt:

Post autor: greg »

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)
Awatar użytkownika
ElSor
Site Admin
Posty: 5041
Rejestracja: niedziela 13 wrz 2009, 12:52
Lokalizacja: Ozimek

Post autor: ElSor »

Miniaturyzacja :razz: 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 :wink: 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ć :wink:
ODPOWIEDZ