Forum: Mikrocontroller und Digitale Elektronik Drehimpulsgeber


von Boris (Gast)


Lesenswert?

Hallo,
ich habe einen ALPS Drehimpulsgeber mit drei Pins. Aus Messungen weis
ich, dass bei einer Stufe Drehung, abhängig von der Drehrichtung, erst
der eine und dann der andre Pin gegen den Dritten geschlossen wird. Bei
entgegengesetzter Richtung anders herum, also entstehen zwei
phasenverschobene Signale.

Hat irgendjemand eine Idee, wie ich diese Signale in ein Impuls- und
ein Richtungssignal verwandeln kann??

Ich habe mir schon überlegt, irgendwie mit einem Flipflop mit Preset
ans Ziel zu gelangen....

von Zoltan Gradwohl (Gast)


Angehängte Dateien:

Lesenswert?

Hier ein paar Links:

http://www.mikrocontroller.net/forum/read-4-11611.html
http://www.mikrocontroller.net/forum/read-1-18797.html
http://dse-faq.elektronik-kompendium.de/dse-faq.htm
http://www.portlandrobotics.org/robots/servo_encoder/


Ich habe mit Hilfe der Beispiele aus diesen Links auch ein Programm
geschriben bzw. "zusammenkopiert". Ich benutzte jedoch einen
selbstgebauten Impusgeber, bestehend aus zwei Reflexkopplern, siehe
Link oben mit den Servos.

Gruß
Zoltan

von Werner (Gast)


Lesenswert?

Du legst einfach den einen Kanal des Drehgeber auf einen Interrupt
Eingang. Wenn dieser Interrupt kommt schaust Du dir den Status des
zweiten Kanals (der auf nem normalen Eingang liegt) an.

Werner

von René Klepsch (Gast)


Angehängte Dateien:

Lesenswert?

So im bild siehst du wie ich es gemacht habe für 68HC11 doch dürfte auch
bei dir gehen. also der schler löst aus und dann blockt ergleich den
eingang so das der zweite keine chance hat an das FlipFlop zukommen.
und der IRQ wird solange gesetzt bis ein Schreibzugriff erfolgt als RW
leitung auf High geht. leider bis jetzt nur im simulatur geteste es
könnte sein das die impulse zu schnell auf einander folgen und das
gatter nicht mehr richti dicht machen kann.
muss am mal testen oder weiß einer die nanosec zwischen den signalen?

wenn du dir http://www.digitalsimulator.de/ den DIGISIM installierst
kann ich dir auch das digifile schicken.

tschö

René

von A. Arndt (Gast)


Lesenswert?

Hallo,

ich versuche das ganz mit 2 I/O-Ports, möchte keinen Interupt opfern,
frage einen Pin ab und wenn auf LOW geht frage den anderen Pin.

Ich baue es in kürze auf, mal sehen ob es klappt.

Gruss
A. Arndt

von René Klepsch (Gast)


Lesenswert?

hab gerade nochmal geschau also 5ms scheinen typische werte für die Zeit
zwischen den beiden kontakten zu sein. also mit meiner schaktung kein
problem da nur 5 gatter durchlaufen werden also ca 50ns verzögerung.
werde die aber in ispCPLD "einbauen" und ma sehn ob es geht.

tschö
René

von A. Arndt (Gast)


Lesenswert?

Hallo,

klappt astrein, wie oben erklärt, nach der Auswertung mit Pause von
50ms.

Gruss
A. Arndt

von Gerhard Humer (Gast)


Lesenswert?

Hi,
 mit dem unten angeführten Code hab ich mit einem 2313er und
Bascom eine 4-fach Auswertung eines Drehgebers gemacht.
( 500 Striche am Geber = 2000 Impulse/Umdrehung!!)

@ A.Arndt
bei solchen Anwendungen ist es sicher besser die Interrupt's zu
verwenden anstatt der Polling-Methode.


 Gruss Gerhard







Dim Wert As Integer
  Wert = 0
  Config Portd = Input
  Portd = 255
  Enc_a Alias Pind.3
  Enc_b Alias Pind.2
  Mcucr = &B00001111
  On Int0 Encoder0
  On Int1 Encoder1
  Enable Int0
  Enable Int1
  Enable Interrupts

  Do
  Loop

  End

  Encoder1:
  Toggle Mcucr.isc10
  If Enc_a <> Enc_b Then
    Decr Wert
  Else
    Incr Wert
  End If
  Return

  Encoder0:
  Toggle Mcucr.isc00
  If Enc_a = Enc_b Then
    Decr Wert
  Else
    Incr Wert
  End If
  Return

von Peter D. (peda)


Lesenswert?


von Philipp K. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

kommt vielleicht etwas spät, aber ich habs erst gestern entdeckt.
Ich hatte das selbe Problem wie Boris. Wie kann man aus dem
Dehimpulsgeber (DIG) ein Richtungssignal machen.
Ich hatte einen Mikrocontroller verwendet und eine Software dazu
geschrieben, hat auch alles funktioniert (ich benutze C-Control, die
hat also kein Interrupt). Is alle schon 2 Jahre her.
Jetzt möchte ich allerdings "Rechenleistung" einsparen und das
Drehimpulsgebersignal hardwaretechnisch auswerten. Das heißt, dass beim
Rechtsdrehen Pin 1 pulst und beim Linksdrehen der andrere Pin pulst.
Leider kenne ich mich kaum mit Digitaltechnik aus, hab gestern erst
damit angefangen ;) und hab jetzt mit dem Programm Digitalsimulator
einiges ausprobiert. Eine Schaltung hat funktioniert, hatte aber 6
Gatter und ein Flip-Flop.
Heute bin ich durch Ausprobieren auf eine Schaltung gekommen, die ich
im Anhang als Bild beigefügt hab.
Und zwar benutze ich ein T-Flip-Flop, wobei Pin A des DIG an den
eingang kommt und Pin B des DIG an den Clockeingang (sagt man das so?)
Lustigerweise funktioniert das sehr gut. Das EXOR Gatter dient nur noch
für den "Impuls", damit das Signal nicht immer auf High ist.

Ich wollte mal die versierten unter euch fragen, ob das prinzipiell
möglich ist. Kann ich so ne Schaltung bauen und funktioniert die auch
in der Praxis? Wie gesagt, sorry, ich kenn mich kaum mit Digitaltechnik
aus.

von Philipp K. (Gast)


Lesenswert?

Hi nochmal,

ich hab den anderen Beiträgen entnehmen können, dass das Thema
"Drehimpulsgeber" wohl schon langsam den Hals raushängt.
Allerdings beschäftigen sich alle Beiträge mit einer softwareseitigen
Verarbeitung der Signale und ich hab noch nichts über eine
Hardwarelösung gesehen.
Könnte nicht vielleicht doch der eine oder andere auf meine Frag
eingehen?
Wäre sehr dankbar.

Grüße aus Norwegen
Philipp

von Florian S. (Gast)


Lesenswert?

Bei ELV gibt es eine Schaltung die ein Drehimpulsgeber zur Ansteuerung
eines Digitalpotentiometer nutzt.
Die Drehrichtung wird durch ein D-FlipFlop (CD4013) ermittelt.
(Ausgang B an Clock-Eingang, Ausgang A an D-Eingang, je nach
Drehrichtung Low oder High an Q).

von Wolle (Gast)


Angehängte Dateien:

Lesenswert?

Vielleicht hilft dir der Anhang etwas.

von Peter D. (peda)


Lesenswert?

@Philip,

die Schaltung ist aus mehreren Gründen kritisch:

1.
Es wird nicht jeder Phasenwechsel erkannt, sondern nur jeder 4.
Man braucht also Drehgeber, die immer nach 4 Schritten einrasten.

2.
Es kommt beim Umschalten durch die unterschiedlichen Durchlaufzeiten
durch das D-FF bzw. EXOR zu Spikes, die zu Fehlzählungen führen können

3.
Prellungen werden nicht unterdrückt und können zu Fehlzählungen
führen.


Für normale Mikrokontroller stellt der geringe Softwareaufwand keine
nennenswerte Belastung dar, deshalb wird diese Lösung bevorzugt.
Wenn die C-Control aber damit überfordert ist, würde ich daher besser
z.B. einen ATTiny12 die Aufbereitung durchführen lassen.


Peter

von Philipp K. (Gast)


Lesenswert?

Danke erstmal für die antworten.

@Florian S. : Ups, ich meinte natürlich auch ein D-Flip-Flop kein T-FF
wie ichs geschrieben hab. muss ich mal nachschauen bei ELV.

@Wolle: hm, da muss ich mich erstmal ein wenig reindenken ;)

@Peter Dannegger:
Mein DIG wechselt pro Rasterstellung den Zustand der ausgänge je
einmal. Pro klick bekomme ich auch ein Impuls (zumindest nach der
Simulation)
2. Spikes? was ist das? sorry, hab kA.
3. Prellungen sollten doch egal sein, wegen dem d-Flip-Flop. Die
Signale der beiden DIG Ausgänge sind doch recht weit auseinander
(verglichen mit den Prellstörungen) wenn man nicht gerade wie ein Ochs
am Rad dreht oder Formel-1 spielt :) und das d-FF müsste das eigentlich
weg"glätten"

Die Auswertung mit dem mikroC (wie kürzt man das eigentlich ab?) stellt
zwar kein Problem da, das stimmt, aber ich wollte den Programmcode
minimieren. Das ganze wird ziemlich komplex, da ich eine Menüsteuerung
damit machen will, und dabei bleibt es nicht. Der Programmcode hat
jetzt schon fast 900 Zeilen und da ist nichtmal die Menüführung drin.
ich kann dir ja mal die *.dsim schicken, wenn du digitalsimulator hast,
dann könntest du mal ausprobieren :)

Man bekommt pro rasterstellung einen Impuls.
Ich probiers einfach mal aus, wenn ich wieder kann.
Ach noch was, woher weiß ich eigentich, welchen IC ich kaufen muss.
Also ich mein, kann man irgendwo nachschlagen in welchem IC Gatter oder
Flipflops integriert sind?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.