Ihre Browserversion ist veraltet. Wir empfehlen, Ihren Browser auf die neueste Version zu aktualisieren.

Drehimpulsgeber ALPS STEC11B09 an PicAxe 14M2

Hier eine Anleitung, wie man einen ALPS STEC11B09 Encoder an einer PicAxe 14M2 betreibt.


 

Schaltplan

SchaltplanSchaltplan

Demoprogramm


'Demoprogramm für ALPS STEC11B09 Encoder. µC = PicAxe14M2


'Singalformat für 1 Schritt/Rastung (CW und CCW):
'1 = OFF/5Volt, 0 = ON/0Volt

' A B        A B
' ---        ---
' 1 1        1 1
' 1 0        0 1
' 0 0        0 0
' 0 1        1 0
' 1 1        1 1

'Pins
symbol LED1            = B.5
symbol LED2            = B.4

'Variable für Encoder
symbol enc1Byte        = b0
symbol enc1Bit_A           = bit0
symbol enc1Bit_B        = bit1
symbol enc1Bit_Action    = bit2

'Variable für Drehrichtung
symbol Direction        = b1

'Variable für Zähler
symbol Counter         = b2

' Konstante
symbol CW             = 1
symbol CCW            = 2

low LED1
low LED2

Main:
do
    gosub GetEncoder

    select case Direction
    case CW
        Counter = Counter + 1
        toggle LED1
        sertxd("Total: ",#counter, 13, 10)
    case CCW
        Counter = Counter - 1
        toggle LED2
        sertxd("Total: ",#counter, 13, 10)
    end select        

loop

End


GetEncoder:

'Bisher kein Drehung erfasst, daher Direction = 0
Direction = 0

'Pin A und Pin B einlesen und die restlichen C-Pins unverändert lassen
enc1Byte = PinsC and %00000011

'Nur wenn beide Pins vom Encoder Off(=1) sind, ist enc1Bit_Action = 1
enc1Bit_Action = enc1Bit_A and enc1Bit_B

'Wenn enc1Bit_Action nicht gleich 1 ist (Ein oder beide Pins vom Encoder stehen
'nicht auf OFF) dann zurück

if enc1Bit_Action <> 1 then return : end if

'Warten bis Pin A oder Pin B auf ON geht
do
    'Pin A und Pin B einlesen und die restlichen C-Pins unverändert lassen
    enc1Byte = PinsC and %00000011
    'Wenn Pin A oder Pin B auf ON geht, dann ist enc1Bit_Action = 1 und die
    'Schleife wird verlassen

    enc1Bit_Action = enc1Bit_A xor enc1Bit_B
loop while enc1Bit_Action = 0

' Prüfen welcher Pin zuerst auf ON ging
if enc1Bit_A = 0 then
    'Zuerst ging Pin A auf ON, also wird gegen den Uhrzeigersinn gedreht (CCW)
    Direction = CCW
else
    'Zuerst ging Pin B auf ON, also wird im Uhrzeigersinn gedreht (CW)
    Direction = CW
end if

'Warten bis Pin A und Pin B auf OFF gehen
do
    'Pin A und Pin B einlesen und die restlichen C-Pins unverändert lassen
    enc1Byte = PinsC and %00000011
    'Nur wenn beide Pins vom Encoder Off(=1) sind, ist enc1Bit_Action = 1 und die
    'Schleife wird verlassen

    enc1Bit_Action = enc1Bit_A and enc1Bit_B
loop while enc1Bit_Action = 0

return

Cookie-Regelung

Diese Website verwendet Cookies, zum Speichern von Informationen auf Ihrem Computer.

Stimmen Sie dem zu?