Chances are, you’re probably tuning it incorrectly. Tuning is not an easy thing to do, but you should get much closer if you draw out the block diagram. At a minimum, even fuzzy logic would be better than bang on/off.
Most of the time people use PID, they use it as a black box which causes a lot of pain.
[1] https://www.tutorialspoint.com/control_systems/control_syste...
[2] https://ctms.engin.umich.edu/CTMS/index.php?example=MotorSpe...