Driver z trybami - nowe spojrzenie

co i jak zrobiłem...
Awatar użytkownika
Pyra
Site Admin
Posty: 8527
Rejestracja: niedziela 02 sie 2009, 20:35
Lokalizacja: Gądki

Driver z trybami - nowe spojrzenie

Post autor: Pyra »

Witam
Moja mała praktyka z trybami w latarkach skłoniła mnie do przemyśleń odnośnie obsługi trybów, a mianowicie: Jeśli chcę z Lo zrobić na Mid a potem wrócić do Lo, to dlaczego muszę przeskakiwać przez Hi :roll: Biorąc pod uwagę, że mój driverek posiada cztery tryby ciągłe plus migacz, miałem do przeskoczenia trzy tryby.
No i w mojej głowie zrodził się pomysł sterowania rewersyjnego:
1 klik tryb w górę
2 kliki tryb w dół.

Dzięki dyskusji z df, który to podsunął mi wiele pomysłów i gotowych rozwiązań (dzięki Darek :padam: ) postanowiłem kilka myków zastosować u siebie.
W związku z tym, że jeszcze nie jestem gotowy do pisania w asemblerze, idee podpowiedziane przez Darka przeniosłem do BASCOMa, tak więc jest pomiar minimalnego czasu przerwy (klika) oraz licznik klików, umożliwiający rozpoznawanie dowolnej (no do 255 ;) ) liczby klików, pod warunkiem, że przerwa pomiędzy kolejnymi klikami nie będzie dłuższa niż pół sekundy, co chyba jest łatwe do spełnienia :)

Schemat driverka już jest znany:

Obrazek

A tak wygląda nowy soft w wersji Pyra 2.1 ;)

Dim A As Byte 'wartość PWM
Dim B As Byte 'licznik klików
Dim C As Byte
Dim L As Byte 'wskaźnik trybu
Dim T As Eram Byte 'pamięć trybu


Config Pinb.0 = Output 'wy PWM
Config Pinb.3 = Input 'we sterujące


Set Pinb.3 'podciągnięcie wejścia

L = T 'odczyt trybu startowego

Goto Wlacz 'ustalenie wartości PWM

Pwm: 'sprawdzanie zaniku naięcia

Config Timer0 = Pwm , Compare A Pwm = Clear Up , Prescale = 1 'konfig PWM 'start pwm

Do

Pwm0a = A ' ustawienie wartości komparatora PWM

For C = 1 To 50 'pętla odczekująca na zapis trybu po zmianie

If Pinb.3 = 1 Then Goto Zmiana 'sprawdzenie stanu pinb3

Waitms 4

Next C

If T <> L Then Goto Pamiec 'zapis trybu do eprom jeśli się zmienił


Loop

Zmiana: 'rozpoznanie klików
B = 0 'zerowanie licznika klików
Zegar: 'pomiar czasu klika
For C = 1 To 50

If Pinb.3 = 0 Then Goto Pomiar

Waitms 1

Next C

Kierunek:

If B = 1 Then Goto Plus
If B = 2 Then Goto Minus
Goto Pwm

Plus: 'tryb w górę
Incr L
Goto Wlacz

Minus: 'tryb w dół
Decr L


Wlacz: 'ustalenie wartości pwm dla trybu

If L > 5 Then L = 1
If L < 1 Then L = 5 'sprawdzanie zakresu trybów

If L = 1 Then A = 253
If L = 2 Then A = 220
If L = 3 Then A = 140
If L = 4 Then A = 1
If L = 5 Then Goto Migacz

Goto Pwm

Migacz:
Config Timer0 = Timer

Do

Set Portb.0
For C = 1 To 8 'czas załączenia
If Pinb.3 = 1 Then Goto Zmiana
Waitms 1
Next C

Reset Portb.0
For C = 1 To 30 'czas przerwy
If Pinb.3 = 1 Then Goto Zmiana
Waitms 1
Next C

Loop

Pamiec:

T = L 'zapamiętywanie aktualnego trybu

Config Timer0 = Timer 'potwierdzenie zapamiętania

Reset Portb.0

Waitms 10

Goto Pwm


Pomiar:
If C < 10 Then Goto Pwm
B = B + 1
Waitms 4
For C = 1 To 50
If Pinb.3 = 1 Then Goto Zegar
Waitms 1
Next C
Goto Kierunek


End


Czerwona 10 - minimalny czas klika (można dobrać indywidualnie)
Niebieska 50 - czas maksymalnej przerwy między klikami (j.w.)

UWAGA
Jako, że nie tylko ja jestem autorem tego programu ale i Darek dołożył do tego swoje pomysły, tak więc proszę o podawanie linka do tematu w razie ewentualnego wykorzystania poza naszym forum. Sam program jest darmowy, jednak nie zezwalam na ewentualne komercyjne użycie.

Pozdrawiam
Załączniki
Sterownik Pyra v2_1.rar
Wsady BIN i HEX dla chętnych
(1.36 KiB) Pobrany 32 razy
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
Awatar użytkownika
krzycho_
Posty: 2187
Rejestracja: piątek 08 maja 2009, 18:40
Lokalizacja: Poznań

Post autor: krzycho_ »

Oooo , widzę nowy revision :mrgreen: super ,muszę załadować do mojego driverka który leży gdzieś nie wykorzystany w szufladzie

może się przyda niedługo , w sumie to będzie nawet wygodne
elektroda.pl
Awatar użytkownika
Calineczka
Posty: 7578
Rejestracja: niedziela 11 lis 2007, 20:19
Lokalizacja: Wejherowo
Kontakt:

Post autor: Calineczka »

Dzięki Pyra, za podzielenie się efektami Waszej pracy ;)
A ja ciągle przymierzam się do Bascoma i nic...szkoda :cry:
Awatar użytkownika
ElSor
Site Admin
Posty: 5041
Rejestracja: niedziela 13 wrz 2009, 12:52
Lokalizacja: Ozimek

Post autor: ElSor »

Wyglada na to ze gdy juz kupie sobie programator to powyzszy program posluzy mi jako baza do stworzenia sobie niemalze wymazonego sterowniczka - modyfikacji TEGO.
Doloze 1szt AMC7135 i zaprogramuje mu 2-3 tryby stale bez zadnego stroboskopu czy SOSa
Awatar użytkownika
Pyra
Site Admin
Posty: 8527
Rejestracja: niedziela 02 sie 2009, 20:35
Lokalizacja: Gądki

Post autor: Pyra »

Calineczka pisze: Dzięki Pyra, za podzielenie się efektami Waszej pracy ;)
A ja ciągle przymierzam się do Bascoma i nic...szkoda :cry:
Może niedługo dostaniesz dodatkowy "bodziec" ;)
ElSor pisze:Wyglada na to ze gdy juz kupie sobie programator to powyzszy program posluzy mi jako baza do stworzenia sobie niemalze wymazonego sterowniczka - modyfikacji TEGO.
Doloze 1szt AMC7135 i zaprogramuje mu 2-3 tryby stale bez zadnego stroboskopu czy SOSa
Umieszczam listingi z opisem właśnie do indywidualnych przeróbek, tak więc możesz łatwo dostosować do swoich potrzeb.
Wystarczy zmienić 5 na 3 lub 4 w sprawdzaniu zakresu trybów, i skasować cały podprogram "Migacz". A w tym SKU AMC są chyba sterowane z portu B1 a nie B0, czyli by trzeba wpisać Pwm0b = A, a config zmienić na "compare b"

Pozdrawiam

PS: A w mej głowie rodzi się pomysł na latarkę rowerową, też nietypowo sterowaną :twisted:
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 »

Pyra pisze:A w tym SKU AMC są chyba sterowane z portu B1 a nie B0, czyli by trzeba wpisać Pwm0b = A, a config zmienić na "compare b"
Dzieki za wskazowki praktyczne - czas teraz znalezc sobie jakis odpowiedni programator i przypomniec sobie bascoma i ew ASM-a a takze poznac szczegolowo ATTiny
Slawek75
Posty: 16
Rejestracja: sobota 21 mar 2009, 07:53
Lokalizacja: Śląsk

Post autor: Slawek75 »

Witam
Ja spróbuję przenieść program do ATmega8 (akurat takiego posiadam) celem dalszej przeróbki. Sam jeszcze nie wiem jaka będzie przetwornica, bo muszę zasilić 2XCREE MC-E. Całość ma służyć jako oświetlenie rowerowe. Możliwe że kontroler będzie robił za przetwornicę z pomiarem prądu.
Pozdrawiam
Awatar użytkownika
Pyra
Site Admin
Posty: 8527
Rejestracja: niedziela 02 sie 2009, 20:35
Lokalizacja: Gądki

Post autor: Pyra »

Slawek75 pisze: Witam
Ja spróbuję przenieść program do ATmega8 (akurat takiego posiadam) celem dalszej przeróbki. Sam jeszcze nie wiem jaka będzie przetwornica, bo muszę zasilić 2XCREE MC-E. Całość ma służyć jako oświetlenie rowerowe.
W zasadzie wystarczy zmienić nazwy Timer0 na Timer1, ale problemem może być zasilanie tego układu, bo o ile ATTiny13 radzi sobie z napięciami z zakresu 1,8V do 5,5V to ATmega8 to już tylko 2,7 do 5,5V i to dla wersji L.

Slawek75 pisze: Możliwe że kontroler będzie robił za przetwornicę z pomiarem prądu.
Pozdrawiam
W tym celu musisz zastosować tryb fastPWM (niestety nigdy nie stosowałem) wyższa częstotliwość = mniejsza indukcyjność.

Pozdrawiam
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
Slawek75
Posty: 16
Rejestracja: sobota 21 mar 2009, 07:53
Lokalizacja: Śląsk

Post autor: Slawek75 »

O ile z samym programowanie nie powinienem mieć problemów, to jednak trochę przerażają mnie prądy jakie będę musiał dostarczyć do emiterów. Tak myślałem o wstawieniu takiego tranzystora kluczującego (STU3055L2). W związku, że całość ma być do roweru - nie jestem ograniczony wielkością jak również ciężarem takiego zestawu (oczywiście w granicach normy-nie chcę przecież wozić akumulatora kwasowego 45Ah na tylnym bagażniku)
Awatar użytkownika
Pyra
Site Admin
Posty: 8527
Rejestracja: niedziela 02 sie 2009, 20:35
Lokalizacja: Gądki

Post autor: Pyra »

Slawek75 pisze:O ile z samym programowanie nie powinienem mieć problemów, to jednak trochę przerażają mnie prądy jakie będę musiał dostarczyć do emiterów. Tak myślałem o wstawieniu takiego tranzystora kluczującego (STU3055L2).
Wydaje się być OK, szczególnie, że może być sterowany niskimi napięciami, przy 3V widzę już pełne otwarcie..
Aco gdybyś miał zrobić sterownik do silniczka modelarskiego 50A ;)
Izali miecz godniejszy niżli topór w boju?
Piszmy po polsku, wszak jesteśmy Polakami.
Slawek75
Posty: 16
Rejestracja: sobota 21 mar 2009, 07:53
Lokalizacja: Śląsk

Post autor: Slawek75 »

Na szczęście jeszcze nie mam takiego projektu z silniczkiem 50A :| .
A co do samego tranzystora to można go łatwo pozyskać z płyt głównych lub kart grafiki GF II.
Awatar użytkownika
greg
Posty: 3535
Rejestracja: środa 08 paź 2008, 00:16
Lokalizacja: Wrocław
Kontakt:

Post autor: greg »

Slawek75 pisze:Witam
Ja spróbuję przenieść program do ATmega8 (akurat takiego posiadam) celem dalszej przeróbki. Sam jeszcze nie wiem jaka będzie przetwornica, bo muszę zasilić 2XCREE MC-E.[...]
Jeśli sam nie projektujesz przetwornicy, to polecam to:
Obrazek

Testuję ten driver od kilku dni i coraz bardziej mi się podoba. Możesz mu podać PWM z procesorka.
Slawek75
Posty: 16
Rejestracja: sobota 21 mar 2009, 07:53
Lokalizacja: Śląsk

Post autor: Slawek75 »

Witam
A gdzie taki Driver można nabyć i czy jest do niego jakaś dokumentacja co do parametrów i podłączenia PWM itd.?
Piotrek K.
Posty: 602
Rejestracja: wtorek 29 lip 2008, 02:49
Lokalizacja: podlasie

Post autor: Piotrek K. »

Slawek75 pisze:A gdzie taki Driver można nabyć
tutaj:http://www.swiatelka.pl/viewtopic.php?t=2366
Pozdrawiam
Awatar użytkownika
greg
Posty: 3535
Rejestracja: środa 08 paź 2008, 00:16
Lokalizacja: Wrocław
Kontakt:

Post autor: greg »

ODPOWIEDZ