www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Gray-Code Problem


Autor: Richard Rudolf (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin!


Ich habe ein kleines Problem mit einem Gray-Code, der sich nicht in den
"normalen" Dualcode umwandeln lassen will.
Hintergrund ist, daß ich die Positionssensoren eines alten
Kuka-Industrieroboters auslesen möchte. Der Roboter ist von 1987, es
gibt keine Datenblätter mehr zu den Sensoren, und zudem ist auch noch
die alte Steuerung (Siemens RCM-30) defekt.
Das Auslesen mit einem ATMega klappt einwandfrei, der µC gibt hierbei
nur die ausgelesenen Bits an den PC weiter, der diese (vorerst)
auswerten soll. Das Ganze ist auf jeden Fall mit einem Gray-Code
codiert, nur ist es offensichtlich nicht der "übliche" Gray-Code,
wandelt man das Ergebnis um, kommt nix sinnvolles raus...
Im Anhang hab ich mal ein Diagramm hinterlegt, bei dem ich eine Achse
von Endanschlag zu Endanschlag verfahren habe. Die Daten von den
Sensoren sind 24-Bit "breit", angezeigt werden die Rohdaten.

Wäre schön, wenn jemand mir helfen könnte, ich sitze nun schon ein paar
Tage an dem Problem und komme nicht weiter. Die Anfrage bei kuka blieb
leider erfolglos.

Vielen Dank schonmal fürs Durchlesen... :-)


Gruß,
Richard

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ähnlich wie beim Bourns Graycode-Drehgeber, der hat nur die
Hälfte der möglichen Codes ausgenutzt(127 Positionen aber 8 Bit), das
ergibt auch einen Code mit der Bedingung "nur ein Bit ändern pro
Schritt":
http://www.bourns.com/pdfs/ace.pdf
Ich bin nicht sicher, ob es in vollständiger Codierung nur DEN Graycode
gibt, oder auch viele möglich sind.
Seltsam ist der eine Ausreißer in der Kurve, der Rest sieht zwar etwas
"fraktal" aus, hat aber doch auch noch regelmäßige Züge.

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schreib die Codes doch mal Binär untereinander und suche die Symetrien
die typisch für den Graycode sind, vielleicht stimmen die Bitpositionen
nicht.

Autor: Richard Rudolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

danke schonmal für die Tipps, ich schau mir das gleich mal an.

Der eine Ausreißer oben links ist eine "normale" Störung, ich hatte
anfangs recht starke Störungen durch die Antriebsmotoren und andere
Roboter, konnte die aber durch Optokoppler und spezielle
Leitungsverlegung auf recht humane Werte bringen. Die Restlichen werde
ich später sicherlich rausrechnen können...


Gruß,
Richard

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stell bitte mal die Rohdaten zur Verfügung.

Autor: Richard Rudolf (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hier die Rohdaten von dem Verfahren der Achse von Endanschlag zu
Endanschlag.

Autor: Richard Rudolf (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
...und hier die Daten binär dargestellt in einer Excel-Tabelle
Dabei ist das höchstwertigste Bit oben.

Man erkennt deutlich, daß einige der "Bitspuren" nicht richtig
ankommen, ich bin schon am grübeln, woran das liegen könnte.
Auch sieht man deutlich, daß die Abstände zwischen den Messungen zu
groß waren für die Bits niedriger als Bit 11. Das liegt aber an der
Messung, nicht am µC. Theoretisch könnte man diese niedrigen Bits
erstmal auch rauswerfen, später wird die Positionsmessung intern
verarbeitet und nicht erst dem PC via serieller Schnittstelle
zugesendet, damit sollte das deutlich schneller gehen...

Gruß,
Richard

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es muss ungefähr aussiehen wie ...

http://www.mipraso.de/enzyklopaedie/g/gray-code-tabelle.html

... oder Du hast einen "Graycode", der nicht normgerecht ist, z.B.
Bitspuren verdreht.
Es sind aber auch Codierungen denkbar, die nach "unregelmäßigem"
Schema trotzdem die Bedingungen "nur 1 Bit ändert sich" sowie
"zyklisch" erfüllen.
Siehe den genannten ACE Drehgeber.

Autor: Richard Rudolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Des Rätsels Lösung:

Umwandeln in Dualcode, danach jedes 2. Bit invertieren...

Danke nochmals für die Hilfe, allein wär ich wohl nicht so ohne
weiteres drauf gekommen. :-)

Gruß,
Richard

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.