Determine motor constants

Dependencies:   HIDScope QEI mbed

Fork of frdm_motorConstantesBepalen by Gerhard Berman

Committer:
GerhardBerman
Date:
Fri Oct 28 11:32:42 2016 +0000
Revision:
1:b7a1138131bb
Parent:
0:8ea04b138f72
Child:
2:78a4dccff486
Edited, sinus signal is not yet good

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Marieke 0:8ea04b138f72 1 #include "mbed.h"
Marieke 0:8ea04b138f72 2 #include "QEI.h"
Marieke 0:8ea04b138f72 3 #include "HIDScope.h"
Marieke 0:8ea04b138f72 4
Marieke 0:8ea04b138f72 5 // Definiëren van alle poorten
Marieke 0:8ea04b138f72 6
Marieke 0:8ea04b138f72 7 DigitalIn encoder1A (D13); //Channel A van Encoder 1
Marieke 0:8ea04b138f72 8 DigitalIn encoder1B (D12); //Channel B van Encoder 1
Marieke 0:8ea04b138f72 9 DigitalIn encoder2A (D11); //Channel A van Encoder 2, kan niet op D15
Marieke 0:8ea04b138f72 10 DigitalIn encoder2B (D10); //Channel B van Encoder 2, kan niet op D14
Marieke 0:8ea04b138f72 11 DigitalOut motor1 (D7);
Marieke 0:8ea04b138f72 12 PwmOut pwm_motor1 (D6);
Marieke 0:8ea04b138f72 13 DigitalOut motor2 (D4);
Marieke 0:8ea04b138f72 14 PwmOut pwm_motor2 (D5);
GerhardBerman 1:b7a1138131bb 15 HIDScope scope( 4 );
Marieke 0:8ea04b138f72 16 Ticker sample_timer;
Marieke 0:8ea04b138f72 17
Marieke 0:8ea04b138f72 18 double t;
Marieke 0:8ea04b138f72 19 float pi=3.14159;
Marieke 0:8ea04b138f72 20 float Aout;
GerhardBerman 1:b7a1138131bb 21 float PWMAout;
Marieke 0:8ea04b138f72 22 int counts1;
Marieke 0:8ea04b138f72 23 int counts2;
GerhardBerman 1:b7a1138131bb 24 const int cw=0;
GerhardBerman 1:b7a1138131bb 25 const int ccw=1;
GerhardBerman 1:b7a1138131bb 26
Marieke 0:8ea04b138f72 27 void sample()
Marieke 0:8ea04b138f72 28 {
Marieke 0:8ea04b138f72 29 scope.set(0, counts1);
Marieke 0:8ea04b138f72 30 scope.set(1, counts2);
GerhardBerman 1:b7a1138131bb 31 scope.set(2, Aout);
GerhardBerman 1:b7a1138131bb 32 scope.set(3, PWMAout);
Marieke 0:8ea04b138f72 33 scope.send();
Marieke 0:8ea04b138f72 34 }
Marieke 0:8ea04b138f72 35
Marieke 0:8ea04b138f72 36
Marieke 0:8ea04b138f72 37 int main() {
Marieke 0:8ea04b138f72 38 const double frequency_pwm = 100.0;
Marieke 0:8ea04b138f72 39 pwm_motor1.period(1.0/frequency_pwm);
GerhardBerman 1:b7a1138131bb 40 pwm_motor2.period(1.0/frequency_pwm);
Marieke 0:8ea04b138f72 41 QEI Encoder1(D12, D13, NC, 32); //maakt de encoder aan, NC niet aanwezig, 32 bits
Marieke 0:8ea04b138f72 42 QEI Encoder2(D10, D11, NC, 32); //maakt de encoder aan, NC niet aanwezig, 32 bits
GerhardBerman 1:b7a1138131bb 43 sample_timer.attach(&sample, 0.001);
Marieke 0:8ea04b138f72 44
Marieke 0:8ea04b138f72 45 while(true){
GerhardBerman 1:b7a1138131bb 46 for (t=0; t<10; t=t+0.05) {
Marieke 0:8ea04b138f72 47 Aout=1*sin(2*pi*t);
GerhardBerman 1:b7a1138131bb 48 PWMAout=(Aout+1)/2;
GerhardBerman 1:b7a1138131bb 49 if (Aout >=0) //clockwise rotation
GerhardBerman 1:b7a1138131bb 50 {motor1=cw;
GerhardBerman 1:b7a1138131bb 51 }
GerhardBerman 1:b7a1138131bb 52 else //counterclockwise rotation
GerhardBerman 1:b7a1138131bb 53 {motor1=ccw;
Marieke 0:8ea04b138f72 54 }
GerhardBerman 1:b7a1138131bb 55 pwm_motor1.write(PWMAout);
GerhardBerman 1:b7a1138131bb 56
GerhardBerman 1:b7a1138131bb 57 if (Aout >=0) //clockwise rotation
GerhardBerman 1:b7a1138131bb 58 {motor2=cw;
GerhardBerman 1:b7a1138131bb 59 }
GerhardBerman 1:b7a1138131bb 60 else //counterclockwise rotation
GerhardBerman 1:b7a1138131bb 61 {motor2=ccw;
GerhardBerman 1:b7a1138131bb 62 }
GerhardBerman 1:b7a1138131bb 63 pwm_motor2.write(PWMAout);
GerhardBerman 1:b7a1138131bb 64
Marieke 0:8ea04b138f72 65 counts1 = Encoder1.getPulses();
GerhardBerman 1:b7a1138131bb 66 counts2 = Encoder2.getPulses();
GerhardBerman 1:b7a1138131bb 67 }
GerhardBerman 1:b7a1138131bb 68
GerhardBerman 1:b7a1138131bb 69
Marieke 0:8ea04b138f72 70 }
Marieke 0:8ea04b138f72 71 }
Marieke 0:8ea04b138f72 72
Marieke 0:8ea04b138f72 73