-
-
Erfahrener Benutzer
Robotik Einstein
Drehzahl erfassen und anzeigen
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.
-
Erfahrener Benutzer
Roboter Genie
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.
-
Erfahrener Benutzer
Robotik Einstein
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.
-
Erfahrener Benutzer
Roboter Experte
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
-
Erfahrener Benutzer
Roboter Genie
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.
-
Erfahrener Benutzer
Robotik Einstein
@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
-
Erfahrener Benutzer
Roboter Experte
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
-
Erfahrener Benutzer
Robotik Einstein
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.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen