Drehzahl-Differenzen mit PIC messen

Gast #2068462
Lesenswert?

Hallo Leute,

ich möchte mit einem PIC die Drehzahldifferenzen an mehreren Wellen 
messen.
Soweit erst mal kein Problem.

Bei gleicher Drehzahldifferenz z.B. 100 RPM bekomme ich natürlich 
unterschiedliche Differenzwerte, wenn ich bei 1000 / 1100 RPM oder 5000 
/ 5100 RPM mit einem Timer messe.

Wie kann ich gleiche Werte erreichen? Umrechnen auf "echte" RPM mit * 
und 1/x scheidet wegen der Rechenzeit aus. Ebenso "Fast Integer 
Multiplication and Division", da nur der Multiplikator eine Konstante 
ist.

Irgend jemand eine Idee, wie man das umschiffen kann?

Ich beiß mir da jetzt schon den ganzen Tag die Zähne dran aus und komme 
nicht dahinter.


Gruß
Uwe
Gast #2068744
Lesenswert?

Hallo Michael,

ich hoffe du fühlst dich durch meine Äußerung nicht "auf den Schlips 
getreten". Wenn doch, war das nicht meine Absicht und ich entschuldige 
mich bei dir.

Da ich keine float Werte habe und auch nicht brauche, arbeite ich nur 
mit Ganzen Zahlen und somit in der Festkommaarithmetik.

Die Timer-Werte liegen zwischen 50000 und 10000 was ziemlich genau µs 
entspricht.

Wenn ich das auf RPM nach der Formel "RPM = 60000000 *1/Timerwert" 
umrechne, braucht mein PIC (8 MHz) dafür genau 581,5 µs pro Rechnung. 
Und das ist eindeutig zu lange und da liegt mein Problem. Dies muss ich 
irgendwie lösen und hoffe auf einen Ansatz dafür aus euren Reihen.

Salut

Uwe
(Firma: Promaxx.net) #2069015
Lesenswert?

Wenn Du nicht die Zeit einer Umdrehung messen würdest, sondern die 
Anzahl der Drehungen pro Sekunde, hättest Du die Division gespart, denn 
Du willst ja die Differenz messen.

Bei 5000 RPM braucht eine Umdrehung ca. 11000us. Da reicht doch die 
Rechenzeit von ca. 580us aus, um den Wert umzurechnen.

Evtl. mußt Du etwas ranklotzen und einen schnellen PIC nehmen. 20MHz 
sollten immer gehen, evtl. gibt es auch 40MHz-Typen bei den einfachen 
PICs.
Oder mal einen kleinen dsPIC33F nehmen, da geht noch mehr 
Rechenleistung.
Gast #2069230
Lesenswert?

Hallo zusammen,

mein CCS Copiler kann die ganz neuen 16er PIC's mit internen 32 MHz 
nicht und ich möchte mir den Neukauf sparen.
Wenn ich einen Quarz oder Resonator nehme, fehlen mir wieder die 2 
Pinne.....

Die Idee, auf eine feste Zeit zu messen, ist nicht schlecht, leider geht 
das aus Zeitgründen nicht.

Kommt man dem Problem ggf. mit Kompensationswerten aus einem Array, 
welches man hinterlegt, bei? Werte dann Speed-Abhängig aus dem Array 
holen und dann verrechnen?

Hmmmm, nicht so einfach, das Ganze.....

Gruß

Uwe
Gast #2069255
Lesenswert?

> mein CCS Copiler kann die ganz neuen 16er PIC's mit internen 32 MHz
> nicht und ich möchte mir den Neukauf sparen.

http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1002&mid=10&lang=en&pageId=74

Kennst Du diese Seite? Links oben auf "parametric search", dann kannst 
Du nach 16 oder 32 MHz suchen, dass "search" dann "detail", und 
vergleichen, ob was für Deinen Compiler dabei ist.
Gast #2069418
Lesenswert?

aerodactyl schrieb:
> Wenn ich einen Quarz oder Resonator nehme, fehlen mir wieder die 2
>
> Pinne.....

Wenn du irgendeine Anwendung hast, in der du Zeiten uder Umdrehungen pro 
Zeiteinheit messen willst, dann sollte es schon ein Quarz sein. 
Grundssätzlich gilt immer: Deine Messung kann nicht genauer sein, als es 
deine Referenz ist. Und die Referenz ist der Oszillator deines 
Mikrocontrollers. Und ein interner RC-Oszillator ist eben nicht 
besonders genau. Wenn deine Messung nicht besonders genau sein muss, 
dann ist das natürlich in Ordnung.
Gast #2069500
Lesenswert?

heinzhorst schrieb:
> eine Messung kann nicht genauer sein, als es
> deine Referenz ist. Und die Referenz ist der Oszillator deines
> Mikrocontrollers.

Ja, das ist schon klar.
Die absolute Drehzahl und die Differenzen müssen nicht perfekt sein. Mir 
geht es nur darum, die leidige Division im µC zu umgehen, damit ich bei 
allen Drehzahlen gleiche Werte für die gleiche Drehzahl-Differenz habe.

Bei 4 Messwerten kostet mich das 2,3 ms Rechenzeit. Und das gefällt mir 
einfach nicht :-)

Gruß

Uwe
Gast #2069512
Lesenswert?

> Und ein interner RC-Oszillator ist eben nicht besonders genau.

Die internen Oszillatoren der PIC sind auf 1% genau getrimmt, ein 
Resonator hat 0.5%, erst der Quarz bringt den Quantensprung.

> Bei 4 Messwerten kostet mich das 2,3 ms Rechenzeit. Und das gefällt mir
> einfach nicht :-)

Dann nimm halt einen schnelleren PIC, Vorschläge siehe oben, oder einen 
Quarz + PIC mit mehr Pins.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren