seconda prova motore
Dependencies: X_NUCLEO_IHM12A1 X_NUCLEO_IKS01A2 mbed
Fork of prova_motore by
main.cpp@6:a065c24e0106, 2017-02-17 (annotated)
- Committer:
- das94
- Date:
- Fri Feb 17 12:04:56 2017 +0000
- Revision:
- 6:a065c24e0106
- Parent:
- 5:1808ddbbef21
prova motore 2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Manu_L | 0:773e2a2be16f | 1 | |
Manu_L | 0:773e2a2be16f | 2 | /* mbed specific header files. */ |
Manu_L | 0:773e2a2be16f | 3 | #include "mbed.h" |
Manu_L | 0:773e2a2be16f | 4 | |
Manu_L | 0:773e2a2be16f | 5 | /* Component specific header files. */ |
Manu_L | 0:773e2a2be16f | 6 | #include "stspin240_250_class.h" |
Manu_L | 0:773e2a2be16f | 7 | |
Manu_L | 0:773e2a2be16f | 8 | /* Variables -----------------------------------------------------------------*/ |
Manu_L | 0:773e2a2be16f | 9 | |
Manu_L | 0:773e2a2be16f | 10 | /* Initialization parameters of the motor connected to the expansion board. */ |
Giuliove | 5:1808ddbbef21 | 11 | Stspin240_250_Init_t initDeviceParameters = { |
Giuliove | 5:1808ddbbef21 | 12 | 20000, /* Frequency of PWM of Input Bridge A in Hz up to 100000Hz */ |
Giuliove | 5:1808ddbbef21 | 13 | 20000, /* Frequency of PWM of Input Bridge B in Hz up to 100000Hz */ |
Giuliove | 5:1808ddbbef21 | 14 | 20000, /* Frequency of PWM used for Ref pin in Hz up to 100000Hz */ |
Giuliove | 5:1808ddbbef21 | 15 | 50, /* Duty cycle of PWM used for Ref pin (from 0 to 100) */ |
Giuliove | 5:1808ddbbef21 | 16 | TRUE /* Dual Bridge configuration (FALSE for mono, TRUE for dual brush dc) */ |
Giuliove | 5:1808ddbbef21 | 17 | }; |
Manu_L | 0:773e2a2be16f | 18 | |
Manu_L | 0:773e2a2be16f | 19 | /* Motor Control Component. */ |
Manu_L | 0:773e2a2be16f | 20 | STSPIN240_250 *motor; |
das94 | 6:a065c24e0106 | 21 | int s1; |
das94 | 6:a065c24e0106 | 22 | int s0; |
das94 | 6:a065c24e0106 | 23 | |
das94 | 6:a065c24e0106 | 24 | |
das94 | 6:a065c24e0106 | 25 | |
Manu_L | 0:773e2a2be16f | 26 | |
Manu_L | 0:773e2a2be16f | 27 | |
Manu_L | 0:773e2a2be16f | 28 | /* Main ----------------------------------------------------------------------*/ |
Manu_L | 0:773e2a2be16f | 29 | |
Manu_L | 0:773e2a2be16f | 30 | int main() |
Manu_L | 0:773e2a2be16f | 31 | { |
Giuliove | 5:1808ddbbef21 | 32 | uint8_t demoStep = 0; |
Giuliove | 5:1808ddbbef21 | 33 | // riv |
Giuliove | 5:1808ddbbef21 | 34 | /* Initializing Motor Control Component. */ |
Giuliove | 5:1808ddbbef21 | 35 | motor = new STSPIN240_250(D2, D9, D6, D7, D5, D4, A0 ); //Chiamo i l costruttore per inizializzare l'oggetto motor |
Giuliove | 5:1808ddbbef21 | 36 | |
Giuliove | 5:1808ddbbef21 | 37 | /* Set dual bridge enabled as two motors are used*/ |
Giuliove | 5:1808ddbbef21 | 38 | motor->SetDualFullBridgeConfig(1); |
Manu_L | 0:773e2a2be16f | 39 | |
Giuliove | 5:1808ddbbef21 | 40 | /* Set PWM Frequency of Ref to 15000 Hz */ |
Giuliove | 5:1808ddbbef21 | 41 | motor->SetRefPwmFreq(0, 15000); //frequenza clock |
Giuliove | 5:1808ddbbef21 | 42 | |
Giuliove | 5:1808ddbbef21 | 43 | /* Set PWM duty cycle of Ref to 60% */ |
Giuliove | 5:1808ddbbef21 | 44 | motor->SetRefPwmDc(0, 60); |
das94 | 6:a065c24e0106 | 45 | motor->SetRefPwmDc(1, 60); |
Manu_L | 0:773e2a2be16f | 46 | |
Giuliove | 5:1808ddbbef21 | 47 | /* Set PWM Frequency of bridge A inputs to 10000 Hz */ |
das94 | 6:a065c24e0106 | 48 | motor->SetBridgeInputPwmFreq(0,70000); |
Manu_L | 0:773e2a2be16f | 49 | |
Giuliove | 5:1808ddbbef21 | 50 | /* Set PWM Frequency of bridge B inputs to 10000 Hz */ |
das94 | 6:a065c24e0106 | 51 | motor->SetBridgeInputPwmFreq(1,70000); |
Manu_L | 0:773e2a2be16f | 52 | |
Giuliove | 5:1808ddbbef21 | 53 | |
Manu_L | 0:773e2a2be16f | 54 | |
Giuliove | 5:1808ddbbef21 | 55 | //INIZIALIZZAZIONI, s1 e s2 conterranno i valori di velocità da dare ai singoli motori |
Giuliove | 5:1808ddbbef21 | 56 | |
das94 | 6:a065c24e0106 | 57 | s0=50; |
das94 | 6:a065c24e0106 | 58 | s1=50; |
Giuliove | 5:1808ddbbef21 | 59 | |
Giuliove | 5:1808ddbbef21 | 60 | //Definisco due oggetti della classe AnalogIn che chiamo ten1 e ten2, chiamo il costruttore per inizializzarli |
Giuliove | 5:1808ddbbef21 | 61 | AnalogIn ten0(A1); //indico che vorrò leggere la tensione analogica su questi due pin, |
Giuliove | 5:1808ddbbef21 | 62 | AnalogIn ten1(A2); //è la stessa di quella che ho sulle due ruote |
Giuliove | 5:1808ddbbef21 | 63 | |
Giuliove | 5:1808ddbbef21 | 64 | /**** SETTO I DUE MOTORI ALLA STESSA VELOCITA, 50%, E ALLA STESSA DIREZIONE ****/ |
das94 | 6:a065c24e0106 | 65 | motor->SetSpeed(0,s0); //SETTO LA VELOCITà DEL MOTORE 0 AL 50% |
das94 | 6:a065c24e0106 | 66 | motor->SetSpeed(1,s1); //RIDUCO LA VELOCITA DEL MOTORE 0 |
das94 | 6:a065c24e0106 | 67 | motor->Run(1, BDCMotor::FWD); //FACCIO ANDARE AVANTI IL MOTORE 1, per farlo andare indietro basta mettere BWD invece di FWD |
das94 | 6:a065c24e0106 | 68 | motor->Run(0, BDCMotor::FWD); //MOTORE 0 IN AVANTI |
das94 | 6:a065c24e0106 | 69 | |
Giuliove | 5:1808ddbbef21 | 70 | |
Giuliove | 5:1808ddbbef21 | 71 | |
Giuliove | 5:1808ddbbef21 | 72 | while (1) |
Giuliove | 5:1808ddbbef21 | 73 | { |
das94 | 6:a065c24e0106 | 74 | |
das94 | 6:a065c24e0106 | 75 | if(ten1.read()-ten0.read()>0.1) //la tensione sul motore 0 è 10 volte quella dell'altro motore |
Giuliove | 5:1808ddbbef21 | 76 | { |
Giuliove | 5:1808ddbbef21 | 77 | s1+=10; |
Giuliove | 5:1808ddbbef21 | 78 | motor->SetSpeed(1,s1); //aumento la velocità del 5% |
Giuliove | 5:1808ddbbef21 | 79 | // motor->Run(1, BDCMotor::FWD); |
Giuliove | 5:1808ddbbef21 | 80 | |
Giuliove | 5:1808ddbbef21 | 81 | printf(" Velocita S1 %6ld\n", s1); |
Giuliove | 5:1808ddbbef21 | 82 | } |
Giuliove | 5:1808ddbbef21 | 83 | |
Giuliove | 5:1808ddbbef21 | 84 | else if (ten0.read() - ten1.read() >0.1) //la tensione sul motore 0 è 10 volte quella dell'altro motore |
Giuliove | 5:1808ddbbef21 | 85 | { |
Giuliove | 5:1808ddbbef21 | 86 | |
das94 | 6:a065c24e0106 | 87 | s1-=10; |
das94 | 6:a065c24e0106 | 88 | motor->SetSpeed(1,s1); //aumento la velocità del 5% |
Giuliove | 5:1808ddbbef21 | 89 | // motor->Run(0, BDCMotor::FWD); |
Giuliove | 5:1808ddbbef21 | 90 | |
Giuliove | 5:1808ddbbef21 | 91 | printf(" Velocita S0 %6ld\n", s0); |
Giuliove | 5:1808ddbbef21 | 92 | |
Giuliove | 5:1808ddbbef21 | 93 | |
Giuliove | 5:1808ddbbef21 | 94 | |
Giuliove | 5:1808ddbbef21 | 95 | |
Giuliove | 5:1808ddbbef21 | 96 | } |
Giuliove | 5:1808ddbbef21 | 97 | |
das94 | 6:a065c24e0106 | 98 | wait_ms(150); // 250 ms |
Giuliove | 5:1808ddbbef21 | 99 | } |
Giuliove | 5:1808ddbbef21 | 100 | |
Giuliove | 5:1808ddbbef21 | 101 | |
Manu_L | 0:773e2a2be16f | 102 | } |