| | Drehzahlprüfstand mit Python 3.1.1
Hier soll die Drehzahl [1/min] von fischertechnik-Motoren - gemessen an der
Abtriebswelle - mit einem einfachen Python-Programm und dem ROBO TX Controller
bestimmt werden. Das Programm wird in zwei unterschiedlich komplexen Varianten vorgestellt.
Zentraler Punkt des Versuchsaufbaus ist eine Lichtschranke gebildet aus einem
Photowiderstand und einer Linsenlampe, die durch ein Scheibenrad mit sechs
Schlitzen (das Rad ist mit dunklem Karton abgeklebt) unterbrochen werden. Das
Scheibenrad wird durch den zu untersuchenden Motor mit einer Untersetzung
von 2 : 1 angetrieben.
Der zu untersuchende Motor ist an M1 angeschlossen, die Lampe der
Lichtschranke an O3 und der Photowiderstand an C1 (Zähleingang). Mehr ist
nicht.
Die Bestimmung der
Drehzahl wird dann durch das Meßprogramm in einer vorgegebenen Prüfzeit von 15
Sekunden durch Zählen der Unterbrechungen der Lichtschranke durchgeführt. Am
Programmende werden unterschiedliche Daten zur Messung ausgegeben.
Programm DrehzahlEinsD :
from FishFaTX import *
tx = FishFace()
ImpulseUmdrehung = 6
Untersetzung = 2
Messdauer = 15
tx.OpenController(4)
tx.SetLamp(0, 3, 512)
tx.ClearCounter(0, 1)
tx.SetMotor(0, 1, tx.Ein)
tx.Pause(Messdauer * 1000)
tx.SetMotor(0, 1, tx.Aus)
tx.SetLamp(0, 3, tx.Aus)
Drehzahl = tx.GetCounter(0, 1) / (ImpulseUmdrehung / Untersetzung) * (60 / Messdauer)
print("Drehzahl : ", Drehzahl, " 1/min")
tx.CloseController()
Anmerkungen :
- Imports : Der Phython-Modul FishFaTX.py soll genutzt
werden.
- tx = Instanz der Klasse FishFace für den Zugriff auf den TX Controller
- ImpulseUmdrehung ... Konstanten für den Messaufbau
- tx.OpenController : Herstellen einer Verbindung zum ROBO TX Controller
(COM-Namen mit RoboTxTest.EXE ermitteln und ggf. ändern).
- Einschalten der Lampe der Lichtschranke (512 steht für FullPower)
- Zurücksetzen des Zählers für die Lichtschranke
- Starten des Motors
- Warten auf das Ende der Messung (Angabe Messdauer [sec], Pause
[MilliSekunden])
- Abschalten Lampe, Motor
- Auswertung : Richtig schöne Mathematik
- tx.CloseController() : Beenden der Verbindung zum ROBO TX Controller
Programm DrehzahlZweiD, -EinsD mit ein paar Schnörkeln :
from FishFaTX import *
tx = FishFace()
ImpulseUmdrehung = 6
Untersetzung = 2
Messdauer = 15
FullPower = 512
Master = 0
Lampe = 3
Photo = 1
Motor = 1
tx.OpenController(4)
tx.SetLamp(Master, Lampe, FullPower)
tx.ClearCounter(Master, Photo)
tx.SetMotor(Master, Motor, tx.Ein)
for i in range(1, Messdauer+1, 1):
tx.Pause(1000)
print("Counter : ", i, "sec : ", tx.GetCounter(Master, Photo))
tx.SetMotor(Master, Motor, tx.Aus)
tx.SetLamp(Master, Lampe, tx.Aus)
Drehzahl = tx.GetCounter(Master, Photo) / (ImpulseUmdrehung / Untersetzung) * (60 / Messdauer)
print("Drehzahl : ", Drehzahl, " 1/min")
tx.CloseController()
Anmerkungen :
- Zusätzlich wurden Namen für die Anschlüsse des TX Controllers eingeführt
- anstelle der schlichten Pause hier eine for-Schleife in der einmal pro Sekunde
der aktuelle Counterstand angezeigt wird.
Download
PythonFish311.ZIP enthält die
zugehörenden Python-Sources und die erforderlichen DLLs.
Stand : 27.01.2010
|