Forum: Mikrocontroller und Digitale Elektronik TTL-Signal von Drehgeber auslesen


von Martin (Gast)


Lesenswert?

Ich möchte gerne mit einem µC ein TTL-Signal eines Inkrementalgebers 
auslesen. Das Signal hat eine Frequenz von etwa 10kHz. Kann ich die 
Leitungen direkt an die Pins des µC anschliessen oder benötige ich eine 
zusätzliche Schaltung damit das ganze störunemfpindlich wird?

Wie sieht es aus wenn ich statt eines TTL-Signals ein sinusförmiges 
Analogsignal (1VSS) sehr genau analysieren will. Werte ich das Signal 
direkt an den Analogeingängen aus oder kommt erst eine 
Verstärkungsschaltung oder ähnliches?

Danke für eure Unterstützung.

von astroscout (Gast)


Lesenswert?

Hi,
den Inkrementalgeber kannst du eingendlich direkt an den uC anschließen. 
Ein Inkrementalgeber dürfte eigendlich kaum Prellen, ansonsten kannst du 
ihn per Software entprellen. Ggf. sind noch Pull-Up widerstände 
notwending, dafür kannst du aber die internen Pull-Ups des uC verwenden, 
musst du aber mal im Datenblat des Inkrenetalgeber nachschauen.

Die Frage ist was du mit sehr genau meinst. Die genauigkeit ist von der 
Auflösung des ADC anhängig. Außerdem sollte man versuchen den 
Eingangbereich des ADC möglichst ganz auszunutzen, dh. ggf ist ein 
Spannungteiler bzw. eine Verstärkerschaltung notwendig, die jedoch auch 
wieder messfehler verusachen kann. Das muss man dann abwägen

von Falk B. (falk)


Lesenswert?

@  Martin (Gast)

>Ich möchte gerne mit einem µC ein TTL-Signal eines Inkrementalgebers
>auslesen. Das Signal hat eine Frequenz von etwa 10kHz.

Also soch recht schnell.

>Kann ich die
>Leitungen direkt an die Pins des µC anschliessen

Meistens ja. Siehe Drehgeber.

> oder benötige ich eine
> zusätzliche Schaltung damit das ganze störunemfpindlich wird?

ggf. wird ein RC-Tiefpass verwendet, um HF-Störungen rauszufiltern.

>Wie sieht es aus wenn ich statt eines TTL-Signals ein sinusförmiges
>Analogsignal (1VSS) sehr genau analysieren will. Werte ich das Signal
>direkt an den Analogeingängen aus

Kann man machen.

> oder kommt erst eine Verstärkungsschaltung oder ähnliches?

Kommt drauf an, was man wie genau auswerten will.

MfG
Falk

von Falk B. (falk)


Lesenswert?

@  astroscout (Gast)

>Ein Inkrementalgeber dürfte eigendlich kaum Prellen,

Das sehen andere Leute anders.

von Martin (Gast)


Lesenswert?

> Kommt drauf an, was man wie genau auswerten will.
Ich will das sinusförmige Signal des Drehgebers so genau wie es nur geht 
auswerten. Also pro Periode etwa 1000 mal abtasten.

>> Ein Inkrementalgeber dürfte eigendlich kaum Prellen,
> Das sehen andere Leute anders.
Was bedeutet das für meine Schaltung?

von MaWin (Gast)


Lesenswert?

TTL-Signale kannst du direkt anschliessen,
die Entprellung übernimmt der uC durch Abtastung
in Zeitabständen die länger sind als die Prellzeit,
und kürzer sind als die Strichzahl,

bei Sinussignalen verwendet man normalerweise
zunächst einen Komparator mit leichter Hysterese,
und steckt dann dessen Ausgangssignal in den uC.

http://www.elektrik-trick.de/sminterf.htm (weiter hinten)

> Ich will das sinusförmige Signal des Drehgebers so genau
> wie es nur geht auswerten.
> Also pro Periode etwa 1000 mal abtasten.

Dann allerdings musst du analog abtasten.

Bei 10kHz und 1000 mal pro Periode muss dieser
Analog/Digitalwandler allerdings 10Msps liefern,
dun der uC diese 10Msps verarbeiten können.

Mir erscheint, du spinnst.

von Jonas B. (jibi)


Lesenswert?

>Ich will das sinusförmige Signal des Drehgebers so genau wie es nur geht
>auswerten.

"sinusförmige Signal?" -> Was hasten da fürn Drehgeber?

Gruß Jonas

von m.n. (Gast)


Lesenswert?

Martin schrieb:
> Ich will das sinusförmige Signal des Drehgebers so genau wie es nur geht
> auswerten. Also pro Periode etwa 1000 mal abtasten.

Als Anregung zeige ich Dir meine Schaltung dafür:
http://www.mino-elektronik.de/mt12_iic/mt12_iic.htm
Bei höheren Ansprüchen kann man vor die ADC-Eingänge noch SH-Stufen 
einfügen.

Welchen Drehgeber verwendest Du?

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


Lesenswert?

Jonas Biensack schrieb:
> "sinusförmige Signal?" -> Was hasten da fürn Drehgeber?
Das wäre ein Resolver...
Passt aber nicht zu dem, was Martin schrieb:
>>>> Ich möchte gerne mit einem µC ein TTL-Signal eines Inkrementalgebers
>>>> auslesen.

> Was hasten da fürn Drehgeber?
Das wäre jetzt tatsächlich interessant...

von Harald W. (wilhelms)


Lesenswert?

Martin schrieb:
>> Kommt drauf an, was man wie genau auswerten will.
> Ich will das sinusförmige Signal des Drehgebers so genau wie es nur geht
> auswerten. Also pro Periode etwa 1000 mal abtasten.

Oben hast Du von TTL-Signalen gesprochen. Du hast also keinen normalen
Drehgeber, sondern einen Präzisionsdrehgeber zur Winkelmessung?
In den Teilschaltungen zur Präzisionswinkelmessung steckt sehr viel
jahrzehntealtes Knowhow der Hersteller (z.B. Heidenhain); da würde ich
an Deiner Stelle eher ein Fertiggerät kaufen.
Gruss
Harald

von Harald W. (wilhelms)


Lesenswert?

astroscout schrieb:

> Die genauigkeit ist von der
> Auflösung des ADC anhängig.

Naja, zwischen Auflösung und Genauigkeit besteht aber ein ziemlich
grosser Unterschied!
Gruss
Harald

von Martin (Gast)


Lesenswert?

Ok nochmal kurz das habe ich nicht richtig herausgestellt:
Bei Drehgeber mit TTL-Signal: 10 kHz    (dreht sich schnell)
Bei Drehgeber mit Sinussignal 10 Hz und 1000 mal pro Periode abtasten 
(dreht sich langsam)

Es handelt also um 2 Schaltungen an die 2 unterschiedliche 
Inkrementalgeber angeschlossen werden

von MaWin (Gast)


Lesenswert?

> Bei Drehgeber mit TTL-Signal: 10 kHz    (dreht sich schnell)
> Bei Drehgeber mit Sinussignal 10 Hz und 1000 mal pro Periode
> abtasten (dreht sich langsam)

Falls du mit diesen analog abgeststeten Drehgeber aber
die Position auf 1/1000 der Periode genau bestimmen willst,
müsstest du dessen Analogwert mit 16 bit A/D wandeln,
denn die Auflösung sinkt durch die Sinuswerte deutlich.

Erstens stellt sich die Frage, ob das Analogsignal überhaupt
die dazu nötige Linearität von 0.01% hat, dann die Frage,
welcher präzise A/D-Wandler 16 bit mit 10ksps schafft.


Beim Digitalencoder sind 10kHz weniger als die Prellzeit
mechanischer Kontakte, es kann sich also nur um einen
berührungslos abgetasteten Encoder handeln, und dabei sollte
man bedenken, daß Lichtschranken, die besser als 10kHz schaffen,
mit nicht zu geringem Strom betrieben werden müssen, sonst
sind sie zu langsam, auch Hallschalter haben eine Grenze.

von m.n. (Gast)


Lesenswert?

MaWin schrieb:
> Falls du mit diesen analog abgeststeten Drehgeber aber
> die Position auf 1/1000 der Periode genau bestimmen willst,
> müsstest du dessen Analogwert mit 16 bit A/D wandeln,
> denn die Auflösung sinkt durch die Sinuswerte deutlich.
>
> Erstens stellt sich die Frage, ob das Analogsignal überhaupt
> die dazu nötige Linearität von 0.01% hat, dann die Frage,
> welcher präzise A/D-Wandler 16 bit mit 10ksps schafft.

Bei all diesen Fragen und Problemen erkennt man doch recht schnell, dass 
es sich um eine weltweit unlösbare Aufgabe handelt.

Vor kurzer Zeit war in der Glotze ein Psychiater für burn-out 
Geschädigte zu sehen. Er bemerkte, dass es eine speziell deutsche 
Eigenschaft sei, vorhandene Probleme sehrweit zu übersteigern und sie 
damit unlösbar zu machen.
Gut, die Amis machen es genau umgekehrt.

Nehmen wir doch den goldenen Mittelweg.

von Martin (Gast)


Lesenswert?

Gehen wir es anders herum an:
- Drehgeber mit 4096 Strichen und 1VSS
- Drehgeschwindigkeit 1Hz
- Annahme: Ideales Signal des Drehgebers -> mir geht es nur darum was 
der µC und die Schaltung leisten kann nicht was der Drehgeber 
tatsächlich anbietet.

Fragen:
Welche Abtastraten sind mit einem 8Bit µC bei 20 Mhz realistisch bei 
maximal 50% Auslastung?
Welche Abtastraten sind mit einem 32Bit µC bei 100 Mhz realistisch bei 
maximal 50% Auslastung?
Wie sollte eine Schaltung aussehen um die Werte möglichst genau 
auszuwerten?

von m.n. (Gast)


Lesenswert?

Martin schrieb:
> - Annahme: Ideales Signal des Drehgebers -> mir geht es nur darum was
> der µC und die Schaltung leisten kann nicht was der Drehgeber
> tatsächlich anbietet.

Die Frage müßtest Du genau andersherum formulieren :-)
Die Antwort nach der Winkelauflösung bleibst Du schuldig.


> Welche Abtastraten sind mit einem 32Bit µC bei 100 Mhz realistisch bei
> maximal 50% Auslastung?

Geschätzt 1MS/s; da wird eher die anschließende Verarbeitung die Bremse 
sein.

von Falk B. (falk)


Lesenswert?

@  Martin (Gast)

>Welche Abtastraten sind mit einem 8Bit µC bei 20 Mhz realistisch bei
>maximal 50% Auslastung?

Beim AVR vielleicht 100kHz, wenn man mal grob 100 Takte für die ISR 
spendiert.

>Wie sollte eine Schaltung aussehen um die Werte möglichst genau
>auszuwerten?

Digital ist es einfach. Analog wird aufwändiger. Man braucht halt einen 
Zweikanal ADC.

MFG
Falk

von Martin (Gast)


Lesenswert?

Danke, ja es geht mir gerade nur noch um das analoge Signal.

von MaWin (Gast)


Lesenswert?

> Annahme: Ideales Signal des Drehgebers

Märchen.

> Welche Abtastraten

Unwichtig.

Dich interessiert erst die Abtastrate,
wenn du die erreichbare Winkelauflösung
kennst, und die hängt nun mal vom
nicht-linearen Signal und der A/D-Auflösung ab.


Es macht keinen Sinn zu fragen, was wäre,
wenn du reiten könntest, ohne Pferd.

von Martin (Gast)


Lesenswert?

Vielleicht kaufe ich mir irgendwann ein Pferd, und wenn ich mir nur ein 
Pony kaufe kann ich das dann auch reiten...

Eine 1000 fache Interpolation pro Perdiode ist mit dem Drehgeber 
möglich. Jetzt möchte ich doch nur berechnen wie schnell darf sich mein 
Drehgeber drehen damit ich mit dieser Abtastrate noch auswerten kann.
Dafür möchte ich wissen wie lange mein µC bzw. meine Schaltung für die 
AD-Wandlung braucht und was für eine Auflösung mein AD-Wandler haben 
sollte.

Zusätzlich würde ich gerne wissen wie ich eine Schaltung für so eine 
Auswertung aufbauen sollte.

von chick (Gast)


Lesenswert?

Vor grob 30 Jahren hatte meine Diplomarbeit genau damit zu tun. Die 
Arbeit war im Endeffekt für Heidenhain. Z80-System mit AD-Wandler.

Da gibt es irre Effekte in diesem "Sinus-Signal", was gar keins ist. Von 
Alterung und Langzeitkonstanz ganz zu schweigen.

Die einige Möglichkeit eine sinnvolle Genauigkeit zu erreichen waren 
LUT, Eichung des Gebers und Erstellen einer solchen LUT.

Vergiss 16 Bit und 1/1000 Genauigkeit ganz schnell, wenn Du an einer 
seriösen Lösung Interesse hast.


Viel Spaß dabei.

von Harald W. (wilhelms)


Lesenswert?

m.n. schrieb:

> Die Antwort nach der Winkelauflösung bleibst Du schuldig.

Ich habe mal 0,3 Winkelsekunden aus Martins Angaben errechnet.
Ich glaube, derart präzise Drehgeber gibts noch nicht einmal
bei Heidenhain. :-(
Gruss
Harald

von Falk B. (falk)


Lesenswert?

@  Harald Wilhelms (wilhelms)

>> Die Antwort nach der Winkelauflösung bleibst Du schuldig.

>Ich habe mal 0,3 Winkelsekunden aus Martins Angaben errechnet.

1000 Messwerte / 360° macht eher 0,3 Winkelminuten, Fakto 60 größer, 
wenn gleich auch nicht gerade Peanuts.

>Ich glaube, derart präzise Drehgeber gibts noch nicht einmal
>bei Heidenhain. :-(

Ach was, AUFLÖSUNG ist im Zeitalter des digitalen Selbstbetrugs doch 
einfach ;-)
Ich hab mal einen mit 25 Bit Auflösung in der Hand gehabt, physikalisch 
hatte der angeblich 19 Bit, der Rest interpoliert, bin mir aber nicht 
sicher.
An den Messwerten hat man gesehen, dass da viel "Schmuh" dabei war, denn 
erstens dauerte es einige hunder Millisekunden, ehe auf den LSBs 
halbwegs Ruhe war und auch dann hat es noch ganz ordentlich gezappelt. 
Und da lag das Ding auf dem Tisch.

von Harald W. (wilhelms)


Lesenswert?

Falk Brunner schrieb:

>>Ich habe mal 0,3 Winkelsekunden aus Martins Angaben errechnet.
>
> 1000 Messwerte / 360° macht eher 0,3 Winkelminuten, Fakto 60 größer,
> wenn gleich auch nicht gerade Peanuts.

Er schreibt von 4096 Strichen mit 1000facher Unterteilung sind
4096000 Messpunkte pro Umdrehung.
Gruss
Harald

von Falk B. (falk)


Lesenswert?

@  Harald Wilhelms (wilhelms)

>> 1000 Messwerte / 360° macht eher 0,3 Winkelminuten, Fakto 60 größer,
>> wenn gleich auch nicht gerade Peanuts.

>Er schreibt von 4096 Strichen mit 1000facher Unterteilung sind
>4096000 Messpunkte pro Umdrehung.

Er schreib vor allem konfus ;-)

Beitrag "Re: TTL-Signal von Drehgeber auslesen"

>Bei Drehgeber mit TTL-Signal: 10 kHz    (dreht sich schnell)
>Bei Drehgeber mit Sinussignal 10 Hz und 1000 mal pro Periode abtasten
>(dreht sich langsam)

>Es handelt also um 2 Schaltungen an die 2 unterschiedliche
>Inkrementalgeber angeschlossen werden

Beitrag "Re: TTL-Signal von Drehgeber auslesen"

>- Drehgeber mit 4096 Strichen und 1VSS
>- Drehgeschwindigkeit 1Hz
>- Annahme: Ideales Signal des Drehgebers -> mir geht es nur darum was
>der µC und die Schaltung leisten kann nicht was der Drehgeber
>tatsächlich anbietet.

Also was nun? 10Hz Sinus mit 1000 Abtastungen/Periode?

von m.n. (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> Er schreibt von 4096 Strichen mit 1000facher Unterteilung sind
> 4096000 Messpunkte pro Umdrehung.

Das hatte ich auch errechnet und daher keine Empfehlung gegeben, wie für 
die diffuse Fragestellung eine 'einfache' Nachbauschaltung aussehen 
könnte.

An anderer Stelle (heute 10:41) hatte ich eine Schaltung mit ATmega48 
gezeigt, die durchaus die Drehbewegung auswerten kann - allerdings mit 
'nur' 100-facher Sinusauswertung. Für lineare Heidenhain-Taster ist das 
ausreichend (0,1µm Auflösung bei MT25); deren sin/cos-Signale sind damit 
(vorsichtig formuliert) voll ausgereizt.

von Martin (Gast)


Lesenswert?

Die Frequenzangaben 10 bzw. 1 Hz sollten nur Richtwerte sein um mal eine 
Aussage zu bekommen wie schnell ich ein analoges sinusförmiges Signal 
abtasten kann. Das TTL Signal kann ich auch mit 50kHz noch abtasten und 
jetzt will ich eigentlich nur wissen wie schnell ich das bei dem 
analogen Signal mit einem AD Wandler 12bit? hinbekomme? Und wenn dann 
rauskommt der Geber darf sich nur mit 0,0001 Hz drehen reicht mir das 
vielleicht ja auch.
Ich weiß nur leider nicht was für eine Schaltung ich aufbauen soll um 
ein solchen Signal abzutasten. Einfach nur ein externer DA Wandler?
Wie schnell ist ein solcher DA Wandler 12bit, wie schnell ein 10bit DA 
Wandler?

von Roland (Gast)


Lesenswert?

Außerdem habe ich die 4096 Striche nicht im Zusammenhang mit 1000 
Abtastungen pro Periode erwähnt sondern nur den fiktiven Wert von 4096 
Strichen gewählt und die Frage dazu gestellt welche Teilungsperioden für 
die Abtastung erreichbar sind.

von Martin (Gast)


Lesenswert?

Ups, am fremden Rechner sollte man auch den Benutzernamen wechseln...

von m.n. (Gast)


Lesenswert?

Martin schrieb:
Oder Roland?
> Und wenn dann
> rauskommt der Geber darf sich nur mit 0,0001 Hz drehen reicht mir das
> vielleicht ja auch.

Vielleicht reicht Dir ja auch eine Tüte Gummibärchen?
Für mich bitte eine Vollmilch-Nuß-Schokolade - die beruhigt das Gemüt.

von Martin (Gast)


Lesenswert?

Möglich ist das.
Schon erstaunlich dass anstatt die Antwort auf die mehrfach gestellte 
Frage nach der Geschwindigkeit einer AD Wandlung immer nur dumme 
Sprüchen zu der geplanten Anwendungen kommen obwohl eh keiner weiß wie 
sie aussieht weil es unerheblich für die Frage ist.

von astroscout (Gast)


Lesenswert?

Harald Wilhelms schrieb:
> astroscout schrieb:
>
>> Die genauigkeit ist von der
>> Auflösung des ADC anhängig.
>
> Naja, zwischen Auflösung und Genauigkeit besteht aber ein ziemlich
> grosser Unterschied!
> Gruss
> Harald

ja, da geb ich dir recht, aber wenn die Auflösung schlecht ist, kann man 
keine große Genauigkeit erreichen, es hängt also schon alles irgendwie 
zusammen

von S.H. (Gast)


Lesenswert?

Martin schrieb:
> Schon erstaunlich dass anstatt die Antwort auf die mehrfach gestellte
> Frage nach der Geschwindigkeit einer AD Wandlung immer nur dumme
> Sprüchen zu der geplanten Anwendungen kommen obwohl eh keiner weiß wie
> sie aussieht weil es unerheblich für die Frage ist.

Deine Frage läßt erkennen, dass du dich noch nie intensiver mit 
AD-Wandlern beschäftigt hast. Sonst wüßtest du, dass die Wandlungszeit 
anhängig vom eingesetzen Wandlerprinzip sehr unterschiedlich ist und 
auch eine Kostenfrage ist. Guck doch einfach mal ein paar Datenblätter 
z.B. bei Maxim durch.
http://www.maxim-ic.com/products/data_converters/adcs/

von Martin (Gast)


Lesenswert?

Das stimmt wohl deshalb dachte ich das Forum ist eine gute Anlaufstelle 
um damit anzufangen.
Bei den externen AD Wandlern gibt es ja die sampling rate, aber wie 
sieht es mit der Datenübertragung aus, kostet die nicht die meiste Zeit 
wenn ich zB. mit 10 kHz abtasten möchte.
Wie ist es wenn ich zwei Signale gleichzeitig abfragen will und beide IC 
ihre Daten über SPI übertragen? Dann habe ich doch immer einen Versatz 
zwischen den beiden Werten?

von Falk B. (falk)


Lesenswert?

@  Martin (Gast)

>Bei den externen AD Wandlern gibt es ja die sampling rate,

Auch bei internen.

> aber wie
>sieht es mit der Datenübertragung aus, kostet die nicht die meiste Zeit
>wenn ich zB. mit 10 kHz abtasten möchte.

Nö. Die Leute haben sich meistens schon was gedacht, wenn sie ADC gebaut 
haben. Die Datenübertragung ist so gestaltet, dass die Wandlungszeit 
bzw. Rate voll nutzbar ist.

>Wie ist es wenn ich zwei Signale gleichzeitig abfragen will und beide IC
>ihre Daten über SPI übertragen? Dann habe ich doch immer einen Versatz
>zwischen den beiden Werten?

Man muss unterscheiden zwischen der Erfassung (Sample), der AD-Wandlung 
(Conversion) und dem Datentransfer. Viele AD-Wandler, wie auch der im 
AVR, haben nur eine Sample&Hold Stufe, können also immer nur einen Kanal 
gleichzeitig erfassen. Dazwischen wird per MUX umgeschaltet.

Bessere externe AD-Wandler haben mehrere Sample&Hold Stufen, erfassen 
also mehrere Kanäle echt gleichzeitig. Einige Typen haben dann nur einen 
echten AD-Wandler, der nach und nach die gespeicherten Spannungen 
konvertiert. Bessere Typen haben für jeden Kanal einen eigenen 
AD-Wandler und schaffen somit mehr Datendurchsatz.

MfG
Falk

von SNR (Gast)


Lesenswert?

Vllt wäre auch der MCP3901 interessant?

von Martin (Gast)


Lesenswert?

Danke das hilft mir weiter!
Werde mir den IC und vielleicht einige Alternativen morgen mal genauer 
anschauen.

von Martin (Gast)


Lesenswert?

Ok vielleicht könnt ihr mir doch bei der Suche helfen.
Also ich bräuchte einen IC, der 2 Eingänge gleichzeitig lesen kann. Die 
Auswertung kann nacheinander erfolgen.
Also Schnittstelle SPI und eine Sample-Rate von mindestens 100ksps.
12bit wäre gut ansonsten tut es auch erstmal 10bit.
Danke

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.