Elektroda.pl
Elektroda.pl
X
Relpol
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

sterownik oświetlenia motocykla

vwpassat 23 Lip 2013 11:04 1584 8
  • #1 23 Lip 2013 11:04
    vwpassat
    Poziom 14  

    Witam, mam problem z napisaniem programu sterowania światłem drogowym oraz kierunkowskazów. Sterownik będzie w customowym motocyklu w którym nie ma miejsca na tradycyjne wielkie przełączniki więc zostaną do tego wykorzystane włączniki chwilowe i ich działanie ma polegać na podaniu sygnału do mikrokontrolera.
    A więc wciskam przycisk światła przełączają się z mijania na drogowe, w przypadku kierunkowskazów będzie następująco, wciskam przycisk kierunkowskaz miga wciskam jeszcze raz gaśnie i to samo z drugim kierunkowskazem. Nie oczekuję gotowego programu lecz wyjaśnienia jak wykasować drgania styków i przy tym natychmiastowego i niezawodnego działania. jako mikrokontroler chcę zastosować atmegę 8 a sterowanie światłami poprzez tranzystory które będą sterować przekaźnikami

    0 8
  • Relpol
  • Pomocny post
    #2 23 Lip 2013 11:20
    dr.hannibal
    Poziom 22  

    Kiedyś widziałem jak ktoś programowo niwelował drgania poprzez "puszczenie sygnału przez rejestr". Nawet to dosyć dobrze działało.
    Działało to w taki sposób że przy każdym kolejnym wywołaniu pętli programu, na początku rejestr (np. 8 lub 16 bitowy), przesuwany jest o jeden w prawo, a na najmłodszą pozycję wpisywany jest stan z wejścia (przycisku). Dalej sprawdzana jest zawartość rejestru: jeśli są same zera "00000...0000" to przyjmuje się że stan jest '0' (powiedzmy że tu jest zmieniana jakaś dodatkowa zmienna), natomiast jak rejestr ma same jedynki "1111....1111" to przyjmuje się że jest stan '1'. W przypadku gdy rejestr ma jakiekolwiek stany pośrednie (mieszane '1' i '0') to przyjmuje się że aktualny jest stan poprzedni.

    0
  • Relpol
  • Pomocny post
    #3 23 Lip 2013 11:25
    BlueDraco
    Specjalista - Mikrokontrolery

    Np. to
    http://mikrokontrolery.blogspot.com/2011/02/o-drganiach-stykow-bez-bajek-przykad.html

    i z 1000 innych rozwiązań.

    A po co te przekaźniki? W celu zwiększenia zakłóceń? Do sterowania światłami b. dobrze nadają się tranzystory MOSFET. Jeśli masz wspólny minus, to potrzebujesz par npn małej mocy + PMOSFET do załączania plusa.
    http://mikrokontrolery.blogspot.com/2011/03/tranzystor-mosfet-wiedza-tajemna.html

    0
  • #4 23 Lip 2013 11:31
    vwpassat
    Poziom 14  

    Zapomniałem dodać że program ma być w bascom i czy kolega dr.hannibal mógłby podać przykład w bascom.

    0
  • #5 08 Sie 2013 20:28
    paavo91
    Poziom 19  

    Nic nie skleiłeś?? Mogłeś chociaż zrobić z prymitywnym "delay" i miałbyś też natychmiastowe działanie. To przecież tylko 3 rzeczy jeśli Cię zrozumiałem:

    -jeden przycisk neguje odpowiedni port (światła mijania/długie)
    -drugi przycisk neguje zmienną "Lewy"
    -trzeci przycisk neguje zmienną "Prawy"

    Teraz w pętli:
    -sprawdzasz czy masz odpalić mosfeta do długich czy do krótkich
    -sprawdzasz czy zmienna "Lewy" jest ustawiona wtedy wykonujesz podprogram migania tego kierunku
    -sprawdzasz czy zmienna "Prawy" jest ustawiona i tak samo podprogram odpowiedzialny za miganie tym razem prawego kierunku

    Wytłumaczyłem Ci to na ile mogłem łatwo. Spróbuj to skleić a później dopracujesz program bez delay.

    0
  • #6 08 Sie 2013 21:44
    vwpassat
    Poziom 14  

    Mógłbyś mi powiedzieć w jaki sposób natychmiastowo ustawić zmienną i natychmiastowo ją skasować

    0
  • #7 09 Sie 2013 09:06
    vwpassat
    Poziom 14  

    paavo91 mógłbyś podać przykład jak natychmiastowo ustawić i skasować zmienną ponieważ gdybym to umiał zrobić to nie pisał bym tego tematu. Podkreślam że działanie musi być natychmiastowe i nie zależne czy przycisk wcisnę na moment czy wcisnę i przytrzymam. Próbowałem ten program :

    Dim I As Byte
    Dim T As Byte
    I = 0
    T = 255

    Do

    Do
    Waitms 20
    T = T * 2
    If Pinb.0 = 0 Then
    T = T + 1
    End If
    Loop Until T = 240

    I = I + 1

    działał bardzo dobrze jak na moje wymagania, lecz gdy użyję trzech takich fragmentów to muszę kolejno wykonywać każdy z nich.
    Więc może znajdzie się ktoś mądry kto mi to poskleja lub podpowie jak to rozwiązać.

    0
  • Pomocny post
    #8 09 Sie 2013 15:51
    emarcus
    Poziom 35  

    vwpassat napisał:
    paavo91 Podkreślam że działanie musi być natychmiastowe i nie zależne czy przycisk wcisnę na moment czy wcisnę i przytrzymam.
    ..............
    ,......jak to rozwiązać.


    Zastosuj konstrukcję 'DEBOUNCE' w połączeniu z "Toggle Switch" jak dla przyładu
    przełączania/załączana świateł głównych:
    [code]
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Podobnej konstrukcji zastosujesz dla kierunkowskazów z tą różnicą że będziesz potrzebował zastosowac timer do odmierzania interwałów czasu migania 'portem wyjściowym' (dwa dodatkowe obwody L i P). Ponieważ Port wyjściowy będzie zmieniał stan logiczny to zmuszony będziesz zastosowac dodatkową flagę aby "pamiętac " aktualny stan przełącznika.

    To byłby tylko koncept, reszte dopracuj we własnym zakresie.
    e marcus

    0
  • #9 11 Wrz 2013 15:18
    vwpassat
    Poziom 14  

    Dziękuje bardzo o pomoc, sterownik został zrobiony wszystko działa.

    0