Pololu Robotics & Electronics
Menu
My account Comments or questions? About Pololu Contact Ordering information Distributors

Pololu Forum

2s9v1 motor reverse not working when timeout is set


#1

Hi,

Recently I bought a 2s9v1 motordriver and connected to two motors to M0 and M1 channels.
It seems to work nicely (both reverse and forward) when timeout configuration is not set (timeout = 0x00).
However, if I set the timeout to 0x01 (for the shortest timeout), the reverse mode doesn’t work while the forward mode still works with timeout. I tried 0x0F for the timeout, same result…
I didn’t fix its baudrate using a jumper and I am sending commands at 38400.
a weird part is that it works for the first time I send commands after turning the driver on, but after the timeout occurs to make the motors stop, it doesn’t respond to rotate motors reverse (while it responds to rotate forward properly)

I am using python3 and code looks like:

import serial

s = serial.Serial(port, baudrate=38400)
s.write(bytes([0xAA, 0x09, 0x08, 0x1F])
s.write(bytes([0xAA, 0x09, 0x0C, 0x1F])

then for the reverse mode:

import serial

s = serial.Serial(port, baudrate=38400)
s.write(bytes([0xAA, 0x09, 0x0A, 0x1F])
s.write(bytes([0xAA, 0x09, 0x0E , 0x1F])

I don’t want to use it without timeout, so if you have any idea, please help me…
Thank you


#2

Hello.

I was able to replicate the problem you described here, so it seems like there is a legitimate bug (interestingly, this is the first we have heard of it in over eight years we’ve been selling this product). We are looking into it further, but in the meantime one workaround seems to be sending a forward command with a speed of 0 just before every reverse command.

Brandon


#3

Thank you very much for testing it!
I am glad that you could replicate the problem.
I will test with your workaround and use it as is for now then.

Thank you,
Jay