Strona 1 z 4

Driver z trybami - nowe spojrzenie

: niedziela 01 lis 2009, 22:40
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

: niedziela 01 lis 2009, 23:02
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

: niedziela 01 lis 2009, 23:31
autor: Calineczka
Dzięki Pyra, za podzielenie się efektami Waszej pracy ;)
A ja ciągle przymierzam się do Bascoma i nic...szkoda :cry:

: poniedziałek 02 lis 2009, 01:40
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

: poniedziałek 02 lis 2009, 05:58
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:

: poniedziałek 02 lis 2009, 09:49
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

: środa 04 lis 2009, 07:59
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

: środa 04 lis 2009, 09:38
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

: środa 04 lis 2009, 10:32
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)

: środa 04 lis 2009, 12:03
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 ;)

: środa 04 lis 2009, 12:23
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.

: środa 04 lis 2009, 15:30
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.

: czwartek 05 lis 2009, 06:47
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.?

: czwartek 05 lis 2009, 07:54
autor: Piotrek K.
Slawek75 pisze:A gdzie taki Driver można nabyć
tutaj:http://www.swiatelka.pl/viewtopic.php?t=2366

: czwartek 05 lis 2009, 08:25
autor: greg