2 motoren, pins correct

Dependencies:   MODSERIAL mbed QEI

Fork of PWM_motor by Felix Dransfeld

Committer:
cmaas
Date:
Mon Oct 15 10:56:12 2018 +0000
Revision:
2:47b7491935dc
Parent:
1:2ec710725db2
Aansturing van 3 motoren.; + directoncontrol; + hoek readout encoder; + tegen de klik in is positief

Who changed what in which revision?

UserRevisionLine numberNew contents of line
felixdransfeld 0:0cb350eb704a 1 #include "mbed.h"
felixdransfeld 0:0cb350eb704a 2 #include "MODSERIAL.h"
cmaas 2:47b7491935dc 3 #include "QEI.h"
felixdransfeld 0:0cb350eb704a 4
cmaas 2:47b7491935dc 5 AnalogIn pot1(A1);
cmaas 2:47b7491935dc 6 AnalogIn pot2(A2);
cmaas 1:2ec710725db2 7 PwmOut pwmpin1(D5);
cmaas 1:2ec710725db2 8 PwmOut pwmpin2(D6);
cmaas 2:47b7491935dc 9 PwmOut pwmpin3(D12);
cmaas 2:47b7491935dc 10 DigitalOut directionpin1(D4);
cmaas 1:2ec710725db2 11 DigitalOut directionpin2(D7);
cmaas 2:47b7491935dc 12 DigitalOut directionpin3(D13);
cmaas 2:47b7491935dc 13 QEI encoder1 (D11, D10, NC, 8400, QEI::X4_ENCODING);
cmaas 2:47b7491935dc 14 QEI encoder2 (D9, D8, NC, 8400, QEI::X4_ENCODING);
cmaas 2:47b7491935dc 15 QEI encoder3 (D3, D2, NC, 8400, QEI::X4_ENCODING);
felixdransfeld 0:0cb350eb704a 16 MODSERIAL pc(USBTX, USBRX);
felixdransfeld 0:0cb350eb704a 17
cmaas 2:47b7491935dc 18 // ALS DE MOTOR GEK GEDRAG VERTOONT. ZORG ER VOOR DAT PINS D4-7 NIET WORDEN GEBRUIKT. DEZE ZIJN AL IN GEBURIK!!!!
cmaas 2:47b7491935dc 19
cmaas 2:47b7491935dc 20
cmaas 2:47b7491935dc 21 // INITIALIZING ENCODER
cmaas 2:47b7491935dc 22 int steps_per_rev = 8400;
cmaas 2:47b7491935dc 23
cmaas 2:47b7491935dc 24 float pulsesToDegrees(float pulses)
cmaas 2:47b7491935dc 25 {
cmaas 2:47b7491935dc 26 return((pulses/steps_per_rev)*360);
cmaas 2:47b7491935dc 27 }
cmaas 2:47b7491935dc 28
felixdransfeld 0:0cb350eb704a 29 int main()
felixdransfeld 0:0cb350eb704a 30 {
felixdransfeld 0:0cb350eb704a 31 pc.baud(9600);
cmaas 2:47b7491935dc 32 pc.printf("hello world\n");
cmaas 2:47b7491935dc 33
cmaas 2:47b7491935dc 34 // INITIZALIZING ROTATION OF MOTOR
cmaas 1:2ec710725db2 35 pwmpin1.period_us(60); //60 microsecondsPWM period, 16.7 kHz
cmaas 1:2ec710725db2 36 pwmpin2.period_us(60);
cmaas 2:47b7491935dc 37 pwmpin3.period_us(60);
cmaas 2:47b7491935dc 38
felixdransfeld 0:0cb350eb704a 39
felixdransfeld 0:0cb350eb704a 40 while(true){
cmaas 2:47b7491935dc 41
cmaas 2:47b7491935dc 42 float pot_control1 = 2*pot1.read()-1;
cmaas 2:47b7491935dc 43 float pot_control2 = 2*pot2.read()-1;
felixdransfeld 0:0cb350eb704a 44
cmaas 2:47b7491935dc 45
cmaas 2:47b7491935dc 46 // CHANGE DIRECTION AND SPEED
cmaas 2:47b7491935dc 47 float u = pot_control1; //determineusefulvalue, -0.3f is justanexample
cmaas 2:47b7491935dc 48 directionpin1= u > 0.0f; //eithertrueor false
cmaas 1:2ec710725db2 49 pwmpin1= fabs(u); //pwmduty cycle canonlybepositive, floatingpoint absolute value
cmaas 2:47b7491935dc 50
cmaas 2:47b7491935dc 51 float k = pot_control2; //determineusefulvalue, -0.3f is justanexample
cmaas 2:47b7491935dc 52 directionpin2= k > 0.0f; //eithertrueor false
cmaas 2:47b7491935dc 53 pwmpin2= fabs(k);
cmaas 2:47b7491935dc 54
cmaas 2:47b7491935dc 55 float q = k; //determineusefulvalue, -0.3f is justanexample
cmaas 2:47b7491935dc 56 directionpin3= q > 0.0f; //eithertrueor false
cmaas 2:47b7491935dc 57 pwmpin3= fabs(q);
cmaas 2:47b7491935dc 58
cmaas 2:47b7491935dc 59
cmaas 2:47b7491935dc 60 // ENCODER READOUT
felixdransfeld 0:0cb350eb704a 61
cmaas 2:47b7491935dc 62
cmaas 2:47b7491935dc 63 float alpha = pulsesToDegrees(encoder1.getPulses());
cmaas 2:47b7491935dc 64 pc.printf("alpha: %f ", alpha);
cmaas 2:47b7491935dc 65
cmaas 2:47b7491935dc 66
cmaas 2:47b7491935dc 67 float beta = pulsesToDegrees(encoder2.getPulses());
cmaas 2:47b7491935dc 68 pc.printf("beta: %f ", beta);
cmaas 2:47b7491935dc 69
cmaas 2:47b7491935dc 70 float gamma = pulsesToDegrees(encoder3.getPulses());
cmaas 2:47b7491935dc 71 pc.printf("gamma: %f\n\r", gamma);
cmaas 2:47b7491935dc 72
felixdransfeld 0:0cb350eb704a 73 wait(0.5f);
felixdransfeld 0:0cb350eb704a 74
felixdransfeld 0:0cb350eb704a 75 }
felixdransfeld 0:0cb350eb704a 76 }