seconda prova motore

Dependencies:   X_NUCLEO_IHM12A1 X_NUCLEO_IKS01A2 mbed

Fork of prova_motore by duckietownhsunina

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?

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