j

Dependencies:   Encoder HIDScope mbed

Fork of Motor_component_testing by Bart Arendshorst

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?

UserRevisionLine numberNew 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 }