2 motoren, pins correct
Dependencies: MODSERIAL mbed QEI
Fork of PWM_motor by
main.cpp@2:47b7491935dc, 2018-10-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |