L6230 controlando motor brushless sem lib ou arquivo separados, tudo dentro da main. Utiliza X-NUCLEO IHM07M1

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
Marcelocostanzo
Date:
Tue Nov 17 14:37:35 2020 +0000
Parent:
1:5ec1c8e559fb
Commit message:
Versao mais simples

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Mon Nov 16 14:25:42 2020 +0000
+++ b/main.cpp	Tue Nov 17 14:37:35 2020 +0000
@@ -1,10 +1,5 @@
 #include "mbed.h"
 
-#define CW      0
-#define CCW     1
-#define BRAKED  2
-#define HIGH_Z  3
-
 //---Pinos de enable dos braços----
 DigitalOut enable_ch1(PC_10);
 DigitalOut enable_ch2(PC_11);
@@ -55,48 +50,39 @@
 
     pc.printf("Started\r"); //Iniciando
         
-    delay_time = 3000;//tempo em microssegundos para dar a velocidade do motor
+    delay_time = 2000;//tempo em microssegundos para dar a velocidade do motor
             
     while(1) 
-    {     
-        /* As saídas digitais são inicialmente zero */
-        in_ch1 = 0;
-        in_ch2 = 0;
-        in_ch3 = 0;
-
-        /* Habilita as saídas inicialmente*/
-        enable_ch1 = 1;
-        enable_ch2 = 1;
-        enable_ch3 = 1;
-
-        /* Vetor de dados mágico para acionar o motor brushless */
-        // HIGH:1, LOW:0, HIGH-Z:2
-        char data_array[]= {1,2,0, 1,0,2, 2,0,1, 0,2,1, 0,1,2, 2,1,0};
-
-        if(dir==1)
-            prevStep = prevStep + 1;    //Incrementa prevStep para a próxima etapa || AVISO: * prevStep ++ não funcionou
-        else
-            prevStep = prevStep - 1;
-
-        int i = prevStep;
-
-        if (i<0) 
-        { // Operação para o número negativo
-            i*=(-1);
-            i%=6;
-            i=6-i;
-            i%=6;  // if i=6, it should be zero.
-        } 
-        else
-            i%=6;   // As etapas serão repetidas no modo 6
-
-        in_ch1 = data_array[3*i];
-        (data_array[3*i]   == 2)?(enable_ch1 = 0):(enable_ch1 = 1);
-        in_ch2 = data_array[3*i+1];
-        (data_array[3*i+1] == 2)?(enable_ch2 = 0):(enable_ch2 = 1);
-        in_ch3 = data_array[3*i+2];
-        (data_array[3*i+2] == 2)?(enable_ch3 = 0):(enable_ch3 = 1);
+    {   
+        //primeiro passo      
+        in_ch1 = 1; in_ch2 = 0; in_ch3 = 1;
+        enable_ch1 = 1; enable_ch2 = 2; enable_ch3 = 0;
+        wait_us(delay_time);
+        
+        //segundo passo 
+        in_ch1 = 1; in_ch2 = 1; in_ch3 = 0;
+        enable_ch1 = 1; enable_ch2 = 0; enable_ch3 = 2;
+        wait_us(delay_time);
+        
+        //terceiro passo 
+        in_ch1 = 0; in_ch2 = 1; in_ch3 = 1;
+        enable_ch1 = 2; enable_ch2 = 0; enable_ch3 = 1;
         wait_us(delay_time);
+        
+        //quarto passo 
+        in_ch1 = 1; in_ch2 = 0; in_ch3 = 1;
+        enable_ch1 = 0; enable_ch2 = 2; enable_ch3 = 1;
+        wait_us(delay_time);
+        
+        //quinto passo 
+        in_ch1 = 1; in_ch2 = 1; in_ch3 = 0;
+        enable_ch1 = 0; enable_ch2 = 1; enable_ch3 = 2;
+        wait_us(delay_time);
+        
+        //sexto passo 
+        in_ch1 = 0; in_ch2 = 1; in_ch3 = 1;
+        enable_ch1 = 2; enable_ch2 = 1; enable_ch3 = 0;
+        wait_us(delay_time);        
     }
 }