PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Drehzahl erfassen und anzeigen



kalledom
15.03.2006, 15:20
Hallo,
mein Thema hat mit Motor und PIC zu tun, deshalb setze ich es in die Rubrik Elektronik :-)
Mit einem per RS232 konfigurierbaren PIC 16F877 möchte ich die Drehzahl von Motoren im Bereich 100...12.500 Upm ermittelen und wahlweise auf 2...3 7-Segment-Anzeigen die Tausender- und Hunderter-Stelle oder an einem 24 LED-Halbkreis anzeigen.
Dazu soll ein Hall-Sensor das Magnetfeld von 1...4 Magneten auf der Motor-Welle / -Scheibe in Impulse umwandeln und im PIC per Interrupt erfaßt werden.
Es gibt die Möglichkeit, über eine feste Zeit alle ankommenden Impulse zu zählen oder die Zeit zwischen 2 Impulsen zu ermitteln.
Welche Methode ist die bessere oder gibt es noch eine weitere Möglichkeit ?
Danke für Eure Antworten.

Madgyver
15.03.2006, 16:29
Ich denke die Zeit zwischen 2 Impulsen zu Zählen, und dann hoch zu rechnen erzeugt ne extrem schwankende Anzeige bzw. kann man eh nicht für einen Menschen lesbar darstellen. Dann müsste man mehrer Messungen machen und mitteln.

Das ganze erübrigt sich ja bei einer Messung der Impulse über eine Zeit, da wird ja quasi automatisch gemittelt. Ausserdem kann man bei einer lang genug gewählten Zeit gleichzeitig die Ausgabe aktualisieren.

kalledom
15.03.2006, 17:06
Der erste Gedanke ist immer der Richtige; deshalb hatte ich auch 4 Magnete einbauen lassen, damit 100 U/min noch gut zu ermitteln sind.
Bei 60 U/min = 1 U/sek bekäme ich 4 Impulse/sek, bei einem Mess- / Zähl-Zyklus von 0,5 Sekunden noch 2 Impulse.
Die niedrigsten beiden Bits, die ja 1/4 Umdrehung darstellen, würde ich zur weiteren Berechnung 'weg-shiften' und als 'Rest' für den nächsten Zähl-Zyklus belassen.
Das Ergebnis müßte dann noch für die 7-Segment- oder Halbkreis-Anzeige entsprechend umgerechnet werden.

waste
15.03.2006, 18:29
Hallo kalledom,

wenn du sowieso nur eine Auflösung von 100U/min hast, dann reicht 1Puls/Umdrehung, also 1 Magnet aus. Mit 0.6 sec Messzeit hast dann genau eine Auflösung von 100U/min.

Waste

Crazy Harry
15.03.2006, 22:24
Ich denke aber, daß eine Messung/Aktualisierung alle 0.6sek zu wenig ist - in der Zeit überstreicht der Motor einen recht großen Drehzahlbereich.
Eine Messung der Periodendauer und evtl. Mittlung ist in dem Fall glaube ich besser.

kalledom
15.03.2006, 22:43
@waste
Stimmt; bei 4 Magneten muß ich das Ergebnis allerdings 2 mal nach rechts schieben:
60 U/min = 1 U/sec = 4 Pulse pro Sekunde = 2 Pulse in 0,5 Sekunden oder einfach
100 U/min = 1,667 U/sec = 6,667 Pulse pro Sekunde = 4 Pulse in 0,6 Sekunden, 2 x rechts schieben = Anzeige 0,1 T U/min

waste
16.03.2006, 13:41
Es gibt mehrere Möglichkeiten für eine Auflösung von 100 U/min:
1) 1 Puls in 0.6 Sekunden und direkt zählen
2) 2 Pulse in 0.6 Sekunden und 1 x rechts schieben
3) 2 Pulse in 0.3 Sekunden und direkt zählen
4) 4 Pulse in 0.6 Sekunden und 2 x rechts schieben
5) 4 Pulse in 0.3 Sekunden und 1 x rechts schieben
und und und...

Wer die Wahl hat, hat die Qual. :)

Waste

kalledom
16.03.2006, 15:25
Keine große Qual, weil ich die niedrigsten 2 Bits (1/4 Umdrehung) immer für die folgende Zählung belasse. Also:
- nach 0,6 Sekunden den Zählerstand kopieren
- Zähler bis auf die beiden niederwertigen Bits löschen
- Kopie 2 x rechts schieben
- Ergebnis in 7-Segment-Werte wandeln und anzeigen.
Damit bin ich, von der fehlenden Zehner- und Einer-Anzeige abgesehen, +/- 1/4 Umdrehung genau.