Files
HendiControlFirmware/Control/brewpi/pololu1376.py
T
jens b37bb5c720 - refactored
git-svn-id: http://moon:8086/svn/projects/HendiControl@130 fda53097-d464-4ada-af97-ba876c37ca34
2019-03-25 19:34:20 +00:00

96 lines
2.0 KiB
Python

from astirrer import AStirrer
import serial
import time
class Pololu1376(AStirrer):
def __init__(self, params, com_port='/dev/ttyUSB0', com_baud=9600):
self.params = params
self.rpm = 0
self.cycleTime = 1
self.dutyCycle = 1
self.cycleCounter = 0
self.isOn = 0
self.isMasterOn = 0
self.ser = serial.Serial(com_port, com_baud)
self.ser.set_output_flow_control(False)
try:
self.ser.open()
except:
self.ser.close()
self.ser.open()
self.ser_send('V')
print(self.ser_recv())
def ser_send(self, cmd):
self.ser.write((cmd + '\r\n').encode())
def ser_recv(self):
s = self.ser.readline().decode("utf-8").replace("\n", '').replace("\r", '')
return s
def process(self):
dt = self.params["dt"]
self.cycleCounter -= dt
if self.cycleCounter <= 0:
self.cycleCounter = self.cycleTime
if self.cycleCounter <= (self.cycleTime * self.dutyCycle):
if not self.isOn:
self.log ("Stirrer: On")
self.isOn = 1
else:
if self.isOn:
self.log ("Stirrer: Off")
self.isOn = 0
def setSpeed(self, speed):
self.log ("Stirrer: Set RPM to {} %".format(speed))
self.speed = speed
def setCycleTime(self, time):
self.log ("Stirrer: Set cycle time to {} s".format(time))
self.cycleTime = time
def setDutyCycle(self, dutyCycle):
self.log ("Stirrer: Set duty cycle to {} %".format(100*dutyCycle))
self.dutyCycle = dutyCycle
def getSpeed(self):
if self.isOn and self.isMasterOn:
return self.speed
return 0
def start(self):
self.isMasterOn = 1
self.log("Stirrer: switched On")
self.ser_send("go")
def stop(self):
self.isMasterOn = 0
self.log("Stirrer: switched Off")
self.ser_send("x")
def setMotorSpeed(self, speed):
self.ser_send("F" + str(speed) + "%")
if __name__ == '__main__':
s = Pololu1376(None, "/dev/ttyACM0", "115200")
s.start()
s.setRpm(1000)
time.sleep(2)
s.setRpm(2000)
time.sleep(2)
s.setRpm(3000)
time.sleep(2)
s.setRpm(2000)
time.sleep(2)
s.setRpm(1000)
time.sleep(2)
s.stop()