Drehzahlmesser mit 8051 Mikrocontroller

Ich baue eine Drehzahlmesseinheit mit einem 8051-Mikrocontroller. Ich möchte die Drehzahl eines Wechselstrommotors messen. Ich habe einen Näherungssensor angeschlossen, um den Impuls für jede Umdrehung zu erhalten.

Ich habe den Ausgang des Näherungssensors mit dem Zähler des Mikrocontrollers verbunden. Und ich berechne die Verzögerung von 1 Sekunde mit Timer.

Für jede Sekunde berechne ich die Drehzahl = Impulszahl [Zählerwert] * 60.

Bsp.: Wenn Impulszahl = 16, erhalte ich U/min = 960 U/min. Wenn Impulszahl = 17, U/min = 1020 U/min.

Hier erhalte ich eine Differenz von 60 U/min.

Mit der obigen Methode kann ich keine Drehzahl von 1000 U / min messen. Da die Impulszahl * 60 zu keinem bestimmten Zeitpunkt 1000 ist.

Bitte teilen Sie mir mit, wie ich die Drehzahl präzise messen kann.

Danke Umesh

Antworten (3)

Müsste man messen

  • entweder die Dauer zwischen dem letzten Puls und dem Ende Ihrer 1-Sekunden-Messperiode (und rechnen Sie das als Bruchteil eines Pulses in Ihre Formel ein)
  • oder (vorzugsweise) die Dauer zwischen zwei Pulsen (die 1-Sekunden-Periode weglassen und den Kehrwert der Pulsdauer verwenden, um die Pulsfrequenz zu berechnen).

Um dies zu realisieren, müssen Sie lediglich Ihr bisheriges Messprinzip umkehren: Anstatt Pulse pro Sekunde zu zählen, würden Sie Milli- oder Mikrosekunden 1 pro Puls zählen.

1: oder was für einen Sekundenbruchteil Sie leicht von einem Timer erhalten können


Darüber hinaus möchten Sie möglicherweise einen gleitenden Fensterdurchschnitt Ihrer Messungen berechnen, um deren Schwankungen zu reduzieren.

Wie kann ich die Dauer zwischen dem letzten Impuls und dem Ende der 1-Sekunden-Periode messen?
@ user2507991 Entweder so, wie ich es oben geschrieben habe, oder indem Sie den Wert Ihres 1-Sekunden-Timers (für den Sie wahrscheinlich einen Zähler verwenden, der mit einer Frequenz von n Hz auf einen bestimmten Wert n hochzählt) bei jedem Impuls speichern und verwenden der letzte gespeicherte Wert, wenn die Sekunde verstrichen ist.
Natürlich ist das Messen der Zeit zwischen jedem Tick die beste Lösung. Um weitere Hilfe zu erhalten, lesen Sie zunächst diese Seite tinyurl.com/mpqjy6v

Sie könnten mehrere Näherungssensoren verwenden, um mehrere Impulse pro Umdrehung zu erhalten. Wenn Sie eine induktive Sonde verwenden, können Sie mehrere kleine hervorstehende Eisenstücke am rotierenden Teil verwenden, die auch mehrere Impulse pro Umdrehung erzeugen.

Eine andere Möglichkeit besteht darin, ein kleines Getriebe zu verwenden, um die vom Sensor erfasste Drehzahl zu erhöhen.

Dies sind alles Nicht-Software-Methoden, aber ich würde zuerst eine Antwort in Betracht ziehen, die Software-Methoden verwendet, da die Entwicklung nur Ihre Zeit kostet. Ich würde in etwa daran denken, einen Hochgeschwindigkeitstakt / -zähler zu verwenden und diese Takte zwischen aufeinanderfolgenden Impulsen zu zählen, die vom Sensor empfangen werden.

Ich denke, das Messen der Zeit zwischen Impulsen und Mittelung ist wahrscheinlich eine gute Lösung. Wenn Sie jedoch weiterhin Impulse pro Sekunde zählen möchten, müssen Sie die Messung nur über mehrere Sekunden mitteln. Wenn Sie beispielsweise bei 1000 U/min drei aufeinanderfolgende Sekunden lang Zählungen pro Sekunde messen, erhalten Sie möglicherweise 17, 16 und 17 Zählungen, was im Durchschnitt 1000 U/min ergibt.