Arduino Drehzahl Impulse zählen

Gast #3030092
Lesenswert?
• ▲
▼
Möchte mit dem duemilanove Drehzahlen vom Elektromotor mit Hallgebern 
messen.Hab schon mit dem PulseIn Befehl schnell Ergebnise bekommen. 
Allerdings eignet sich das ganze nicht, da bei ganz kleinen Drehzahlen 
die
Zeiten zu lang werden.Hab mich hier durchs Forum gelesen und es mit 
interrupts und micros()versucht zu lösen. Hab den Code aus dem Internet 
und für meine Aufgabe angepasst ..Aber über den Seriell-Monitor bekomm 
ich keine vernünftigen Werte raus.Hat jemand ne Idee oder einen Tip?
1
void setup() {
2
  pinMode(2, INPUT);                        // Eingangspin auf Eingang 
3
  
4
  attachInterrupt(0, readmicros, RISING );  // Interrupt 0 auf Routine
5
}
6

7
volatile unsigned long dauer=1;             // microsekunden 
8
volatile unsigned long last=0;              // Zählerwert 
9
long drehzahl;                              // selbstredend
10
char buf[17];                               // Pufferstring für sprintf
11

12
void loop() {                               // Hauptprogramm
13
  drehzahl = 60000000 / dauer;              // Drehzahl ausrechnen und
14
  sprintf(buf, "%5lu", drehzahl);           // als 5 Zahl in den Puffer 
15
  serial.println(buf);                      // Puffer ausgeben
16
  delay(500);                               // Eine halbe Sekunde warten
17
}
18

19
void readmicros() {                         // Interrupt-Routine
20
  unsigned long m = micros();               // Microsekunden auslesen
21
  dauer = m - last;                         // Differenz letzte
22
  last = m;                                 // Letzten Wert merken
23
}
Gast #3250884
Lesenswert?
• ▲
▼
Hey,

bin selbst dran einen Drehgeber auszulesen.
Hab dir den Tipp, dass die Funktion micros selbst den Interrupt benötigt 
und deswegen funktioniert dies nicht. Die interrupts blockieren sich 
gegenseitig.

Hast du bereits eine Lösung? Würde mich freuen!
Gast #3250889
Lesenswert?
• ▲
▼
Arduino-help schrieb:

> da bei ganz kleinen Drehzahlen
> die
> Zeiten zu lang werden

Bei langen Zeiten mißt man die Zeit, und rechnet sie dann in Frequenz 
um. Das ist auch so eine alte Sache, wo Frequenzmesser auch mit zu 
kämpfen haben. Bei sehr geringen Frequenzen messen sie Zeit pro Impuls, 
bei hohen Frequenzen Impulse pro Zeit.
Gast #3250911
Lesenswert?
• ▲
▼
Wilhelm F. schrieb:
> Bei langen Zeiten mißt man die Zeit, und rechnet sie dann in Frequenz
> um. Das ist auch so eine alte Sache, wo Frequenzmesser auch mit zu
> kämpfen haben. Bei sehr geringen Frequenzen messen sie Zeit pro Impuls,
> bei hohen Frequenzen Impulse pro Zeit.

Reziprokzähler nennt sich das dann, wie z.B. im Artikel 
Frequenzzählermodul oder im 
Beitrag "Frequenzzähler 1Hz - 40MHz"

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.