Come sfruttare una procedura per gestire un motore DC pilotato da due PWM
Dependencies: mbed
main.cpp@0:56dae31e7e04, 2016-12-03 (annotated)
- 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?
User | Revision | Line number | New 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 | } |