AVR oder TTL f. Laengenanzeige?

R

Rolf Bredemeier

Guest
Hallo zusammen,

ich habe hier einen inkrementalen Drehgeber. TTL Ausgang, 2 Phasen.
Stammt aus einer CNC-Maschine.

Damit möchte ich mir ein Wegmessystem für meine Drehbank
bauen. Also eine Längenanzeige.

Die Übersetzung (mit Rolle und Skalenseil, der Tipp stammt
aus dieser Newsgroup) würde ich so wählen, das ich
100 Pulse/Umdrehung bekomme.

Nun die Frage:

Wenn ich den Support per Hand schnell verfahre, schaffe ich sicher
200mm/sec. Macht doch 20Khz am Taktausgang?

Und dann per Software im Interrupt den Weg hoch/ruterzählen,
ist schon nicht mehr ganz so unkritisch. Zumindest habe ich
damit keine Erfahrung. Es wären dann ja nur noch 50uSec
Zeit bis zum nächsten Interrupt. Etwas knapp, oder?

Wäre es da nicht leichter, einfach einen Hardware Vorwärts-Rückwärts
Zähler zu bauen? Ich brauche nur eine 5-stellige 7-Segmentanzeige
und einen Taster zum "Abnullen"

Leider habe ich mit TTL-Bausteinen noch nie etwas gebaut.

Was ist Euer Rat? Soft oder Hard? Und wenn Hard, weiss
jemand einen Link zu solch einer Schaltung? Würde mir
sicher helfen.


Vielen Dank für Eure Zeit und Grüße aus Petershagen!

Rolf
 
Entschuldigung,

Rolf Bredemeier wrote:
Die Übersetzung (mit Rolle und Skalenseil, der Tipp stammt
aus dieser Newsgroup) würde ich so wählen, das ich
100 Pulse/Umdrehung bekomme.
es sollte 100/Pulse/Millimeter heißen.

Rolf
 
Rolf Bredemeier <rolf_gsxr@despammed.com> wrote:


Und dann per Software im Interrupt den Weg hoch/ruterzählen,
ist schon nicht mehr ganz so unkritisch. Zumindest habe ich
damit keine Erfahrung. Es wären dann ja nur noch 50uSec
Zeit bis zum nächsten Interrupt. Etwas knapp, oder?
Hm..noe. Ich hab einen Mega8 der steuert einen Motor mit so einem
Wegzaehler. Ich hab das nur bis 12.5kHz ausgelegt, aber ich hab
zusaetzlich noch einen Kaskadenregler fuer Geschwindigkeit und
Position laufen ausserdem wird die Position noch auf einem LCD
ausgeben und bei der RS232 nach Kommandos geschaut.

Ich seh da eigentlich keine Probleme wenn du nur die Position anzeigen
willst. Klar der IRQ laeuft oft, aber dafuer ist er sehr kurz.

Wäre es da nicht leichter, einfach einen Hardware Vorwärts-Rückwärts
Zähler zu bauen? Ich brauche nur eine 5-stellige 7-Segmentanzeige
und einen Taster zum "Abnullen"
Wahrscheinlich nicht weil du dir dann Gedanken um das 'entprellen'
machen musst. Ausserdem kann der AVR auch noch gleich das Multiplex
fuer die Anzeigen machen.

Olaf
 
Rolf Bredemeier wrote:

AVR oder TTL
Im Moment scheint es Mode zu sein, erst das Werkzeug festzulegen und dann
die Aufgabe zu definieren, satt das Werkzeug als letztes passend zur
Aufgabe zu wählen.
Nur ne generelle Feststellung, der Inhalt der Nachricht ist ja nicht
festgelegt, aber bei der Überschrift hatte ich schon wieder etwas anderes
erwartet....

Wenn ich den Support per Hand schnell verfahre, schaffe ich sicher
200mm/sec. Macht doch 20Khz am Taktausgang?
Es gibt Motor Control Microcontroller mit passenden Encoder-Interface, die
die Position in Hardware zählen und das auch noch im MHz-Bereich.

Atmel scheint noch nichts entsprechendes anzubieten, aber diverse andere.
Microchip. z.B. mit dem dsPIC30F2010 und anderen.

Daniel

--
.~. Daniel Schramm Phone: +49 231 6108112 Mail:daniel.schramm@gmx.de
/V\ Bruehlweg 36 Mobile:+49 178 8839848 ICQ: 35816985
// \\ 44379 Dortmund Fax: +49 231 96989961 WWW: pinguin.sauerland.de
/( )\ Germany
^`~'^
 
Rolf Bredemeier wrote:
Hallo zusammen,

ich habe hier einen inkrementalen Drehgeber. TTL Ausgang, 2 Phasen.
Stammt aus einer CNC-Maschine.
Quadratur encoder? Die haben die wundervolle eigenschaft, dass man sie
direkt mit einem up/down Zaehler verbinden kann. Und zwar den ersten
Ausgang and den Takt und den zweiten Ausgang an die Zaehlrichtung.
Einzige Voraussetzung ist, dass der Zehler bei ansteigender oder
abfallender Flanke zaehlt (machen aber im Prinzip alle).

Die Loesung is also simpel: jeder up/down Zaehler funktioniert. Die
gibts als binaer oder dezimal zaehler, mit binaer oder 7-Segment
ausgang, lasssen sich auf beliebig viele Stellen erweitern, etc. etc. .
Einfach mal unter den 74... standard TTL Chips suchen.
 
Hallo Rolf!

Ich nehme an, dieser inkrementalgeber funktioniert nacht dem
Quadratur-Encoder prinzip oder? 2 Phasen, 90° verschoben? Da hab ich
nämlich auch schon was programmiert und hatte wirklich keine Probleme,
war auch Interrupt gesteuert. Meiner Meinung nach müsste es mit einem
Atmega8 und 16MHz taktfrequenz kein problem sein, auch jenseits von
20KHz zu samplen. Also ich persönlich würde es Softwaremässig
versuchen. Mit TTL-Bausteinen wird es da schon viel komplizierter, als
mit Software...
könnte mich sonst auch noch umschauen wegen dem algorithmus.

gruss und gute nacht!

--
mailto: david_greminger (at) bernina.com
--
 
Hallo NG,
Und zwar den ersten Ausgang and den Takt und den zweiten Ausgang
an die Zaehlrichtung.
Bitte in der Faq nachschauen, warum dieses Vorgehen ungünstig ist.

Gute Nacht - Peter

--
Für Privat-Email bitte Betreff mit "Usenet-Reh" beginnen lassen.
--
"Ein Mokka-Trüffel-Parfait mit einem Zitronencreme-Bällchen."
 
Hallo Rolf,

Und dann per Software im Interrupt den Weg hoch/ruterzählen,
ist schon nicht mehr ganz so unkritisch. Zumindest habe ich
damit keine Erfahrung. Es wären dann ja nur noch 50uSec
Zeit bis zum nächsten Interrupt. Etwas knapp, oder?
Geht schon, wie andere bereits schrieben.

Wäre es da nicht leichter, einfach einen Hardware Vorwärts-Rückwärts
Zähler zu bauen? Ich brauche nur eine 5-stellige 7-Segmentanzeige
und einen Taster zum "Abnullen"
Wenn Du nicht viel Erfahrung mit uC hast, fuehrt das sicher schneller
ans Ziel. Am besten CMOS Series, entweder CD4000er oder bei unter 6V
eben 74HC. Wenn Du schon viel uC gemacht hast, wuerde ich auch einen
solchen nehmen.

Gruesse, Joerg

http://www.analogconsultants.com
 
ich habe hier einen inkrementalen Drehgeber. TTL Ausgang, 2 Phasen.
[...]
Wenn ich den Support per Hand schnell verfahre, schaffe ich sicher
200mm/sec. Macht doch 20Khz am Taktausgang?
dein Timer-Interrupt sollte also mindestens mit 20 kHz laufen ... bei 16
MHz Controllertakt sind das etwa 800 Takte


Schaun wir mal den zustandsgesteuerten Decoder an (Genaue Beschreibung
steht in der FAQ) - im Prinzip ist es eine wirklich primitive
Zustandsmaschine a la

neuer_Zustand = Tabelle[alter_Zustand][PinA][PinB]
und in manchen Fällen noch ein Counter increment/decrement
(es gibt nur 4 verschiedene Zustände, PinA und PinB sind je 1 bit, macht
zusammen 16 Einträge in der Tabelle)


also wenn man das nicht in 800 Takte reinbekommt, dann hat man wohl die
falsche Programmiersprache oder das Problem nicht verstanden ...



und falls es noch nicht deutlich genug war:
Auswertung mit Flanken und Interrupts von den Pins sind allgemein keine
gute Lösung - Zustandsauswertung ist nicht aufwändiger und sicher.
Details siehe letzte Diskussion (google)



bye,
Michael
 
Hallo Daniel!

AVR oder TTL

Im Moment scheint es Mode zu sein, erst das Werkzeug festzulegen und dann
die Aufgabe zu definieren, satt das Werkzeug als letztes passend zur
Aufgabe zu wählen.
Nur ne generelle Feststellung, der Inhalt der Nachricht ist ja nicht
festgelegt, aber bei der Überschrift hatte ich schon wieder etwas anderes
erwartet....
Was sonst hättest du unter dem Topic "AVR oder TTL f. Laengenanzeige?"
erwartet?

Es gibt Motor Control Microcontroller mit passenden Encoder-Interface, die
die Position in Hardware zählen und das auch noch im MHz-Bereich.
Das wäre für 20 kHz wohl mit Kanonen auf Spatzen geschossen. Zumal man
entsprechende Schaltungen wohl auch kaum bei Conrad oder Reichelt
bekommt. Man könnte es auch in einem FPGA implementieren, aber auch das
wäre zu kompliziert und damit für den OP kaum hilfreich...

Gruß
Thorsten



--
PGP welcome!
Thorsten online: http://www.ostermann-net.de/electronic
Rund um Schrittmotor, Fräs-Bohr-Plotter & Mikrocontroller
 
Rolf Bredemeier schrieb:

Wenn ich den Support per Hand schnell verfahre, schaffe ich sicher
200mm/sec. Macht doch 20Khz am Taktausgang?

Und dann per Software im Interrupt den Weg hoch/ruterzählen,
ist schon nicht mehr ganz so unkritisch. Zumindest habe ich
damit keine Erfahrung. Es wären dann ja nur noch 50uSec
Zeit bis zum nächsten Interrupt. Etwas knapp, oder?
Nein, gar nicht.
Ich hab Digitalanzeigen entwickelt, die (auch Atmel-basierend)
bei einem Encodereingang locker 100 kHz verkraften, bei vier Achsen
gleichzeitig immer noch über 60 kHz.
Und gleichzeitig macht das Teil noch die Umrechnung beliebiger Auflösungen,
lässt sich über RS-232 auslesen und programmieren und steuert pro Achse
acht 7-Seg-LEDs flimmerfrei an, dazu noch diverse andere Goodies
(Displayhelligkeit lässt sich per PWM einstellen usw.)

Alles mit *einem* Controller, 16 MHz und 8kByte Speicher.

Zugegeben, die Programmierung war nicht ganz trivial. Aber 20 kHz solltest
Du locker hinkriegen.
Also nur Mut!

Wäre es da nicht leichter, einfach einen Hardware Vorwärts-Rückwärts
Zähler zu bauen? Ich brauche nur eine 5-stellige 7-Segmentanzeige
und einen Taster zum "Abnullen"
Willst Du Dir das wirklich antun?
Ein Atmel kostet keine drei Euronen. Damit steckst Du Deine Schaltung
zusammen und dann musst Du nur noch programmieren und nix mehr löten.

Und "ich brauche nur" kenne ich von Kunden zu genüge. Glaube mir: es kommt
irgendwann *immer* noch ein "schön wäre auch" ;-)
Dann ist es gut, Reserven zu haben und flexibel zu sein. Deswegen ->
Controller

Leider habe ich mit TTL-Bausteinen noch nie etwas gebaut.
Eben: teuerer, größer, energiefressender, unflexibel, fehleranfällig.
Mein Tipp: Lass es.

Vielen Dank für Eure Zeit und Grüße aus Petershagen!
Keine Ursache :)

Viele Grüße aus der Vulkaneifel,
Christoph
--
Electronic Thingks - Christoph Drube - www.electronic-thingks.de
Entwicklung und Vertrieb von Systemsoftware und Hardwarekomponenten,
Bausätze, Mikrocontroller, hardwarenahe Programmierung in C, C++ und
Tcl/Tk, Infos/Material zum Eloxieren, Linux-Netzwerke, WWW-Entwicklung
 
On Tue, 13 Sep 2005 21:19:08 +0200, "Rolf Bredemeier"
<rolf_gsxr@despammed.com> wrote:

Hallo zusammen,

ich habe hier einen inkrementalen Drehgeber. TTL Ausgang, 2 Phasen.
Stammt aus einer CNC-Maschine.
schnipp
Und dann per Software im Interrupt den Weg hoch/ruterzählen,
ist schon nicht mehr ganz so unkritisch. Zumindest habe ich
damit keine Erfahrung. Es wären dann ja nur noch 50uSec
Zeit bis zum nächsten Interrupt. Etwas knapp, oder?
hmm. Quadratur-Signal nehme ich an...

+---+ +---+ +---+ +---+
"CLK" | | | | | | | |
+---+ +---+ +---+ +---+ +---+

+---+ +---+ +---+ +---+
"DIR" | | | | | | |
+---+ +---+ +---+ +---+


eines als Takt, eines als Richtungssignal...

Warum nicht den Takt an einen INTR-fähigen Pin legen?

Und in der SW dann einfach den zweiten Pin abfragen und entsprechend
einen SW-Zähler +/- eins zählen. Die Intr-Routine ist so nur wenige
Bytes lang. Und im "Hauptprogramm" den ganzen anderen Schrümmel
erledigen.

Das sollte sich mit fast jeder CPU erledigen lassen.

Heinz
 
<Heinz Liebhart> schrieb im Newsbeitrag
news:ccofi11mu38oiknctb3kde9hg6ir0kjipl@4ax.com...

eines als Takt, eines als Richtungssignal...
Warum nicht den Takt an einen INTR-fähigen Pin legen?
Weil man das genau so ganz ganz bestimmt nie machen sollte ?
Siehe
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
F.29. Quadraturdecoder für Inkrementaldrehgeber
--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
 
Hallo,

Weil man das genau so ganz ganz bestimmt nie machen sollte ?
Und warum? Als Abschreckung ist mir noch der Thread ab
news:3jl0qcFq5o64U1@individual.net von Gerald Oppen am 13 Jul. 19:19 in
Erinnerung. Leider kann ich ihn nicht bei Groople anzeigen lassen.

Ciao - Peter

--
Für Privat-Email bitte Betreff mit "Usenet-Reh" beginnen lassen.
--
"Ein Mokka-Trüffel-Parfait mit einem Zitronencreme-Bällchen."
 
hmm. Quadratur-Signal nehme ich an...

+---+ +---+ +---+ +---+
"CLK" | | | | | | | |
+---+ +---+ +---+ +---+ +---+

+---+ +---+ +---+ +---+
"DIR" | | | | | | |
+---+ +---+ +---+ +---+
alle 3 Wochen das gleiche ...
das ist nur der günstigste Fall konstanter Geschwindigkeit.
Wenn dein Geber auf der Kante steht, dann gibts sowas

+---+ ++++-------+ +---+ +---+
"A" | | |||| | | | | |
+---+ +-------++++ +---+ +---+ +---+

+---+ +---+ +---+
"B" | | | | | | |
+---+ +------------------+ +---+ +---+

Flankenwechsel koennen beliebig schnell werde -> man kann
nie alle mit einem Interrupt-Eingang erfassen

was tun? wenn man genau hinschaut sieht man, dass diese schnellen
Wechsel keiner echten Bewegung entsprechen -> man braucht sie nicht
erfassen - die Auswertung darf nur nicht durcheinanderkommen


Eine *zustandsgesteuerte* Auswertung kommt damit klar, die würde
man im Timerinterrupt machen und ist auch ziehmlich kurz.
(siehe FAQ)


Das sollte sich mit fast jeder CPU erledigen lassen.
ack


bye,
Michael
 
"Peter Muthesius" <newsname@gmx.de> schrieb im Newsbeitrag
news:43284374$0$18641$14726298@news.sunsite.dk...
Hallo,

Weil man das genau so ganz ganz bestimmt nie machen sollte ?
Und warum?
Steht in dem direkt darunterstehendem Link dem du nur mal haettest
folgen muessen.

Als Abschreckung ist mir noch der Thread ab
news:3jl0qcFq5o64U1@individual.net von Gerald Oppen am 13 Jul. 19:19 in
Erinnerung. Leider kann ich ihn nicht bei Groople anzeigen lassen.

Klappt problemlos, lass news: bei der Nachrichten-ID weg.
--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
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.
 
Hallo,

Und warum?
Steht in dem ... Link ...
Schon klar; war 'ne rhetorische Frage.

... Abschreckung ... Thread ab news:3jl0qcFq5o64U1@individual.net
Leider kann ich ihn nicht bei Groople anzeigen lassen.
Klappt problemlos, lass news: bei der Nachrichten-ID weg.
Das Posting sehe ich schon, aber wenn ich den Thread anzeigen lassen
will, beginnt er immer mit einer Antwort von Dir:
http://tinyurl.com/7omqn :(

Den Beginn habe ich erst aus den References-Headern extrahieren müssen.

Ciao - Peter - dem Groups-Google-Nicht-Beta hinterhertrauernd

--
Für Privat-Email bitte Betreff mit "Usenet-Reh" beginnen lassen.
--
"Ein Mokka-Trüffel-Parfait mit einem Zitronencreme-Bällchen."
 
On Wed, 14 Sep 2005 17:48:27 +0200, "MaWin" <me@private.net> wrote:

"Peter Muthesius" <newsname@gmx.de> schrieb im Newsbeitrag
news:43284374$0$18641$14726298@news.sunsite.dk...
Hallo,

Weil man das genau so ganz ganz bestimmt nie machen sollte ?
*grmpf*erwischt*schäm*
stimmt, da war ein Thread vor einiger Zeit.....
*kopfkratz*

Heinz
 
Thorsten Ostermann wrote:

Hallo Daniel!

AVR oder TTL

Im Moment scheint es Mode zu sein, erst das Werkzeug festzulegen und dann
die Aufgabe zu definieren, satt das Werkzeug als letztes passend zur
Aufgabe zu wählen.
Nur ne generelle Feststellung, der Inhalt der Nachricht ist ja nicht
festgelegt, aber bei der Überschrift hatte ich schon wieder etwas anderes
erwartet....

Was sonst hättest du unter dem Topic "AVR oder TTL f. Laengenanzeige?"
erwartet?

Es gibt Motor Control Microcontroller mit passenden Encoder-Interface,
die die Position in Hardware zählen und das auch noch im MHz-Bereich.

Das wäre für 20 kHz wohl mit Kanonen auf Spatzen geschossen. Zumal man
entsprechende Schaltungen wohl auch kaum bei Conrad oder Reichelt
bekommt. Man könnte es auch in einem FPGA implementieren, aber auch das
wäre zu kompliziert und damit für den OP kaum hilfreich...
Ich sehe, Du hast Dir den Prozessor oder andere Alternativen mal
angeschaut....
.... der genannte Prozessor liegt bei ca. 7 EUR, hat digitale Filter für das
Quadratur-Signal, ist schnell beim Zählen und erledigt alles andere, was
gefordert ist auch.

Wenn die 3,50 EUR mehr im Vergleich zu nem Mega16 für deutlich weniger
Stress bei der Entzwicklung sorgen, dann nenn ich das höchstens ein
"Kanönchen".

Ich nutze auch den AVR gerne, aber hier würde ich eindeutig den dsPIC
bevorzugen, jeder Prozessor hat halt seine Vor/Nachteile, weshalb ich die
Vorauswahl im Subject kritisiert hatte.

Daniel


--
.~. Daniel Schramm Phone: +49 231 6108112 Mail:daniel.schramm@gmx.de
/V\ Bruehlweg 36 Mobile:+49 178 8839848 ICQ: 35816985
// \\ 44379 Dortmund Fax: +49 231 96989961 WWW: pinguin.sauerland.de
/( )\ Germany
^`~'^
 
Hallo Michael!

Michael Schöberl wrote:

also wenn man das nicht in 800 Takte reinbekommt, dann hat man wohl
die falsche Programmiersprache oder das Problem nicht verstanden ...
Du hast komplett und völlig recht. Ich habe gerade das Hoch-Runterzählen
mittels State-Machine, wie von in der Faq beschrieben, implementiert.
Gibt bisher 102 Zyklen. und der Rest kann natürlich außerhalb des INT
laufen.

Mein Fehler war, ich habe nicht gerechnet, sondern nur "gefühlt",
das 20KHz knapp werden.

Ich werde in Zukunft erst nachrechnen. In 50uSec lässt sich wirklich
eine Menge erledigen.

Werds mir merken, Danke für den Zeigefinger!

Viele Grüße, Rolf
 

Welcome to EDABoard.com

Sponsor

Back
Top