dfhjk

Dependencies:   X_NUCLEO_IHM12A1 X_NUCLEO_IKS01A2 mbed

Fork of HelloWorld_IHM12A1 by ST

Committer:
Giuliove
Date:
Thu Feb 16 12:20:59 2017 +0000
Revision:
5:1808ddbbef21
Parent:
2:1e4061cedf1d
prova cpontrollo

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;
Manu_L 0:773e2a2be16f 21
Manu_L 0:773e2a2be16f 22
Manu_L 0:773e2a2be16f 23 /* Main ----------------------------------------------------------------------*/
Manu_L 0:773e2a2be16f 24
Manu_L 0:773e2a2be16f 25 int main()
Manu_L 0:773e2a2be16f 26 {
Giuliove 5:1808ddbbef21 27
Giuliove 5:1808ddbbef21 28 uint8_t demoStep = 0;
Giuliove 5:1808ddbbef21 29 // riv
Giuliove 5:1808ddbbef21 30 /* Initializing Motor Control Component. */
Giuliove 5:1808ddbbef21 31 motor = new STSPIN240_250(D2, D9, D6, D7, D5, D4, A0 ); //Chiamo i l costruttore per inizializzare l'oggetto motor
Giuliove 5:1808ddbbef21 32
Giuliove 5:1808ddbbef21 33 /* Set dual bridge enabled as two motors are used*/
Giuliove 5:1808ddbbef21 34 motor->SetDualFullBridgeConfig(1);
Manu_L 0:773e2a2be16f 35
Giuliove 5:1808ddbbef21 36 /* Set PWM Frequency of Ref to 15000 Hz */
Giuliove 5:1808ddbbef21 37 motor->SetRefPwmFreq(0, 15000); //frequenza clock
Giuliove 5:1808ddbbef21 38
Giuliove 5:1808ddbbef21 39 /* Set PWM duty cycle of Ref to 60% */
Giuliove 5:1808ddbbef21 40 motor->SetRefPwmDc(0, 60);
Manu_L 0:773e2a2be16f 41
Giuliove 5:1808ddbbef21 42 /* Set PWM Frequency of bridge A inputs to 10000 Hz */
Giuliove 5:1808ddbbef21 43 motor->SetBridgeInputPwmFreq(0,10000);
Manu_L 0:773e2a2be16f 44
Giuliove 5:1808ddbbef21 45 /* Set PWM Frequency of bridge B inputs to 10000 Hz */
Giuliove 5:1808ddbbef21 46 motor->SetBridgeInputPwmFreq(1,10000);
Manu_L 0:773e2a2be16f 47
Giuliove 5:1808ddbbef21 48
Manu_L 0:773e2a2be16f 49
Giuliove 5:1808ddbbef21 50 //INIZIALIZZAZIONI, s1 e s2 conterranno i valori di velocità da dare ai singoli motori
Giuliove 5:1808ddbbef21 51
Giuliove 5:1808ddbbef21 52 int s0=50;
Giuliove 5:1808ddbbef21 53 int s1=50;
Giuliove 5:1808ddbbef21 54
Giuliove 5:1808ddbbef21 55 //Definisco due oggetti della classe AnalogIn che chiamo ten1 e ten2, chiamo il costruttore per inizializzarli
Giuliove 5:1808ddbbef21 56 AnalogIn ten0(A1); //indico che vorrò leggere la tensione analogica su questi due pin,
Giuliove 5:1808ddbbef21 57 AnalogIn ten1(A2); //è la stessa di quella che ho sulle due ruote
Giuliove 5:1808ddbbef21 58
Giuliove 5:1808ddbbef21 59 /**** SETTO I DUE MOTORI ALLA STESSA VELOCITA, 50%, E ALLA STESSA DIREZIONE ****/
Giuliove 5:1808ddbbef21 60
Giuliove 5:1808ddbbef21 61 motor->SetSpeed(0,s0); //SETTO LA VELOCITà DEL MOTORE 0 AL 50%
Giuliove 5:1808ddbbef21 62 motor->SetSpeed(1,s1); //RIDUCO LA VELOCITA DEL MOTORE 0
Giuliove 5:1808ddbbef21 63 motor->Run(1, BDCMotor::FWD); //FACCIO ANDARE AVANTI IL MOTORE 1, per farlo andare indietro basta mettere BWD invece di FWD
Giuliove 5:1808ddbbef21 64 motor->Run(0, BDCMotor::FWD); //MOTORE 0 IN AVANTI
Giuliove 5:1808ddbbef21 65
Giuliove 5:1808ddbbef21 66
Giuliove 5:1808ddbbef21 67 while (1)
Giuliove 5:1808ddbbef21 68 {
Giuliove 5:1808ddbbef21 69
Giuliove 5:1808ddbbef21 70 if(ten1.read() - ten0.read() >0.1) //la tensione sul motore 0 è 10 volte quella dell'altro motore
Giuliove 5:1808ddbbef21 71 {
Giuliove 5:1808ddbbef21 72 s1+=10;
Giuliove 5:1808ddbbef21 73 motor->SetSpeed(1,s1); //aumento la velocità del 5%
Giuliove 5:1808ddbbef21 74 // motor->Run(1, BDCMotor::FWD);
Giuliove 5:1808ddbbef21 75
Giuliove 5:1808ddbbef21 76 printf(" Velocita S1 %6ld\n", s1);
Giuliove 5:1808ddbbef21 77 }
Giuliove 5:1808ddbbef21 78
Giuliove 5:1808ddbbef21 79 else if (ten0.read() - ten1.read() >0.1) //la tensione sul motore 0 è 10 volte quella dell'altro motore
Giuliove 5:1808ddbbef21 80 {
Giuliove 5:1808ddbbef21 81
Giuliove 5:1808ddbbef21 82 s0 +=10;
Giuliove 5:1808ddbbef21 83 motor->SetSpeed(0,s0); //aumento la velocità del 5%
Giuliove 5:1808ddbbef21 84 // motor->Run(0, BDCMotor::FWD);
Giuliove 5:1808ddbbef21 85
Giuliove 5:1808ddbbef21 86 printf(" Velocita S0 %6ld\n", s0);
Giuliove 5:1808ddbbef21 87
Giuliove 5:1808ddbbef21 88
Giuliove 5:1808ddbbef21 89
Giuliove 5:1808ddbbef21 90
Giuliove 5:1808ddbbef21 91 }
Giuliove 5:1808ddbbef21 92
Giuliove 5:1808ddbbef21 93 wait_ms(250); // 250 ms
Giuliove 5:1808ddbbef21 94 }
Giuliove 5:1808ddbbef21 95
Giuliove 5:1808ddbbef21 96
Manu_L 0:773e2a2be16f 97 }