Quadraturdecoder für Drehgeber

Hallo,

ich habe da ein kleines Problem mit der Schaltung (der mit 4 Flipflops und XOR Gattern), die unter F.29 in der FAQ steht... Deren Aufbau bei mir gibt nämlich kein brauchbares Richtungssignal raus. Schaltung hab ich mehrfach geprüft, ist mit großer Sicherheit kein Fehler mehr drin. Bauteile funktionieren auch (und 3 Aufbauten der Schaltung bauen den gleichen Käse). Stinkt also nach systematischem Fehler.

Konkret passiert das:

formatting link

Sollte so wohl nicht aussehen, jedenfalls ists so nicht zu gebrauchen. Softwarelösung scheidet aus, weil nacher mit über 200Khz zu rechnen ist, und damit ein Zähler angesteuert werden soll. Der Controller ist mit dem Regleralgoritmus hinreichend beschäftigt. Die Hardwarelösung würde das problemlos schaffen, wenns denn würde. HCTL20xx sind mir momentan noch deutlich zu teuer nur als Decoder.

Takt ist hinreichend schnell, sieht man ja auch an der Pulsbreite auf CE. Der Encoder scheint sich auch normal zu verhalten.

Irgendeine Idee?

Gruss, Robert

Reply to
Robert Obermayer
Loading thread data ...

formatting link
Link wäre hilfreich gewesen.

MfG JRD

Reply to
Rafael Deliano

Zudem könnte man naürlich angeben

  • welche Logikfamilie
  • ob an den Eingängen vom Encoder kommend Schmitt-Trigger vorgesehen sind. Manche Signale sind nach Kabel so verschliffen daß die zweckmässig sind.

MfG JRD

Reply to
Rafael Deliano

74HC

Nein, aber die Signale sind eigentlich ausreichend sauber (T_rise im Bereich von einigen 10ns, kein signifikantes Überschwingen, keine Mehrfachübergänge). Der sichtbare Jitter ist mechanisch bedingt, der Motor läuft eben nicht absolut gleichmäßig. Sind ja auch nur 10cm Kabel im Testaufbau.Nacher läuft das sowieso differentiell mit 26LS33 Empfängern.

Testweise mal einen 74HC14 davor brachte nix, was ich auch nicht erwartet hätte. Die Schaltung baut völlig zuverlässig totalen Mist, das dürfte eher nicht an solchen Effekten liegen. Eigentlich sollte DIR ja während der ganzen Zeit konstant HI oder LO sein, und nicht bei jeder Flanke toggeln.

Gruss, Robert

Reply to
Robert Obermayer

"Robert Obermayer" schrieb im Newsbeitrag news: snipped-for-privacy@mid.individual.net...

Nein. Das Signal, welche A (tyktsynchronisiertes A) und B' (verzögertes B) vergleicht, ist nur während CE gültig.

und wenn ich es mit Karopapier nachvollziehe, passt das auch.

Der nachfolgende Zähler, der auf DIR reagiert wenn CE high ist, soll auf die umgekehrte Flanke des Taktsignals reagieren, also inmitten des stabilen CE bzw. DIR.

--
Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net
homepage: http://freenet-homepage.de/mawin/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

Wieso? Nach dem Design *muß* das Richtungssignal mit der doppelten Quadraturfrequenz toggeln. Die Information steckt in der Phasenlage zwischen CE und DIR. Dafür zappelt dein Oszillogramm aber zu sehr.

Ich würde empfehlen, die Abtastfrequenz testweise mal zu verringern. Dann sieht man den Effekt besser.

Alternativ sample das Richtungssignal mit der steigenden Flanke von CE. Dann toggelt es nicht mehr.

XL

Reply to
Axel Schwenke

"Axel Schwenke" schrieb im Newsbeitrag news: snipped-for-privacy@xl.homelinux.org...

Vorsicht, race condition, eventuell ist es nicht rechtzeitig stabil. Genau so was will die Schaltung ja vermeiden.

-- Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net homepage:

formatting link
de.sci.electronics FAQ:
formatting link
Read 'Art of Electronics' Horowitz/Hill before you ask. Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.

Reply to
MaWin

Die verlässlichsten Ergebnisse erhältst Du mit synchron gesampleten Eingängen, deren Zustand mit dem vorhergehenden Zustand logisch verknüpft wird und so eindeutige Ergebnisse liefert.

Zumindest in Positionieranwendungen. Saubere Signale vorausgesetzt.

Nachteilig ist der Verlust der realen Flanke innerhalb zweier Abtastperioden z.B. für genaue Frequenzmessungen.

Gruss Udo

Reply to
Udo Piechottka

Hi!

Warum dann nicht gleich einen geeigneten Controller nehmen, der mit der Regelung nicht 100% ausgelastet ist, und gleich 'ne Quadratureingang hat?

'nen STM32 kostet vermutlich weniger als der HCTL20xx alleine, und bringt alles notwendige mit!

--
Thomas Kindler
Reply to
Thomas Kindler

Ein CPLD (XC9572XL) das die Quadratursignale auswertet wobei das 16 bit Zählergebnis wie aus einem Schieberegister auslesbar ist. Schon bei 8 MHZ Takt darf das Quadratursignel bis 1 MHZ sein. Die Schieberegistereingänge sind "gefiltert"

Vielaicht auch ganz hilfreich: Such mal in google nach "smc3 servo"

----------------------------------------------------------------------------------

-- Company:

-- Engineer:

--

-- Create Date: 20:04:13 02/25/2009

-- Design Name:

-- Module Name: qenc - Behavioral

-- Project Name:

-- Target Devices:

-- Tool versions:

-- Description:

--

-- Dependencies:

--

-- Revision:

-- Revision 0.01 - File Created

-- Additional Comments:

--

---------------------------------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating

---- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

-- clk oszilator

-- sck Schieberegister Takt

-- sld Schieberegister Load

-- sck und sld gemeinsam resetten den Zähler

-- so Schieberegister Ausgang

-- a b Quadratureingänge

-- a2 b2 optional Quadraturausgänge halbe Frequenz

-- a4 b4 optional Quadraturausgänge viertel Frequenz

entity bl is Port ( clk : in STD_LOGIC; led : out STD_LOGIC; sck : in STD_LOGIC; sld : in STD_LOGIC; so : out STD_LOGIC; a : in STD_LOGIC; b : in STD_LOGIC; a2 : out STD_LOGIC; b2 : out STD_LOGIC; a4 : out STD_LOGIC; b4 : out STD_LOGIC ); end bl;

architecture Behavioral of bl is

SIGNAL counter : STD_LOGIC_VECTOR (21 downto 0); SIGNAL qc : STD_LOGIC_VECTOR (13 downto 0) := "00000000000000" ; SIGNAL qs : STD_LOGIC_VECTOR (15 downto 0); SIGNAL q1 : STD_LOGIC_VECTOR (1 downto 0); SIGNAL q2 : STD_LOGIC_VECTOR (1 downto 0); SIGNAL resco : STD_LOGIC_VECTOR (1 downto 0); SIGNAL ssck : STD_LOGIC; SIGNAL ssld : STD_LOGIC; SIGNAL ssckv : STD_LOGIC; SIGNAL ssldv : STD_LOGIC;

begin los_gehts: PROCESS (CLK,ssck,ssld,resco) BEGIN IF RISING_EDGE(CLK) THEN

-- AB für flankenerkennung speichern q2

Reply to
Gernot Fink

Am Fri, 04 Jun 2010 15:32:16 +0200 schrieb Robert Obermayer:

Gucken was andere schon gemacht haben:

formatting link

Ganz am Ende ist wohl die Schaltung, mit der Du dich rumplagst. Hat aber auch Informationen zu Prellen bei hohen Frequenzen, ...

HTH, Marc

--
Ihr Suchbegriff >MC34063A<  könnte fehlerhaft oder unbekannt sein: Ob WC 
besser ist? (Suchmaschine)
Reply to
Marc Santhoff

"Harald Wilhelms" schrieb im Newsbeitrag news: snipped-for-privacy@t10g2000yqg.googlegroups.com...

Das ist doch dieselbe, schöner abgezeichnet aus der d.s.e FAQ.

Wenn man nur mit TTL-ICs (Zählern etc.) weiterarbeitet, ist die sinnvoll, aber wenn man sowieso einen uC hat, kann man sich jegliche externe Zusatzlogik sparen, auch einen zweiten uC, man gewinnt ja keine Rechenzeit.

Ist der uC zu langsam, um einen ausreichend schnellen Interrupt zur softwaremässigen Incrementaldecoderauswertung laufen zu lassen, dann muß man halt einen 10% schnelleren uC nehmen, dann passt das wieder. Denn der Rechenaufwand ist ja minimal, und 4 Decoder kann man ohne Zusatzzeit parallel decodieren lassen.

--
Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net
homepage: http://freenet-homepage.de/mawin/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

Hallo Robert,

Robert Obermayer schrieb:

ich habe hier für ein ähnliches Problem eine Lösung, die ich früher mal mit einem FPGA getestet habe. Ich habe mir das in der FAQ nicht genau angesehen, verstehe es auch nicht ganz. Wenn es sich um das Problem handelt, bei dem wie in einer Maus mit Rollkugel und Lichtschranken die Drehrichtung einer Scheibe bestimmt werden soll, so müßte das passen.

Meine Schaltung bestimmt die Richtung eines Objektes, das 2 dicht beieinander stehende Lichtschranken nacheinander passiert, benötigt werden nur die 2 logischen Pegel der Lichtschranken und kein Takt. Die Frequenz kann mit CPLD 9572 über 10 MHz sein, Prellen oder dergleichen scheint keine Fehler hervorrufen zu können. Irgendwelche Glitches sind in der Simulation nicht zu sehen, die Richtungsinformation wird nach Passieren ausgegeben.

Die Schaltung besteht aus insgesamt 5 NAND-RS-FFs und etwas Logik, könnte evtl. sogar in 1 kleines GAL passen. Ursprünglich hat die Schaltung einen Up-Down-Counter angesteuert, der wird hier nicht gebraucht. Bei Interesse könnte ich das Xilinx-Projekt verschicken, es sind 235 KB, mit Schematics Entry entworfen, kein VHDL.

mfg Winfried

Reply to
Winfried Salomon

Robert Obermayerschrieb: "

Wie wäre es mit dieser Encoder Schaltung

formatting link
U170 und U130 wären nur nötig. Die beiden Counter U150/160 würden dann im Controller liegen.

Dirk

Reply to
Dirk Ruth

...

Kanal A taktet das FF mit einer Flanke, Kanal B wird dann vom Data Eingang durchgeschaltet. Der Ausgang gibt die Richtung an.

Wofür brauchst Du die anderen 4 FF?

--
Gruß, Raimund
Mein Pfotoalbum 
Mail ohne Anhang an  wird gelesen. Im Impressum der Homepage
findet sich immer eine länger gültige Adresse.
Reply to
Raimund Nisius

Hallo Raimund,

Raimund Nisius schrieb:

ja das funktioniert.

Die sollten einen Up-Down-Counter ansteuern, dafür braucht man mehr als

8 Zustände. Insofern ist mein Vorschlag etwas überdimensioniert, es sollte die Anzahl der Personen in 1 Raum gezählt werden, also etwas abweichend von der Problemstellung. Allerdings könnte man vom Zählerstand auch auf die Geschwindigkeit schließen.

mfg Winfried

Reply to
Winfried Salomon

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.