Kényelmi indexrelé

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Szike
DrótVégénSzéndarab
Hozzászólások: 31
Csatlakozott: 2008. október 7. kedd, 6:00

komfort index

Hozzászólás Szerző: Szike »

Sziasztok!
Első AVR projectem egy un. komfort index relé, ami pl. az újabb VW-kben van. Ha kicsit nyomom le az indexkart (úgy hogy ne kattanjon be) akkor hármat villant. Egyszerű utángyártani, az indexkapcsolót kell rövidrezárni egy (ill. két) relével. Ezt csinálná az alábbi program, de néha 3 néha 5 néha akárhány impulzus után kapcsol ki. Gondoltam valami zajt szed össze, de a próbapanelon csak két kapcsoló, két led, és a resetet felhúzó 10k-s ellenállás van. Nem jövök rá mi a baja.
Előre is köszönöm a segítséget!

Kód: Egész kijelölése

$regfile = "ATtiny13.dat"
$crystal = 1200000

$hwstack = 32
$swstack = 8
$framesize = 16

'Ddrb = &B11011000
Config Portb.0 = Input       'Jobb index bemenet
Config Portb.1 = Input       'Bal index bemenet
Config Portb.2 = Input       'programozó bemenetnek fenntartva
Config Portb.3 = Output      'Bal kimenet
Config Portb.4 = Output      'Jobb kimenet

Ri Alias Pinb.0                    'Ri (RightInput) - Jobb bemenet
Li Alias Pinb.1                    'Li (LeftInput)  - bal bemenet
Ro Alias Portb.4                 'Ro (RightOutput)- Jobb kimenet
Lo Alias Portb.3                  'Lo (LeftOutput) - Bal kimenet

Dim Rc As Byte                  'Számolják a villogásokat oldalanként
Dim Lc As Byte
Dim Rt As Byte                  'Ciklusszámláló (magas átmenet után alacsony szinten töltött ciklust számol)
Dim Lt As Byte

Const Inlo = 1                    'A bemeneten fázist fordító tranzisztor van
Const Inhi = 0                       
Const Debouncetime = 50   'Prell mentesítés miatti várakozási idő
Const Maximp = 3              'Ennyi villantást tart a relé
Const Idletime = 10            'Várakozási idő alacsony szintre
Const Maxidle = 100           'Ennyi ciklust vár alacsony bemenetnél mielőtt nullázza a számlálókat (kb 1sec)

'Rc = 0
'Lc = 0
'Rt = 0
'Lt = 0

Ri = Inlo
Li = Inlo
Portb = &B11100111   'Bemenetek felhúzása, kimenetek lehúzása

Do
   If Ri = Inhi Then
      Waitms Debouncetime   'kivárja a prell időt
      If Ri = Inhi Then    'és újra megnézi
         Rc = Rc + 1        'növeli a jobb számlálót
         Rt = 0                'és nullázza a ciklus számlálót
         If Lc > 0 Then     'ha a bal index is villog, azt lekapcsolja
            Lc = 0
         End If
      End If
   End If
   If Li = Inhi Then
      Waitms Debouncetime
      If Li = Inhi Then
         Lc = Lc + 1
         Lt = 0
         If Rc > 0 Then
            Rc = 0
         End If
      End If
   End If

   If Rc > 0 Or Lc > 0 Then
      If Rc > 0 And Rc < Maximp Then
         Set Ro
      Else
         Reset Ro
      End If
      If Lc > 0 And Lc < Maximp Then
         Set Lo
      Else
         Reset Lo
      End If

      While Ri = Inhi         'Vár alacsony bemenetig
      Wend
      While Li = Inhi
      Wend

      If Rc >= Maximp Or Lc >= Maximp Then
         If Rc >= Maximp Then
            Reset Ro            
         End If
         If Lc >= Maximp Then
            Reset Lo
         End If
         Waitms Idletime      'Vár egy kicsit
         If Ri = Inlo Then     'Majd ha még alacsony a bemenet
            Rt = Rt + 1         'akkor növel egy ciklusszámlálót
         End If
         If Li = Inlo Then
            Lt = Lt + 1
         End If
         If Rt > Maxidle Then
            Rc = 0
         End If
         If Lt > Maxidle Then
            Lc = 0
         End If
      End If
   End If

Loop

End
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Hülye tipp:

Reléket hogy kapcsolod? tranzisztor?
12v-os relé vagy 5V-s?
Relére tegyél be a visszarújás ellen egy diódát. Ha van Schottky-t. 0,5-1A-es javasolt. Nálam 12V/60mA-es relé elengedéskor 120-160V tüskét gyártott (1N4148 kevés volt).

A chipen a 100nF kerámiaszűrő a tápon, illetve az autoelektronikában a betáp ágon a fojtótekercs ott van?
Avatar
Atesz
Tranzisztorgyógyász
Hozzászólások: 164
Csatlakozott: 2006. január 19. csütörtök, 7:00

Re: komfort index

Hozzászólás Szerző: Atesz »

OFF
Szike írta:Sziasztok!
Első AVR projectem egy un. komfort index relé, ami pl. az újabb VW-kben van. Ha kicsit nyomom le az indexkart (úgy hogy ne kattanjon be) akkor hármat villant.
A trabanton meg még a kar se ugrik vissza magától :D :D
Hova ez a nagy kényelem?
Avatar
Szike
DrótVégénSzéndarab
Hozzászólások: 31
Csatlakozott: 2008. október 7. kedd, 6:00

Re: komfort index

Hozzászólás Szerző: Szike »

Atesz írta:OFF
A trabanton meg még a kar se ugrik vissza magától :D :D
Hova ez a nagy kényelem?
Hehe, nincs még elég elektronika a kocsimban! :) Különben fogyatékosságom okán egykézzel vezetem az autót, és autópályán sávváltásnál zavaró hogy kétszer (ill. négyszer) kell a kapcsoló után kapkodni, ha meg csak megpöccintem, akkor egyet(se) villan.
Egyébként közben rájöttem a hibára. Az első villantás után néha az alacsonyszintre várakozáson akadt el, és ezért nem számolta az impulzust. Beraktam egy jelzőbitet, hogy kell-e várnia vagy sem.
Most már egész jó, de még fejleszteni akarom, hogy eepromba tárolja el a belé programozott impulzus számot. Szóval, még lehet hogy kérdezősködök.
Üdv.
Avatar
Szike
DrótVégénSzéndarab
Hozzászólások: 31
Csatlakozott: 2008. október 7. kedd, 6:00

Hozzászólás Szerző: Szike »

Robert írta:Hülye tipp:

Reléket hogy kapcsolod? tranzisztor?
12v-os relé vagy 5V-s?
Relére tegyél be a visszarújás ellen egy diódát. Ha van Schottky-t. 0,5-1A-es javasolt. Nálam 12V/60mA-es relé elengedéskor 120-160V tüskét gyártott (1N4148 kevés volt).

A chipen a 100nF kerámiaszűrő a tápon, illetve az autoelektronikában a betáp ágon a fojtótekercs ott van?
Szia!
12V-os relé tranzisztorral kapcsolva védődiódával (1N4148), illetve a bemeneten is szintillesztő tranyók vannak. 78L05 gondolom elég, kapott kondit is. Zavarszűrő még nincs, de egyenlőre az asztalon is gondom volt vele, amit sikerült megoldani. Bele kell még jönnöm ebbe a struktúrába.
Azért köszi!
Válasz küldése