PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Funktioniert der Pollin-Dreh-Encoder mit BASCOM?



felack
22.04.2006, 12:35
Pollin bietet zur Zeit einen Dreh-Encoder für 0,75€ an:

http://www.pollin.de/shop/detail.php?pg=NQ==&a=Njg2OTU3OTk=

weiß jemand ob das Teil direkt über den Bascom Encoder-Befehl ausgewertet werden kann?

felack

x-ryder
22.04.2006, 20:03
ja impulsgeber sind impulsgeber, die funzen damit alle ^^

musste höchstens noch ne rauschunterdrückung oder flankenbereinigeung reinpaggn, aba das wird schon gehen...

Martin

Manf
22.04.2006, 20:27
Es ist ein Schalter (für Handbetrieb) mit 40mNm der mechanisch die zwei Phasen A und B mit Kontakten erzeugt.
(Laut Angabe für 1Mio Einstellungen, also recht zuverlässig aber eher weniger als Encoder zur Messung von Motorumdrehungen geeignet. )
Manfred

Andree-HB
04.05.2006, 23:03
..also ich habe Heute auch ein paar von den Encodern bekommen. Mit der neuen Encoder-Funktion im Bascom habe ich allerdings so meine liebe Mühe.

Ich bekomme es nicht hin, dass er von einer zur nächsten Raststellung nach folgendem Code nur um 1 hoch-/herunterzählt, er zählt immer 2 Takte, Richtung wird korrekt erkannt :



Dim A As Byte
Dim B As Byte

Portd = &B11111111
A = 100

Do
Locate 1 , 1
Lcd "Encoder test"
B = Encoder(pind.6 , Pind.5 , Rechts , Links , 1)
Locate 2 , 10
Lcd B
Waitms 300
Loop
End

Links:
Cls
A = A + 1
Locate 2 , 1
Lcd A
Locate 3 , 1
Lcd "rechts herum"
Return

Rechts:
Cls
A = A - 1
Locate 2 , 1
Lcd A
Locate 3 , 1
Lcd "links herum"
Return

Stromi
04.05.2006, 23:14
Nunja, zur Not könnte man die Variable auch noch durch 2 teilen :-)
Alles mal an Parametern probiert ?

Andree-HB
05.05.2006, 10:08
Jipp, habe mit den Parametern und Wartezeiten herumgespielt....klappt aber nicht....und irgendwie erschliesst sich mir auch nicht der Zustand/Inhalt/Sinn von (hier) variable "b"...ist halt das Beispiel aus der Hilfe...

digitali
06.05.2006, 17:51
Tach,

das habe ich mal vor einiger Zeit mit einem anderen Drehrichtungsgeber gemacht. Drei LED's werden hier kurz angesteuert. Links, Rechts und Enter. Funzt wunderbar.


------schnipp-----

$regfile = "m8def.dat"
$crystal = 16000000
Config Portc = Output
Config Portd = Input

Dim B As Byte
Portd = 255

Do
Portc = &B11111111
B = Encoder(pind.1 , Pind.0 , Links , Rechts , 0)
If Pind.2 = 0 Then
Gosub Enter
End If
Waitms 5
Loop

End

Links:
Portc = &B11110110
Waitms 5
Return

Rechts:
Portc = &B11101101
Waitms 5
Return

Enter:
Portc = &B11011011
Waitms 5
Return

------schnapp-----

mx3
07.05.2006, 10:55
Was mir aufählt bei digitali wird Port d auf Eingang gesetzt
und bei Andree-HB fehlt das
Config Portd = Input

mfg,MX3

Lunarman
07.05.2006, 11:32
Vielleicht zählt Bascom auch das an und das aus?
ich kenn mich da nich aus, auch wenn sich das reimt.

Ratber
08.05.2006, 02:29
Moin

Jetzt wo ich das Topic sehe fällt mir das Tütchen mit den Gebern ein was hier schon seit Wochen rumfliegt.

Der knopf (Eigentlich die Aufnahme dafür) is ja nicht gerade ne Schönheit.
Hat schon einer versucht den abzuziehen ?


@Andre-HB

Ich probier das morgen mal aus,was bei mir passiert.


Jipp, habe mit den Parametern und Wartezeiten herumgespielt....klappt aber nicht....und irgendwie erschliesst sich mir auch nicht der Zustand/Inhalt/Sinn von (hier) variable "b"...ist halt das Beispiel aus der Hilfe...

Das Beispielprogramm ist doch ganz einfach gehalten.
B zeigt den Zustand des Encoders an.
Der Encoder von Pollin kann in den Endstellungen nur 2 Werte annehmen wo beide Kontakte entweder auf oder zu sind.

Hast du die Kontakte mit jeweils einem Kondensator etwas entprellt ?

Wie gesagt,ich probiers morgen auch mal dann haben wir 2 Ansagen.
Dafür nehme ich einfach dein Programm.


Was die Schgaltstellungen betrifft so hab ich da mal eben was auffem Oskar gezaubert (Single mit Pretrigger).

http://home.arcor.de/ratber/encoder.jpg

Die Raststellungen sind mit den roten Strichen eingezeichnet.
Is also wie es sein soll.

Ratber
09.05.2006, 19:45
So,habs auch mal geschafft das Teil anzutackern.

Ja,der Encoder-Befehl aus Bascom geht davon aus das der Encoder bei "jedem" Flankenwechsel rastet aber da er eben immer beide Flanken mitnimmt werden auch immer schön zwei schritte angezeigt und gezählt.

Das ist also schon richtig so das er beim Pollin-Encoder gleich 2 zählt.
Wenn man ihn langsam dreht dann kann man schön die einzelnen Stellungen sehen (Rechts 0,1,3,2 Links 0,2,3,1)

Hier noch mein Programm.
Es Basiert auf dem von Andree-HB
Ich hab es nur etwas umgestellt weil die vielen LCD-Ausgaben zuviel Zeit gekostet haben.
Jetzt gibt es für jede Anderung nurnoch 2 Ausgaben was die Reaktionsgeschwindigkeit verbessert hat.
Ach ja.
Hab es auf 2x16 angepasst weil ich gerade nix anderes greifbar hatte.



$crystal = 8000000
$baud = 300

$hwstack = 64
$swstack = 30
$framesize = 120

Dim A As Byte
Dim B As Byte

Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.0 , Db7 = Portc.1 , E = Portd.7 , Rs = Portb.0
Config Lcd = 24 * 2
Initlcd
Cls
Cursor Off

Config Pind.5 = Input
Config Pind.6 = Input

Cls
Locate 1 , 1
Lcd "Encoder test"
A = 100 'irgendein Startwert
Locate 2 , 1
Lcd A

Main:
B = Encoder(pind.6 , Pind.5 , Rechts , Links , 1)
Goto Main

Links:
Decr A
Locate 1 , 14
Lcd B
Locate 2 , 1
Lcd A ; " Links "
Return

Rechts:
Incr A
Locate 1 , 14
Lcd B
Locate 2 , 1
Lcd A ; " Rechts "
Return

End

MAxK
24.05.2006, 22:14
Hi,

ich habe auch mal noch eine Frage zu den Drehencodern. Ich habe zwar nicht die von Pollin, aber wenn ich die mit dem o.g. Code ausprobiere, dann erhalte ich beim Rechtsdrehen:
Rechts
Rechts
Rechts

und beim Linksdrehen

Links
Links
Rechts


das wäre ja nicht so schlimm, wenn es immer so wäre.

Nur habe ich verschiedene Werte, wenn ich den Drehencoder langsam nach links drehe und andere Werte beim schnell nach links drehen


Habt ihr da noch ne Lösung?

Ratber
24.05.2006, 22:24
Ja,die Verarbeitungsgeschwindigkeit ist begrenzt.
Wenn du wie wild rumkurbelst dann bekommt Bascom nicht jeden Flankenwechsel mit und produziert Müll.

Wer es schnell mag der wird nen Decoder nebst Entprellung hinten anhängen.
Da gibt es dann einfach je einen Impuls für Links/Rechts bzw, Auf/Ab.
Danach evtl. noch nen Auf/Ab Zähler angehangen.
Damit hat der Controller dann Luft für anderes und verpasst nix.

MAxK
24.05.2006, 23:36
Hallo,

danke für deine Antwort. Weist du welcheln Decoder man da verwenden kann?

Ratber
25.05.2006, 10:40
Ja,zb. den LS7083/84 oder LS7183/84 aber die sind nur schlecht zu bekommen.

Man kann sich auch selber ne Schaltung zusammentackern.
Dafür braucht man nur jeweils einen CD4013 und CD4093 nebst ner Hand voll anderer Bauteile (Widerstände und Kondensatoren).

Kann ich dir auch mal raussuchen.
Findeste aber auch überall im Web.

Mad-Onion
27.06.2006, 16:34
Hallo Ratber!

Nachdem ich jetzt mehrfach google bemüht habe, habe ich immernoch keine passende Schaltung gefunden, die die beiden oben genannten Bauteile verwendet!

Auch finde ich den Baustein selber nicht bei Reichelt, sondern nur einen MOS 4013 bzw MOS 4093.

Hoffe, du kannst mir ein paar Tips geben!


Tobias

Manf
27.06.2006, 18:52
Ein Quadratursignaldecoder?, der ist hier beschrieben:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=10007