Centro de Controle de Motores
Embed:
(wiki syntax)
Show/hide line numbers
passo.cpp
00001 /******************************************* 00002 Motor de Passo 00003 *******************************************/ 00004 00005 #include "mbed.h" 00006 00007 Serial pc(USBTX, USBRX); 00008 00009 // variáveis 00010 int estado = 0; 00011 float tempo; 00012 char ligado = 'c'; 00013 char desligado = 'd'; 00014 char hor = 'h'; 00015 char antihor = 't'; 00016 00017 // motor de passo 00018 DigitalOut EN_A(D2); 00019 DigitalOut IN1_A(D5); 00020 DigitalOut IN2_A(D4); 00021 DigitalOut EN_B(A4); 00022 DigitalOut IN1_B(A0); 00023 DigitalOut IN2_B(A1); 00024 00025 // entradas 00026 InterruptIn ena_all(D11); 00027 InterruptIn enable(PB_6); 00028 DigitalIn dir(D9); 00029 AnalogIn POT(A5); 00030 00031 // debouncing 00032 Timer debounce; 00033 00034 00035 void muda_en(){ 00036 if (debounce.read_ms()>200){ 00037 estado=!estado; 00038 } 00039 debounce.reset(); 00040 } 00041 00042 00043 void muda_all(){ 00044 //pc.printf("%c", desligar); 00045 estado = 0; 00046 debounce.reset(); 00047 } 00048 00049 int main(){ 00050 enable.rise(&muda_en); 00051 ena_all.rise(&muda_all); 00052 debounce.start(); 00053 pc.baud(115200); 00054 00055 // configurações iniciais 00056 EN_A = 0; 00057 EN_B = 0; 00058 IN1_A = 0; 00059 IN2_A = 0; 00060 IN1_A = 0; 00061 IN1_B = 0; 00062 00063 while(1) { 00064 00065 if (estado == 1){ 00066 tempo = 0.002+(0.050*POT.read()); 00067 //pc.printf("%c", ligado); 00068 00069 //SENTIDO HORÁRIO 00070 if (dir.read() == 0){ 00071 //pc.printf("%c", hor); 00072 00073 // passo 0 00074 EN_A = 1; 00075 IN1_A = 1; 00076 IN2_A = 0; 00077 EN_B = 0; 00078 IN1_B = 1; 00079 IN2_B = 0; 00080 wait(tempo); 00081 00082 // passo 1 00083 EN_A = 0; 00084 IN1_A = 0; 00085 IN2_A = 1; 00086 EN_B = 1; 00087 IN1_B = 1; 00088 IN2_B = 0; 00089 wait(tempo); 00090 00091 // passo 2 00092 EN_A = 1; 00093 IN1_A = 0; 00094 IN2_A = 1; 00095 EN_B = 0; 00096 IN1_B = 0; 00097 IN2_B = 1; 00098 wait(tempo); 00099 00100 // passo 3 00101 EN_A = 0; 00102 IN1_A = 1; 00103 IN2_A = 0; 00104 EN_B = 1; 00105 IN1_B = 0; 00106 IN2_B = 1; 00107 wait(tempo); 00108 } 00109 00110 //SENTIDO ANTI-HORÁRIO 00111 else if (dir.read() == 1){ 00112 //pc.printf("%c", antihor); 00113 00114 // passo 0 00115 EN_A = 1; 00116 IN1_A = 1; 00117 IN2_A = 0; 00118 EN_B = 0; 00119 IN1_B = 1; 00120 IN2_B = 0; 00121 wait(tempo); 00122 00123 // passo 1 ("passo 3") 00124 EN_A = 0; 00125 IN1_A = 1; 00126 IN2_A = 0; 00127 EN_B = 1; 00128 IN1_B = 0; 00129 IN2_B = 1; 00130 wait(tempo); 00131 00132 // passo 2 00133 EN_A = 1; 00134 IN1_A = 0; 00135 IN2_A = 1; 00136 EN_B = 0; 00137 IN1_B = 0; 00138 IN2_B = 1; 00139 wait(tempo); 00140 00141 // passo 3 ("passo 1") 00142 EN_A = 0; 00143 IN1_A = 0; 00144 IN2_A = 1; 00145 EN_B = 1; 00146 IN1_B = 1; 00147 IN2_B = 0; 00148 wait(tempo); 00149 } 00150 } 00151 00152 else{ 00153 //pc.printf("%c", desligado); 00154 00155 EN_A = 0; 00156 EN_B = 0; 00157 IN1_A = 0; 00158 IN2_A = 0; 00159 IN1_A = 0; 00160 IN1_B = 0; 00161 } 00162 } 00163 }
Generated on Thu Dec 1 2022 19:42:33 by
1.7.2