Forum: Mikrocontroller und Digitale Elektronik Hall-Sensor Drehgeber - digitale Auswertung


von Martin K. (mkmannheim) Benutzerseite


Lesenswert?

Ich beziehe mich auf diesen (geschlossenen) thread:
Beitrag "Hall Drehgeber analog Ausgang Auswertung"

Besitzt jemand Erfahrung in der auswertung mit dem PWM-Ausgang? Ich 
hatte zunächst in Erwägung gezogen, mehrere dieser Sensoren an einen 
I2C-Bus zu hängen, meine aber in der Beschreibung zu erkennen, dass 
jeweils immer dieselbe Adresse vergeben wird. Es bräuchte demnach 
mehrere Busse, oder sehe ich das falsch?

Das mechanische Problem das in dem thread diskutiert wurde, wird hier 
erörtert:
Beitrag "Mechanische Komponenten für magnetischen Drehgeber"

Ich gehe jetzt einfach davon aus, dass ich einen Magneten direkt über 
dem Sensor platziere, der ein Magnetfeld besitzt, wie es in der 
Zeichnung angedeutet ist.

Meine Frage wäre: wie schnell kann ich dann die Position ermitteln und 
verliere ich Information, wenn ich es nicht schnell genug antaste, wenn 
ich mehrere Sensoren multiplexe?

Da der PWM-Wert statisch mit der Position verknüpft ist, sollte es 
eigentlich kein Problem geben.

Ich hatte das zuletzt mit AB-Encodern gemacht, wo ab gewissen 
Drehgeschwindigkeiten Schritte überlesen wurden.

von Oliver R. (orb)


Lesenswert?

Martin K. schrieb:
> Ich hatte zunächst in Erwägung gezogen, mehrere dieser Sensoren an
> einen I2C-Bus zu hängen, meine aber in der Beschreibung zu erkennen,
> dass jeweils immer dieselbe Adresse vergeben wird. Es bräuchte
> demnach mehrere Busse, oder sehe ich das falsch?

Dafür kann man einen I2C-Umschalter/Multiplexer benutzen, der TCA9548 
z.B. liefert 8 I2C-Busse zwischen denen man umschalten kann.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Martin K. schrieb:
> Ich hatte das zuletzt mit AB-Encodern gemacht, wo ab gewissen
> Drehgeschwindigkeiten Schritte überlesen wurden.
Wenn das manuell betätigte Drehknöpfe sind (wie der Mechanikthread 
vermuten lässt), dann vermute ich ein Softwareproblem.

> Besitzt jemand Erfahrung in der auswertung mit dem PWM-Ausgang?
Wieso willst du da zusätzlich mit PWM rummachen, wenn du das Ding doch 
sowieso mit I2C anschließt?

Martin K. schrieb:
> Da der PWM-Wert statisch mit der Position verknüpft ist, sollte es
> eigentlich kein Problem geben.
Auch der I2C-Wert ist satisch mit der Position verknüpft.

> wenn ich es nicht schnell genug antaste, wenn ich mehrere Sensoren
> multiplexe?
Die gute Nachricht vorweg: du kannst auch mit langsamem Einlesen im 
Prinzip die Position nicht "verlieren".
Du musst nur dafür sorgen, dass du schnell genug ausliest, um den 
"Nulldurchgang" sicher mitzubekommen, damit du weißt, in welche Richtung 
der Knopf grade gedreht wird. Denn wenn du in einem Wertebereich 0..255 
nacheinander die Positionen 180, 250, 120 einliest, wurde das Poti dann 
nach 250 in die selbe Richtung weitergedreht oder hat sich die 
Drehrichtung umgekehrt?

Und da kommt der Kanckpunkt: wieviele solche "Potis" willst du einlesen? 
Und wie schnell (wieviele U/s) können die maximal gedreht werden?

: Bearbeitet durch Moderator
von Martin K. (mkmannheim) Benutzerseite


Lesenswert?

Hat jemand Erfahrungen mit der Auswertung und Genauigkeit? So richtig 
vollständig scheint das nur mit I2C zu gehen - Stichwort Rohwerte.

Wie schließe ich dann 10 - 12 Sensoren an?
Kaskadierte Umschalter?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Martin K. schrieb:
> Wie schließe ich dann 10 - 12 Sensoren an?
> Kaskadierte Umschalter?
Nimm den MAX14661, der kann 2x 16:1 multiplexen.

: Bearbeitet durch Moderator
von Michael B. (laberkopp)


Lesenswert?

Martin K. schrieb:
> Besitzt jemand Erfahrung in der auswertung mit dem PWM-Ausgang? Ich
> hatte zunächst in Erwägung gezogen, mehrere dieser Sensoren an einen
> I2C-Bus zu hängen, meine aber in der Beschreibung zu erkennen, dass
> jeweils immer dieselbe Adresse vergeben wird. Es bräuchte demnach
> mehrere Busse, oder sehe ich das falsch

Jein, du musst auch die PWM Leitungen durch einen Multiplexer jagen.

Da kannst du gleich I2C multiplexen, und hast die Chipprogrammierung per 
I2C und genaue 12 bit Positionsdaten zur Verfügung.

Denn PWM bis auf 12 bit genau auszuwerten kannst du eher vergessen, 
multiplext du 12 kannst du im PWM Mode höchstens 38 Mal pro Sekunde die 
Positionen erfassen.

Der Chip ist von den Entwicklern von ams superblöd konstruiert. Wenn man 
ihn schon EEPROM programmierbar macht, hätte man dort auch die I2C 
Adresse programmieren können.

2 74LVC139 können ausreichen um 12 I2C umzuschalten, brauchen halt noch 
4 Steuerleitungen.

Und um den PWM Ausgang musst du dich dann nicht kümmern.

von Carsten-Peter C. (carsten-p)


Lesenswert?

Moin,
vielleicht kannst Du einen kleinen Attiny zur Messung und Auswertung 
Deiner Drehgeber nutzen.
Einen kleinen I2C Treiber hab ich mal gefunden. Der läuft super stabil 
auf z.B. Attiny 85, 84 usw. Die Werte vom AD- Wandler und die Anzahl der 
Umdrehungen von einem oder mehreren Drehgebern kannst Du im SRAM 
speichern und über I2C abfragen. Die Adressen sind frei wählbar. Der 
Treiber ist in Assembler geschrieben. Kann ich bei Bedarf gerne 
weiterleiten.
Gruß
 Carsten

von Frank K. (fchk)


Lesenswert?

Martin K. schrieb:
> Hat jemand Erfahrungen mit der Auswertung und Genauigkeit? So richtig
> vollständig scheint das nur mit I2C zu gehen - Stichwort Rohwerte.
>
> Wie schließe ich dann 10 - 12 Sensoren an?
> Kaskadierte Umschalter?

PCA9547/PCA9548/TCA9548 haben drei Adressleitungen A0...A2, für die 
Festlegung der I2C-Adresse. Damit kannst Du 8 von den Dingern an einem 
Bus betreiben. Das sollte reichen.

fchk

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.