Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo controlar la velocidad de un motor paso a paso con un microcontrolador

Cómo controlar la velocidad de un motor paso a paso con un microcontrolador

Entonces, haga que el motor gire una vuelta hacia adelante y media vuelta hacia atrás, e intente 1/4 de vuelta hacia adelante y una vuelta hacia atrás.

#include

typedef unsigned char uint8;

typedef unsigned int uint16;

typedef unsigned long uint32;

#define P_DIR 0

#define N_DIR 1

código uint8 FFW[8]={0xF1,0xF3,0xF2,0xF6,0xF4,0xFc,0xF8 ,0xF9};

retraso nulo(uint16 i)

{

while (i--);

}

void motor_turn(uint16 ángulo, uint8 dir)

{

uint32 n=4096;

uint8 i;

n /= 360;.

n *= ángulo; //Número de instrucciones requeridas para el ángulo

if (dir == P_DIR) //Rotación hacia adelante

{

i = 7;

while (n--) //N número de instrucciones de bucle

{

P1 = FFW[ i];

if (i == 0)

i = 7;

else

i--; /p>

demora(200);

}

else if (dir == N_DIR) //reverse

{

i = 0;

mientras (n--)

{

P1 = AFFW[i];

si ( i == 7)

i = 0;

else

i++;

delay(200); /// Velocidad de ajuste

}

}

}

main()

{

mientras (1)

{

giro_motor(360, P_DIR);

giro_motor(180, N_DIR);

giro_motor(90 , P_DIR);

motor_turn(360, N_DIR);

}

}

El enfoque de este programa es el procesamiento de datos motor_turn parte. Debido a que el motor necesita girar una vez, la cantidad de instrucciones requeridas es 8*8*64 = 4096, por lo que la cantidad de instrucciones requeridas para girar un grado es 4096/360. Luego, si quiero girar N grados, la cantidad de instrucciones. que hay que enviar es N*4096/360. Ver si es igual a lo que está escrito en el programa. Por supuesto, si aproximas la división, N acomodará más ángulos sin desbordarse.