To really servo it, you cannot just have it stop at 180 degrees, as that doesnt account for when its traversing that deadzone, you still want very tiny nudges to hold it at that angle, as otherwise it stops dead in its tracks for 50ms and cruises on past its target and has to fight to correct, (25ms from last correction nudging it through the deadzone to when its in there, and another 25ms before it can respond to exiting it,)
equally if your hardware allows it i would increase the correction rate greatly with lower gains and a faster I, and a tiny D, this should keep it more stable,
To my knowledge most of these approaches use a variable timed pulse approach on the output h bridge, so its never varying the voltage or current available to the motor, but purely adjusting the pulse width, so the faster your loop is, the more efficient it gets as really tiny pulses into motors dont give the inductor time to allow significant current to flow, while still giving a very tiny nudge,