Forum: Mikrocontroller und Digitale Elektronik Differenzdrehzahl messen


von karim g. (krizzle)


Lesenswert?

Hallo,
ich bin neu hier im Forum und auch das programmieren von 
Mikrocontrollern ist Neuland für mich. Im Rahmen meiner Diplomarbeit 
habe ich nun die Aufgabe ein Differenzdrehzahl Messsystem aufzubauen. 
Das heißt die Sensorwerte von zwei Drehzahlsensoren aufnehmen und 
auswerten.
Zum einen das Signal eines Hallgebers und zum anderen das Signal eines 
Induktivgebers, welches Mittels Schmitt-Trigger hochohmig abgegriffen 
werden soll um das Sensorsignal für eine parallel laufende 
Motorsteuerung nicht zu verfälschen.
Mein erstes Ziel ist es, einen geeigneten Mikrocontroller bzw. ein 
Entwicklungsboard zu finden welches für diese Aufgabe geeignet ist, um 
dann mittels Funktionsgenerator die Drehzahlen zu simulieren und das 
System zu Testen.
Erwartet werden Drehzahlen bis 12.000 1/min und die Signalerkennung 
läuft bei beiden Sensoren über ein Inkrementenrad mit jeweils 60 Zähnen.
Wenn ich richtig rechne sollten demnach Signale mit einer Frequenz von 
12kHz entstehen.

Könnt ihr mir bei der Auswahl eines geeigneten Entwicklungsboards 
helfen?

Vielen dank schonmal!

von oldmax (Gast)


Lesenswert?

Hi
Nun, der Atmega8 kann mit 16 MHz betrieben werden. Die Signale kannst 
per Interrupt einsammeln. Wenn du nur die Differenz erfassen sollst, 
einen Kanal hoch, den anderen runterzählen. Sollte mit dem genannten 
Controller machbar sein.
Gruß oldmax

von m.n. (Gast)


Lesenswert?


von Anja (Gast)


Lesenswert?

karim g. schrieb:
> Inkrementenrad mit jeweils 60 Zähnen.

Wirklich? die Räder die ich kenne haben 60-2 Zähne. (mit 2 Zähnen 
Zahnlücke).
Bei 12000 U/min wird man eher ein 36-2 Zähne-Rad verwenden.

Profis nehmen hierfür heutzutage entweder einen TC1797 oder einen 
Nachfolgeprozessor mit digitaler PLL für die Drehzahlerfassung.
Von Motorola gibt es dann noch die Power-PC-Reihe.

Gruß Anja

von m.n. (Gast)


Lesenswert?

Anja schrieb:
> Profis nehmen hierfür heutzutage

Er ist Anfänger und wäre mit den genannten Prozessoren sicher 
überfordert.

karim g. schrieb:
> Im Rahmen meiner Diplomarbeit
> habe ich nun die Aufgabe ein Differenzdrehzahl Messsystem aufzubauen.

Spezifiziere Deine Anforderungen bezüglich Gebersignal (mit Zahnlücke?), 
Auflösung/Genauigkeit und Meßgeschwindigkeit.

von karim g. (krizzle)


Lesenswert?

Vielen dank für die Empfehlungen.
Ich denke es wird ein Atmega88. Die Handhabung scheint gleich zu sein, 
aber er ist Leistungsfähiger und bietet mehr Externe Interrupts als der 
Atmega8.
Könnt ihr mir ein fertiges Board empfehlen mit dem ich ein paar 
Tutorials machen kann bevor ich mit der Drehzahlmessung starte?

von Udo S. (urschmitt)


Lesenswert?

karim g. schrieb:
> Ich denke es wird ein Atmega88. Die Handhabung scheint gleich zu sein,
> aber er ist Leistungsfähiger und bietet mehr Externe Interrupts als der
> Atmega8.

Frei nach Ikea:
Bastelst du noch oder machst du schon Diplomarbeit?

m.n. schrieb:
> Spezifiziere Deine Anforderungen bezüglich Gebersignal (mit Zahnlücke?),
> Auflösung/Genauigkeit und Meßgeschwindigkeit.

von karim g. (krizzle)


Lesenswert?

> Spezifiziere Deine Anforderungen bezüglich Gebersignal (mit Zahnlücke?),
> Auflösung/Genauigkeit und Meßgeschwindigkeit.

Das Gebersignal wird über einen Induktivgeber von einem 60-2 Schwungrad 
eines Motors aufgenommen. Das Zweite Drehzahlsignal kommt von einem 
Hallgeber der ebenfalls 60 Zähne pro Umdrehung sieht. Allerdings ohne 
Zahnlücke.
Zwischen den Beiden Inkrementenrädern befindet sich eine Gelenkwelle die 
den Motor mit einer Wirbelstrombremse verbindet.
Ziel ist es, durch den vergleich der Drehzahlen einen Bruch der 
Gelenkwelle schnellstmöglich zu erkennen und eine Reaktion einzuleiten.
Dafür wäre natürlich eine möglichst hohe Auflösung von Vorteil. Optimal 
wäre es vielleicht jeden Zahn zu erkennen und die Drehzahl 60 mal pro 
Umdrehung zu Ermitteln.
Ob das möglich ist werde ich wohl im laufe des Projekts feststellen.

von Karl H. (kbuchegg)


Lesenswert?

Mir ist noch nicht klar, wozu du da die Drehzahl kennen musst.

Wenn vom einen Geber ein Puls kommt, wird eine Variable erhöht.
Kommt vom anderen Geber ein Puls, dann wird die Variable erniedrigt.

Im Mittel muss die Variable einen Wert von 0 aufweisen. (+-1 wegen 
eventuellem Zeitversatz). Laufen auf einem Geber mehr Pulse auf als am 
anderen, dann stimmt was nicht. Bei einem Variablenwert abs(counter) 
größer als 5 wird Alarm ausgelöst.

Die absolute Drehzahl muss dazu kein Mensch kennen.

Das ist ein mitzählen: Für jeden der in einen Raum reingeht addierst du 
1, für jeden der rauskommt subtrahierst du 1. Beim Absperren muss die 
Anzahl 0 sein, sonst ist wer vergessen worden.
Wenn in der Bergstation einer Seilbahn mehr Gondeln talwärts fahren als 
raufkommen, dann ist das Tragseil gerissen.
Wenn beim Paternoster mehr Kabinen nach unten vorbeirauschen als noch 
oben fahren, dann ist was gebrochen.

Die Drehzahl kann man ja immer noch ermitteln. Aber das muss nicht 60 
mal in der Sekunde passieren. So schnell kann sowieso kein Mensch 
Messinstrumente ablesen.


> Ob das möglich ist werde ich wohl im laufe des Projekts feststellen.
Und wie verhinderst du, dass deinem µC langweilig wird?

von Udo S. (urschmitt)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Die absolute Drehzahl muss dazu kein Mensch kennen.

Völlig richtig.

Wenn man schon Richtung Brucherkennung einer Welle geht, könnte man 
zusätzlich noch Versuchen die dynamischen Versatzzeiten zu ermitteln um 
so auf die Torsionsmomente zu schliessen und Schwingungen zu erkennen.

von karim g. (krizzle)


Lesenswert?

@ Karl Heinz Buchegger

:)Sehr anschaulich erklärt!

Dann kann mir die absolute Drehzahl offensichtlich erstmal egal sein.

> So schnell kann sowieso kein Mensch Messinstrumente ablesen.

Deshalb soll die Ersatzreaktion auch automatisch eingeleitet werden.

> Und wie verhinderst du, dass deinem µC langweilig wird?

Ok, dann hab ich das Teil wohl unterschätzt!


> Völlig richtig.
>
> Wenn man schon Richtung Brucherkennung einer Welle geht, könnte man
> zusätzlich noch Versuchen die dynamischen Versatzzeiten zu ermitteln um
> so auf die Torsionsmomente zu schliessen und Schwingungen zu erkennen.

Das ist auch Teil der Aufgabenstellung. Aber als erstes muss ich einen 
Einstieg finden, mich auf das verwendete Board einschießen und dann 
Versuchen eine vernünftige Signalerkennung auf die Beine zu stellen.

von oldmax (Gast)


Lesenswert?

Hi
Nun, viel geschrieben, aber im Grunde Beitrag 2....
Du wirst bei deiner Aufgabe sicherlich nicht um die Messung der 
Torsionsmomente herumkommen, denn wenn du bei dieser Auflösung 2 Impulse 
auseinander liegst, beschleunigt eine Seite noch, während die andere 
langsam zum Stillstand kommt.
Ich meine dabei jetzt nicht den Anlauf, da wird sich je nach Material 
möglicherweise schon eine Differenz aufbauen, aber entweder bleibt sie 
dann konstant oder geht wieder auf 0. Kommt ganz auf die Leistung und 
Belastung an.

Daher wirst du erfassen müssen:
Wann ist Geschwindigkeit konstant, wann sind Lastwechsel. Dabei bedenke, 
für einen Controller ist eine konstante Geschwindigkeit bereits gegeben, 
wenn sich in einer Zehntelsekunde die Drehzahl nicht verändert hat....

Im Übrigen finde ich es völlig korrekt, das du dir ein wenig Gefühl für 
die Controller erarbeiten möchtest. Da drück ich dir doch glatt die 
Daumen, das du auch die nötige Zeit hast.
Gruß oldmax

von H.Joachim S. (crazyhorse)


Lesenswert?

Bleibt noch die Frage: ist es nur die Diplomarbeit oder soll dabei auch 
was praktisch nutzbares/direkt einsetzbares herauskommen?
Falls Punkt2: such auch mal nach Drehmomentmesswellen. Ok, nicht ganz 
billig:-)

von Ralph (Gast)


Lesenswert?

karim g. schrieb:
>> Wenn man schon Richtung Brucherkennung einer Welle geht, könnte man
>> zusätzlich noch Versuchen die dynamischen Versatzzeiten zu ermitteln um
>> so auf die Torsionsmomente zu schliessen und Schwingungen zu erkennen.
>
> Das ist auch Teil der Aufgabenstellung. Aber als erstes muss ich einen
> Einstieg finden, mich auf das verwendete Board einschießen und dann
> Versuchen eine vernünftige Signalerkennung auf die Beine zu stellen.

Um diesen Versatz zu bestimmen wirst du eine sehr feine Auflösung der 
Timer benötigen.
Ich denke mal das das der bestimmende Punkt sein wird.
Also berechne mal wie fein die Timerauflösung zum erfassen der Pulse 
sein muss, damit für die Torsionsmomente etwas relevantes berechnet 
werden kann.
Vom Gefühl her würde ich bei der Eingangsfrequenz den ATmega als zu 
schwach betrachten.
Ich denke du wirst da eher Richtung Cortex Mx mit > 60 MHz gehen müssen.

von karim g. (krizzle)


Lesenswert?

@oldmax
Das anliegende Torsionsmoment wird durch eine Kraftmessdose an der 
Wirbelstrombremse aufgenommen. Deshalb ist auch keine 
Drehmomentmesswelle erforderlich.
Bevor ich die dynamischen Effekte durch Lastwechsel beobachte, muss ich 
erstmal in der Lage sein die Ungleichförmigkeiten bei Stationärbetrieb 
aufzunehmen.

H.joachim Seifert schrieb:
> Bleibt noch die Frage: ist es nur die Diplomarbeit oder soll dabei auch
> was praktisch nutzbares/direkt einsetzbares herauskommen?
> Falls Punkt2: such auch mal nach Drehmomentmesswellen. Ok, nicht ganz
> billig:-)

Ich finde eine Wellenbruch-Überwachung schon sinnvoll. Zumal man damit 
das Risiko von Schäden am Prüfstand sowie am zu prüfenden Motor 
minimieren kann.

Schön das ihr euch hier im Forum auch für den mechanischen Teil meiner 
Arbeit interessiert. Die erste Aufgabe für mich ist der reine Aufbau 
einer Wellenbruch-Überwachung. Das hat erstmal noch nichts mit 
Torsionsschwingungen zu tun. Gut, man muss in Erfahrung bringen in wie 
weit eine Elastische Verformung der Welle toleriert werden darf, aber 
das sind Probleme mit denen ich mich parallel zum Aufbau dieses Systems 
beschäftigen werde. Wenn ich einen Mikrocontroller habe der meine 
Signale aufnehmen und Verarbeiten kann bin ich schonmal sehr zufrieden.

von oldmax (Gast)


Lesenswert?

Hi
Ok,, dannn brauchst du "nur" die Überwachung auf Bruch, das ist 
einfach... wie gesagt, Differenzgeschwindigkeiten >3-4 Imp und dann ist 
das Ding schon ab, schätze ich. Vom Atmega88 hab ich grad nicht die 
Unterlagen aber du wirst da schon richtig verglichen haben. Mit den 2 
Interrupt-Eingängen hätt ich jetzt mal behauptet, würdest du auskommen, 
da du ja nur die schnellen Impulse erfassen mußt und da ist weniger die 
Frequenz entscheidend, sondern das Puls-Pause Verhältnis. Mit einem 
kuzen Puls kannst du beim Polling was verpassen, obwohl die Frequenz was 
anderes sagt....
Taster und Bedienung gehören nicht in den Interruptbereich. Da reicht 
Polling völlig aus.
Übrigends, ich war es nicht, der von Drehmomentmesswelle geschrieben 
hat, sondern davon, das bei einem Lastwechsel durchaus unterschiedliche 
Impulse auftreten können. Dies jedoch nur in kurzen Zeitbereichen.
Aber du machst das schon. Viel Spaß bei deiner Diplomarbeit.
Gruß oldmax

von Achim M. (minifloat)


Lesenswert?

oldmax schrieb:
> Mit den 2
> Interrupt-Eingängen hätt ich jetzt mal behauptet, würdest du auskommen,
> da du ja nur die schnellen Impulse erfassen mußt und da ist weniger die
> Frequenz entscheidend, sondern das Puls-Pause Verhältnis.

Nix mit Interrupt! Der mega88 hat da zwei Eingänge, die heißen T0 und 
T1.

Damit kann man zwei der drei Timer "von außen her" takten. Die Pulse 
werden aber erst in den Prozessortakt einsynchronisiert, da kann die 
eingehende Frequenz maximal f_cpu/2 sein(Nyquist und Shannon, wenn ich 
die erwische sind sie dran!!).

Nun kann man in der Mainloop bequem die beiden Zählerstände vergleichen. 
Was anderes ist ja nicht zu tun oder?

mfg mf

von karim g. (krizzle)


Lesenswert?

Jetzt hab ich auf jeden Fall schonmal ein kleines Basiswissen, und weis 
mit welchem Controller ich an die Sache ran gehen kann.
Vielen dank euch allen und ich werde berichten wenns weitergeht!

von Anja (Gast)


Lesenswert?

karim g. schrieb:
> Das Gebersignal wird über einen Induktivgeber von einem 60-2 Schwungrad
> eines Motors aufgenommen. Das Zweite Drehzahlsignal kommt von einem
> Hallgeber der ebenfalls 60 Zähne pro Umdrehung sieht.

Hallo ihr Helden,

ihr habt einen wesentlichen Teil der Aufgabenstellung wohl übersehen:
der eine Geber hat weniger Zähne als der andere.

Also mit einem einfachen Zahnvergleich wird es nichts. Die fehlenden 
Zähne müssen ausgeblendet / interpoliert werden.

Das mindeste was man braucht ist ein Prozessor mit 2 CCP-Units mit noise 
canceler (digitales Filter) damit man auf den Flanken auswerten kann.

Das dürfte mindestens ein  ATMega1284 werden.

Die Frage ist ob das reicht. Die Geberräder sind meist nicht ganz rund 
so daß ggf. noch mathematisch aufwendige Adaptionsfunktionen notwendig 
sein können. (Es sei denn Du willst wirklich erst den Zustand nach dem 
Bruch der Welle erkennen und nicht schon kurz vorher).

Gruß Anja

von Peter II (Gast)


Lesenswert?

Anja schrieb:
> ihr habt einen wesentlichen Teil der Aufgabenstellung wohl übersehen:
> der eine Geber hat weniger Zähne als der andere.

wenn man nach 30 Zähnen eine impuls überspringt hat man die gleiche 
anzahl.

Die Frage ist immer noch wie schnell muss ein fehler erkannt werden, 
wenn es nur innerhalbt 1 umdrehung sein muss reicht diese einfache 
lösung.

von Anja (Gast)


Lesenswert?

karim g. schrieb:
> Jetzt hab ich auf jeden Fall schonmal ein kleines Basiswissen,

lies dir mal ein paar Patente auf dem Gebiet durch:

http://www.google.com/patents/US5789658

http://www.google.com/patents/US5428991


Gruß Anja

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.