Forum: Mikrocontroller und Digitale Elektronik Drehzahlmessung über I2C


von operator (Gast)


Lesenswert?

Ich möchte die Drehzahl eines BLDC messen, der über Hallsensoren 
geregelt wird.
Dies muss über I2C geschehen, da eine galvanische Trennung vorhanden ist 
und weitere Bauteile bereits über diesen Bus angeschlossen sind.

Nun wäre mein Idee, über einen RTC das Clocksignal zu erzeugen (32768 
oder irgendwas in der 2er Potenz geteilt) und damit ein Schieberegister 
zu takten. Bei einer logischen 1 des Hallsensors, würde das Register 
hochzählen, bei einer 0 stoppen bis es ausgelesen wird und dann reseten 
für die nächste Messung.

Insgesamt befinden sich 3 Hallsensorsignale auf dem Print, wobei einer 
reichen dürfte. Ebenfalls macht es für die Drehzahlmessung keinen 
Unterschied in welchem Winkel diese angeordnet sind.

Mein Problem ist nun, dass ich auf mouser keine I2C Schieberegister 
finde. Kennt jemand einen Baustein der dies kann?
Oder verfolge ich bereits einen falschen Ansatz für die Drehzahlmessung?

Regelbarer Drehzahlbereich sollte 60...3000rpm sein (1...50Hz) und 1rpm 
Auflösung (0.016Hz)

von Helmut L. (helmi1)


Lesenswert?

operator schrieb:
> Mein Problem ist nun, dass ich auf mouser keine I2C Schieberegister
> finde. Kennt jemand einen Baustein der dies kann?
> Oder verfolge ich bereits einen falschen Ansatz für die Drehzahlmessung?

Ja, du brauchst einen Zaehler und kein Schieberegister. Da wirst du 
wahrscheinlich in I2C auch nix finden. Am besten du nimmst ein kleinen 
CPLD/FPGA  und baust dir dein I2C gesteuerte Drehzahlerfassungchip 
selber.
Oder du gibst das Impulssignal vom Hallsensor ueber einen weitreren 
Optokoppler auf deinen uC (Capture Eingang).

von Jens (Gast)


Lesenswert?

Hallo,

du nimmst ein Schieberegister 74HC595 oder was ähnliches. Da kommt dein 
Wert rein. Die Ausgänge schließt du an I²C Portexpander ein. Die kannst 
du dann einlesen.

Aber ein Zähler ist wirklich besser. Dann bekommst du auch direkt einen 
richtigen Wert den du weiter verarbeiten kannst. Es gibt 
Zählerbausteine, die parallel ihren Wert ausgeben. Die kannst du dann 
auch mit einem I²C Portexpander wieder zurück lesen.
Wenn du deinen Zähler 16-24bit breit machst, kannst du da auch mit einer 
höheren Frequenz drauf gehen und bekommst eine größere Auflösung.

Gruß

von spontan (Gast)


Lesenswert?

Du könntest eine kleine selbstständige Einheit bauen.

Ein µC, der die Signale der Hallgeber verarbeitet,
sie in Drehzahlwerte umrechnet
und über I2C an den übergeordneten Prozessor ausgibt.

von operator (Gast)


Lesenswert?

Danke für die Antworten, mit einem Portexpander kann ich leben, wenns 
nicht direkt geht. Habe dazu bereits den PCA9539 im Einsatz, kann da 
noch einen vorsehen.

CPLD o.Ä. möchte ich vermeiden, da die Produktion sonst aufwendiger 
wird.

Gibt es ein Beispiel Chip für einen Zähler? Ich komme immer nur auf 
Bauteile die einen clock ausgeben :S
Wenn ich einen habe, dann kann ich mit dem auf weitere schliessen. Ich 
suche wohl in der falschen Kategorie.

von Helmut L. (helmi1)


Lesenswert?

74HC393 8 Bit Counter

Du wirst aber auch noch ein paar gatter ect. brauchen

von Michael L. (nightflyer88)


Angehängte Dateien:

Lesenswert?

spontan schrieb:
> Du könntest eine kleine selbstständige Einheit bauen.
>
> Ein µC, der die Signale der Hallgeber verarbeitet,
> sie in Drehzahlwerte umrechnet
> und über I2C an den übergeordneten Prozessor ausgibt.

Genau sowas hab ich.

Den Drehzahlsensor hab ich mal für einen Modellbau Datenlogger 
entwickelt der mit I2C funktioniert. Der Sensor ist zur optischen 
Messung der Drehzahl eines 2-Blatt Propellers gedacht.

Das ganze funktioniert mit einem Attiny85, der als Slave arbeitet. 
Willst du einen Hallsensor nehmen, so kann dieser direkt am PB4 
angeschlossen werden und der Fototransistor mit LM358 kann weggelassen 
werden.

Bei Interesse am Code, melde dich.

von operator (Gast)


Lesenswert?

Vielen Dank für die Hilfe bisher und Danke für dein Angebot Michael.

Leider kann ich aber keine programmierbaren Bauteile einsetzen, es sein 
sie werden über I2C programmiert. Wobei in diesem Falle wäre 
konfigurieren das korrektere Wort.

Inzwischen bin ich über die Maxim DS137X Reihe gestolpert.
Ein I2C RTC mit eingebautem Binarycounter, einmal 32Bit, einmal 24Bit.
Der 32Bit Counter ist dazu gedacht im 1Hz takt zu zählen, der 24Bit 
Counter kann im besten Falle mit 4096Hz betrieben werden.

Sollte jemand auf der Suche nach so etwas sein, hoffe ich damit helfen 
zu können.
Ich werde es auf jeden Fall prüfen ob ich mit der Auflösung klar komme 
und ansonsten auf Counter + Portexpander zurückgreifen. Wollte dies euch 
aber nicht vorenthalten.

MfG

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.