j
Dependencies: Encoder HIDScope mbed
Fork of Motor_component_testing by
main.cpp@5:a0f300785c3d, 2014-10-27 (annotated)
- Committer:
- phgbartels
- Date:
- Mon Oct 27 14:35:37 2014 +0000
- Revision:
- 5:a0f300785c3d
- Parent:
- 4:71ada7709c46
Motor_component_testing_G9
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 | 5:a0f300785c3d | 16 | #define PI 3.1415926535897 |
phgbartels | 0:2240263f7068 | 17 | |
BArendshorst | 1:0471de635f87 | 18 | Encoder motor1(PTD3,PTD1); |
phgbartels | 3:c6b8499a9021 | 19 | Encoder motor2(PTD5, PTD0); |
phgbartels | 0:2240263f7068 | 20 | PwmOut pwm_motor1(M1_PWM); |
phgbartels | 3:c6b8499a9021 | 21 | PwmOut pwm_motor2(M2_PWM); |
phgbartels | 0:2240263f7068 | 22 | DigitalOut motordir1(M1_DIR); |
phgbartels | 3:c6b8499a9021 | 23 | DigitalOut motordir2(M2_DIR); |
phgbartels | 0:2240263f7068 | 24 | DigitalOut LED(LED_GREEN); |
phgbartels | 0:2240263f7068 | 25 | |
phgbartels | 4:71ada7709c46 | 26 | void clamp(float * in, float min, float max); |
phgbartels | 3:c6b8499a9021 | 27 | volatile bool looptimerflag; |
phgbartels | 5:a0f300785c3d | 28 | int PWM1_percentage = 100; |
phgbartels | 3:c6b8499a9021 | 29 | int PWM2_percentage = 1; |
phgbartels | 5:a0f300785c3d | 30 | int aantal_rotaties = 10; |
phgbartels | 4:71ada7709c46 | 31 | int aantalcr = 960; |
phgbartels | 4:71ada7709c46 | 32 | int beginpos_motor1; |
phgbartels | 4:71ada7709c46 | 33 | int beginpos_motor1_new; |
phgbartels | 4:71ada7709c46 | 34 | int beginpos_motor2; |
phgbartels | 5:a0f300785c3d | 35 | int beginpos_motor2_new; |
phgbartels | 3:c6b8499a9021 | 36 | float PWM1 = ((1-PWM1_min_30)/100)*PWM1_percentage + PWM1_min_30; |
phgbartels | 3:c6b8499a9021 | 37 | float PWM2 = ((1-PWM2_min_50)/100)*PWM2_percentage + PWM1_min_30; |
phgbartels | 5:a0f300785c3d | 38 | float Speed_motor1; |
phgbartels | 5:a0f300785c3d | 39 | float Speed_motor1rad; |
phgbartels | 3:c6b8499a9021 | 40 | |
phgbartels | 4:71ada7709c46 | 41 | HIDScope scope(4); |
phgbartels | 3:c6b8499a9021 | 42 | |
phgbartels | 3:c6b8499a9021 | 43 | //Ticker tick; |
phgbartels | 3:c6b8499a9021 | 44 | /*void PWMc() |
phgbartels | 3:c6b8499a9021 | 45 | { |
phgbartels | 3:c6b8499a9021 | 46 | PWM = abs(PWM-0.1); |
phgbartels | 3:c6b8499a9021 | 47 | pwm_motor1.write(PWM); |
phgbartels | 3:c6b8499a9021 | 48 | scope.set(0, motor1.getPosition()); |
phgbartels | 3:c6b8499a9021 | 49 | scope.set(1, DigitalIn(PTD3)); |
phgbartels | 3:c6b8499a9021 | 50 | scope.set(2, DigitalIn(PTD1)); |
phgbartels | 3:c6b8499a9021 | 51 | scope.send(); |
phgbartels | 3:c6b8499a9021 | 52 | }*/ |
phgbartels | 3:c6b8499a9021 | 53 | |
phgbartels | 3:c6b8499a9021 | 54 | void setlooptimerflag(void) //Ticker maakt een constructie die zoveel keer per seconde een functie uitvoerd, met sampingling freq TSAMP |
phgbartels | 3:c6b8499a9021 | 55 | { |
phgbartels | 3:c6b8499a9021 | 56 | looptimerflag = true; |
phgbartels | 3:c6b8499a9021 | 57 | } |
phgbartels | 0:2240263f7068 | 58 | |
phgbartels | 0:2240263f7068 | 59 | int main() { |
phgbartels | 3:c6b8499a9021 | 60 | //tick.attach(&PWMc, 5); |
phgbartels | 5:a0f300785c3d | 61 | wait(20); |
phgbartels | 5:a0f300785c3d | 62 | motor1.setPosition(0); |
phgbartels | 4:71ada7709c46 | 63 | beginpos_motor1 = motor1.getPosition(); |
phgbartels | 4:71ada7709c46 | 64 | beginpos_motor1_new = beginpos_motor1; |
phgbartels | 4:71ada7709c46 | 65 | beginpos_motor2 = motor2.getPosition(); |
phgbartels | 5:a0f300785c3d | 66 | beginpos_motor2_new = beginpos_motor2; |
phgbartels | 4:71ada7709c46 | 67 | |
phgbartels | 4:71ada7709c46 | 68 | 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 | 69 | looptimer.attach(setlooptimerflag,TSAMP); // attach betekend het koppelen van een functie aan een classe. |
phgbartels | 0:2240263f7068 | 70 | LED = 0; |
phgbartels | 3:c6b8499a9021 | 71 | motordir1 = 0; |
phgbartels | 3:c6b8499a9021 | 72 | motordir2 = 0; |
phgbartels | 3:c6b8499a9021 | 73 | |
phgbartels | 4:71ada7709c46 | 74 | while(beginpos_motor1 + aantal_rotaties*aantalcr >= beginpos_motor1_new) { |
phgbartels | 4:71ada7709c46 | 75 | pwm_motor1.period_us(100); |
phgbartels | 4:71ada7709c46 | 76 | pwm_motor2.period_us(100); |
phgbartels | 4:71ada7709c46 | 77 | pwm_motor1.write(PWM1); |
phgbartels | 4:71ada7709c46 | 78 | pwm_motor2.write(PWM2); |
phgbartels | 4:71ada7709c46 | 79 | beginpos_motor1_new = motor1.getPosition(); |
phgbartels | 5:a0f300785c3d | 80 | Speed_motor1 = (motor1.getSpeed()/30/32); |
phgbartels | 5:a0f300785c3d | 81 | Speed_motor1rad = Speed_motor1*2*PI; |
phgbartels | 4:71ada7709c46 | 82 | //while(true) { |
phgbartels | 0:2240263f7068 | 83 | LED = 1; |
phgbartels | 3:c6b8499a9021 | 84 | while(!looptimerflag) //Hierdoor zeg je eigenlijk tegen je systeem; voer dit script uit na elke TSAMP s. |
phgbartels | 3:c6b8499a9021 | 85 | { |
phgbartels | 3:c6b8499a9021 | 86 | /*do nothing*/ //Zolang dit waar is, doe je niets. |
phgbartels | 0:2240263f7068 | 87 | } |
phgbartels | 3:c6b8499a9021 | 88 | looptimerflag = false; //clear flag |
phgbartels | 3:c6b8499a9021 | 89 | |
phgbartels | 0:2240263f7068 | 90 | scope.set(0, motor1.getPosition()); |
phgbartels | 3:c6b8499a9021 | 91 | scope.set(1, motor1.getSpeed()); |
phgbartels | 5:a0f300785c3d | 92 | scope.set(2, Speed_motor1); |
phgbartels | 5:a0f300785c3d | 93 | scope.set(3, Speed_motor1rad); |
phgbartels | 0:2240263f7068 | 94 | scope.send(); |
phgbartels | 0:2240263f7068 | 95 | } |
phgbartels | 4:71ada7709c46 | 96 | |
phgbartels | 4:71ada7709c46 | 97 | pwm_motor1.period_us(100); |
phgbartels | 4:71ada7709c46 | 98 | pwm_motor2.period_us(100); |
phgbartels | 4:71ada7709c46 | 99 | pwm_motor1.write(0); |
phgbartels | 4:71ada7709c46 | 100 | pwm_motor2.write(0); |
phgbartels | 4:71ada7709c46 | 101 | |
phgbartels | 4:71ada7709c46 | 102 | LED = 0; |
phgbartels | 4:71ada7709c46 | 103 | while(!looptimerflag) //Hierdoor zeg je eigenlijk tegen je systeem; voer dit script uit na elke TSAMP s. |
phgbartels | 4:71ada7709c46 | 104 | { |
phgbartels | 4:71ada7709c46 | 105 | /*do nothing*/ //Zolang dit waar is, doe je niets. |
phgbartels | 4:71ada7709c46 | 106 | } |
phgbartels | 4:71ada7709c46 | 107 | looptimerflag = false; //clear flag |
phgbartels | 4:71ada7709c46 | 108 | scope.set(0, motor1.getPosition()); |
phgbartels | 4:71ada7709c46 | 109 | scope.set(1, motor1.getSpeed()); |
phgbartels | 5:a0f300785c3d | 110 | scope.set(2, Speed_motor1); |
phgbartels | 5:a0f300785c3d | 111 | scope.set(3, Speed_motor1rad); |
phgbartels | 4:71ada7709c46 | 112 | scope.send(); |
phgbartels | 4:71ada7709c46 | 113 | } |