EE192 Team 4 / Mbed 2 deprecated EE192_BetterPID

Dependencies:   PID mbed

Committer:
openg
Date:
Wed Mar 16 01:53:22 2016 +0000
Revision:
2:486214873b2c
Parent:
1:f2a8a330983b
with PID library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
openg 0:f641e7f8973f 1 #include "mbed.h"
openg 0:f641e7f8973f 2 #include "PID.h"
openg 0:f641e7f8973f 3
openg 0:f641e7f8973f 4 float Kp = 30.0;
openg 0:f641e7f8973f 5 float Ki = 0.0;
openg 0:f641e7f8973f 6 float Kd = 0.0;
openg 0:f641e7f8973f 7 float interval = 0.1; //in seconds
openg 1:f2a8a330983b 8 float outputPWM = 0.0;
openg 2:486214873b2c 9 int period = 1000;
openg 0:f641e7f8973f 10
openg 0:f641e7f8973f 11 PID controller(Kp, Ki, Kd, interval);
openg 0:f641e7f8973f 12 float currentVelocity;
openg 1:f2a8a330983b 13 PwmOut motorControl(PTD5);
openg 0:f641e7f8973f 14
openg 0:f641e7f8973f 15 Ticker executeController;
openg 0:f641e7f8973f 16
openg 0:f641e7f8973f 17 void control() {
openg 2:486214873b2c 18 controller.setProcessValue(currentVelocity); //need to input car's current velocity from encoder
openg 0:f641e7f8973f 19 outputPWM = controller.compute();
openg 2:486214873b2c 20 motorControl.pulsewidth_us(int(period*outputPWM));
openg 0:f641e7f8973f 21 }
openg 0:f641e7f8973f 22
openg 0:f641e7f8973f 23 int main() {
openg 0:f641e7f8973f 24 controller.setInputLimits(0.0, 6.0); //max input speeds in m/s
openg 0:f641e7f8973f 25 controller.setOutputLimits(0.0, 1.0); //PWM outputs from 0% to 100%
openg 0:f641e7f8973f 26 controller.setSetPoint(3.0); //reference velocity is 3.0 m/s
openg 0:f641e7f8973f 27 controller.setBias(0.0); //no bias for controller to output
openg 0:f641e7f8973f 28 controller.setMode(1); //AUTO mode
openg 1:f2a8a330983b 29
openg 2:486214873b2c 30 motorControl.period_us(period);
openg 1:f2a8a330983b 31
openg 0:f641e7f8973f 32 executeController.attach(&control, interval);
openg 0:f641e7f8973f 33
openg 0:f641e7f8973f 34 }