I want to control the rpm of a brushless motor with ESC(Electronic speed controller) using PID control. Suppose my motor is rotating at 2000 rpm detecting using hall sensor setup.Now I want it to run at 5000 rpm.The speed will be controlled by PWM signals generated by PWM module( 16-bit i.e. 65536 divisions in 0%-100% duty cycle, which we specify) in hardware which is fed to ESC. How am I going use the PID parameters Kp, Ki and Kd to drive the motor to desired rpm? desired rpm = 5000 measured rpm = 2000 error = desired - measured = + 3000 C(t) = Kp*e + Ki*∫e.dt + Kd*de/dt in digital form Suppose somehow I find out PID constants, then how do I modify new PWM based on C(t) and error signal ? Is New PWM = Old PWM*C(t)*error or New PWM = Old PWM+C(t)*error ?