Hi, ich habe hier einen DC Motor der mit bis zu 6000 Touren dreht. Ein auf der Welle aufgeflanschter quadruple Encoder (A, A-, B, B-) dient dabei zur Poitionsbestimmung. Der Encoder ist verdammt schnell - bzw schickt viele Bits/Umdrehung - und da frag ich mich, was so ein ADC auswerten kann, ohne sich zu verschucken. Gruß
Sowas wird nicht mit einem ADC ausgewertet, sondern mit normalen
Eingangs-Pins.
> Der Encoder ist verdammt schnell - bzw schickt viele Bits/Umdrehung -
Zahlen?
Habe gerade aufs Datenblatt geschaut; der Encoder haut 2500 Bits raus. Bei bis zu 6000rpm, macht das schonmal 250.000 Bits/Sec. In Falks Link steht: Die Auswertung eines Drehgebers macht man am besten in einem Timer-Interrupt, der mit einer festen Frequenz ausgeführt wird. Die Abtastfrequenz muss so hoch sein, dass bei maximaler Drehzahl zwischen zwei Codewechseln mindestens 1 Abtastung erfolgt, besser jedoch mehr. Interrupt und Co sind Neuland für mich. 250.000 ist schon ne ordentliche Hausnummer...
@ Lazlo Panaflex (Gast) >Habe gerade aufs Datenblatt geschaut; der Encoder haut 2500 Bits raus. >Bei bis zu 6000rpm, macht das schonmal 250.000 Bits/Sec. Hast du eine Linka auf das Datenblatt oder kannst du es als Anhang posten? >Interrupt und Co sind Neuland für mich. Tja. >250.000 ist schon ne ordentliche Hausnummer... Ziemlich viel. Rein in Software wird das wahrscheinlich nix. Da muss ein Hardwaredecoder her. MfG Falk
Warum zum Geier fragst Du dann nicht nur eine Leitung des Drehencoders ab? Gibt genau einen Puls pro Umdrehung.
Das ist ein - auf einem MCG Servo Motor aufgeflanschter - Encoder aus einem in der Halbleiterindustrie verwendeten Handlingsystem (Intel). Was bringt es, wenn ich nur A oder B abfrage? Ich brauche beide um die Drehrichtung festzustellen und wo hab ich denn nur einen Puls/Umdrehung, wenn ich nur A oder B nutze? A sowie B geben um jeweils 90° verschoben (elektrisch, nicht mechanisch) 2500 - in Worten: Zweitausendfünhundert - Pulse pro Umdrehung aus. Ich muss also mit mindestens 500kHz abtasten. Mutter sagte bereits: Wenn man keine Ahnung hat, einfach mal die Fresse halten ;) @Falk: Hier das Datenblatt: http://www.quantumdev.com/pdf/qd145.pdf Könntest du das mit dem Hardwaredecoder bitte etwas präzisieren, bzw mir einen Link zu entsprechenden Infos posten?
>> Mutter sagte bereits: Wenn man keine Ahnung hat, einfach mal die Fresse >> halten ;) Deine Mutter hätte besser daran getan dir Manieren beizubringen.
@ Lazlo Panaflex (Gast) >Was bringt es, wenn ich nur A oder B abfrage? Nix. Travel Rec meint wohl eher den Indeximpuls. Für eine Drehzahlmessung reicht es, zum Positionieren natürlich nicht. >Mutter sagte bereits: Wenn man keine Ahnung hat, einfach mal die Fresse >halten ;) Naja, inhaltlich richtig, Form diskussionswürdig. >Könntest du das mit dem Hardwaredecoder bitte etwas präzisieren, bzw mir >einen Link zu entsprechenden Infos posten? Hab ich doch schon. Der Artikel Drehgeber ist dein Freund. MfG Falk
Naja ein Timerinterrupt aller 2µs ist etwas ungünstig. Ein Pin Interrupt ist auch nicht schön. Da muss deine Interruptroutine schon verdamt kurz sein weil du sonst garnichts machen kannst. Dreht der Motor nur in eine Richtung? Wenn ja würde ich ein XOR Gatter davorklemmen und ein Timer mit externen Takt benutzen. Wenn dir die Hälfte der Auflösung ausreicht, dann kannst du auch direkt ein Pin anschließen, ohne Gatter. Ansonsten haben, glaub ich, die XMegas einen Hardware Decoder für solche Anwendungen. Die machen die Auswertung also nebenbei ohne das dafür Takte benötigt werden.
Manieren hin oder her; Montags liegt meine Reizschwelle ziemlich niedrig. Vielleicht hätte meine Mutter Sonntags weniger oft Kohleintopf kochen sollen, dann wäre ich Montags nicht so grantig. Und hätte weniger Blähungen.
Danke tobi. Dem mit dem XMega Decoder werd ich nachgehen. Der Motor dreht in beide Richtungen.
Um die Quadratursignale auszuwerten, gab/gibt es Bausteine wie den 74HCT12024, der 24Bit zählen kann sowie kaskadierbar ist. Eine andere Möglichkeit, die Signale zu verwurschteln, wäre ein FPGA. Controller von Renesas, zum Beispiel die H8S-Reihe, haben zwei Hardware Quadraturdekoder auf dem Chip. Wie schnell ein Xmega die Signale aufbereiten und verwenden kann, weiß ich nicht. Ein ATmega48 mit 20MHz schafft es jedoch, 250kHz Signale zu zählen. Die Zählroutinen müssen aber in Assembler geschrieben und optimiert werden. Persönlich würde ich einen Renesas Controller nehmen. Eine günstige Lösung wäre aber auch ein ATmega48, der nur als 'Vorteiler' programmiert wird und Ausgangssignale wie Takt und Richtung liefert, die z. B. Faktor 10-100 untersetzt sind, und mit einem anderen µC ausgewertet werden. Das hängt aber davon ab, wie genau die Position bestimmt werden soll. Die Eingangsfrage nach der Schnelligkeit des ADC hat jedoch sehr irritiert.
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.