Guten Morgen, ich Expermentiere gerne mit Drehgebern momentan habe ich einen 11uA den ich auf TTl spur A B und Z auflösen kann. Mir wird immer wieder gesagt es gibt Mikrocontroller mit Quadrature Decoder Kanäle, wenn ich dann frage welchen, kennt dann doch wieder keiner einen, wenn ich Google finde ich auch nicht wirklich etwas. Warscheinlich suche ich faslch. könnt mir Bitte jemand einen Hersteller nennen ? Das ich mal richtig schauen kann was es da so gibt. MFG Huber M.
Jeder uC kann Drehgeber decodieren. Man muss halt ein Programm schreiben. http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29 https://www.mikrocontroller.net/articles/Drehgeber Aber es gibt einige mit Hardware-Decodern: "Der H8/3003 und H8S (2 Kanäle) H8SX (4 Kanäle), ATXmega (3 Kanäle bis Osz/4) und STM32F4 (6 Kanäle) machen das in Hardware" Die sind wahrscheinlich für die Leute, die nicht programmieren können.
Michael H. schrieb: > mentan habe ich einen 11uA den > ich auf TTl spur A B und Z auflösen kann. Mir wird immer wieder gesagt > es gibt Mikrocontroller mit Quadrature Decoder Kanäle, NXP LPC176x Silabs EFM32 LG/GG/WG (deren Dekoder ist IIRC ein niedrig getektetes Low-Power Peripherial). NordicSemi NRF52xxx Und das sind nur die mit denen ich mal gearbeitet habe.
Michael H. schrieb: > könnt mir Bitte jemand einen Hersteller nennen ? Atmel XMEGA-Reihe: http://application-notes.digchip.com/015/15-16206.pdf Imho können das alle STM32. http://www.diller-technologies.de/stm32.html#timer_encoder
Irgendein Hersteller. Bei der Suche auf dessen Seite "quadratur" eingeben. z.B.: http://www.microchip.com/sitesearch/search/All/quadratur
Michael B. schrieb: > Die sind wahrscheinlich für die Leute, die nicht programmieren können. Oder für Leute die mit kleinen Batterien auskommen müssen, denn der zählt weiter währen der Prozessor stromsparend schläft. Außerdem hilft das enorm falls man den Prozessor für andere hart zeitkritische Sachen belegt hat - beispielsweise im NRF52 für Bluetooth Verarbeitung.
Michael H. schrieb: > könnt mir Bitte jemand einen Hersteller nennen ? Das ich mal richtig > schauen kann was es da so gibt. Bspw. STM32F0 - ich glaube, die STM32 können das fast alle. Einfach mal in den Vergleichslisten der Featureliste schauen. Michael B. schrieb: > Die sind wahrscheinlich für die Leute, die nicht programmieren können. Nein, die sind für die Leute, deren Mikrocontroller etwas Sinnvolleres zu tun hat, als Zeit und Energie in stupides Zählen von Flanken zu stecken. Von der maximal messbaren Frequenz mal ganz abgesehen. Schon bei einem Encoder dürfte das Faktor 30 sein, bei mehreren Encodern ist er entsprechend noch größer. Jim M. schrieb: > Oder für Leute die mit kleinen Batterien auskommen müssen, denn der > zählt weiter währen der Prozessor stromsparend schläft. Richtig, die Möglichkeit, den Controllerkern einfach schlafen zu legen, kommt noch dazu.
:
Bearbeitet durch Moderator
laberkopp:
> Die sind wahrscheinlich für die Leute, die nicht programmieren können.
laber..laber
Beim XMega in Verbindung mit dem Event-System eine sehr komfortable
Lösung, nach Initialisierung werden die Werte ohne Controller-Arbeit in
einen Zähler-Kanal geschrieben.
mfg
Achim
Aslo Danke schon mal für die hilfreichen Antworten, jetzt finde ich auch etwas. Zb. der Xmega wäre " ATXMEGA 32A4-AU " ein solcher oder ? den im datenblatt finde ich jetzt nicht extra etwas für Quadrature, wenn das mit dem möglich ist würde ich mich gerne damit befassen. das wäre dann die Beschreibung beispielsweise wie das bei den Xmega"s funktioniert ? Atmel XMEGA-Reihe: http://application-notes.digchip.com/015/15-16206.pdf
Was in meinen Augen auch stark für die STM32 spricht ist, dass dort die Capture & Compare Eingänge optional mit "Filtern" belegt werden können. Jene Filter sind zwar im Prinzip nichts anderes als die Unterdrückung einer Flankenerkennung für eine gewisse Anzahl von Takten, aber gerade bei billigsten Drehgebern hilft das unschönes Verhalten zu Minimieren. Keine Ahnung ob das die XMEGA auch können.
PICs mit CLC (configurable logic cell) können hardwaremäßig mit Encodern zusammenarbeiten. Es werden 2 CLC pro Encoder gebraucht. Gibt's schon ab PIC 16xxx, z.B. PIC 16F1713 mit 4 CLCs. MfG
Michael B. schrieb: > Die sind wahrscheinlich für die Leute, die nicht programmieren können. Eh, genauso wie UART oder SPI in Hardware.
vn n. schrieb: > Eh, genauso wie UART oder SPI in Hardware. Intel hat ja mal proklamiert, dass es garkeine Hardware mehr geben wird, weil alles in Software gemacht werden kann. Ist schon ein paar Jahre her und bezog sich damals zuerst mal auf Modems, aber die Aussage war dass eine 8086-CPU alles nebenher erledigen könnte was in einem PC so eingebaut ist. Trotz der Macht von Intel gibt es aber immer noch Peripherie in Hardware, sonst würden Controller nichts mehr enthalten ausser CPU und universelle I/O-Pins. Ob das Leben dadurch leichter würde, wenn man nicht mehr Manuals zu den SF-Registern lesen müsste, sondern dafür alles zu Fuss programmieren bezweifle ich allerdings. Georg
Beispiel XMega128A1: #define QENC_LEFT TCC1 #define QENC_RIGHT TCD1 // EVENT AS50xx // LEFT: TCC1 PORTA.DIR &= 0b11100001; // A1..A4 Inputs EVSYS.CH0MUX=0b01010001; // Channel 0, PINA1 EVSYS.CH0CTRL=0b00001011; // QDEC enable, Filter 4 samples QENC_LEFT.CTRLA=0b00001000; // Clock Source: Event Channel 0 QENC_LEFT.CTRLD=0b01111000; // EvACT: QDEC, Event Delay, // Source: Channel 0 QENC_LEFT.CNT=0; // RIGHT: TCD1 EVSYS.CH2MUX=0b01010011; // Channel 2, PINA3 EVSYS.CH2CTRL=0b00001011; // QDEC enable, Filter 4 samples QENC_RIGHT.CTRLA=0b00001010; // Clock Source: Event Channel 1 QENC_RIGHT.CTRLD=0b01111010; // EvACT: QDEC, Event Delay, // Source: Channel 1 QENC_RIGHT.CNT=0; Initialisierung 2er QDEC-Kanäle an PORT A1 & A2 bzw. A3 & A4, Werte stehen dann in TCC1.CNT bzw. TCD1.CNT mfg Achim
Jim M. schrieb: > Michael B. schrieb: >> Die sind wahrscheinlich für die Leute, die nicht programmieren können. > > Oder für Leute die mit kleinen Batterien auskommen müssen, denn der > zählt weiter währen der Prozessor stromsparend schläft. Das hätte ich auch geantwortet. Genau so einen Fall hatten wir schon mal. Und das macht wirklich was aus! > Außerdem hilft das enorm falls man den Prozessor für andere hart > zeitkritische Sachen belegt hat Das trifft auch zu, wobei man so einen Encoder auch asynchron ohne IST oder regelmäßiges Pollen abfragen kann, wenn es nicht zu genau sein muss.
Hi Psoc 3,4 oder 5 kann das gut. Mfg HB oh...zu spät .-)
:
Bearbeitet durch User
Michael H. schrieb: > könnt mir Bitte jemand einen Hersteller nennen ? Atmel im SAM3X8E, findest du auf jedem Arduino Due.
Michael B. schrieb: > Jeder uC kann Drehgeber decodieren. Man muss halt ein Programm > schreiben. Das kommt wohl sehr drauf an, ob du einen Encoder mit 2500ppr bei 6000rpm laufen hast oder einen 11-er gemütlich von Hand drehst. Es soll vorkommen, dass der Prozessor sich neben der Pulszählerei auch noch um andere Dinge kümmern muss, z.B. um deren Auswertung.
Wolfgang schrieb: > Das kommt wohl sehr drauf an, ob du einen Encoder mit 2500ppr bei > 6000rpm laufen hast oder einen 11-er gemütlich von Hand drehst. 250000 Striche/s sind rein softwaremässig für einen 16MHz AVR kein Problem, da kann er 4 simultan auswerten UND noch 4 mal schneller, er ist also gerade mal zu 10% ausgelastet. Vorausgesetzt man kann Programmieren.
:
Bearbeitet durch User
Und was macht er dann mit dem Zählerstand? Um was zu tun hat er nämlich keine Zeit mehr :-D
Michael B. schrieb: > 250000 Striche/s sind rein softwaremässig für einen 16MHz AVR kein > Problem, da kann er 4 simultan auswerten UND noch 4 mal schneller, > er ist also gerade mal zu 10% ausgelastet. Das kommt wohl etwas drauf an, was bei der Auswertung und weiteren Verarbeitung zu tun ist. Bei 4 mal so hoher Geschwindigkeit, also 1000000ppr hast du 4Mio Flanken pro Sekunde. Da zeige mal, wie du die mit 10% Auslastung abarbeitest, so dass wirklich 90% für andere Dinge zur Verfügung stehen.
Wolfgang schrieb: > Bei 4 mal so hoher Geschwindigkeit, also 1000000ppr hast du 4Mio Flanken > pro Sekunde. Da zeige mal, wie du die mit 10% Auslastung abarbeitest Unsinn, er hat 10% bei den 250000, aber du WOLLTEST wohl nicht verstehen. Der code wurde übrigens verlinkt, zu faul zum Lesen ?
:
Bearbeitet durch User
Michael B. schrieb: > Wolfgang schrieb: >> Das kommt wohl sehr drauf an, ob du einen Encoder mit 2500ppr bei >> 6000rpm laufen hast oder einen 11-er gemütlich von Hand drehst. > > 250000 Striche/s sind eine Million Zustandswechsel pro Sekunde. > rein softwaremässig für einen 16MHz AVR kein > Problem, da kann er 4 simultan auswerten UND noch 4 mal schneller, er > ist also gerade mal zu 10% ausgelastet. Wie kommst Du auf die 10% Auslastung? Wenn ich mir die FAQ-Schleife ansehe, dann benötigt die für einen Durchlauf (also ein e einzige Flankenerkennung) 20 Takte. Bei 20 MHz und 1 Million Zustandswechseln läuft der AVR damit unter Volllast. Und auch das geht nur, wenn man das nicht per Interrupt macht und die Impulse nicht auch mal über längere Zeit aufsummieren möchte, um bspw. eine Strecke zu ermitteln, geschweige denn eine vernünftige Servo-Regelstrecke aufbauen möchte. Nein, so etwas macht man heutzutage natürlich mittels Hardware. Das geht selbst bei billigsten STM32F0 mit vollen 24 MHz und direkt in 32-Bit-Registern - bei 0% Auslastung und man hat Zeit und Rechenleistung für die wirklich wichtigen Dinge. > Vorausgesetzt man kann Programmieren. Auch ein guter Programmierer kann eben nicht zaubern, wie man sieht.
Michael B. schrieb: > Die sind wahrscheinlich für die Leute, die nicht programmieren können. Das ist zu kurz gedacht. Langsame Handgeber kann man nebenbei mit einem MC auslesen. Der kann sich auch per Pinchange-Interrupt bei jedem Puls aufwecken lassen. Schnelle, hochauflösende Geber an Maschinen lassen ihm aber die Puste ausgehen, da ist Hardware eindeutig besser.
Chris D. schrieb: >> 250000 Striche/s sind > > eine Million Zustandswechsel pro Sekunde. Ja, ich habe Striche als Zustandswechsel aufgefasst, also nur 250000/s, beachte dass nur 1 Drehgeber auszulesen war und nicht 4, und die von mir erwähnten 10% passen wieder.
Michael B. schrieb: > Chris D. schrieb: >>> 250000 Striche/s sind >> >> eine Million Zustandswechsel pro Sekunde. > > Ja, ich habe Striche als Zustandswechsel aufgefasst, also nur 250000/s, > beachte dass nur 1 Drehgeber auszulesen war und nicht 4, und die von mir > erwähnten 10% passen wieder. Ok, das passt dann eher zu der Erfahrung, die ich damals mit vier Encodern auf einem 8535 mit 16 MHz gemacht habe. Selbst mit extremer Optimierung (Registerreservierung etc.) war mit vier Kanälen bei nicht einmal 200kHz Schluss. Man möchte die Impulse ja auch noch irgendwie verarbeiten und nicht nur erkennen. Glücklicherweise kann man aber heutzutage aus einer breiten Anzahl an Controllern wählen, die die FSM schon eingebaut haben. Damals wäre das ein Traum für mich gewesen :-)
J. Zimmermann schrieb: > Beispiel XMega128A1: > > #define QENC_LEFT TCC1 > #define QENC_RIGHT TCD1 > > // EVENT AS50xx > // LEFT: TCC1 > PORTA.DIR &= 0b11100001; // A1..A4 Inputs > EVSYS.CH0MUX=0b01010001; // Channel 0, PINA1 > EVSYS.CH0CTRL=0b00001011; // QDEC enable, Filter 4 samples > QENC_LEFT.CTRLA=0b00001000; // Clock Source: Event Channel 0 > QENC_LEFT.CTRLD=0b01111000; // EvACT: QDEC, Event Delay, > // Source: Channel 0 > QENC_LEFT.CNT=0; > > // RIGHT: TCD1 > EVSYS.CH2MUX=0b01010011; // Channel 2, PINA3 > EVSYS.CH2CTRL=0b00001011; // QDEC enable, Filter 4 samples > QENC_RIGHT.CTRLA=0b00001010; // Clock Source: Event Channel 1 > QENC_RIGHT.CTRLD=0b01111010; // EvACT: QDEC, Event Delay, > // Source: Channel 1 > QENC_RIGHT.CNT=0; > > Initialisierung 2er QDEC-Kanäle an PORT A1 & A2 bzw. A3 & A4, Werte > stehen > dann in TCC1.CNT bzw. TCD1.CNT > > mfg > Achim Also erst einmal Danke jetz kann ich das im datenblatt unter Quadrature Encoder besser nachvollziehen. aber wie komme ich darauf das das EVSYS. vorm CH0MUX steht EVSYS.CH0MUX=0b01010001; // Channel 0, PINA1
Also ST Controller können quadrature decoding sehr schnell und in Hardware. STM32 mit vielen Kanälen gleichzeitig und teilweise sogar 32bit. Selbst der kleinste STM8 kann das mit TIM1 in 16 bit. Um von 11uA auf Digitalpegel zu kommen brauchst du weiterhin deine externe Beschaltung. schönen Gruß, Alex
Alex schrieb: > Um von 11uA auf Digitalpegel zu kommen brauchst du weiterhin deine > externe Beschaltung. Die 11 µA Ausgänge haben noch eine besondere Funktion; sie liefern nämlich sinusförmige Signale an den Ausgängen. Dadurch ist eine viel höhere Auflösung möglich, als wenn man nur die Polarität auswertet. Sofern die höhere Auflösung gebraucht wird (sonst könnte man ja auch Geber mit Rechtecksignalen verwenden), ist der Quadraturdekoder nur der kleinere Teil der Lösung.
Die 11uA haben erstmal die Funktion unanfällig gegen Störungen zu sein. Da er schon geschrieben hat, dass er bereits einen TTL-Umsetzer hat gehe ich davon aus, dass der bereits auch die Interpolation macht (wenn nötig). Abgesehen davon schließt das eine das andere ja nicht aus. Man kann das auch mit STM32 ähnlich so machen wie auf deiner Seite http://mino-elektronik.de/mt12_iic/mt12_iic.htm Der STM32 macht dann die grobe Erfassung mit Mhz Geschwindigkeit und 32bit und bei langsamer Geschwindigkeit kommt die Analogwandlung dazu zur Auflösungssteigerung. Bei Heidenhain gibt es netterweise Schaltungsvorschläge mit Bauteilangabe für den Analogteil der recht hohe Frequenzen ab kann (müsste ich suchen). schönen Gruß, Alex
Alex schrieb: > Bei Heidenhain gibt es netterweise Schaltungsvorschläge mit > Bauteilangabe für den Analogteil der recht hohe Frequenzen ab kann > (müsste ich suchen). Ich glaube, die finden sich in den Datenblättern bzw. im Katalog und sind so ausgelegt, daß das Anschlußkabel 100 m betragen kann ;-) Sieht man sich jedoch bei Weggebern die max. Verfahrgeschwindigkeit an, so reichen bei Heidenhain meist 50 kHz max. Signalfrequenz. Die Glasmaßstäbe halten wohl keine hohen Beschleunigungen aus (ein Fall vom Tisch auf den Fußboden endet in der Regel mit einem Totalschaden). Daher reichen einfache Schaltungen zur Verstärkung. > Man kann das auch mit STM32 ähnlich so machen Ein STM32Fxxx mit mehreren ADCs wäre eigentlich optimal, da man nahezu zeitgleich das analoge Signal und den Quadranten der Signale erfassen kann. Das einmal zu machen, würde mich noch reizen.
m.n. schrieb: > Ich glaube, die finden sich in den Datenblättern bzw. im Katalog und > sind so ausgelegt, daß das Anschlußkabel 100 m betragen kann ;-) Ja, aber die Schaltung ist nicht nennenswert komplizierter als deine. Die haben sich halt ein mal die Mühe gemacht die Schaltung richtig auszulegen und zu überprüfen. Sowas kopiert man ja gerne... Für 1Vss waren hier zwei Schaltungen auf Seite 5. Wenn ich mich jetzt nicht täusche musste man für 11uA nur Z0 weglassen. War jedenfalls recht einfach. https://www.heidenhain.de/fileadmin/pdb/media/img/1078628-11_Schnittstellen_de.pdf m.n. schrieb: > Ein STM32Fxxx mit mehreren ADCs wäre eigentlich optimal, da man nahezu > zeitgleich das analoge Signal und den Quadranten der Signale erfassen > kann. Das einmal zu machen, würde mich noch reizen. Das Projekt fliegt bei mir leider auch noch irgendwo auf einem Haufen rum und wartet auf Umsetzung... schönen Gruß, Alex
Alex schrieb: > Die haben sich halt ein mal die Mühe gemacht die Schaltung richtig > auszulegen und zu überprüfen. Die Schaltung ist wie aus dem Lehrbuch und ohne "Bemaßung" und soll auch bei 150 m Kabellänge (siehe Datenblatt Drehgeber) funktionieren. Und siehe da (Anlage), auf Seite 37 unten gibt es etwas für 11 µA. Da ich hochohmige Verstärker (MCP602) verwende, gehe ich mit U1 direkt an den '+'-Eingang. Für 5 V Systeme liefern 220 kOhm eine bessere Amplitude (typ. 4,4 Vss) und als Versorgungsspannung reichen die vorhanden 5 V, die auch für die internen LEDs benötigt werden. Ich gehe da eher pragmatisch heran ;-)
m.n. schrieb: > Die Schaltung ist wie aus dem Lehrbuch und ohne "Bemaßung" und soll auch > bei 150 m Kabellänge (siehe Datenblatt Drehgeber) funktionieren. Was meinst du mit Bemaßung? Die Bauteilwerte stehen links dabei. Ah ja, genau da ist die 11uA Schaltung. Klar, die Bauteilwerte hatte ich mir auch für richtigen Pegel noch angepasst - das wird an der Grenzfrequenz nicht zu viel Ändern und immernoch gut genug sein. schönen Gruß, Alex
h_m:
> aber wie komme ich darauf das das EVSYS. vorm CH0MUX steht
Bei XMEGA immer HARDWARE-UNIT PUNKT REGISTER, i.d.F. ist das
EventSystem EVSYS die HW-Unit, CH0MUX das Register, wie PORTA.DIRSET,
USARTC0.CTRLA usw.
mfg
Achim
Alex schrieb: > Wenn ich mich jetzt > nicht täusche musste man für 11uA nur Z0 weglassen Ganz so einfach nicht, die 1Vss sind GND-bezogen, die 11 µA sind freischwebend (eben Photoelemente), und man muss die Verstärkung viel höher wählen. Aber man kann schon die Eingänge umschaltbar oder umbestückbar machen, nur gibt es die Version 11µA soweit ich sehen kann kaum noch. Solche Massstäbe mit 11 µA werden gebraucht recht teuer gehandelt, wohl weil sie als Ersatzteile gefragt sind. Georg
Michael H. schrieb: > aber wie komme ich darauf das das EVSYS. vorm CH0MUX steht Indem du dir nicht nur Code-Fragmente anguckst und mal einen Blick in die Grundlagen der verwendeten Programmiersprache wirfst ;-)
georg schrieb: > nur gibt es die Version 11µA soweit ich sehen kann > kaum noch. Hier fehlt Dir etwas der Weitblick ;-) > Solche Massstäbe mit 11 µA werden gebraucht recht teuer gehandelt, wohl > weil sie als Ersatzteile gefragt sind. Die gibt es auch als Neuteile zu stolzem Preis. Der hier ist schon recht günstig: Beitrag "[V] Digitaler Messtaster Dr. Johannes Heidenhain MT60"
Es gibt für solche Anwendungen auch Drehgeber mit einem speziellen digitalen Protokoll, ansonsten ist es für die meisten Anwendungen am Zweckmässigsten einen eigenen Controller dafür abzustellen, der nur die Auswertung und anwendungsspezifische Interpretation macht, statt den Hauptcontroller damit zu belasten. Auch im Sinn der funktionalen Sicherheit.
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.