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
aerodactyl schrieb:> 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.
Also sorry - die Berechnung ist mit Festkommaarithmektik ein rechter
Witz. 5000 rpm sind auch nicht viel ...
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
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.
Selbst die einfachen PICs können meist schon 20 MHz (wenn es nicht
gerade ein 16F84 ist). Viele der neueren kleinen PICs können sogar 32
MHz, manche können das per PLL soagar ohne Quarz.
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
> 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.
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.
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
> 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.
bingo schrieb:> Dann nimm halt einen schnelleren PIC, Vorschläge siehe oben, oder einen> Quarz + PIC mit mehr Pins.
Ja, da wird es dann wohl raus hinauslaufen, wenn die Gemeinde auch keine
bahnbrechenden Ideen mehr hat.
Gruß
Uwe