elke 2 sec verandering van richting

Dependencies:   Encoder HIDScope MODSERIAL mbed-dsp mbed

Fork of BMT-M9_motorcontrol by First Last

Committer:
Hooglugt
Date:
Fri Oct 17 10:57:44 2014 +0000
Revision:
16:1869377fbb73
Parent:
15:979011e26ca3
pwm waarden in de looper (2 en -2), werking clamp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vsluiter 0:c9e647421e54 1 #include "mbed.h"
vsluiter 0:c9e647421e54 2 #include "encoder.h"
vsluiter 6:0832c6c6bcba 3 #include "HIDScope.h"
vsluiter 6:0832c6c6bcba 4
vsluiter 5:06381e54b94a 5 #define TSAMP 0.01
vsluiter 6:0832c6c6bcba 6
vsluiter 8:15c6cb82c725 7 void clamp(float * in, float min, float max);
vsluiter 0:c9e647421e54 8 volatile bool looptimerflag;
Hooglugt 11:4f65e70290ac 9 HIDScope scope(2);
Hooglugt 15:979011e26ca3 10 float new_pwm = 2;
vsluiter 6:0832c6c6bcba 11
vsluiter 0:c9e647421e54 12 void setlooptimerflag(void)
vsluiter 0:c9e647421e54 13 {
vsluiter 0:c9e647421e54 14 looptimerflag = true;
vsluiter 0:c9e647421e54 15 }
vsluiter 0:c9e647421e54 16
Hooglugt 13:7ec4762ec4ce 17 void clamp(float * in, float min, float max)
Hooglugt 13:7ec4762ec4ce 18 {
Hooglugt 13:7ec4762ec4ce 19 *in > min ? *in < max? : *in = max: *in = min;
Hooglugt 13:7ec4762ec4ce 20 }
vsluiter 1:5ac85aad9da4 21
Hooglugt 14:98925c1ed440 22 void looper()
Hooglugt 14:98925c1ed440 23 {
Hooglugt 16:1869377fbb73 24 if (new_pwm==2) { // 2 en -2 om aan te tonen dat clamp function ook werkt
Hooglugt 15:979011e26ca3 25 new_pwm = -2;
Hooglugt 14:98925c1ed440 26 } else {
Hooglugt 15:979011e26ca3 27 new_pwm = 2;
Hooglugt 14:98925c1ed440 28 }
Hooglugt 14:98925c1ed440 29 }
Hooglugt 14:98925c1ed440 30
Hooglugt 14:98925c1ed440 31
vsluiter 4:1a53b06eeb7f 32 int main()
vsluiter 4:1a53b06eeb7f 33 {
Hooglugt 16:1869377fbb73 34 //motor 1, 25D
Hooglugt 15:979011e26ca3 35 Encoder motor1(PTD3, PTD5);
Hooglugt 15:979011e26ca3 36 DigitalOut motor1dir(PTC9);
Hooglugt 15:979011e26ca3 37 PwmOut pwm_motor1(PTC8);
Hooglugt 16:1869377fbb73 38 pwm_motor.period_us(100); //10kHz PWM frequency
Hooglugt 16:1869377fbb73 39
Hooglugt 16:1869377fbb73 40 //motor 2, 25D
Hooglugt 15:979011e26ca3 41 Encoder motor2(PTD2,PTD0);
Hooglugt 15:979011e26ca3 42 DigitalOut motor2dir(PTA4);
Hooglugt 15:979011e26ca3 43 PwmOut pwm_motor2(PTA5);
Hooglugt 16:1869377fbb73 44
Hooglugt 16:1869377fbb73 45 pwm_motor.period_us(100); //10kHz PWM frequency
vsluiter 0:c9e647421e54 46 Ticker looptimer;
vsluiter 5:06381e54b94a 47 looptimer.attach(setlooptimerflag,TSAMP);
Hooglugt 14:98925c1ed440 48 Ticker flip_switch;
Hooglugt 15:979011e26ca3 49 flip_switch.attach(looper, 2);
Hooglugt 13:7ec4762ec4ce 50
vsluiter 0:c9e647421e54 51 while(1) {
vsluiter 0:c9e647421e54 52 while(!looptimerflag);
vsluiter 8:15c6cb82c725 53 looptimerflag = false; //clear flag
Hooglugt 13:7ec4762ec4ce 54
vsluiter 8:15c6cb82c725 55 clamp(&new_pwm, -1,1);
Hooglugt 13:7ec4762ec4ce 56
Hooglugt 13:7ec4762ec4ce 57 scope.set(0, new_pwm);
Hooglugt 15:979011e26ca3 58 scope.set(1, motor2.getPosition());
vsluiter 6:0832c6c6bcba 59 scope.send();
Hooglugt 14:98925c1ed440 60
vsluiter 0:c9e647421e54 61 if(new_pwm > 0)
Hooglugt 15:979011e26ca3 62 motor2dir = 0;
vsluiter 7:37b06688b449 63 else
Hooglugt 15:979011e26ca3 64 motor2dir = 1;
Hooglugt 14:98925c1ed440 65
Hooglugt 15:979011e26ca3 66 pwm_motor2.write(abs(new_pwm));
vsluiter 0:c9e647421e54 67 }
Hooglugt 13:7ec4762ec4ce 68 }