I'm driving a DC motor (actually a linear actuator) with a Polulu motor controller from a Raspberry Pi. The motor drives if you ask for anything between 20 and 100% duty cycle, so there is a dead zone between -20% and 20% duty cycle.
I'm using a laser distance sensor to measure position of the actuator, and I'd like to make the actuator track a desired position using a PID controller.
The problem I'm facing is that as the position crosses over from being too low to too high, the PID controller takes a load of time to cross through this deadband, after which the position is completely wrong!
I've tried creating a lookup table for the motor speed based on the requested speed, but this doesn't help a huge amount. I was thinking of creating two lookup tables, one for when the position is above setpoint and one for when it is below which cross over instantly from -20 to 20 and vice-versa.
Any thoughts on this problem (or just what it is called so I can Google it!) would be much appreciated.