-         

Ergebnis 1 bis 2 von 2

Thema: Dreh-Encoder gibt "Rückschlag-Impuls" ab - wieso nur?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    24.06.2012
    Beiträge
    29

    Dreh-Encoder gibt "Rückschlag-Impuls" ab - wieso nur?

    Anzeige

    Hallo zusammen,

    ich habe einen Alps Dreh-Encoder mit Switch-Funktion an einen Atmega88 zusammen mit drei LED's gehängt, wovon jeweils eine kurz aufleuchten und dann ausfaden soll, wenn der Encoder nach links gedreht wird, eine bei einer Drehung nach rechts und eine bei Betätigung der Switch-Funktion.
    Mein Bascom-Code dazu:
    Code:
    Declare Function Checkvalue() As Byte
    Declare Function Setposition() As Byte
    
    $regfile = "m88def.dat"
    $crystal = 20000000
    
    $baud = 9600
    
    
    Dim Sled As Word	' LED für Switch
    Dim Lled As Word	' LED für links-Drehung
    Dim Rled As Word	' LED für rechts-Drehung
    
    Ddrb.3 = 1
    Ddrd.5 = 1
    
    Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up , Prescale = 1
    Config Timer1 = Pwm , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1
    Config Timer2 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up , Prescale = 1
    
    Config Pinc.0 = Input		' Right
    Portc.0 = 1          		' Pullup
    Config Pinc.1 = Input		' Left
    Portc.1 = 1                	' Pullup
    Config Pinc.2 = Input		' Switch
    Portc.2 = 0 			' Pullup
    
    Config Pind.5 = Output
    Config Pinb.1 = Output
    Config Pinb.3 = Output
    
    Cha Alias Pinc.0
    Chb Alias Pinc.1
    Swi Alias Pinc.2
    
    
    Leftled Alias Portd.5
    
    Switchled Alias Portb.1
    
    Rightled Alias Portb.3
    
    Lled = 0
    Rled = 255
    Sled = 0
    
    Pwm0a = Rled
    Pwm1a = Sled
    Pwm2a = Lled
    
    
    'Dim Encoderpos As Integer
    
    'Encoderpos = 0
    
    Dim Returnval As Byte
    Dim Preva As Byte
    
    Do
    
       If Swi = 1 Then
         Returnval = Checkvalue()
       Elseif Swi = 0 Then
         Returnval = Setposition()
       End If
    
       If Sled > 0 Then
         Sled = Sled - 1
         Pwm1a = Sled
       End If
    
    
       If Lled = 1 Then Pwm2a = 0
    
       If Lled > 1 Then
         Lled = Lled - 2
         Pwm2a = Lled
       End If
    
    
       If Rled = 254 Then Pwm0a = 255
    
       If Rled < 254 Then
         Rled = Rled + 2
         Pwm0a = Rled
       End If
    
       Waitms 5
    
    
    Loop
    
    
    
    Function Checkvalue
    
          If Preva = 1 And Cha = 0 And Chb = 0 Then
    	 'Right
             Rled = 127
          Elseif Preva = 1 And Cha = 0 And Chb = 1 Then
    	 'Left
             Lled = 127
          End If
    
          Preva = Cha
    
    End Function
    
    
    Function Setposition
    
          If Lled < 245 Then
            Lled = Lled + 10
          End If
    
          If Rled > 10 Then
            Rled = Rled - 10
          End If
    
          Sled = 255
    
          'Encoderpos = 0
    End Function
    Das funktioniert auch ganz gut, solange ich nach rechts drehe. Wird der Encoder nach links gedreht, funktioniert das zwar auch, zwischendurch wird aber immer wieder die LED getriggert, die bei einer Rechtsdrehung aufleuchten soll.
    Leider verstehe ich nicht, wieso das passiert. Kann mir jemand einen Tipp geben?

    Danke,
    viele Grüsse

    Tobi

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.02.2006
    Beiträge
    982
    Das liegt daran dass diese Drehschalter wie gewoehnliche Encoder funktionieren.
    Unabhaengig von der Drehrichtung sollten immer beide LEDs leuchten...nur die Reihenfolge muss sich aendern.

    Schau mal hier.. http://de.wikipedia.org/wiki/Inkreme...gnalauswertung

    Schau am besten mal ins Datenblatt, da sollten die Anschluesse auch "A" und "B" heissen.

    Gruss, Andreas
    Nam et ipsa scientia potestas est..

Ähnliche Themen

  1. "Diese" Kabel (Dupont???), gibt es die auch in deu
    Von Supafly im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 29.03.2009, 15:46
  2. Antworten: 4
    Letzter Beitrag: 08.08.2007, 10:57
  3. Gibt es wirklich keinen "richtigen" Farbsensor?
    Von robotxy im Forum Sensoren / Sensorik
    Antworten: 16
    Letzter Beitrag: 02.03.2007, 12:02
  4. Gibt es bei Eagle soetwas wie "autoplace" ?
    Von Andree-HB im Forum Konstruktion/CAD/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 14
    Letzter Beitrag: 17.10.2005, 08:35
  5. [ERLEDIGT] Motor/Controller/Encoder für "Haptic Feedback"
    Von toader im Forum Motoren
    Antworten: 0
    Letzter Beitrag: 16.04.2004, 19:16

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •