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
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
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
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
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.
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!
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
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
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
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.
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.