Forum: Mikrocontroller und Digitale Elektronik Kommunikationsprotokoll, Encoder


von Zahra Z. (zahra_z)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich messe die Kommunikation-Signale zwischen ein Encoder (eines BLDC 
Servomotors) und die Steuerung dieses Motors.

der Encoder wird mit 5V gespeist und gibt zwei Kommunikation-Signale 
(MRR und MRP) zu der Steuerung.
Die Messung zeigt, dass die beiden Signale zueinander umgekehrt sind.

Das Signal (wie man auf dem Bild sehen kann) ist periodisch mit einer 
Frequenz von ≈ 4.5 kHz.
Man kann in jeder Periode hauptsächlich zwei Teile unterscheiden.
Beim ersten Teil lieget das Signal bei ≈ 2,7 V. Im zweiten Teil folgt 
eine Pulssequenz, wobei das Signal zwischen den Werten ≈1V  und ≈4V 
pendelt.

beim Stillstand bleibt diese Pulssequenz unveränderlich, bei einer 
konstanten Drehzahl aber ändert sich diese ständig.

ich brauche jetzt dieses Signal zu interpretieren. Also um welchen 
Kommunikationsprotokoll könnte es sich hierbei handeln?

hat jemand eine Idee?

vielen Dank im Voraus!

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Die Codierung zumindest sieht stark nach Manchester aus. Innerhalb einer 
festen Bitzeit wird die Polarität geändert (entspricht z.B. einer 1) 
oder eben nicht (wäre dann z.B. 0).
Ich schätze, das sind so um die 40-50 bit pro Nachricht, hab jetzt nicht 
genau gezählt. Wenn das mit den 360uS/DIV stimmt, scheint die Bitzeit 
etwas um die 70-80 uS zu sein.

von Zahra Z. (zahra_z)


Lesenswert?

Danke für die Antwort :)

hab gerad ein bisschen über Manchster Codierung gelesen und hab kurz 
eine Frage dazu; hat es eine Bedeutung, dass das Signal nicht zwischen 
den Gleichen Niveau pendelt? oder es interessiert uns dabei nur ob es 
eine fallende oder steigende Flanke ist (also wenn es um eine Manchster 
Codierung handelt)?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Zahra Z. schrieb:
> hat es eine Bedeutung, dass das Signal nicht zwischen
> den Gleichen Niveau pendelt?

Genau das ist das typische Verhalten bei Manchester (Non-Return-to-Zero 
= NRZ) Kodierung. Usprünglich wurde solch eine Kodierung für z.B. 
Magnetbänder oder Funkübertragung erfunden, wo absolute Pegel am 
Empfänger nicht gewährleistet sind. Es zählt also nur der Polaritäts 
Wechsel und nicht die absolute Polarität.
Je nach Vereinbarung ist also ein Polwechsel innerhalb der Bitdauer eine 
1 und ein nicht stattfindender Polwechsel eine 0.
Anders augedrückt: Am Ende der Bitdauer findet auf jeden Fall ein 
Wechsel statt, wenn dazwischen noch einer kommt ist es eine 1.
Wie das bei deinem Drehgeber gehandhabt wird, siehst du schnell, wenn du 
mal dekodierst. Auch blosses Rumdrehen am Motor und Beobachten am Oszi 
hilft da schon, spätestens nach ein bisschen Üben :-)

Für weitere Infos wäre es nützlich, mal den Typ des Drehgebers zu 
wissen.

von Zahra Z. (zahra_z)


Lesenswert?

Danke für die Erklärung :-)

bzgl des Typs bin ich mir nicht sicher, ich nehme aber an, dass es ein 
optischer Drehgeber ist. Im datasheet steht dass er eine Resolution von 
8192 pulses/rev hat, es gibt aber keine weiteren Angaben dazu...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Zahra Z. schrieb:
> Im datasheet steht dass er eine Resolution von
> 8192 pulses/rev hat, es gibt aber keine weiteren Angaben dazu...

Na, das ist doch schon mal was. Das bedeutet, das ein Vollkreis des 
Gebers aus 14 bit besteht und die höheren Bits vermutlich dann ganze 
Umdrehungen zählen. Mögl. ist da allerdings noch eine Prüfsumme und 
Statusbits dabei, so ist das zumindest bei den Sick-Stegmann oder 
Haidenhein Gebern, mit denen ich hier rumspiele (SSI Protokoll).
Achtung, solche Geber geben gerne mal Gray Code aus und nicht unbedingt 
direkt Binärzahlen:
http://de.wikipedia.org/wiki/Gray-Code
Und hier mit nützlichen Codeschnipseln zum Umrechnen:
http://en.wikipedia.org/wiki/Gray_code

von Zahra Z. (zahra_z)


Angehängte Dateien:

Lesenswert?

ich hab hier eine Messung mit einer Geschwindigkeit n=4000 U/min 
durchgeführt.

ich hab mein Signal gespeichert und hab dann auf die Pulssequenze 
gezoomt. (auf dem Bild sieht man oben das Signal ohne zoom 
[1520ms/div]und unten der gezoomte Teil [5.2µs/div])

wenn man sukzessive Pulssequnze betrachtet, sieht man Änderungen an zwei 
Stellen, und erst nach vielen Pulssequenzen ändert sich etwas an einer 
anderen Stelle: das ist vermutlich dann die Zahl der ganzen 
Umdrehungen... Eine von den anderen Änderung ist dann vermutlich für die 
Pulszahl... hmmm ich weiß aber nicht was die andere bedeuten kann...


ich weiß nicht, ob es jetzt ein Gray Code sein kann, weil zwischen zwei 
sukzessiven Pulssequenzen hat sich (glaube ich..) nicht nur ein bit 
geändert...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Hmm, das sieht aber nu gar nicht mehr nach einem NRZ Code aus. Du 
brauchst unbedingt mehr Infos zu dem Geber, so ist das nur Rumstochern 
im Nebel. Da du die Oszillogramme hast, sitzt du doch neben der 
Apparatur, oder? Mach doch mal Fotos oder finde wenigstens mal den 
Hersteller raus.
Was perl sagte, ist schon ganz richtig (hab ich ja auch empfohlen):
http://forum.electronicwerkstatt.de/phpBB/Elektrische_Probleme/kommunikationsprotokoll_encoder-t128934f6_bs0.html

Motor langsam drehen und die Bitfolgen beobachten. Dann einen Rechner 
mit dem Signal füttern und ein Dekoderprogramm schreiben. Entweder einen 
kleinen MC oder was grosses, dazu musst du aber erstmal wissen, was du 
willst.

von Horst H. (horst_h44)


Lesenswert?

Gibt es kein Datenblatt vom Motor mit Encoder? Auch der Hersteller wäre 
schon ein Hinweis(Typenschild?). Dann könnte man sehen, was die Firma a 
Übertragunsoptionen hat. Oft sind ABZ-Signale( wie hier beschrieben: 
http://www.ichaus.biz/wp2_encoderanschluss ).

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
Noch kein Account? Hier anmelden.