we use pwm to make this, but it isn't exact