Centro de Controle de Motores

Dependencies:   TextLCD mbed

Committer:
isabellemm
Date:
Thu Dec 01 19:39:01 2022 +0000
Revision:
4:3bc68a7b299d
SIMPLES

Who changed what in which revision?

UserRevisionLine numberNew contents of line
isabellemm 4:3bc68a7b299d 1 /*******************************************
isabellemm 4:3bc68a7b299d 2 Motor de Passo
isabellemm 4:3bc68a7b299d 3 *******************************************/
isabellemm 4:3bc68a7b299d 4
isabellemm 4:3bc68a7b299d 5 #include "mbed.h"
isabellemm 4:3bc68a7b299d 6
isabellemm 4:3bc68a7b299d 7 Serial pc(USBTX, USBRX);
isabellemm 4:3bc68a7b299d 8
isabellemm 4:3bc68a7b299d 9 // variáveis
isabellemm 4:3bc68a7b299d 10 int estado = 0;
isabellemm 4:3bc68a7b299d 11 float tempo;
isabellemm 4:3bc68a7b299d 12 char ligado = 'c';
isabellemm 4:3bc68a7b299d 13 char desligado = 'd';
isabellemm 4:3bc68a7b299d 14 char hor = 'h';
isabellemm 4:3bc68a7b299d 15 char antihor = 't';
isabellemm 4:3bc68a7b299d 16
isabellemm 4:3bc68a7b299d 17 // motor de passo
isabellemm 4:3bc68a7b299d 18 DigitalOut EN_A(D2);
isabellemm 4:3bc68a7b299d 19 DigitalOut IN1_A(D5);
isabellemm 4:3bc68a7b299d 20 DigitalOut IN2_A(D4);
isabellemm 4:3bc68a7b299d 21 DigitalOut EN_B(A4);
isabellemm 4:3bc68a7b299d 22 DigitalOut IN1_B(A0);
isabellemm 4:3bc68a7b299d 23 DigitalOut IN2_B(A1);
isabellemm 4:3bc68a7b299d 24
isabellemm 4:3bc68a7b299d 25 // entradas
isabellemm 4:3bc68a7b299d 26 InterruptIn ena_all(D11);
isabellemm 4:3bc68a7b299d 27 InterruptIn enable(PB_6);
isabellemm 4:3bc68a7b299d 28 DigitalIn dir(D9);
isabellemm 4:3bc68a7b299d 29 AnalogIn POT(A5);
isabellemm 4:3bc68a7b299d 30
isabellemm 4:3bc68a7b299d 31 // debouncing
isabellemm 4:3bc68a7b299d 32 Timer debounce;
isabellemm 4:3bc68a7b299d 33
isabellemm 4:3bc68a7b299d 34
isabellemm 4:3bc68a7b299d 35 void muda_en(){
isabellemm 4:3bc68a7b299d 36 if (debounce.read_ms()>200){
isabellemm 4:3bc68a7b299d 37 estado=!estado;
isabellemm 4:3bc68a7b299d 38 }
isabellemm 4:3bc68a7b299d 39 debounce.reset();
isabellemm 4:3bc68a7b299d 40 }
isabellemm 4:3bc68a7b299d 41
isabellemm 4:3bc68a7b299d 42
isabellemm 4:3bc68a7b299d 43 void muda_all(){
isabellemm 4:3bc68a7b299d 44 //pc.printf("%c", desligar);
isabellemm 4:3bc68a7b299d 45 estado = 0;
isabellemm 4:3bc68a7b299d 46 debounce.reset();
isabellemm 4:3bc68a7b299d 47 }
isabellemm 4:3bc68a7b299d 48
isabellemm 4:3bc68a7b299d 49 int main(){
isabellemm 4:3bc68a7b299d 50 enable.rise(&muda_en);
isabellemm 4:3bc68a7b299d 51 ena_all.rise(&muda_all);
isabellemm 4:3bc68a7b299d 52 debounce.start();
isabellemm 4:3bc68a7b299d 53 pc.baud(115200);
isabellemm 4:3bc68a7b299d 54
isabellemm 4:3bc68a7b299d 55 // configurações iniciais
isabellemm 4:3bc68a7b299d 56 EN_A = 0;
isabellemm 4:3bc68a7b299d 57 EN_B = 0;
isabellemm 4:3bc68a7b299d 58 IN1_A = 0;
isabellemm 4:3bc68a7b299d 59 IN2_A = 0;
isabellemm 4:3bc68a7b299d 60 IN1_A = 0;
isabellemm 4:3bc68a7b299d 61 IN1_B = 0;
isabellemm 4:3bc68a7b299d 62
isabellemm 4:3bc68a7b299d 63 while(1) {
isabellemm 4:3bc68a7b299d 64
isabellemm 4:3bc68a7b299d 65 if (estado == 1){
isabellemm 4:3bc68a7b299d 66 tempo = 0.002+(0.050*POT.read());
isabellemm 4:3bc68a7b299d 67 //pc.printf("%c", ligado);
isabellemm 4:3bc68a7b299d 68
isabellemm 4:3bc68a7b299d 69 //SENTIDO HORÁRIO
isabellemm 4:3bc68a7b299d 70 if (dir.read() == 0){
isabellemm 4:3bc68a7b299d 71 //pc.printf("%c", hor);
isabellemm 4:3bc68a7b299d 72
isabellemm 4:3bc68a7b299d 73 // passo 0
isabellemm 4:3bc68a7b299d 74 EN_A = 1;
isabellemm 4:3bc68a7b299d 75 IN1_A = 1;
isabellemm 4:3bc68a7b299d 76 IN2_A = 0;
isabellemm 4:3bc68a7b299d 77 EN_B = 0;
isabellemm 4:3bc68a7b299d 78 IN1_B = 1;
isabellemm 4:3bc68a7b299d 79 IN2_B = 0;
isabellemm 4:3bc68a7b299d 80 wait(tempo);
isabellemm 4:3bc68a7b299d 81
isabellemm 4:3bc68a7b299d 82 // passo 1
isabellemm 4:3bc68a7b299d 83 EN_A = 0;
isabellemm 4:3bc68a7b299d 84 IN1_A = 0;
isabellemm 4:3bc68a7b299d 85 IN2_A = 1;
isabellemm 4:3bc68a7b299d 86 EN_B = 1;
isabellemm 4:3bc68a7b299d 87 IN1_B = 1;
isabellemm 4:3bc68a7b299d 88 IN2_B = 0;
isabellemm 4:3bc68a7b299d 89 wait(tempo);
isabellemm 4:3bc68a7b299d 90
isabellemm 4:3bc68a7b299d 91 // passo 2
isabellemm 4:3bc68a7b299d 92 EN_A = 1;
isabellemm 4:3bc68a7b299d 93 IN1_A = 0;
isabellemm 4:3bc68a7b299d 94 IN2_A = 1;
isabellemm 4:3bc68a7b299d 95 EN_B = 0;
isabellemm 4:3bc68a7b299d 96 IN1_B = 0;
isabellemm 4:3bc68a7b299d 97 IN2_B = 1;
isabellemm 4:3bc68a7b299d 98 wait(tempo);
isabellemm 4:3bc68a7b299d 99
isabellemm 4:3bc68a7b299d 100 // passo 3
isabellemm 4:3bc68a7b299d 101 EN_A = 0;
isabellemm 4:3bc68a7b299d 102 IN1_A = 1;
isabellemm 4:3bc68a7b299d 103 IN2_A = 0;
isabellemm 4:3bc68a7b299d 104 EN_B = 1;
isabellemm 4:3bc68a7b299d 105 IN1_B = 0;
isabellemm 4:3bc68a7b299d 106 IN2_B = 1;
isabellemm 4:3bc68a7b299d 107 wait(tempo);
isabellemm 4:3bc68a7b299d 108 }
isabellemm 4:3bc68a7b299d 109
isabellemm 4:3bc68a7b299d 110 //SENTIDO ANTI-HORÁRIO
isabellemm 4:3bc68a7b299d 111 else if (dir.read() == 1){
isabellemm 4:3bc68a7b299d 112 //pc.printf("%c", antihor);
isabellemm 4:3bc68a7b299d 113
isabellemm 4:3bc68a7b299d 114 // passo 0
isabellemm 4:3bc68a7b299d 115 EN_A = 1;
isabellemm 4:3bc68a7b299d 116 IN1_A = 1;
isabellemm 4:3bc68a7b299d 117 IN2_A = 0;
isabellemm 4:3bc68a7b299d 118 EN_B = 0;
isabellemm 4:3bc68a7b299d 119 IN1_B = 1;
isabellemm 4:3bc68a7b299d 120 IN2_B = 0;
isabellemm 4:3bc68a7b299d 121 wait(tempo);
isabellemm 4:3bc68a7b299d 122
isabellemm 4:3bc68a7b299d 123 // passo 1 ("passo 3")
isabellemm 4:3bc68a7b299d 124 EN_A = 0;
isabellemm 4:3bc68a7b299d 125 IN1_A = 1;
isabellemm 4:3bc68a7b299d 126 IN2_A = 0;
isabellemm 4:3bc68a7b299d 127 EN_B = 1;
isabellemm 4:3bc68a7b299d 128 IN1_B = 0;
isabellemm 4:3bc68a7b299d 129 IN2_B = 1;
isabellemm 4:3bc68a7b299d 130 wait(tempo);
isabellemm 4:3bc68a7b299d 131
isabellemm 4:3bc68a7b299d 132 // passo 2
isabellemm 4:3bc68a7b299d 133 EN_A = 1;
isabellemm 4:3bc68a7b299d 134 IN1_A = 0;
isabellemm 4:3bc68a7b299d 135 IN2_A = 1;
isabellemm 4:3bc68a7b299d 136 EN_B = 0;
isabellemm 4:3bc68a7b299d 137 IN1_B = 0;
isabellemm 4:3bc68a7b299d 138 IN2_B = 1;
isabellemm 4:3bc68a7b299d 139 wait(tempo);
isabellemm 4:3bc68a7b299d 140
isabellemm 4:3bc68a7b299d 141 // passo 3 ("passo 1")
isabellemm 4:3bc68a7b299d 142 EN_A = 0;
isabellemm 4:3bc68a7b299d 143 IN1_A = 0;
isabellemm 4:3bc68a7b299d 144 IN2_A = 1;
isabellemm 4:3bc68a7b299d 145 EN_B = 1;
isabellemm 4:3bc68a7b299d 146 IN1_B = 1;
isabellemm 4:3bc68a7b299d 147 IN2_B = 0;
isabellemm 4:3bc68a7b299d 148 wait(tempo);
isabellemm 4:3bc68a7b299d 149 }
isabellemm 4:3bc68a7b299d 150 }
isabellemm 4:3bc68a7b299d 151
isabellemm 4:3bc68a7b299d 152 else{
isabellemm 4:3bc68a7b299d 153 //pc.printf("%c", desligado);
isabellemm 4:3bc68a7b299d 154
isabellemm 4:3bc68a7b299d 155 EN_A = 0;
isabellemm 4:3bc68a7b299d 156 EN_B = 0;
isabellemm 4:3bc68a7b299d 157 IN1_A = 0;
isabellemm 4:3bc68a7b299d 158 IN2_A = 0;
isabellemm 4:3bc68a7b299d 159 IN1_A = 0;
isabellemm 4:3bc68a7b299d 160 IN1_B = 0;
isabellemm 4:3bc68a7b299d 161 }
isabellemm 4:3bc68a7b299d 162 }
isabellemm 4:3bc68a7b299d 163 }