From 0843f1d87a75176ea3f9aafc4a07bd71f50824c1 Mon Sep 17 00:00:00 2001 From: jens Date: Thu, 12 Aug 2021 20:13:47 +0100 Subject: [PATCH] - Pololu1376: take enums as variable id - stirrerPololu1376: Make for robust against motor cable plug --- components/actor/pololu1376.py | 27 ++++++++++++++------------- components/actor/stirrerpololu1376.py | 23 +++++++++++++++++++---- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/components/actor/pololu1376.py b/components/actor/pololu1376.py index 86e94f2..f047161 100644 --- a/components/actor/pololu1376.py +++ b/components/actor/pololu1376.py @@ -106,22 +106,23 @@ class Pololu1376: return self.cmd("V") def get_variable(self, var): - return self.cmd("D" + str(var)) + return int(self.cmd("D" + str(var.value[0]))) def print_vars(self): print ("-------------------------------------------") - print ("STATUS : {:04X}".format(int(self.get_variable(Varid.STATUS.value[0])))) - print ("STATUS_ERROR_OCCURED : {:04X}".format(int(self.get_variable(Varid.STATUS_SERIAL_ERRORS_OCCURED.value[0])))) - print ("STATUS_LIMIT_STATUS : {:04X}".format(int(self.get_variable(Varid.STATUS_LIMIT_STATUS.value[0])))) - print ("RC_RC1_SCALED_VALUE : {:04X}".format(int(self.get_variable(Varid.RC_RC1_SCALED_VALUE.value[0])))) - print ("RC_RC2_SCALED_VALUE : {:04X}".format(int(self.get_variable(Varid.RC_RC2_SCALED_VALUE.value[0])))) - print ("ANALOG_AN1_SCALED_VALUE : {:04X}".format(int(self.get_variable(Varid.ANALOG_AN1_SCALED_VALUE.value[0])))) - print ("ANALOG_AN2_SCALED_VALUE : {:04X}".format(int(self.get_variable(Varid.ANALOG_AN2_SCALED_VALUE.value[0])))) - print ("DIAGNOSTIC_TARGET_SPEED : {:04X}".format(int(self.get_variable(Varid.DIAGNOSTIC_TARGET_SPEED.value[0])))) - print ("DIAGNOSTIC_SPEED : {:04X}".format(int(self.get_variable(Varid.DIAGNOSTIC_SPEED.value[0])))) - print ("DIAGNOSTIC_TEMPERATURE_A : {:04X}".format(int(self.get_variable(Varid.DIAGNOSTIC_TEMPERATURE_A.value[0])))) - print ("DIAGNOSTIC_TEMPERATURE_B : {:04X}".format(int(self.get_variable(Varid.DIAGNOSTIC_TEMPERATURE_B.value[0])))) - print ("MOTOR_CURRENT_MA : {:04X}".format(int(self.get_variable(Varid.MOTOR_CURRENT_MA.value[0])))) + print ("STATUS : {:04X}".format(self.get_variable(Varid.STATUS))) + print ("STATUS_ERROR_OCCURED : {:04X}".format(self.get_variable(Varid.STATUS_SERIAL_ERRORS_OCCURED))) + print ("STATUS_LIMIT_STATUS : {:04X}".format(self.get_variable(Varid.STATUS_LIMIT_STATUS))) + print ("RC_RC1_SCALED_VALUE : {:04X}".format(self.get_variable(Varid.RC_RC1_SCALED_VALUE))) + print ("RC_RC2_SCALED_VALUE : {:04X}".format(self.get_variable(Varid.RC_RC2_SCALED_VALUE))) + print ("ANALOG_AN1_SCALED_VALUE : {:04X}".format(self.get_variable(Varid.ANALOG_AN1_SCALED_VALUE))) + print ("ANALOG_AN2_SCALED_VALUE : {:04X}".format(self.get_variable(Varid.ANALOG_AN2_SCALED_VALUE))) + print ("DIAGNOSTIC_TARGET_SPEED : {:04X}".format(self.get_variable(Varid.DIAGNOSTIC_TARGET_SPEED))) + print ("DIAGNOSTIC_SPEED : {:04X}".format(self.get_variable(Varid.DIAGNOSTIC_SPEED))) + print ("DIAGNOSTIC_TEMPERATURE_A : {:04X}".format(self.get_variable(Varid.DIAGNOSTIC_TEMPERATURE_A))) + print ("DIAGNOSTIC_TEMPERATURE_B : {:04X}".format(self.get_variable(Varid.DIAGNOSTIC_TEMPERATURE_B))) +# print ("MOTOR_CURRENT_RAW : {:04X}".format(self.get_variable(Varid.MOTOR_CURRENT_RAW))) +# print ("MOTOR_CURRENT_MA : {:04X}".format(self.get_variable(Varid.MOTOR_CURRENT_MA))) if __name__ == '__main__': diff --git a/components/actor/stirrerpololu1376.py b/components/actor/stirrerpololu1376.py index e1b2f52..4fc11f3 100644 --- a/components/actor/stirrerpololu1376.py +++ b/components/actor/stirrerpololu1376.py @@ -1,6 +1,6 @@ from contextlib import contextmanager from components import AStirrer -from pololu1376 import Pololu1376 +from pololu1376 import * import time import serial @@ -41,9 +41,16 @@ class StirrerPololu1376(AStirrer): print("Set speed to {} %".format(speed)) def _on_process(self): - print("STATUS :") - self.drv.print_vars() - +#s print("STATUS :") +# self.drv.print_vars() + status = self.drv.get_variable(Varid.STATUS) + limit_status = self.drv.get_variable(Varid.STATUS_LIMIT_STATUS) + print("Status={:02X}".format(status)) + if status & 0x01 == 0x01: + if limit_status & 0x01 == 0x01: + print("Recover after motor error!") + self.drv.go() + if __name__ == '__main__': s = StirrerPololu1376(dt=1.0, params={'port': "/dev/ttyACM0", 'speed': 115200}) @@ -77,5 +84,13 @@ if __name__ == '__main__': s.set_speed(50) time.sleep(3.0) + print("Continious operation increasing speed") + for speed in range (25, 75, 5): + s.set_duty_cycle(1.0) + s.set_speed(speed) + for d in range(0,3,1): + s.process() + time.sleep(1.0) + print("Leaving context")