Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: ROBOCON2017_archan ROBOCON2017_suchan
Revision 0:52549f6dd024, committed 2016-08-26
- Comitter:
- Akito914
- Date:
- Fri Aug 26 11:30:08 2016 +0000
- Child:
- 1:f1f6c98a4b12
- Commit message:
- PID???????????
Changed in this revision
| cal_PID.cpp | Show annotated file Show diff for this revision Revisions of this file |
| cal_PID.hpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cal_PID.cpp Fri Aug 26 11:30:08 2016 +0000
@@ -0,0 +1,49 @@
+#include "mbed.h"
+#include "cal_PID.hpp"
+
+cal_pid::cal_pid(){
+ past_error=0;
+ integral_error=0;
+ p_gain=1.0;
+ i_gain=0.0;
+ d_gain=0.0;
+ control_period=0.001;
+ output_min=-128;
+ output_max=127;
+}
+
+cal_pid::~cal_pid(){
+}
+
+void cal_pid::param(float _p_gain,float _i_gain,float _d_gain){
+ p_gain=_p_gain;
+ i_gain=_i_gain;
+ d_gain=_d_gain;
+}
+void cal_pid::period(float _control_period){
+ if(_control_period<=0)return;
+ control_period=_control_period;
+}
+void cal_pid::output(signed long _min,signed long _max){
+ output_min=_min;
+ output_max=_max;
+}
+void cal_pid::reset(){
+ past_error=0;
+ integral_error=0;
+}
+signed long cal_pid::get_pid(signed long position,signed long targ){
+ error=targ-position;
+ integral_error+=error*control_period;
+ differential_error=(error-past_error)/control_period;
+ past_error=error;
+ p_part=error*p_gain;
+ i_part=integral_error*i_gain;
+ d_part=differential_error*d_gain;
+ operate=p_part+i_part+d_part;
+ if(operate<output_min)operate=output_min;
+ else if(operate>output_max)operate=output_max;
+
+ return operate;
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cal_PID.hpp Fri Aug 26 11:30:08 2016 +0000
@@ -0,0 +1,36 @@
+
+#ifndef __CAL_PID_HPP__
+#define __CAL_PID_HPP__
+#include "mbed.h"
+
+
+class cal_pid{
+public:
+ cal_pid();
+ ~cal_pid();
+ void param(float _p_gain,float _i_gain,float _d_gain);
+ void period(float _control_period);
+ void output(signed long _min,signed long _max);
+ void reset();
+ signed long get_pid(signed long position,signed long targ);
+private:
+ signed long error;
+ signed long past_error;
+ signed long egral_error;
+ signed long integral_error;
+ signed long differential_error;
+ float p_gain;
+ float i_gain;
+ float d_gain;
+ float control_period;
+ signed long p_part;
+ signed long i_part;
+ signed long d_part;
+ signed long output_min;
+ signed long output_max;
+ signed long operate;
+};
+
+
+
+#endif
\ No newline at end of file