Motor control - debug commands

goosst

New member
Hello

I'm struggling with getting the (standard brushed) mower motor to work:
  • when running AT+Q test, the mowing motor does not spin (the wheels spin)
    • no voltage is measured on the output of the motor driver (MC33926)
    • I beep tested all the connections between motor driver and arduino due, they all seem correct
    • just putting directly voltage on the motor with a power source makes it spin
  • I get a suspicious motor fault (from the moment I touch the motor fault pin when I measure with a multimeter), the sunray firmware starts to report motor fault. (But not when trying to actuate the motor through the test.)
  • I don't immediately see traces of any burned parts on the driver
  • when switching the (working) driver of the wheels to the mower side, I also didn't get any movement in the mower motor
My first question to debug further:
are there already serial commands to just let the mowing driver actuate the motor with a fixed PWM, get the state of the driver (measured current, fault flag), ... .
It's not that easy to debug during a cycle like done when running AT+Q

// ----- mowing motor -------------------------------------------------
// NOTE: motor drivers will indicate 'fault' signal if motor current (e.g. due to a stall on a molehole) or temperature is too high for a
// certain time (normally a few seconds) and the mower will try again and set a virtual obstacle after too many tries
// On the other hand, the overload detection will detect situations the fault signal cannot detect: slightly higher current for a longer time
#define MAX_MOW_PWM 200 // use this to permanently reduce mowing motor power (255=max)
#define MOW_FAULT_CURRENT 8.0 // mowing motor fault current (amps)
#define MOW_TOO_LOW_CURRENT 0.005 // mowing motor too low current (amps)
#define MOW_OVERLOAD_CURRENT 2.0 // mowing motor overload current (amps)
// should the direction of mowing motor toggle each start? (yes: true, no: false)
#define MOW_TOGGLE_DIR true
// #define MOW_TOGGLE_DIR false
// should the error on motor overload detection be enabled?
#define ENABLE_OVERLOAD_DETECTION true // robot will stop on overload
// #define ENABLE_OVERLOAD_DETECTION false // robot will slow down on overload
// should the motor fault (error) detection be enabled?
#define ENABLE_FAULT_DETECTION true
// #define ENABLE_FAULT_DETECTION false // use this if you keep getting 'motor error'
// #define ENABLE_RPM_FAULT_DETECTION true // use mow rpm signal to detect a motor fault (requires mowing motor with rpm output!)
#define ENABLE_RPM_FAULT_DETECTION false // do not use mow rpm signal to detect a motor fault
// should the robot trigger obstacle avoidance on motor errors if motor recovery failed?
#define ENABLE_FAULT_OBSTACLE_AVOIDANCE true
// shall the mow motor be activated for normal operation? Deactivate this option for GPS tests and path tracking running tests
#define ENABLE_MOW_MOTOR true // Default is true, set false for testing purpose to switch off mow motor permanently
 
My first question to debug further:
are there already serial commands to just let the mowing driver actuate the motor with a fixed PWM, get the state of the driver (measured current, fault flag), ... .
It's not that easy to debug during a cycle like done when running AT+Q
Hi,

you can activate the mow motor via sunray app (or CaSSAndRA) or with serial command:
Code:
AT+C,1,-1,-1,-1,-1,-1,-1,-1
to switch off the mow motor:
Code:
AT+C,0,-1,-1,-1,-1,-1,-1,-1

Mow motor is running with defined PWM in your config.h
If I remember correctly sunray app has the possibility to change the rpm for mow motor, but you need current sunray fw version
 
Oben