www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mehrere Inkrementalgeber auslesen


Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: ,,,, (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber bis zu 8 Encoder am mega128, kommt es da nicht zu Konflikten?

Norbert

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Frequenzen sollen die Encoder denn messen? Das ist der einzige
kritische Punkt.

Stefan

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frequenz bis zu 5kHz bei einer 1000er Scheibe. Evtl. können wir eine
500er Scheibe nehmen, dann wären das 2,5kHz.

Norbert

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter

Wie ich sehe, teilst Du meine Einschätzung, indem Du gleich die
Probleme aufzeigst, die sich ergeben könnten.

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...Variante...

Autor: Norbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.