Hallo Leute, Vorweg: ich bin neu in diesem Bereich, habt Geduld mit mir. Ich weiß, dieses Thema ist schon oft behandelt worden, jedoch für mich nicht ausreichend. Auf meinem Testboard habe ich einen Pollin-Encoder (das Dicke Teil) aufgelötet. A, GND und B sind direkt auf die CPU geschaltet. Mein Problem ist folgendes: Drehe ich nach rechts, wird auch RECHTS zu 99% erkannt, Drehe ich nach links, wird "irgendwas" ERKANNT. links/rechts wechseln sich ab. Ich bitte daher um * Einen Schaltplan mit einem Pollinencoder und den dazugehörigen BASCOM Programmteil. LG Günter
Gast
#1803479
Keine Lust auf Google?? http://www.sprut.de/electronic/pic/programm/rotary/rotary.html
> Auf meinem Testboard habe ich einen Pollin-Encoder (das Dicke Teil) > aufgelötet. A, GND und B sind direkt auf die CPU geschaltet. Pullups? > A, GND und B sind direkt auf die CPU geschaltet. Du solltest deine Begriffe genauer spezifizieren: die CPU ist ein kleiner Teil im Inneren eines uC. Du kommst von aussen bestenfalls an Pins ran.
Auch naheliegend ... http://www.mikrocontroller.net/articles/Drehgeber ... bis zum Ende lesen! "Dekoder für Drehgeber mit wackeligen Rastpunkten" könnte wichtig sein!
Gast
#1803577
Danke, diesen Link kenne ich schon. Ich glaube das Problem mit den Rasterpunkten trifft auf mich zu. Leider ist hier keine Beschaltung beschrieben und C kann ich nicht. @Lothar: Ich meinte natürlich die Pins am "schwarzen Käfer" .... Wie ich schon geschrieben habe. Ein Schaltplan mit BASCOM wäre toll, das obiges Problem "erschlägt". LG Günter
Gast
#1803585
BASCOM enthält eine Encoderfunktion So geht's: Beitrag "Drehencoder in Bascom"
Gast
#1803589
Danke,
werde diesen Code testen.
Wie muß ich nun den Encoder anschließen? Pin A und B einfach and PIN D2
und D3? Ohne Kondensator und Wiederstand?
Config Portd = Input
Config Int0 = Change
On Int0 _encoder
Enable Int0
Enable Interrupts
Dim Enc As Byte , A As Byte , B As Byte
Enc_a Alias Pind.2
Enc_b Alias Pind.3
Cls
Cursor Off
Do
Upperline
Lcd Enc ; " "
Waitms 60
Loop
_encoder:
If Enc_a = 1 And Enc_b = 0 Then
Enc = Enc + 1
End If
If Enc_a = 0 And Enc_b = 1 Then
Enc = Enc + 1
End If
If Enc_b = 1 And Enc_a = 1 Then
Enc = Enc - 1
End If
If Enc_b = 0 And Enc_a = 0 Then
Enc = Enc - 1
End If
Return
LG Günter
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.