Hallo Leute, ich finde einfach keinen passenden Zähler für meine Anwendung. Eigentlich brauche ich nur zwei einfachen Up/Down-Counter um den einen Winkelversatz zwischen zwei Drehgeber zu ermitteln. Ich habe einen Dualzähler gefunden http://images.mercateo.com/pdf/Farnell/3390.pdf der aber nur hochzählt, ansonsten aber perfekt wäre. Ich plane an jedem encoder zunächst einen "quadrature clock converter" (ls7183) zu hängen und deren Ausgang auf die Zähler zu schalten. Zu festen zeitpunkten würde ich die Zähler gerne auslesen und im Mikrocontroller miteinandervergleichen und auf den Winkelversatz schliessen
Hallo! Um was fuer einen Drehgeber handelt es sich ?? Waere es nicht vieleicht auch möglich den gleich direkt vom µC auszuwerten ? mfg, Bjoern
So in meinen unterlagen gestöbert......... http://www.pe-gmbh.com/d/eda/PE12016_12024_1_5.pdf Aber diese oder aehnliche Counter ICs sind wohl eher vom aussterben bedroht, da das eine sehr schöne Anwendung fuer einen weitaus billigeren CPLD ist. mfg, Bjoern
Falls jemand Interesse an CF32007 (DIL24) hat, ich habe noch einige zu liegen.
von csilsi.com gibts doch noch mehr, LS7266 usw. IC-Haus könnte auch sowas haben
hier noch der Hersteller, war falschrum, lsicsi.com: http://www.lsicsi.com/products.htm IC-Haus hat: http://www.ichaus.com/
Ich schließe mich Bjoern an, einfach Drehgeber direkt an den MC und den zählen lassen. Billiger gehts nicht und man ist nicht auf irgendwelche abgekündigten Exoten angewiesen. Ich lese z.B. 2 Drehgeber mit einem AT89C51CC01 aus und sende die Position über CAN zur Steuerung. Abgetastet wird mit 40kHz. Nur für wesentlich höhere Impulsfrequenzen braucht man einen CPLD. Peter
Die Auswertung vom Mikrocontroller hat sich als nicht sehr praktikabel rausgestellt. Das Problem liegt in der TAtsache, daß ja 2 Dehgeber verwendet werden, aber der zu verwendene MIkrocontroller nur eine Interruptebene hat. Tauche Flankenwechsel zeitlich gesehen sehr dicht nebeneinander auf, gehen Impulse verloren. Daher möchte ich gerne die Drehegeber "parallel" auswerten.
Drehgeber fallen doch unter die Kategorie "Taster und andere prellende Sensoren", oder? Peter fragt die Dinger mit 40kHz ab. Wenn man dann auch noch 4 stabile Zustände messen will, kommt man auf eine Abtastfrequenz von 10kHz. 10kHz entspricht einer Drehzahl von 600.000 rpm Das fällt unter extrem-HF-Spindel (HSC arbeitet IMHO mit ca. 30.000rpm). Bei solchen Drehzahlen zerlegt sich eher der Drehgeber...
"Das Problem liegt in der TAtsache, daß ja 2 Dehgeber verwendet werden, aber der zu verwendene MIkrocontroller nur eine Interruptebene hat. Tauche Flankenwechsel zeitlich gesehen sehr dicht nebeneinander auf, gehen Impulse verloren." Wie kommst Du denn darauf ? Solange die Abtastfrequenz des Timerinterrupt über der Impulsfrequenz liegt, geht nirgends nicht auch nur ein einziger Impuls verloren. Die Interruptprioritäten spielen nur dann eine Rolle, wenn Du noch weitere Interruptquellen hast. Deshalb habe ich ja auch einen 8051 genommen und die niedrige Priorität dem CAN-Interrupt zugewiesen. Peter
"Oder habe ich da irgendwo was falsch verstanden?" Ja. Die Impulszahl ist nicht die Drehzahl. Z.B. gibt es Encoder mit 1024 Schritten pro Umdrehung. Encoder, die als Positionssensor arbeiten, sind üblicher Weise prellfrei (optisch). Peter
@Rahul Drehgeber fallen nicht unbedingt unter taster und prellende Sensoren, ok die billigen Drehdinger, aber es gibt auch optische mit mehr als 1024 Punkten pro Umdrehung, die werden normalerweise in Maschinen und Steuerrungen verwendet und dann machen die Counter ICs oder CPLD sinn. mfg, Bjoern
Dann müsste ich meine 600.000rpm durch 1024 teilen und käme dadurch auf etwa 600prm. (nur noch mal für mich "zum Mitschreiben"). >Encoder, die als Positionssensor arbeiten, sind üblicher Weise >prellfrei (optisch). Dann kann man mit 40kHz Abtastfrequenz also etwa 1200rpm messen!? Und bei geringerer Auflösung auch höhere Drehzahlen.
die optischen prellen nicht, aber die Flanken sind langsam, Schmitt-Trigger nötig
Bei einem Drehgeber gebe ich euch beiden Recht. Aber da sich beide drehgeber nicht im festen Winkel zu einander stehen. Ist doch meine Impulsfrequenz nicht fest. Werden beide Drehgeber also gleichzeitig in gleicher Phase ausgelenkt, welcher Impuls wird dann vom Mikrocontroller interpretiert. Und es werden tatsächlich auch noch andere Interrupts verwendent, z.b. für das Timing der Regelung. Ich würde dem yC zusätzlich gerne etwas luft verschaffen indem ich die Auswertung noch aussen verlagere.
"Aber da sich beide drehgeber nicht im festen Winkel zu einander stehen. Ist doch meine Impulsfrequenz nicht fest." Nicht wie sie stehen ist entscheidend, sondern wie schnell sie sich drehen. "Ich würde dem yC zusätzlich gerne etwas luft verschaffen indem ich die Auswertung noch aussen verlagere." Kein Problem. Einfach nen extra MC als SPI-Slave anbinden, der nur die Encoder auswertet. Ist immer noch billiger, als ein Exot oder CPLD. Peter
Ich weiss nicht was ich nicht richtig verstehe. Was ich meine ist: Jeder Drehgeber liefert bei fester Drehzahl vier Flankenwechsel pro Strich. Der Abstand der Flanken richtet sich nach dieser Drehzahl. Aber der Abstand der vier Flanken des einen Dehgebers zum andern Drehgeber richtet sich nach dem Winkel der beiden zu einander. Bei einen ungünstigen Winkel kann es also doch vorkommen, daß die Flanke des einen Drehgebers beliebig nah an die Flanke des anderen Drehgebers gerät, völlig unabhängig von der Drehzahl. Meine Schlussfolgerung ich brauche eine parallele Auswertung.
Hallo! Kannst Du mal erleutern, vieleicht auch den mechanischen Aufbau, warum Du 2 Encoder brauchst die sich gegensetig ueberwachen. Das habe ich bisher bei keinem prof. Antriebssystem gesehen, es sei denn auf nem Teststand fuer Antriebssysteme. Dann kann ich vielleicht noch einen Tip geben aus der Praxis,da ich mit son krempel ne Menge zu tun habe. mfg, Bjoern
"Bei einen ungünstigen Winkel kann es also doch vorkommen, daß die Flanke des einen Drehgebers beliebig nah an die Flanke des anderen Drehgebers gerät, völlig unabhängig von der Drehzahl." Du kannst aber nicht feststellen, wie nah, wenn es unter einem Schritt ist. Bei allen digitalen Meßverfahren ist die höchste Auflösung und der kleinste Fehler immer >=1. Welche Winkeldifferenz Du messen kannst, hängt allein von der Anzahl der Schritte pro Umdrehung ab und nicht davon, wie schnell Du ausliest. Ob Du mit nem Exot, CPLD oder MC ausliest ist also völlig irrelevant. Peter
Prellen Deine Drehgeber? Wenn ja, dann lässt sich das sowieso nicht sinnvoll per Interrupt lösen. Da wäre ein Ansatz mit pollen wesentlich besser / zuverlässiger. Falls die Drehgeber nicht prellen, kannst Du separate Interrupts für die beiden Drehgeber verwenden. Du verpasst dann quasi schon einen Interrupt, jedoch bleibt das Interrupt-Flag des "verpassten" Interrupts ja gesetzt und die Routine wird gestartet, sobald die erste abgeschlossen ist. Somit hast Du dann schlussendlich doch nichts verpasst, solange die IRQ-Routinen genügend schnell abgearbeitet werden können.
ZU Bjoern: Du lagst mit dem Teststand goldrichtig. Zwei Motoren sind über eine Torsionfeder mit einander verbunden. Ziel ist es, daß beide Motoren die selbe Geschwindigkeit haben. Allerdings soll ein Winkelversatz einstellbar sein und dadurch ein genau definiertes Moment gegen das der einer Motor läuft.
Zu Johnny: Was Du sagst macht Sinn! Vielleicht ist dann meine Erklärung mit der Gleichzeitigkeit der Interrupts doch nicht richtig. Jedenfalls sind in jetzigen Firmware Verluste von Impulsen aufgefallen. Ich scheue mich etwas davor einen zweiten MIkrocontroller ins spiel zu bringen der nur für das Pollen der Eingänge zuständig ist. Habe auch einen schönen dualzähler gefunden: LS7266R1 mit Eingangsfiltern und parallelen Datenbus inklusive der Encoderauswertung für rund 15 Dollar. Zu Peter: Ich weiss jetzt warum wir aneinader vorbei geredet haben. Ich will natürlich nicht den Phasenversatz zwischen den Flanken der beiden Encoder auswerten. Es ging mir nur darum parallel die Zähler hoch bzw. runter zu zählen und diese dann zu vergleichen. Was Du als selbstverständlich aufgefasst haben must, war die Tatsache, dass die Interrupts ja nicht wirklich verloren gehen, wie Johnny anmerkte.
"Es ging mir nur darum parallel die Zähler hoch bzw. runter zu zählen und diese dann zu vergleichen." Das habe ich auch genau so verstanden. Und daher ist es gleichgültig, wann Du sie vergleichst, Du hast immer eine Unsicherheit von +/-1 Impulsen. Und der Timerinterrupt, der sie ausliest, zählt zwar nacheinander (wenige µs versetzt), aber für das Main gesehen zählt er parallel. Und da Du ja eh einen MC nimmst, gibt es keine perfekte Gleichzeitigkeit, alles erfolgt immer nacheinander. Gleichzeitigkeit liegt immer im Auge des Bertrachters und hier ist Gleichzeitigkeit, wenn alles innerhalb der Zeitspanne von einem Impuls bis zum nächsten erfolgt und die ist, wie schon mehrmals gesagt, ganz allein von der Drehzahl abhängig. Wenn Du also nicht die maximale Drehzahl und die Pulszahl pro Umdrehung nennst, kann keiner feststellen, ob Software allein ausreicht oder nicht. Ich hoffe, das war jetzt endlich verständlich. Peter
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.