j
Dependencies: Encoder HIDScope mbed
Fork of Motor_component_testing by
main.cpp@4:71ada7709c46, 2014-10-27 (annotated)
- Committer:
- phgbartels
- Date:
- Mon Oct 27 12:45:01 2014 +0000
- Revision:
- 4:71ada7709c46
- Parent:
- 3:c6b8499a9021
- Child:
- 5:a0f300785c3d
Kloppen de verwachte veranderingen van de hoek bepaling!
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
phgbartels | 0:2240263f7068 | 1 | #include "mbed.h" |
phgbartels | 0:2240263f7068 | 2 | #include "encoder.h" |
phgbartels | 3:c6b8499a9021 | 3 | #include "HIDScope.h" |
phgbartels | 0:2240263f7068 | 4 | #include "PwmOut.h" |
phgbartels | 3:c6b8499a9021 | 5 | /*definieren pinnen Motor 1*/ |
phgbartels | 0:2240263f7068 | 6 | #define M1_PWM PTA5 |
phgbartels | 0:2240263f7068 | 7 | #define M1_DIR PTA4 |
phgbartels | 3:c6b8499a9021 | 8 | #define M2_PWM PTC8 |
phgbartels | 3:c6b8499a9021 | 9 | #define M2_DIR PTC9 |
phgbartels | 3:c6b8499a9021 | 10 | /*Definieren minimale waarden PWM per motor*/ |
phgbartels | 3:c6b8499a9021 | 11 | #define PWM1_min_30 0.529 /*met koppelstuk!*/ |
phgbartels | 3:c6b8499a9021 | 12 | #define PWM2_min_50 0.519 /*aanpassen! Klopt nog niet met koppelstuk*/ |
phgbartels | 3:c6b8499a9021 | 13 | /*Definieren om de hoeveel seconden er gegevens naar de HID-scope gestuurd worden.*/ |
phgbartels | 3:c6b8499a9021 | 14 | #define TSAMP 0.005 |
phgbartels | 4:71ada7709c46 | 15 | #define I_LIMIT 1. |
phgbartels | 0:2240263f7068 | 16 | |
BArendshorst | 1:0471de635f87 | 17 | Encoder motor1(PTD3,PTD1); |
phgbartels | 3:c6b8499a9021 | 18 | Encoder motor2(PTD5, PTD0); |
phgbartels | 0:2240263f7068 | 19 | PwmOut pwm_motor1(M1_PWM); |
phgbartels | 3:c6b8499a9021 | 20 | PwmOut pwm_motor2(M2_PWM); |
phgbartels | 0:2240263f7068 | 21 | DigitalOut motordir1(M1_DIR); |
phgbartels | 3:c6b8499a9021 | 22 | DigitalOut motordir2(M2_DIR); |
phgbartels | 0:2240263f7068 | 23 | DigitalOut LED(LED_GREEN); |
phgbartels | 0:2240263f7068 | 24 | |
phgbartels | 4:71ada7709c46 | 25 | void clamp(float * in, float min, float max); |
phgbartels | 3:c6b8499a9021 | 26 | volatile bool looptimerflag; |
phgbartels | 3:c6b8499a9021 | 27 | int PWM1_percentage = 1; |
phgbartels | 3:c6b8499a9021 | 28 | int PWM2_percentage = 1; |
phgbartels | 4:71ada7709c46 | 29 | int aantal_rotaties = 100; |
phgbartels | 4:71ada7709c46 | 30 | int aantalcr = 960; |
phgbartels | 4:71ada7709c46 | 31 | int beginpos_motor1; |
phgbartels | 4:71ada7709c46 | 32 | int beginpos_motor1_new; |
phgbartels | 4:71ada7709c46 | 33 | int beginpos_motor2; |
phgbartels | 3:c6b8499a9021 | 34 | float PWM1 = ((1-PWM1_min_30)/100)*PWM1_percentage + PWM1_min_30; |
phgbartels | 3:c6b8499a9021 | 35 | float PWM2 = ((1-PWM2_min_50)/100)*PWM2_percentage + PWM1_min_30; |
phgbartels | 3:c6b8499a9021 | 36 | |
phgbartels | 4:71ada7709c46 | 37 | HIDScope scope(4); |
phgbartels | 3:c6b8499a9021 | 38 | |
phgbartels | 3:c6b8499a9021 | 39 | //Ticker tick; |
phgbartels | 3:c6b8499a9021 | 40 | /*void PWMc() |
phgbartels | 3:c6b8499a9021 | 41 | { |
phgbartels | 3:c6b8499a9021 | 42 | PWM = abs(PWM-0.1); |
phgbartels | 3:c6b8499a9021 | 43 | pwm_motor1.write(PWM); |
phgbartels | 3:c6b8499a9021 | 44 | scope.set(0, motor1.getPosition()); |
phgbartels | 3:c6b8499a9021 | 45 | scope.set(1, DigitalIn(PTD3)); |
phgbartels | 3:c6b8499a9021 | 46 | scope.set(2, DigitalIn(PTD1)); |
phgbartels | 3:c6b8499a9021 | 47 | scope.send(); |
phgbartels | 3:c6b8499a9021 | 48 | }*/ |
phgbartels | 3:c6b8499a9021 | 49 | |
phgbartels | 3:c6b8499a9021 | 50 | void setlooptimerflag(void) //Ticker maakt een constructie die zoveel keer per seconde een functie uitvoerd, met sampingling freq TSAMP |
phgbartels | 3:c6b8499a9021 | 51 | { |
phgbartels | 3:c6b8499a9021 | 52 | looptimerflag = true; |
phgbartels | 3:c6b8499a9021 | 53 | } |
phgbartels | 0:2240263f7068 | 54 | |
phgbartels | 0:2240263f7068 | 55 | int main() { |
phgbartels | 3:c6b8499a9021 | 56 | //tick.attach(&PWMc, 5); |
phgbartels | 3:c6b8499a9021 | 57 | |
phgbartels | 4:71ada7709c46 | 58 | beginpos_motor1 = motor1.getPosition(); |
phgbartels | 4:71ada7709c46 | 59 | beginpos_motor1_new = beginpos_motor1; |
phgbartels | 4:71ada7709c46 | 60 | beginpos_motor2 = motor2.getPosition(); |
phgbartels | 4:71ada7709c46 | 61 | |
phgbartels | 4:71ada7709c46 | 62 | Ticker looptimer; // looptimer = variabele van het type ticker(niet int of float), Daarmee is looptimer een classe. Omdat een classe is heeft het methods oftewel functies, zoals attach. Setlooptimerflag is een functie |
phgbartels | 4:71ada7709c46 | 63 | looptimer.attach(setlooptimerflag,TSAMP); // attach betekend het koppelen van een functie aan een classe. |
phgbartels | 0:2240263f7068 | 64 | LED = 0; |
phgbartels | 3:c6b8499a9021 | 65 | motordir1 = 0; |
phgbartels | 3:c6b8499a9021 | 66 | motordir2 = 0; |
phgbartels | 3:c6b8499a9021 | 67 | |
phgbartels | 4:71ada7709c46 | 68 | while(beginpos_motor1 + aantal_rotaties*aantalcr >= beginpos_motor1_new) { |
phgbartels | 4:71ada7709c46 | 69 | pwm_motor1.period_us(100); |
phgbartels | 4:71ada7709c46 | 70 | pwm_motor2.period_us(100); |
phgbartels | 4:71ada7709c46 | 71 | pwm_motor1.write(PWM1); |
phgbartels | 4:71ada7709c46 | 72 | pwm_motor2.write(PWM2); |
phgbartels | 4:71ada7709c46 | 73 | beginpos_motor1_new = motor1.getPosition(); |
phgbartels | 4:71ada7709c46 | 74 | |
phgbartels | 4:71ada7709c46 | 75 | //while(true) { |
phgbartels | 0:2240263f7068 | 76 | LED = 1; |
phgbartels | 3:c6b8499a9021 | 77 | while(!looptimerflag) //Hierdoor zeg je eigenlijk tegen je systeem; voer dit script uit na elke TSAMP s. |
phgbartels | 3:c6b8499a9021 | 78 | { |
phgbartels | 3:c6b8499a9021 | 79 | /*do nothing*/ //Zolang dit waar is, doe je niets. |
phgbartels | 0:2240263f7068 | 80 | } |
phgbartels | 3:c6b8499a9021 | 81 | looptimerflag = false; //clear flag |
phgbartels | 3:c6b8499a9021 | 82 | |
phgbartels | 0:2240263f7068 | 83 | scope.set(0, motor1.getPosition()); |
phgbartels | 3:c6b8499a9021 | 84 | scope.set(1, motor1.getSpeed()); |
phgbartels | 3:c6b8499a9021 | 85 | scope.set(2, motor2.getPosition()); |
phgbartels | 3:c6b8499a9021 | 86 | scope.set(3, motor2.getSpeed()); |
phgbartels | 0:2240263f7068 | 87 | scope.send(); |
phgbartels | 0:2240263f7068 | 88 | } |
phgbartels | 4:71ada7709c46 | 89 | |
phgbartels | 4:71ada7709c46 | 90 | pwm_motor1.period_us(100); |
phgbartels | 4:71ada7709c46 | 91 | pwm_motor2.period_us(100); |
phgbartels | 4:71ada7709c46 | 92 | pwm_motor1.write(0); |
phgbartels | 4:71ada7709c46 | 93 | pwm_motor2.write(0); |
phgbartels | 4:71ada7709c46 | 94 | |
phgbartels | 4:71ada7709c46 | 95 | LED = 0; |
phgbartels | 4:71ada7709c46 | 96 | while(!looptimerflag) //Hierdoor zeg je eigenlijk tegen je systeem; voer dit script uit na elke TSAMP s. |
phgbartels | 4:71ada7709c46 | 97 | { |
phgbartels | 4:71ada7709c46 | 98 | /*do nothing*/ //Zolang dit waar is, doe je niets. |
phgbartels | 4:71ada7709c46 | 99 | } |
phgbartels | 4:71ada7709c46 | 100 | looptimerflag = false; //clear flag |
phgbartels | 4:71ada7709c46 | 101 | scope.set(0, motor1.getPosition()); |
phgbartels | 4:71ada7709c46 | 102 | scope.set(1, motor1.getSpeed()); |
phgbartels | 4:71ada7709c46 | 103 | scope.set(2, motor2.getPosition()); |
phgbartels | 4:71ada7709c46 | 104 | scope.set(3, motor2.getSpeed()); |
phgbartels | 4:71ada7709c46 | 105 | scope.send(); |
phgbartels | 4:71ada7709c46 | 106 | } |