j

Dependencies:   Encoder HIDScope mbed

Fork of Motor_component_testing by Bart Arendshorst

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?

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