Python : Drehzahl

ftComputing : Programme für die fischertechnik-Interfaces und -konstruktionskästen
  
ftComputing.de
Home
Back
Sitemap
Index
Links
Impressum
Mail
 

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