motor spins

Dependencies:   mbed

Fork of analoghalls5 by Bayley Wang

Committer:
nki
Date:
Wed Mar 04 15:33:32 2015 +0000
Revision:
6:99ee0ce47fb2
Parent:
1:1f58bdcf2956
3/4;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bwang 0:54cf32d35f4d 1 #include "includes.h"
bwang 1:1f58bdcf2956 2 #include "meta.h"
bwang 0:54cf32d35f4d 3
bwang 0:54cf32d35f4d 4 PidController::PidController(float ki, float kp, float kd, float out_max, float out_min) {
bwang 0:54cf32d35f4d 5 _ki = ki;
bwang 0:54cf32d35f4d 6 _kp = kp;
bwang 0:54cf32d35f4d 7 _kd = kd;
bwang 0:54cf32d35f4d 8 _last_in = 0.0f;
bwang 0:54cf32d35f4d 9 _integral = 0.0f;
bwang 0:54cf32d35f4d 10 _out_max = out_max;
bwang 0:54cf32d35f4d 11 _out_min = out_min;
bwang 0:54cf32d35f4d 12 }
bwang 0:54cf32d35f4d 13
bwang 0:54cf32d35f4d 14 float PidController::Update(float ref, float in) {
bwang 0:54cf32d35f4d 15 float error = ref - in;
bwang 0:54cf32d35f4d 16 _integral += error;
bwang 0:54cf32d35f4d 17 if (_integral > _out_max) _integral = _out_max;
bwang 0:54cf32d35f4d 18 if (_integral < _out_min) _integral = _out_min;
bwang 0:54cf32d35f4d 19 float deriv = _last_in - in;
bwang 0:54cf32d35f4d 20 _last_in = in;
bwang 0:54cf32d35f4d 21 float tmp = _ki * _integral + _kp * error + _kd * deriv;
bwang 0:54cf32d35f4d 22 if (tmp > _out_max) tmp = _out_max;
bwang 0:54cf32d35f4d 23 if (tmp < _out_min) tmp = _out_min;
bwang 0:54cf32d35f4d 24 return tmp;
bwang 0:54cf32d35f4d 25 }