Hallo zusammen, ich muss mehrere Inkrementalgeber(bis 8 Stück) auswerten. Wichtig ist die getrennte Zuordnung der Links-Rechtsimpulse. Alle 8 Encoder müssen mit ihren A- und B-Leitungen entprellt sein. Ich kenne zwar den Thread von Peter Dannegger in 'Codesammlung', jedoch erscheint mir eine Softwarelösung zu zeitintensiv. Mir ist zwar eine Hardwarelösung bekannt, die separiert aber nur die Links-Rechtskanäle, macht aber keine Prellunterdrückung. Kennt jemand eine komplette Hardwarelösung? Vielen Dank für Hinweise! Norbert
> jedoch erscheint mir eine Softwarelösung zu zeitintensiv.
Warum? Läuft doch alles im Timerinterrupt und das bisschen Pinabfrage
kostet doch nicht viel Zeit. Also effektiver dürfte es kaum gehen.
Aber bis zu 8 Encoder am mega128, kommt es da nicht zu Konflikten? Norbert
Welche Frequenzen sollen die Encoder denn messen? Das ist der einzige kritische Punkt. Stefan
Frequenz bis zu 5kHz bei einer 1000er Scheibe. Evtl. können wir eine 500er Scheibe nehmen, dann wären das 2,5kHz. Norbert
5khz sind mit Software-Enprellung kein Problem. Nimm einen Timer-IR mit
20khz und frage darin alle 8 Kanäle ab. Orientiere Dich an Peter
Daneggers Entprell-Routine.
> Kennt jemand eine komplette Hardwarelösung?
Sorry, wenn ich Deine eigendliche Frage ignoriert habe, aber den
Hardwareaufwand würde ich mir sparen ...
Viele Grüße, Stefan
Hardware-Lösungsvorschlag: Mega16 oder so nur für die Inkrementalgeber, und den dann irgendwie an den 128 knoten... Was soll dein Controller denn sonst noch machen? Wenn man den mit 16MHz betreibt, hat er doch ohne Ende Reserven.
Meine Einschätzung ist, daß 8 Kanäle mit 5kHz mit einem AVR, wenn überhaupt, nicht problemlos erledigt werden können. Um auf der sicheren Seite zu sein, würde ich für ein bis zwei Kanäle je einen Mega8/Tiny2313 einsetzen und diese dann per UART/IIC auslesen. Da in allen Sub-µCs die gleichen Programme laufen, ist die Entwicklung nicht aufwendig; der Hardwareaufwand ist dadurch gerechtfertigt, daß die Sache sicher funktioniert und es nicht sporadisch zu Falschzählungen kommt.
a) Die Encoder sitzen an Achsen von Transportbändern. Es wird u.a. eine Geschwindigkeitsregelung für jedes Band benötigt. Dazu kommen Tastaur, Grafikdisplay, div.I/Os usw. b) Ein anderes Projekt benutzt die selben Encodersignale zur mm-genauen Positionierung. Geld und Materialaufwand sind hier nicht wichtig. Wegen b) will ich kein Risiko eingehen. Deshalb meine Frage. Besten Dank für eure Tipps! Norbert
Ich habe noch einen Link für Dich: http://www.mino-elektronik.de/mt12_iic/mt12_iic.htm Für Deine Anwendung kann der Analogkram weggelassen werden. Ich setze diese Schaltung für Heidenhain-Taster ein; maximal 5 auf einer Leiterplatte.
@Michael, "Meine Einschätzung ist, daß 8 Kanäle mit 5kHz mit einem AVR, wenn überhaupt, nicht problemlos erledigt werden können." Diese Einschätzung ist falsch. In Assembler benötigt man 13 Zyklen pro Kanal, mit 12 Zyklen Interruptrahmen sind das insgesamt 116 Zyklen, d.h. Du kannst mit 137kHz abtasten, was weit über den benötigten 5kHz liegt. Um nun dem Main noch reichlich Rechenzeit übrig zu lassen, würde ich mit etwa 20kHz abtasten. Probleme könnten nur andere Interrupts machen, wenn diese zu lange sperren. Dann könnte es was bringen, z.B. einen ATMega48 nur für die Encoder abzustellen und diesen per SPI auszulesen. Peter
@Peter Wie ich sehe, teilst Du meine Einschätzung, indem Du gleich die Probleme aufzeigst, die sich ergeben könnten.
also falls ein Interrupt die Programmierung mit einem Mikrocontroller unmöglich macht dann tut es mir erstmal für dich leid ;-) und dann würde ich dir als 2. den Tipp geben eventuell ein CPLD zu nehmen. Ich würde die Messwerterfassung warscheinlich auch mit einem seperaten IC machen. Why not ein CPLD dort gibts auf jedenfall keine störenden Interrupts
Wenn man das Programm und vor allem die ISR richtig plant, steht einer Einzel-Controller-Varinate nichts im Weg. Ich würde es mit einem Controller ausprobieren. Notfalls könnte man es noch mit einem externen Drehencoder-Controller machen...
Habt erstmal Dank für eure Anregungen. Auch unter meinen Kollegen wird ein Für und Wider dikutiert. Die Forderung sieht mittlerweile vor, daß alle Kanäle auf Kurzschluss(A=B), falsche Impulsfolge und Impulsausfall detektiert werden sollen. Da der mega128 mit seiner einfachen Interruptstruktur von weiteren Interruptquellen(Ext., USART) angefordert wird, geht die Tendenz bei uns in der Tat zur CPLD-Lösung. Schönen gruß Norbert
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.