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.
Revision 0:921402a95675, committed 2017-11-01
- Comitter:
- JornJan
- Date:
- Wed Nov 01 16:16:04 2017 +0000
- Child:
- 1:7969189824ff
- Commit message:
- PID_standaardsignalen;
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QEI.lib Wed Nov 01 16:16:04 2017 +0000 @@ -0,0 +1,1 @@ +http://os.mbed.com/users/aberk/code/QEI/#5c2ad81551aa
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Nov 01 16:16:04 2017 +0000
@@ -0,0 +1,126 @@
+#include "mbed.h"
+#include "Serial.h"
+#include "math.h"
+#include "QEI.h"
+
+Serial pc(USBTX, USBRX); //Serial PC connectie
+DigitalOut motor1DirectionPin(D4); //Motorrichting op D4 (connected op het bord)
+PwmOut motor1MagnitudePin(D5); //Motorkracht op D5 (connected op het bord)
+DigitalOut motor2DirectionPin(D7); //Motorrichting op D4 (connected op het bord)
+PwmOut motor2MagnitudePin(D6); //Motorkracht op D5 (connected op het bord)
+QEI q1_enc(D13, D12, NC, 32); //encoder motor 1 instellen
+QEI q2_enc(D11, D10, NC, 32); // encoder motor 2 instellen
+const double pi = 3.1415926535897; // waarde voor pi aanmaken
+
+Timer t;
+Ticker aansturing;
+Ticker stepres;
+
+double ref1 = 0;
+double refrad1;
+double refrad2;
+double ref2 = 0;
+double Kp1 = 0.002; //kp motor 2 = 0.0001
+double Ki1 = 0;
+double Kp2 = 0.0001;
+double Ki2 = 0;
+int q1_puls;
+int q2_puls;
+double rad2pulses=4200/(2*pi);
+double ts = 0.001;
+double PI1;
+int n;
+
+double error1_1;
+double error2_1 = 0;
+double error_I_1;
+double error_I2_1 = 0;
+double error1_2;
+double error2_2 = 0;
+double error_I_2;
+double error_I2_2 = 0;
+double PI2;
+
+void controller()
+{
+ refrad2 = 1.57f*sin(t.read()); //motor 2
+ ref2 = refrad2 * rad2pulses;
+ refrad1 = -0.6f*cos(t.read()) + 0.2f; //motor 1
+ ref1 = refrad2 * rad2pulses;
+
+ // encoders uitlezen
+ q1_puls = q1_enc.getPulses();
+ q2_puls = q2_enc.getPulses();
+
+ //PID 1
+error1_1 = ref1 - q1_puls;
+error_I_1 = error_I2_1 + ts*((error1_1 + error2_1)/2);
+
+PI1 = Kp1*error1_1 + Ki1*error_I_1;
+
+error2_1 = error1_1; // opslaan variabelen voor integraal onderdeel
+error_I2_1 = error_I_1;
+
+ //PID 2
+error1_2 = ref2 - q2_puls;
+error_I_2 = error_I2_2 + ts*((error1_2 + error2_2)/2);
+
+PI2 = Kp2*error1_2 + Ki2*(error_I_2);
+
+
+ if (PI1<=0)
+ {
+ motor1DirectionPin = 1;
+ motor1MagnitudePin = fabs(PI1);
+ }
+ else if (PI1>0)
+ {
+ motor1DirectionPin = 0;
+ motor1MagnitudePin = fabs(PI1);
+ }
+
+ if (PI2>=0)
+ {
+ motor2DirectionPin = 1;
+ motor2MagnitudePin = fabs(PI2);
+ }
+ else if(PI2<0)
+ {
+ motor2DirectionPin = 0;
+ motor2MagnitudePin = fabs(PI2);
+ }
+
+ if(n==500){
+ printf("PI1 = %f\n\r", PI1);
+ n=0;
+ }
+ else{
+ n=n+1;
+ }
+
+}
+
+void stapfunc()
+{
+ if (ref1==0){
+ ref1 = 1000;
+ }
+ else if (ref1==1000)
+ {
+ ref1=0;
+ }
+}
+
+int main()
+{
+ pc.baud(115200);
+ t.start();
+ aansturing.attach_us(&controller, 1000);
+ //stepres.attach(&stapfunc, 3);
+
+ while(true){
+
+ }
+
+
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Nov 01 16:16:04 2017 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/fb8e0ae1cceb \ No newline at end of file
