L6230 controlando motor brushless sem lib ou arquivo separados, tudo dentro da main. Utiliza X-NUCLEO IHM07M1
Dependencies: mbed
Revision 2:95a4e93a8e0d, committed 2020-11-17
- 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); } }