
Kodingan untuk sampling kecepatan motor
Dependencies: Motor PID QEI mbed
Revision 0:99de7bb1501c, committed 2022-10-24
- Comitter:
- photonicbabe
- Date:
- Mon Oct 24 12:59:51 2022 +0000
- Commit message:
- Kodingan Sampling Kecepatan
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Motor.lib Mon Oct 24 12:59:51 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/simon/code/Motor/#f265e441bcd9
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PID.lib Mon Oct 24 12:59:51 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/aberk/code/PID/#6e12a3e5af19
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QEI.lib Mon Oct 24 12:59:51 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/aberk/code/QEI/#5c2ad81551aa
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Oct 24 12:59:51 2022 +0000 @@ -0,0 +1,103 @@ +/** + * Drive a robot forwards or backwards by using a PID controller to vary + * the PWM signal to H-bridges connected to the motors to attempt to maintain + * a constant velocity. + */ +#include "mbed.h" +#include "Motor.h" +#include "QEI.h" +#include "PID.h" + +Timer t; +Timer t2; + +Serial pc(USBTX, USBRX); // tx, rx + + +//Motor DepanKanan(PA_0, PB_0, PA_4); //Depan Kiri +Motor DepanKanan(PA_9, PB_10 , PA_8); //DepanKanan +//Motor DepanKanan(PC_8, PC_5, PA_12); //Belakang Kanan +//Motor DepanKanan(PA_1, PC_0, PC_1); //Belakang Kiri + +//QEI DepanKananQEI(PC_10, PC_12, NC, 986); //Depan Kiri +QEI DepanKananQEI(PC_11, PD_2, NC, 624); //Depan Kanan +//QEI DepanKananQEI(PB_1, PB_15, NC, 986); //Belakang Kanan +//QEI DepanKananQEI(PA_15, PB_7, NC, 986);// Belakang Kiri + +//25 Mei 2022 +PID DepanKananPID(0.96, 0.1, 0.000001, 0.02); +//PID DepanKiriPID(0.85, 0.08, 0.000000000001, 0.02); +//PID BelakangKiriPID(0.496, 0.0565, 0.000000000001, 0.02); Belakang Kiri +//PID BelakangKananPID(0.5, 0.022, 0.00000000001, 0.02); + +//2022 +//PID DepanKananPID(0.65, 0.1, 0.0000000001, 0.02); //Kc, Ti, Td belakang kiri + + + +//PID DepanKananPID(0.8, 0.1, 0.0000000001, 0.02); //Kc, Ti, Td MOTOR baru nomor 1 +//PID DepanKananPID(0.7, 0.1, 0.0000000000005, 0.02); //Kc, Ti, Td MOTOR baru nomor 2 +//PID DepanKananPID(0.8, 0.1, 0.00000002, 0.02); //Kc, Ti, Td MOTOR baru nomor 3 + + + +//PID DepanKananPID(0.495, 0.1, 0.00000035, 0.09); //Kc, Ti, Td, RATE + + +int main() { + //int DepanKananPulses = 0; + pc.baud(9600); + DepanKanan.period(0.01f); + + DepanKananPID.setInputLimits(0, 3000);//Input units: counts per second. + DepanKananPID.setOutputLimits(0.0, 0.9);//Output units: PwmOut duty cycle as %. + DepanKananPID.setMode(AUTO_MODE); + + int DepanKananPulses = 0; //How far the left wheel has travelled. + int DepanKananPrevPulses = 0; //The previous reading of how far the left wheel + //has travelled. + float DepanKananVelocity = 0.0; //The velocity of the left wheel in pulses per + //second. + + + wait(3); //Wait a few seconds before we start moving. + + + DepanKananPID.setSetPoint(1000); + + t.start(); + while (t.read_ms() <= 3000) { + + /*DepanKanan.speed(0.5f); + + DepanKananPulses = DepanKananQEI.getPulses(); + + pc.printf("\n\r %d " , DepanKananPulses);*/ + t2.start(); + + + DepanKananPulses = DepanKananQEI.getPulses(); + DepanKananVelocity = ((double)DepanKananPulses - (double)DepanKananPrevPulses) / 0.02; + DepanKananPrevPulses = DepanKananPulses; + //DepanKananVelocity = (DepanKananVelocity/210.0f)*60.0f; + + DepanKananPID.setProcessValue(fabs(DepanKananVelocity)); + + //----------// + DepanKanan.speed(DepanKananPID.compute()); + + + pc.printf("\n %f " ,DepanKananVelocity ); + + + while (t2.read_ms() <= 20) { + + } + + t2.reset(); + + } + t.reset(); + DepanKanan.brake(); + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Oct 24 12:59:51 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file