Automatic Control Mike Robinson
You can measure the distance from the RC car to some target. What could your program do to keep the car as close to the target as possible?
Proportional control Error = target position – current position kp = proportional gain Duty cycle = kp*error
Think back to your vibrations class. What does the proportional response look like? Why is this not surprising? What could we do to reduce the oscillations we see?
Proportional control X m F
Proportional + Derivative control error = target position – current position derivative = (error – past error)/change in time kp = proportional gain kd = derivative gain Duty cycle = kp*error + kd*derivative
D = Derivative, D = Danger!Beware of noise when you are taking a numerical derivative
What would happen if we only had derivative control? Would the car still move to the target? Would the control do anything noticeable?
Proportional + Integral + Derivative control error = target position – current position derivative = (error – past error)/change in time integral = past error + error* change in time kp = proportional gain ki = integral gain kd = derivative gain Duty cycle = kp*error+ki*integral+kd*derivative
A few words about commenting BAD GOOD //Code for lab 3 intinput = 0; //Declare variable input intinDist = 0; //Declare variable inDist /* This code reads an analog voltage from an ultrasonic sensor, converts the voltage to a distance in centimeters and prints the distance to the serial monitor Circuit: Connect +5 and ground to sensor Connect analog output from sensor to pin A0 Last edit: MDR 2/11/13 */ intultrasonicPin = 0; //Analog input pin for ultrasonic sensor intultrasonicDist = 0; //distance measurement in centimeters
Preview of this weeks lab +5V Motor
Motor inductance Preview of this weeks lab Motor resistance +5V