Forum: Mikrocontroller und Digitale Elektronik Quadraturdecoder mit Logik-Bausteinen für Winkelencoder


von Bastian N. (schwipp)


Angehängte Dateien:

Lesenswert?

liebe Leute,

bei  http://dse-faq.elektronik-kompendium.de/dse-faq.htm
lese ich unter
29. Quadraturdecoder für Inkrementaldrehgeber
> Inkrementale Drehgeber wie auswerten?
(..d.h. Drehwinkelgeber mit Spur A und Spur B,  um 90° phasenverschoben, 
für Schrittmotor):

...die (folgende) Schaltung ist eher aufwändig, benötigt einen 
Logik-Baustein 74xx175 und einen Logik-Baustein 74xx86. Das Taktsignal T 
muss mehr als doppelt so hoch sein wie die höchste Frequenz des 
Inkrementalgebers A, B und geringer als die maximale Zählfrequenz des 
nachfolgenden flankengetriggerten Zählers wie CD4516 oder 74HC191 auch 
BCD dezimal mit CD4029.
           +---+
 A  -------|D Q|-----+
        +--|T  |     |
        |  +---+     |
        |            +-----|\
        |  +---+     |     |+)---------- Up / Down
 B  ----(--|D Q|--+  |  +--|/
        +--|T  |  |  |  |
        |  +---+  |  |  |  XOR
  +-----(---------+  |  |
  |  +--(---------(--+--(--|\
  |  |  |  +---+  |     |  |+)--+
  |  +--(--|D Q|--(-----(--|/   +--|\
  |     +--|T  |  |     |          |+)-- Clock Enable (Carry In CD4516)
  |     |  +---+  |     |       +--|/
  |     |         +-----(--|\   |
  |     |  +---+        |  |+)--+
  +-----(--|D Q|--------+--|/
        +--|T  |
        |  +---+
 T  ----+------------------------------- Clock

oder mit Kuli "analog" dargestellt:



Da beim Übergang von einer Position zur nächsten die Signale prellen 
können (mechanische Tastkontakte prellen, Welle vibriert, elektrische 
Einstreuung in Photodiodensignal) zählt jede der obenstehenden Lösungen 
an den Übergängen eventuell hoch und runter, was die Auswertelogik 
stören kann (hat plötzlich ein Drehrichtungswechsel stattgefunden ?). 
Wenn man das Nutzsignal y aber nur bei geraden Werten der Position x 
setzt, wird man die flatternden Übergänge los, bekommt aber nur die 
halbe Auflösung.
------------------
Meine Frage: Ich übersehe nicht ganz das Timing im Logik-Baustein 
74xx175, da ja je 2 der 4 Flipflops in Reihe geschaltet sind, es müssten 
also 2 Takte benötigt werden, um eine Zustandsänderung  von A oder B an 
den nicht getakteten Logik-Baustein  74xx86 weiter zu leiten. Ach ja, 
steht da ja. Weiter:
-------------------
Die WACOM Graphiktablettmaus verwendet, um einen Zähler zu bedienen, 
einen flankengetriggerten Decoder, bei dem Quadratursignal B durch ein 
RC-Netzwerk und Schmitt-Trigger entprellt wird, und dann als Takt zum 
Sampeln des Zustandes des (nicht entprellten) Quadratursignals A 
verwendet wird. Allerdings braucht man ein Power On Reset Signal an S 
und R um den Anfangszustand richtig zu setzen, z. B. erzeugt durch eine 
RC Kombination.
                               +-----+ POR
                               |     |
                               |  +-----+
 A -------------------------+--(--|D S Q|
          74HC132           |  |  |    _|
 B --R--+--|S>o--+--|>o--+--(--(--|C   Q|--| \
        |        |       |  |  |  74HC74   |  )o-- UP
        C        |       |  +--(--|D   O|--| /
        |        |       |  |  |  |    _|
       GND       +-------(--(--(--|C R Q|
                 |       |  |  |  +-----+
                 |       |  |  |     |
                 |       |  |  +-----+
                 |       |  |  |     |
                 |       |  |  |  +-----+
                 |       |  +--(--|D S Q|
                 |       |  |  |  |    _|
                 +-------(--(--(--|C   Q|--| \
                         |  |  |  74HC74   |  )o-- DOWN
                         |  +--(--|D   Q|--| /
                         |     |  |    _|
                         +-----(--|C R Q|
                               |  +----+
                               |     |
                      GND --C--+-----+--R-- VCC

--------------------------
Zitat Ende.
Wenn ich es richtig sehe, könnte man also so wie für Spur B in dieser 
2. Schaltung ausgeführt, aus einem Flankenansteg (irgendwie digital) 
zwei Clockpulse erzeugen, wahrscheinlich so typ. 100 nsec zeitversetzt, 
) und damit die 1. Schaltung takten?

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Bastian N. schrieb:
> Zitat Ende.
Pack dein Zitat oder wenigstens Teile davon entsprechend der 
Bedienungsanleitung in die passenden [ pre ] Tags. Ich hab das mal 
behelfsweise erledigt...

von MaWin (Gast)


Lesenswert?

Bastian N. schrieb:
> Wenn ich es richtig sehe, könnte man also so wie für Spur B in dieser
> 2. Schaltung ausgeführt, aus einem Flankenansteg (irgendwie digital)
> zwei Clockpulse erzeugen, wahrscheinlich so typ. 100 nsec zeitversetzt,
> ) und damit die 1. Schaltung takten?

Nei.

Die erste Schaltung wird mit einem festen ausreichend schnellen Takt 
getaktet, z.B. aus einem 74HC14 oder NE555 Oszillator.Die 2 FF 
hintereinander sind Absicht, die speichern den aktuellen Zustand und den 
vorigen Zustand, damit er verglichen werden kann.

Die zweite Schaltung arbeitet ganz anders, flankengesteuert, und ist 
schlechter, weil man die analog mit RC Glied bei ihr realisierte 
Zeitverzögerung genau an die Prellzeit vs. Drehgeschwindigkeit anpassen 
muss.

Baut man die Drehgeberauswertung schlecht, kommt so ein Scheiss wie bei 
dem Vaillant EcoFit 226/4 Raumtemperaturregler bei raus, dessen Zahlen 
bei Drehen munter hoch und runterhüpfen wenn der Bourns 
PEC11S-9215F-N0015 Drehgeber ooidiert. Eben weil immer irgendein 
selbstüberheblicher Software-Hirnie meint, den Drehgeber nicht nach 
Lehrbuch ordentlich sondern schon irgendwie so higepfuscht auswerten zu 
können.

von Bastian N. (schwipp)


Lesenswert?

Danke  MaWin,
also Ne555 Baustein als Taktgeber.

Sehe ich es richtig, ich habe mir einen Winkelencoder mit diesen um 90° 
versetzten Spuren besorgt, 600 Impulse pro Umdrehung ("Single-phase 600 
pulses /R,Two phase 4 frequency doubling to 2400 pulses"),
dass ich 600 Pulse / Umdrehung auslesen können müsste?
Was ich verstehe:
Green = A phase, white = B phase, red = Vcc power +, black = V0
Was ich nicht verstehe:
Output :AB 2phase output rectangular orthogonal pulse circuit, the 
output for the NPN open collector output type
Wie muss denn nun auslesen?

von MaWin (Gast)


Lesenswert?

Bastian N. schrieb:
> Wie muss denn nun auslesen

Pull up, sagen wir 4k7 an VCC von A und B, wieviele Umdrehungen pro 
Minute muss er den zählen ?

Wenn TTL Logik folgt, kann die ja meist bis 20MHz zählen, der Encoder 
braucht nur 2400Hz bei 1 Umdrehung pro Sekunde, dazwischen ist viel 
Raum.

von Bastian N. (schwipp)


Lesenswert?

Danke, MaWin Gast,
dass Du mir hilfst, bin älteres Semester. Ich habe mal in das Datenblatt 
meines Nema23 Schrittmotors geschaut, also bei 500U/min ist das 
Drehmoment auf 1/3 abgesunken.
Also 8 U/sec sei die Grenze.
Dann macht der Encoder knapp 5000 Pulse/sec  pro Spur, seine Grenze ist 
ja mit 20KHz angegeben, das sollte also passen.
Ich müsste dann wohl einen Leitungstreiber dahinter setzen, oder? (weil 
das Kabel bis zu Arduino circa 3m lang sein wird).
Dann ggf Leitungsempfänger (so hatte ich das vor zig Jahren mit 
Heidenhain Auswertelogik EXE710 machen lassen, als ich noch im Job war)
und dann die Schaltung 1.

: Bearbeitet durch User
von Bastian N. (schwipp)


Lesenswert?

MaWin schrieb:
> Pull up, sagen wir 4k7 an VCC von A und B, wieviele Umdrehungen pro
> Minute muss er den zählen ?
>
> Wenn TTL Logik folgt, kann die ja meist bis 20MHz zählen, der Encoder
> braucht nur 2400Hz bei 1 Umdrehung pro Sekunde, dazwischen ist viel
> Raum.

ich würde sagen Low-Power-Schottky-TTL reicht hinsichtlich der 
Geschwindigkeit,
weil: z.B. für den NE555 würde ich so 10-20 µs Pulsbreite als 
ausreichend ansehen für den Taktgenerator in Schaltung 1

: Bearbeitet durch User
von MaWin (Gast)


Lesenswert?

Bastian N. schrieb:
> Ich müsste dann wohl einen Leitungstreiber dahinter setzen, oder? (weil
> das Kabel bis zu Arduino circa 3m lang sein wird).

Schrittmotor, Encoder, 3m ?
Irgendwas ist falsch, man verwendet Schrittmotore,
weil man eben KEINE Encoder bezahlen will.
Was soll man auch machen, wenn der Encoder andere
Schritte anzeigt als man dem Schrittmotor gegeben hat ?
Traut man Encoder oder Schrittmotor ?
War das eine Fahrt an einem Werkstück, weiss man nur,
daß das Werkstück nun versaut ist und der Schrittmotor
zu schwach war. Beheben kann man das elektronisch nicht.

Aber Encoder über 3m mit 5kHz Signalen sind problemlos ohne
Leitungstreiber anschliessbar.
Man nimmt ggf. (falls es doch zu Störungen kommt) als pull
up weniger als 4k7, so 470R. Interessanter ist, ob starke
elektriche Imüulse (motor ausschalten) zur Zerstörung führen.
Vor die 74HCxx Eigänge einen RCR Schutz zu bauen, ist möglich.
1
        +5V
2
         |
3
   4k7 oder 470R
4
         |
5
Signal --+--1k--+--1k--|74HCxx
6
                |
7
               10nF
8
                |
9
               GND
Bastian N. schrieb:
> ich würde sagen Low-Power-Schottky-TTL reicht hinsichtlich der
> Geschwindigkeit,

Geriatronik ? Wühlkiste von 1980 ? Auch CD40xx reicht. Sogar RTL
oder DTL, wenn die ICs unbedingt wegmüssen.

von Bastian N. (schwipp)


Lesenswert?

Danke für den Kommentar!
Ich las viel über verlorene Schritte, würde gerne x und y Achse auf 
Schrittverlust hin überwachen, weil ich dann anhalten kann, wenn zuviel 
verlorene, und neu eineichen bzw. Tempo verringern. Sonst ist die 
Kleinserie verloren, also es muss nicht supergenau sein 
(Holzbearbeitung) , aber Kontrolle ist besser, um Erfahrungswerte zu 
sammeln.

von Bastian N. (schwipp)


Lesenswert?

CD4001 ist ein NOR, kein XOR??

: Bearbeitet durch User
von MaWin (Gast)


Lesenswert?

Bastian N. schrieb:
> CD4001 ist ein NOR, kein XOR??

Richtig.

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.