Come sfruttare una procedura per gestire un motore DC pilotato da due PWM

Dependencies:   mbed

Committer:
FrancescoCaiazzo
Date:
Sat Dec 03 10:39:21 2016 +0000
Revision:
0:56dae31e7e04
Sfrutto una procedura per gestire un motore pilotato da 2 PWM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
FrancescoCaiazzo 0:56dae31e7e04 1 /****************************************************
FrancescoCaiazzo 0:56dae31e7e04 2 * FAST PROTOTYPING WITH NUCLEO *
FrancescoCaiazzo 0:56dae31e7e04 3 * Example Code 14: DC motor control con Procedura *
FrancescoCaiazzo 0:56dae31e7e04 4 * Author: Francesco Caiazzo *
FrancescoCaiazzo 0:56dae31e7e04 5 * Organization: Perlatecnica no-profit organization *
FrancescoCaiazzo 0:56dae31e7e04 6 *****************************************************/
FrancescoCaiazzo 0:56dae31e7e04 7
FrancescoCaiazzo 0:56dae31e7e04 8 #include "mbed.h"
FrancescoCaiazzo 0:56dae31e7e04 9 #define P 10000 // periodo
FrancescoCaiazzo 0:56dae31e7e04 10
FrancescoCaiazzo 0:56dae31e7e04 11 PwmOut mB1(D10);
FrancescoCaiazzo 0:56dae31e7e04 12 PwmOut mB2(D11);
FrancescoCaiazzo 0:56dae31e7e04 13
FrancescoCaiazzo 0:56dae31e7e04 14 void motore(int speed) //funzione muove motore
FrancescoCaiazzo 0:56dae31e7e04 15 {
FrancescoCaiazzo 0:56dae31e7e04 16 speed *= 100; //adatto il duty cycle
FrancescoCaiazzo 0:56dae31e7e04 17
FrancescoCaiazzo 0:56dae31e7e04 18 if (speed > 0) //controllo se speed > 0
FrancescoCaiazzo 0:56dae31e7e04 19 {
FrancescoCaiazzo 0:56dae31e7e04 20 // Avanti
FrancescoCaiazzo 0:56dae31e7e04 21 mB1.pulsewidth_us(0);
FrancescoCaiazzo 0:56dae31e7e04 22 mB2.pulsewidth_us(speed);
FrancescoCaiazzo 0:56dae31e7e04 23 }
FrancescoCaiazzo 0:56dae31e7e04 24 else if (speed < 0)
FrancescoCaiazzo 0:56dae31e7e04 25 {
FrancescoCaiazzo 0:56dae31e7e04 26 // Dietro
FrancescoCaiazzo 0:56dae31e7e04 27 mB2.pulsewidth_us(0);
FrancescoCaiazzo 0:56dae31e7e04 28 mB1.pulsewidth_us(-speed); // rendo positiva la velocità
FrancescoCaiazzo 0:56dae31e7e04 29 }
FrancescoCaiazzo 0:56dae31e7e04 30 else
FrancescoCaiazzo 0:56dae31e7e04 31 {
FrancescoCaiazzo 0:56dae31e7e04 32 // Stop
FrancescoCaiazzo 0:56dae31e7e04 33 mB2.pulsewidth_us(0);
FrancescoCaiazzo 0:56dae31e7e04 34 mB1.pulsewidth_us(0);
FrancescoCaiazzo 0:56dae31e7e04 35 }
FrancescoCaiazzo 0:56dae31e7e04 36
FrancescoCaiazzo 0:56dae31e7e04 37
FrancescoCaiazzo 0:56dae31e7e04 38 }
FrancescoCaiazzo 0:56dae31e7e04 39
FrancescoCaiazzo 0:56dae31e7e04 40 int main()
FrancescoCaiazzo 0:56dae31e7e04 41 {
FrancescoCaiazzo 0:56dae31e7e04 42 //setto il periodo per i due pin del motore B
FrancescoCaiazzo 0:56dae31e7e04 43 mB1.period_us(P);
FrancescoCaiazzo 0:56dae31e7e04 44 mB2.period_us(P);
FrancescoCaiazzo 0:56dae31e7e04 45
FrancescoCaiazzo 0:56dae31e7e04 46 while(1)
FrancescoCaiazzo 0:56dae31e7e04 47 {
FrancescoCaiazzo 0:56dae31e7e04 48 motore(100); // avanti a v = 100
FrancescoCaiazzo 0:56dae31e7e04 49 wait(1); // aspetto 1s
FrancescoCaiazzo 0:56dae31e7e04 50 motore(0); // mi fermo
FrancescoCaiazzo 0:56dae31e7e04 51 wait(1); // aspetto 1s
FrancescoCaiazzo 0:56dae31e7e04 52 motore(-100); // dietro a v = 100
FrancescoCaiazzo 0:56dae31e7e04 53 wait(1); // aspetto 1s
FrancescoCaiazzo 0:56dae31e7e04 54 motore(0); // mi fermo
FrancescoCaiazzo 0:56dae31e7e04 55 wait(1); // aspetto 1s
FrancescoCaiazzo 0:56dae31e7e04 56 }
FrancescoCaiazzo 0:56dae31e7e04 57 }