Hallo zusammen, ich möchte während einer Messung im Bereich Maschinenbau einen „linear incremental magnetic encoder“ einsetzen. (http://www.rls.si/products/linear-magnetic-encoders/rlc2hd-miniature-linear-pcb-level-incremental-magnetic-encoder / ca 40 €) Dieser soll eine nahezu sinusförmige Hubbewegung hochauflösend mit 5 µm erfassen. Bei einer Amplitude von 10 mm ergeben sich 4000 Schritte, sprich 12 bit. Problematisch ist dabei die Abtastung der hohen Maximalgeschwindigkeit von bis zu 20 m/sec. Laut Datenblatt des Sensors (http://www.rls.si/fileuploader/download/download/?d=0&file=custom%2Fupload%2FData_sheet_RLC2HD_miniature_PCB_level_incremenal_magnetic_encoder.pdf) und rechnerisch nachvollziehbar ist nämlich dafür eine minimale Abtastfrequenz von ca. 10 MHz erforderlich (4x Quadrature Decoding). Die aktuelle Position möchte ich mit 10 kHz abfragen. In diesem Beitrag wurde eine Lösung mit 9 Takten für einen einzelnen Encoder vorgestellt: Beitrag "Re: Versetzte Rechtecksignale auswerten, kein drehgeber" (letzter Beitrag). Das wären dann 90 MHz Taktfrequenz. In Frage käme nach meinen Recherchen daher ein STM32 mit 100 MHz. Dieser soll auch ein Encoder Interface besitzen. Eine weitere Möglichkeit sah ich in den Bausteinen HCTL-2000, HCTL-2016, HCTL-2020, die wohl mit 14 MHz getaktet werden(http://pdf.datasheetcatalog.com/datasheet/hp/HCTL-2000.pdf). Der interne digitale Filter braucht laut Datenblatt jedoch drei Takte, um ein gültiges Signal zu generieren. Das Mindert die effektive Abtastrate auf ca. 5 MHz. Ich würde daher auf den STM32 setzen, habe jedoch nur Erfahrung mit Atmegas, und kenne die STM32 noch nicht. Ich würde mich sehr über Ideen und Vorschläge zur Umsetzung der Signalerfassung freuen. Vielen Dank und viele Grüße Zulu
Vergiß alle Vorschläge, die das per Software-Dekoder erledigen wollen, insbesondere diejenigen, die nur Erfassen aber nichts ausgeben können ;-) Wenn Du möchtest, könnte ich Dich mit THCT12024 versorgen, die man auch mit einem AVR auslesen kann. STM32 wäre eine Alternative. Da gibt es Nucleo-Board für wenig Geld und dennoch hoher Leistung. Zum Beispiel STM32F411-nucleo.
Zulu schrieb: > Ich würde mich sehr über Ideen und Vorschläge zur Umsetzung der > Signalerfassung freuen. Wenn die HCT2xxx nicht schnell genug sind, muss man eben mit schnellerer Hardware arbeiten, mit programmierbarer Logik ist das kein Problem. Ich würde einen Baustein nehmen, der genügend Register für einen 32bit-Zähler hat plus Zwischenspeicher zum synchronen Auslesen, das ist heute ja kein Problem. Auswertung per Software ist in dem Bereich einfach unsinnig, auch wenn man Controller mit GHz bekommt. Georg
Hallo Zulu, 5µm Auflösung bei 4-fach Auswertung ergeben 20µm pro Phase (A oder B), d.h. bei 20m/s 1MHz. Für erste Versuche kann ich dir den STM32F4 Discovery empfehlen: für wenig Geld kannst du die Schnittstelle testen. Wir haben öfters vergleichbare Aufgabenstellungen und nehmen ebenfalls gerne solche Testboards als "Sensortester" oder auch um den Sensor zu emulieren. Ich habe früher mit TI gearbeitet (bzw. damals Luminary Micro), deren "Quadrature Encoder Interface" hat mir sehr gut gefallen. Bei ST läuft alles unter "Timer" und ist ev. anfangs schwerer zu verstehen (den Aufwand aber definitiv wert - die Timer gut zu verstehen ist eine wichtige Grundlage). Aufpassen bei der elektrischen Schnittstelle: die Anwendung deutet auf ein industrielles Umfeld (lange Leitungen, Störungen: differentielle Übertragung, Schutzbeschaltung...). Für erste Tests am Schreibtisch reicht aber eine einfache Auswertung der beiden Phasen an den 5V-toleranten Eingängen des µC...
Vielen Dank für die Beiträge. -> STM32 Das besagte Nucleo Board (http://www.watterott.com/de/Nucleo-STM32F411) hat eine STM32F411RE. Das Datenblatt der STM32F411RE (http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00115249.pdf, S. 27, S. 101) spricht von 100 MHz, Max. timer clock, bzw 50 MHz Max. interface clock. Im Reference Manual (http://www.st.com/web/en/resource/technical/document/reference_manual/DM00119316.pdf, S.271) fand ich die Funktionsbeschreibung des Encoders, der genau das macht, was er soll bzw. was ich benötige. Die STM32F4-Discovery scheint einen ähnlichen Prozessor, wie das Nucleo Board zu besitzen. Letztendlich würde ich den Encoder-Counter-Register mit den 10kHz auslesen, und den Wert per USART an den PC versenden. -> THCT12024 Die THCT12024 scheint auch sehr alt zu sein, was aber nichts bedeuten muss. Das gescannte Datenblatt ist schwer lesbar, aber ich vermute, dass hier auch 10 Mhz erreicht werden. Bevorzugen würde ich die STM32 -> Programmierbare Logik Ich glaube, dass der Aufwand mit dem STM32 für mich geringer wäre und die Einarbeitung in die STM32 für mich mehr Gewinn bringen würde. > 5µm Auflösung bei 4-fach Auswertung ergeben 20µm pro Phase > (A oder B), d.h. bei 20m/s 1MHz. Nach meinem Verständnis bedeutet die 4-fach Auswertung, dass alle Flanken einer Periode zur Auswertung und zur Erhöhung der Auflösung herangezogen werden. Ja, 20µm entspricht einer Periode. 5µm einen viertel, da wären wir bei 4 MHz Abtastrate, und der Hersteller des Sensors rechnet noch einen Faktor von 0,4666 hinzu, wodurch 8.5727 MHz bzw. gerundet meine 10 MHz zu Stande kommen. > Aufpassen bei der elektrischen Schnittstelle: Die Anwendung deutet > auf ein industrielles Umfeld hin Ja, der Versuch soll in einem Prüfstand laufen, wobei jedoch die Elektronik eine Batterieversorgung bekommt und ca 10 cm Abstand zum Sensor hat. Alles in einem Metallgehäuse. Ich rechne nicht mit großen Störungen. > 5V Tolerant …ist schon mal gut zu wissen. An einem Spannungsteiler soll es nicht scheitern. Nach meinem Eindruck müsste die Messung mit dem Nucleo Board oder STM32F4-Discovery möglich sein. Oder übersehe ich da etwas?
@ Zulu (Gast) >Letztendlich würde ich den Encoder-Counter-Register mit den 10kHz >auslesen, und den Wert per USART an den PC versenden. Und der kann das mit 10 kHz sinnvoll verareiten? >-> Programmierbare Logik >Ich glaube, dass der Aufwand mit dem STM32 für mich geringer wäre und >die Einarbeitung in die STM32 für mich mehr Gewinn bringen würde. so ist es. Vergiss die Sonderchips und AVR-Softwaregeschichte, das war mehr eine sportliche Herausforderung als prakrtisch wirklich sinnvolle Lösung. Nimm einen moderen Controller, meinetwegen STM32 mit eingebautem Quadraturdecoder und fertig. Einfacher und kompakter geht es nicht. >Nach meinem Verständnis bedeutet die 4-fach Auswertung, dass alle >Flanken einer Periode zur Auswertung und zur Erhöhung der Auflösung >herangezogen werden. Ja. > Ja, 20µm entspricht einer Periode. 5µm einen >viertel, da wären wir bei 4 MHz Abtastrate, und der Hersteller des >Sensors rechnet noch einen Faktor von 0,4666 hinzu, Sicherheitsfaktor. > wodurch 8.5727 MHz >bzw. gerundet meine 10 MHz zu Stande kommen. Scheint zu passen. >> 5V Tolerant >…ist schon mal gut zu wissen. An einem Spannungsteiler soll es nicht >scheitern. Vergiss es. Nimm einen passenen Pegelwandler. 74HC4050 & Co.
:
Bearbeitet durch User
Zulu schrieb: > -> THCT12024 > Die THCT12024 scheint auch sehr alt zu sein, was aber nichts bedeuten > muss. Das gescannte Datenblatt ist schwer lesbar, aber ich vermute, dass > hier auch 10 Mhz erreicht werden. Das war der wohl letzte Nachfolger des 74LS2000 und kann mit 25 MHz getaktet werden. Seine Busschnittstelle paßt recht einfach an einen 8051 und würde heute mit einem ATmega162, ..64, ..128 usw. direkt ansprechbar sein. Wenn man schon AVR einsetzt, wäre damit keine Einarbeitungszeit verbunden. Zulu schrieb: > Die STM32F4-Discovery scheint einen ähnlichen Prozessor, wie das Nucleo > Board zu besitzen. Der ..407 ist der große, ältere Bruder des ..411. Das Nucleo-Board ist kompakt, recht unverbaut, hat aber keine FSMC-Schnittstelle aber dennoch eine FPU und 128 kB RAM.
Die Cortex-M von NXP haben auch QEI und sind auf verschiedenen Boards verbaut die sich gut für solche Projekte nutzen lassen: LPC1769, LPC1549 oder LPC4088, zB jeweils als LPCXpresso Board von Embedded Artists. Der letztere ist dabei die Luxusversion mit Ethernet, USB, viel Speicher und Display Interface, der kann wahrscheinlich den ganzen Teststand steuern. Aus dem Datenblatt: This Quadrature Encoder Interface (QEI) has the following features: • tracks encoder position. • increments/ decrements depending on direction. • programmable for 2X or 4X position counting. • velocity capture using built-in timer. • velocity compare function with less than interrupt. • uses 32-bit registers for position and velocity. • three position compare registers with interrupts. • index counter for revolution counting. • index compare register with interrupts. • can combine index and position interrupts to produce an interrupt for whole and partial revolution displacement. • digital filter with programmable delays for encoder input signals. • can accept decoded signal inputs (clock and direction).
> Und der kann das mit 10 kHz sinnvoll verarbeiten?
Das ist eine berechtigte Frage. Der PC soll die Daten speichern.
Gelegentlich wäre eine visuelle Ausgabe schön, aber nicht notwendig. Die
Auswertung der Daten kann auch nach der Messung erfolgen.
10 kHz * 16bit sind 160kbit/sec. Diese zu übertragen halte ich für nicht
unmöglich.
Es ist für die Übertragung an den PC eine Funkstrecke per Bluetooth
(BTM-222, BlueNiceCom o.ä.) angedacht.
Alternativ dazu wäre eine SD-Karte eine Lösung.
@ Falk Brunner (falk)
Danke für den Hinweis mit den Pegelwandlern. Als Erklärung nehme ich
mit: Es wurde hier im Forum geschrieben, dass der Spannungsteiler
zusammen mit parasitären Kapazitäten einen Tiefpass bildet, der bei
höheren Frequenzen stören kann.
@ m.n. (Gast)
Auch danke für die Erklärung bezüglich THCT12024. Ich sehe den THCT12024
als Plan-B.
@ Zulu (Gast) >10 kHz * 16bit sind 160kbit/sec. Diese zu übertragen halte ich für nicht >unmöglich. Die Verwendung der doppelten Verneinung ist im Deutschen nicht unüblich ;-) >Es ist für die Übertragung an den PC eine Funkstrecke per Bluetooth >(BTM-222, BlueNiceCom o.ä.) angedacht. Naja, 160 kB/s netto. Und gerade bei Funk braucht man eine Fehlersicherung gegen kurzzeitigen Datenausfall etc. >Alternativ dazu wäre eine SD-Karte eine Lösung. Das schon eher. >Danke für den Hinweis mit den Pegelwandlern. Als Erklärung nehme ich >mit: Es wurde hier im Forum geschrieben, dass der Spannungsteiler >zusammen mit parasitären Kapazitäten einen Tiefpass bildet, der bei >höheren Frequenzen stören kann. Ja.
Zulu schrieb: > 10 kHz * 16bit sind 160kbit/sec. Reicht Dir tatsächlich ein 16 Bit Zähler? Ich nehme immer 32 Bit, wenn es um Weggeber geht. Bei kontinuierlicher Übertragung und mit passendem Protokoll kann man allerdings auch nur die Differenz zum vorherigen Wert übertragen, um Bandbreite zu sparen. Jojo S. schrieb: > Die Cortex-M von NXP haben auch QEI und sind auf verschiedenen Boards > verbaut die sich gut für solche Projekte nutzen lassen: Na ja, dann muß ich auch noch die RX von Renesas erwähnen, bei denen der Referenzimpuls eleganter gehandhabt werden kann als bei den STM32 ;-)
> 10 kHz * 16bit sind 160kbit/sec. Das könnte man noch gut per UDP übers Ethernet schicken, Pakete im 1 ms Takt mit je 10 Pos.Werten (auch 32 Bit). m.n. schrieb: > Na ja, dann muß ich auch noch die RX von Renesas erwähnen, bei denen der > Referenzimpuls eleganter gehandhabt werden kann als bei den STM32 ;-) die PIC Freunde melden sich bestimmt auch noch :-)
Zulu schrieb: > ich möchte während einer Messung im Bereich Maschinenbau einen „linear > incremental magnetic encoder“ einsetzen. > (http://www.rls.si/products/linear-magnetic-encoders/rlc2hd-miniature-linear-pcb-level-incremental-magnetic-encoder > / ca 40 €) Dieser soll eine nahezu sinusförmige Hubbewegung > hochauflösend mit 5 µm erfassen. Bei einer Amplitude von 10 mm ergeben > sich 4000 Schritte, sprich 12 bit. Problematisch ist dabei die Abtastung > der hohen Maximalgeschwindigkeit von bis zu 20 m/sec. Laut Datenblatt > des Sensors > (http://www.rls.si/fileuploader/download/download/?d=0&file=custom%2Fupload%2FData_sheet_RLC2HD_miniature_PCB_level_incremenal_magnetic_encoder.pdf) > und rechnerisch nachvollziehbar ist nämlich dafür eine minimale Ist da nicht Seite 4 des Datenblattes ein Problem? Maximalgeschwindigkeit ist doch eh nur 3,65m/s.
Dspic33ep serie, zb. dsPIC33EP512MU810 haben zwei Quadrature Encoder Interface (QEI).
Was mir auf Anhieb an dem LPC4088 gefällt ist, dass dort 32 MB SDRAM verbaut sind. Der Preis ist relativ hoch, aber wäre noch ok (59 EUR). Lieber würde ich aber mit etwas kleinerem anfangen. Die STM32-H407 von Olimex hat eine SD-card Slot (29.95 EUR). (https://www.olimex.com/Products/ARM/ST/STM32-H407/open-source-hardware) Für den STM32 Nucleo gibt es ein Bluetooth-Shield. (15.90 EUR). (http://www.reichelt.de/?ARTICLE=154313&PROVID=2788&wt_mc=amc141526782519998&&gclid=COC95ruGg8cCFXDHtAod8oIOhw) Ich denke, dass ich mit dem STM32 Nucleo beginne, und dort den Encoder und eine SD-Karte anschließen werde. Darf ich als Anfänger die Frage stellen, ob CooCox empfehlenswert ist, bzw. was Ihr für den Einstieg für einen Toolchain empfehlen würdet? Vielen Dank.
Bei den IDEs sind die Geschmäcker verschieden, die 'harten' Profis kodieren per Hand! Vielleicht ist eine Kickstart Version von IAR etwas für Dich. Auch Keil bietet soetwas an (beide kostenlos). Beide können interne Variablen zur Laufzeit anzeigen. Bei IAR heißt das 'live watch'. Für Dich würde das bedeuten, daß Du den Zähler in diesem Fenster ansehen kannst, ohne erst Daten zum PC übertragen zu müssen. Falls der Zähler nicht richtig arbeiten sollte, kannst Du bei laufendem Programm die Bits in den Registern ändern und sofort erkennen, ob die Änderung erfolgreich war. Die Codebegrenzung auf 32 kB stört nicht, da Du diese Größe bei weitem nicht brauchen wirst. Für Deine Anwendung schätze ich den Bedarf auf < 10 kB Code.
Ich habe einen kleinen und einfachen Board gefunden, der mir als passend erscheint, auch wenn für 30 € relativ wenig auf dem Board ist: "MINI-M4 for STM32". Er hat den - STM32F415RG, mit 64 pins - Encoder im Chip, - bis zu 168 Mhz, - 1MB Flash, http://www.mikroe.com/mini/stm32/ http://www.libstock.com/projects/view/513/mini-m4-stm32-board-examples - Datasheet of STM32f415RG: http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00035129.pdf - Reference Manual of STM32f415RG: http://www.st.com/web/en/resource/technical/document/reference_manual/DM00031020.pdf Der "MINI-M4 for STM32" lässt sich nur per Bootloader programmieren. (siehe Seite 6 ff) http://www.mikroe.com/downloads/get/1946/mini_m4_stm32_user_manual.pdf Ich habe vor noch einen ST-LINK/V2 kaufen. Kann ich den über einen Adapter, siehe Schaltung im Anhang, an den µC anschließen? Braucht man diese ganzen Pull-Ups, Pull-Downs? In einer weiteren Schaltung von OLIMEX sind nur Pull-Downs bestückt. @ m.n. (Gast) Danke für die Tipps. Ich habe jetzt das IAR installiert.
Zulu schrieb: > Ich habe einen kleinen und einfachen Board gefunden, der mir als passend > erscheint, auch wenn für 30 € relativ wenig auf dem Board ist: "MINI-M4 > for STM32". Er hat den > - STM32F415RG, mit 64 pins > - Encoder im Chip, > - bis zu 168 Mhz, > - 1MB Flash, Der ..415 ist ein ..417 (..407 mit Crypto-Einheit) im 64 pol. Gehäuse. Ihm fehlt der FSMC, läßt sich aber wie ein ..407 handhaben. Zulu schrieb: > Danke für die Tipps. Ich habe jetzt das IAR installiert. Das ist gut. Ich hatte mir auch noch einmal die neueste Version installiert und damit mein Nucleo-411RE-Board angesprochen. Die 'live watch'-Geschichte funktioniert nach wie vor.
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.