Forum: Mikrocontroller und Digitale Elektronik Glaßmaßstab und Laser-Abstandssensor auf mega2560 auslesen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Hugo H. (hugo_h512)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich möchte in meiner Projektarbeit einen Laser-Abstandssensor 
Micro-epsilon NCDT1220 und ein Glaßmaßstab-Längenmessgerät Heidenhain 
LS328 gleichzeitig auslesen. Der Laser-Sensor ist auf dem Glaßmaßstab 
montiert.
Zur Verügung steht mir ein STK600-Entwicklungsboard mit Mega2560.
Der Glaßmaßstab mit TTL Ausgang hat einen Flankenabstand angegeben <=5µs 
(soll wohl >= sein). Der Laser sendet den Messwert(16 bit) mit 926,1 
kBaud über RS-422 auf Trigger oder mit festgelegter Rate.
Den Glaßmaßstab möchte ich mit dem Code von DrehgeberWiki 
https://www.mikrocontroller.net/articles/Drehgeber
auslesen. Die Abstandswerte des passend getriggerten Laser-Sensors 
mittels MAX490 basiertem RS422-TTL converter empfangen. Anschließend 
über UART die beiden zusammengehörenden Messwerte an einen 
SingleBoard-Computer als Messwertkombination schicken. Der SBC dient 
dann der HMI und Messwertausgabe.

Ist das ein umsetzbarer Ansatz oder ist der Mega2560 auf 16Mhz zu 
langsam? Muss ich einen schnelleren nehmen?

: Bearbeitet durch User
von Falk B. (falk)


Bewertung
1 lesenswert
nicht lesenswert
Hugo H. schrieb:

> Der Glaßmaßstab mit TTL Ausgang hat einen Flankenabstand angegeben <=5µs
> (soll wohl >= sein).

Ganz schön flott!

> Der Laser sendet den Messwert(16 bit) mit 926,1
> kBaud über RS-422 auf Trigger oder mit festgelegter Rate.

Auch nicht gerade langsam, geht aber, wenn er das per Trigger macht.

> Den Glaßmaßstab möchte ich mit dem Code von DrehgeberWiki
> https://www.mikrocontroller.net/articles/Drehgeber
> auslesen.

Prinzipiell richtig, aber bei DEN Frequenzen nicht mehr sinnvoll in 
Software machbar.

> Die Abstandswerte des passend getriggerten Laser-Sensors
> mittels MAX490 basiertem RS422-TTL converter empfangen. Anschließend
> über UART die beiden zusammengehörenden Messwerte an einen
> SingleBoard-Computer als Messwertkombination schicken. Der SBC dient
> dann der HMI und Messwertausgabe.

Das ist trivial und nur Fleißarbeit.

> Ist das ein umsetzbarer Ansatz oder ist der Mega2560 auf 16Mhz zu
> langsam?

Ja.

> Muss ich einen schnelleren nehmen?

Nö, du mußt Brain 2.0 nutzen!

Bei 5us Pulsbreite sollte man mindestens alle 1-2us abtasten, macht 
0,5-1MHz Abtastrate. Daran sollte man erkennen, daß eine CPU mit 16 MHz 
das nicht in Software kann, nicht mal dann, wenn sie zu 100% mit 
hochoptimiertem Assembler arbeitet. Denn auch dann schafft man "nur" 
~870kHz Abtastfrequenz.

Beitrag "Re: Versetzte Rechtecksignale auswerten, kein drehgeber"

Mein Tip. Nimm einen ATXmega oder einen halbwegs modernen 32Bitter ala 
STM32. Die CPU ist eigentlich egal, entscheidend ist, daß der uC einen 
Quadraturdekoder in Hardware drin hat. Der erledigt dann die Dekodierung 
und die CPU hat alle Zeit der Welt, das auszuwerten.
Den Meßwert vom Laser kann man auch bei ~1Mbit/s noch in Software 
empfangen und dekodieren, denn es passiert über einen Trigger, da kann 
sich die CPU zu 100% darauf konzentrieren. GGF. nutzt man das SPI dafür, 
da muss man mal ein wenig tüfteln.

Wenn es denn unbedingt der ATmega2650 sein soll, musst du die 
Dekodierung des Glasmaßstabs in externe Hardware auslagern. Im Link oben 
ist ein ATtiny2313 dafür genutzt worden. Der reicht in der 8Bit Variante 
gerade so aus, erzeugt dann aber ganz ordentlich Datendurchsatz auf dem 
UART. Das kann der ATmega2650 noch schlucken, ist aber nicht sinnvoll. 
Ich würde den 16 Bit Code auf 1 Kanal umbauen, damit erreicht man sicher 
1Msmps und alles ist gut und der UART sendet mit deutlich geringerer 
Datenrate. GGf kann man de Code sogar auf 32 Bit aufbohren und damit 
einen Asolutzähler aufbohren, der auch bei maximaler Aussteuerung des 
Glasmaßstabs keinen Überlauf erzeugt. Danit spart man sich einen 
Auswertung der Überläufe im ATmega2650.

: Bearbeitet durch User
von Hugo H. (hugo_h512)


Bewertung
0 lesenswert
nicht lesenswert
Danke soweit :)
Wegen dem STK600 und vorhandenem Hardware Debugger würde ich gern bei 
AVR bleiben. Ich werde mir einen ATXMEGA128A1U für diese Aufgabe 
organiseren.

> Ich würde den 16 Bit Code auf 1 Kanal umbauen, damit erreicht man sicher 1Msmps
>und alles ist gut und der UART sendet mit deutlich geringerer Datenrate.

Das habe ich nicht verstanden.

: Bearbeitet durch User
von Oliver S. (oliverso)


Bewertung
1 lesenswert
nicht lesenswert
Falk B. schrieb:
> Bei 5us Pulsbreite sollte man mindestens alle 1-2us abtasten

Müsste man, wennn so wäre. Da das aber ein linearer Maßstab mit 
Quadraturencoderausgang ist (ein abgewickelter Drehgeber), sind die 
Angabe vom TO sinnlos, und dein Tipp damit auch.

Der Maßstab hat eine 20 Mikrometer-Teilung, und gibt damit alle 5 
Mikrometer einen Flankenwechsel aus. Den kann man problemlos per 
externem Interrupt und/oder Input capture einlesen. Wie schnell die 
Flankewechsel dann kommen, hängt alleine von der Verfahrgeschwindigkeit 
ab, von der der To aber nichts schreibt. Ob für dessen Anwendung ein 
Mega mit Uhrenquartz ausreicht, oder es doch eine eigene 
Auswerteschaltung braucht, wissen die Götter.

Oliver

: Bearbeitet durch User
von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
Hugo H. schrieb:
> AVR bleiben. Ich werde mir einen ATXMEGA128A1U für diese Aufgabe
> organiseren.

Ein riesiger AVR für fast nix ;-)

>> Ich würde den 16 Bit Code auf 1 Kanal umbauen, damit erreicht man sicher 1Msmps
>>und alles ist gut und der UART sendet mit deutlich geringerer Datenrate.
>
> Das habe ich nicht verstanden.

Der Assemblercode hier im Link arbeitet mit 8 Drehgeberkanälen und 16 
Bit Zähler pro Kanal.

https://www.mikrocontroller.net/topic/goto_post/4441280

Den kann man auf 1 Drehgeber umbauen und dabei noch die Abtastrate ein 
wenig steigern. Der AVR, hier ein ATtiny2313, sendet dann periodisch per 
UART den Zählerstand an den großen AVR.

von Falk B. (falk)


Bewertung
0 lesenswert
nicht lesenswert
Oliver S. schrieb:
> Falk B. schrieb:
>> Bei 5us Pulsbreite sollte man mindestens alle 1-2us abtasten
>
> Müsste man, wennn so wäre.

Das IST auch SO!

> Da das aber ein linearer Maßstab mit
> Quadraturencoderausgang ist (ein abgewickelter Drehgeber),

Danke für die Aufklärung, aber du trägst Eulen nach Athen!

> sind die
> Angabe vom TO sinnlos, und dein Tipp damit auch.

Sagt wer?

> Der Maßstab hat eine 20 Mikrometer-Teilung, und gibt damit alle 5
> Mikrometer einen Flankenwechsel aus.

Ja. Wenn man den Schlitten mit 20um/5us = 4m/s bewegt, erreicht man eben 
diese Ausgangsfrequenz! Mag sein daß man diese Geschwindigkeit real nie 
erreicht, aber Reserven haben noch nie geschadet. Und selbst wenn man 
nur 10% ansetzt, würde das 100kHz Abtastrate erfordern. Das Schafft ein 
AVR noch in Software, ist aber nicht unbedingt optimal. Ist aber auch 
egal, wenn der OP einen Mikrocontroller mit Hardwaredekoder nutzt.

> Den kann man problemlos per
> externem Interrupt und/oder Input capture einlesen.

FALSCH! Warum das FALSCH ist steht im Artikel Drehgeber und wurde 
schon  1001mal diskutiert!

> Wie schnell die
> Flankewechsel dann kommen, hängt alleine von der Verfahrgeschwindigkeit
> ab, von der der To aber nichts schreibt.

Ja eben! Und da die Sache nicht nur in Zeitlupe funktionieren soll, muss 
man mit der maximalen Frequenz rechnen und entspechend dimensionieren!

> Ob für dessen Anwendung ein
> Mega mit Uhrenquartz ausreicht,

Wer sprach davon?

> oder es doch eine eigene
> Auswerteschaltung braucht, wissen die Götter.

Schön dumm gelabert! Bravo! Hier hast du einen Keks!

von Hugo H. (hugo_h512)


Bewertung
0 lesenswert
nicht lesenswert
Die maximale Verfahrgeschwindigkeit beträgt antriebsbedingt 0,2 m/s. 
Jedoch will ich nicht ausschließen, daß durch stick-slip Effekte(Rucken) 
diese Geschwindigkeit kurzzeitig höher sein kann.

: Bearbeitet durch User
von Oliver S. (oliverso)


Bewertung
1 lesenswert
nicht lesenswert
Falk B. schrieb:
> FALSCH! Warum das FALSCH ist steht im Artikel Drehgeber und wurde
> schon  1001mal diskutiert!

Ach je. Der Maßstab liefert völlig prellfreie Flanken. Da braucht es den 
ganze Bastel-Wastel-Kram aus dem Artikel nicht.

Oliver

von Georg (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Oliver S. schrieb:
> Ach je. Der Maßstab liefert völlig prellfreie Flanken

Quatsch, wenn die Position zufällig auf dem Übergang von einem Gray Code 
zum nächsten steht kann ein Ausgang beliebig schnell hin und her 
schalten, eben das wird durch die übliche Software so ausgewertet dass 
sich keine Falschzählung ergibt.

Oliver S. schrieb:
> Da braucht es den
> ganze Bastel-Wastel-Kram aus dem Artikel nicht.

Eine völlig unverantwortliche Aussage. Es gibt hier halt immer wieder 
Pseudofachleute, die überhaupt nicht wissen worum es geht.

Falk B. schrieb:
> steht im Artikel Drehgeber und wurde
> schon  1001mal diskutiert!

Da muss ich dir recht geben, aber wie man sieht nützt es halt nichts bei 
solcher Inkompetenz.

Hugo H. schrieb:
> Die maximale Verfahrgeschwindigkeit beträgt antriebsbedingt 0,2 m/s

Na immerhin etwas. Aber du hast offensichtlich nicht verstanden, dass es 
sich um einen Inkrementalmassstab handelt, der nach dem Einschalten als 
erstes genullt werden muss - dafür ist die dritte Spur da.

Georg

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Falk B. schrieb:

> Ja. Wenn man den Schlitten mit 20um/5us = 4m/s bewegt, erreicht man eben
> diese Ausgangsfrequenz!

Kann er aber nicht. Dass DB des Gebers schränkt nämlich die maximal 
mögliche Translationsgeschwindigkeit auf 60m/min (=1m/s) ein...

>> Den kann man problemlos per
>> externem Interrupt und/oder Input capture einlesen.
>
> FALSCH! Warum das FALSCH ist steht im Artikel Drehgeber und wurde
> schon  1001mal diskutiert!

Und du hast trotz der vielen länglichen Diskussionen immer noch rein 
garnix gelernt! Das nenne ich ein schönes Beispiel für eine vollständige 
Merkbefreiung.

1) Wenn von vornherein schon nix prellt, braucht generell auch rein 
garnix entprellt zu werden.
2) Selbst wenn wirklich etwas prellt, braucht bei einem 
Quadratur-Encoder nix entprellt zu werden. Dafür sorgt das grundlegende 
Funktionsprinzip eines solchen. Es muß nur in der Software (oder ggf. 
der Hardware) korrekt umgesetzt sein.

von Dumpfbacke (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe Glaßmaßstab geg**gelt und nichts dazu gefunden.
Entweder G**gle ist kaputt, oder mein Komputer.

Was muss man sich darunter vorstellen?

Ist das sowas wie Wiederstand oder Quartz?

Oder vielleicht sogar LCD-Disbleh-Anzaige?

von Falk B. (falk)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
OM!

von m.n. (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Hugo H. schrieb:
> Wegen dem STK600 und vorhandenem Hardware Debugger würde ich gern bei
> AVR bleiben.

Schaltungen/Programme für ATtiny findest Du hier: 
http://www.mino-elektronik.de/mt12_iic/mt12_iic.htm
Probiere einfach aus, ob es passt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.