
Projeto de controle usando IHM07M1 e motor brushless
main.cpp@0:b734f558b698, 2020-11-27 (annotated)
- Committer:
- kaiquedog
- Date:
- Fri Nov 27 20:51:25 2020 +0000
- Revision:
- 0:b734f558b698
APS_4 Motor Brushless
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kaiquedog | 0:b734f558b698 | 1 | #include "mbed.h" |
kaiquedog | 0:b734f558b698 | 2 | |
kaiquedog | 0:b734f558b698 | 3 | PwmOut IN1 (PA_8); |
kaiquedog | 0:b734f558b698 | 4 | PwmOut IN2 (PA_9); |
kaiquedog | 0:b734f558b698 | 5 | PwmOut IN3 (PA_10); |
kaiquedog | 0:b734f558b698 | 6 | Serial pc(USBTX, USBRX); |
kaiquedog | 0:b734f558b698 | 7 | InterruptIn Bot(PC_13); |
kaiquedog | 0:b734f558b698 | 8 | DigitalOut EN1 (PC_10); |
kaiquedog | 0:b734f558b698 | 9 | DigitalOut EN2 (PC_11); |
kaiquedog | 0:b734f558b698 | 10 | DigitalOut EN3 (PC_12); |
kaiquedog | 0:b734f558b698 | 11 | AnalogIn Potenciometro(PB_1); |
kaiquedog | 0:b734f558b698 | 12 | |
kaiquedog | 0:b734f558b698 | 13 | bool Acionar = true; |
kaiquedog | 0:b734f558b698 | 14 | float Tim; |
kaiquedog | 0:b734f558b698 | 15 | float POT; |
kaiquedog | 0:b734f558b698 | 16 | |
kaiquedog | 0:b734f558b698 | 17 | |
kaiquedog | 0:b734f558b698 | 18 | void Ativacao(){ |
kaiquedog | 0:b734f558b698 | 19 | if (Acionar == true){ |
kaiquedog | 0:b734f558b698 | 20 | EN1 = 0; |
kaiquedog | 0:b734f558b698 | 21 | EN2 = 0; |
kaiquedog | 0:b734f558b698 | 22 | EN3 = 0; |
kaiquedog | 0:b734f558b698 | 23 | Acionar = false; |
kaiquedog | 0:b734f558b698 | 24 | } |
kaiquedog | 0:b734f558b698 | 25 | |
kaiquedog | 0:b734f558b698 | 26 | else { |
kaiquedog | 0:b734f558b698 | 27 | Acionar = true; |
kaiquedog | 0:b734f558b698 | 28 | } |
kaiquedog | 0:b734f558b698 | 29 | } |
kaiquedog | 0:b734f558b698 | 30 | |
kaiquedog | 0:b734f558b698 | 31 | |
kaiquedog | 0:b734f558b698 | 32 | int main() |
kaiquedog | 0:b734f558b698 | 33 | { |
kaiquedog | 0:b734f558b698 | 34 | pc.baud(9600); |
kaiquedog | 0:b734f558b698 | 35 | EN1 = 0; |
kaiquedog | 0:b734f558b698 | 36 | EN2 = 0; |
kaiquedog | 0:b734f558b698 | 37 | EN3 = 0; |
kaiquedog | 0:b734f558b698 | 38 | |
kaiquedog | 0:b734f558b698 | 39 | Acionar = false; |
kaiquedog | 0:b734f558b698 | 40 | |
kaiquedog | 0:b734f558b698 | 41 | IN1.period_ms(1); |
kaiquedog | 0:b734f558b698 | 42 | IN2.period_ms(1); |
kaiquedog | 0:b734f558b698 | 43 | IN3.period_ms(1); |
kaiquedog | 0:b734f558b698 | 44 | |
kaiquedog | 0:b734f558b698 | 45 | IN1.write(0); |
kaiquedog | 0:b734f558b698 | 46 | IN2.write(0); |
kaiquedog | 0:b734f558b698 | 47 | IN3.write(0); |
kaiquedog | 0:b734f558b698 | 48 | |
kaiquedog | 0:b734f558b698 | 49 | Bot.fall(&Ativacao); |
kaiquedog | 0:b734f558b698 | 50 | |
kaiquedog | 0:b734f558b698 | 51 | while(1){ |
kaiquedog | 0:b734f558b698 | 52 | pc.printf("%f : %f\n\r", Tim, POT); |
kaiquedog | 0:b734f558b698 | 53 | POT = Potenciometro.read()*1000; |
kaiquedog | 0:b734f558b698 | 54 | Tim = (POT/1000)*(10-2)+2; // Criação de uma conversão POT para Tim |
kaiquedog | 0:b734f558b698 | 55 | while (Acionar == true){ |
kaiquedog | 0:b734f558b698 | 56 | Tim = (Potenciometro.read()*8+2)/1000; |
kaiquedog | 0:b734f558b698 | 57 | //Step 1 |
kaiquedog | 0:b734f558b698 | 58 | IN1.write(0); |
kaiquedog | 0:b734f558b698 | 59 | IN2.write(0.9); |
kaiquedog | 0:b734f558b698 | 60 | IN3.write(0); |
kaiquedog | 0:b734f558b698 | 61 | EN1 = 0; |
kaiquedog | 0:b734f558b698 | 62 | EN2 = 1; |
kaiquedog | 0:b734f558b698 | 63 | EN3 = 2; |
kaiquedog | 0:b734f558b698 | 64 | wait(Tim); |
kaiquedog | 0:b734f558b698 | 65 | |
kaiquedog | 0:b734f558b698 | 66 | //Step 2 |
kaiquedog | 0:b734f558b698 | 67 | IN1.write(0); |
kaiquedog | 0:b734f558b698 | 68 | IN2.write(0.9); |
kaiquedog | 0:b734f558b698 | 69 | IN3.write(0); |
kaiquedog | 0:b734f558b698 | 70 | EN1 = 2; |
kaiquedog | 0:b734f558b698 | 71 | EN2 = 1; |
kaiquedog | 0:b734f558b698 | 72 | EN3 = 0; |
kaiquedog | 0:b734f558b698 | 73 | wait(Tim); |
kaiquedog | 0:b734f558b698 | 74 | |
kaiquedog | 0:b734f558b698 | 75 | |
kaiquedog | 0:b734f558b698 | 76 | //Step 3 |
kaiquedog | 0:b734f558b698 | 77 | IN1.write(0); |
kaiquedog | 0:b734f558b698 | 78 | IN2.write(0); |
kaiquedog | 0:b734f558b698 | 79 | IN3.write(0.9); |
kaiquedog | 0:b734f558b698 | 80 | EN1 = 2; |
kaiquedog | 0:b734f558b698 | 81 | EN2 = 0; |
kaiquedog | 0:b734f558b698 | 82 | EN3 = 1; |
kaiquedog | 0:b734f558b698 | 83 | wait(Tim); |
kaiquedog | 0:b734f558b698 | 84 | |
kaiquedog | 0:b734f558b698 | 85 | |
kaiquedog | 0:b734f558b698 | 86 | //Step 4 |
kaiquedog | 0:b734f558b698 | 87 | IN1.write(0); |
kaiquedog | 0:b734f558b698 | 88 | IN2.write(0); |
kaiquedog | 0:b734f558b698 | 89 | IN3.write(0.9); |
kaiquedog | 0:b734f558b698 | 90 | EN1 = 0; |
kaiquedog | 0:b734f558b698 | 91 | EN2 = 2; |
kaiquedog | 0:b734f558b698 | 92 | EN3 = 1; |
kaiquedog | 0:b734f558b698 | 93 | wait(Tim); |
kaiquedog | 0:b734f558b698 | 94 | |
kaiquedog | 0:b734f558b698 | 95 | |
kaiquedog | 0:b734f558b698 | 96 | //Step 5 |
kaiquedog | 0:b734f558b698 | 97 | IN1.write(0.9); |
kaiquedog | 0:b734f558b698 | 98 | IN2.write(0); |
kaiquedog | 0:b734f558b698 | 99 | IN3.write(0); |
kaiquedog | 0:b734f558b698 | 100 | EN1 = 1; |
kaiquedog | 0:b734f558b698 | 101 | EN2 = 2; |
kaiquedog | 0:b734f558b698 | 102 | EN3 = 0; |
kaiquedog | 0:b734f558b698 | 103 | wait(Tim); |
kaiquedog | 0:b734f558b698 | 104 | |
kaiquedog | 0:b734f558b698 | 105 | |
kaiquedog | 0:b734f558b698 | 106 | //Step 6 |
kaiquedog | 0:b734f558b698 | 107 | IN1.write(0.9); |
kaiquedog | 0:b734f558b698 | 108 | IN2.write(0); |
kaiquedog | 0:b734f558b698 | 109 | IN3.write(0); |
kaiquedog | 0:b734f558b698 | 110 | EN1 = 1; |
kaiquedog | 0:b734f558b698 | 111 | EN2 = 0; |
kaiquedog | 0:b734f558b698 | 112 | EN3 = 2; |
kaiquedog | 0:b734f558b698 | 113 | wait(Tim); |
kaiquedog | 0:b734f558b698 | 114 | } |
kaiquedog | 0:b734f558b698 | 115 | } |
kaiquedog | 0:b734f558b698 | 116 | } |