mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Drehzahl-Differenzen mit PIC messen


Autor: aerodactyl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ...

Autor: aerodactyl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahhh ja,

und was will der Autor mir damit jetzt sagen ????? Ist schon spät, ich 
kann daraus jetzt leider nichts deuten...

Autor: aerodactyl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: usuru (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: aerodactyl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: usuru (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.as...

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.

Autor: aerodactyl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo usuru,

klar kenne ich die Seite und ich hatte das auch schon geprüft. Mein 
Compiler kann leider nur die Typen bis 8 MHz intern.

Gruß

Uwe

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie oft musst du diese Differenz pro Sekunde berechnen? Wie wird dieser 
Differenzwert dann weiterverarbeitet?

Autor: tt2t (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Mein Compiler kann leider nur die Typen bis 8 MHz intern.

was ist denn mit PIC18xxx ??  Die lite-Ausgabe ist kostenlos 
http://www.microchip.com/stellent/idcplg?IdcServic...

Schau auch mal bei Beitrag "Freeware C-Compiler für PIC 12F ..... 16F"

Autor: heinzhorst (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: aerodactyl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: bingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: aerodactyl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.