[Making of balance car] 01-----Deja que el motor gire

El motor de control principal Stm32f103C8T6
impulsa el
motor DRV8833: es un motor de codificación de carro de equilibrio ordinario

1. El uso de DRV8833

DRV8833 tiene dos canales, AIN y BIN se utilizan como terminales de entrada de control de dos motores.
H: controlador de puente lógico :

Xin1 Xin2 Xo1 Xo2 Características
0 0 DE DE Ejecutar decaimiento lento/rápido
0 1 L H contrarrestar
1 0 H L Adelante
1 1 L L Freno/caída lenta

Velocidad del motor de control PWM:

Xin1 Xin2 Características
PWM 0 Adelante PWM, decaimiento rápido
1 PWM Adelante PWM, decaimiento lento
0 PWM PWM invertido, decaimiento rápido
PWM 1 PWM invertido, caída lenta

Cabe señalar que la frecuencia de regulación de velocidad del motor general es: 5-20 MHz, y generalmente usamos dos salidas PWM cuando controlamos el motor.

2. Programación

Propósito: Para realizar la rotación hacia adelante del motor, de acuerdo con el diagrama de accionamiento del motor anterior: AIN1 emite PWM y AIN2 emite 0, para que el motor pueda girar hacia adelante y decaer rápidamente.

  1. enciende el reloj
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3|RCC_APB1Periph_TIM2, ENABLE);	
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);  
  1. Configurar GPIO
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; 
	GPIO_Init(GPIOA, &GPIO_InitStructure);
  1. configurar temporizador
TIM_TimeBaseStructure.TIM_Period = arr; 
	TIM_TimeBaseStructure.TIM_Prescaler =psc; 
	TIM_TimeBaseStructure.TIM_ClockDivision = 0; 
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); 
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  1. Configure el canal del temporizador para generar PWM
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; 
	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 
	TIM_OCInitStructure.TIM_Pulse = 0; 
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; 
	TIM_OC2Init(TIM3, &TIM_OCInitStructure); 
	TIM_OC4Init(TIM2, &TIM_OCInitStructure); 
  1. habilitación de salida
 TIM_CtrlPWMOutputs(TIM3,ENABLE);		
  TIM_CtrlPWMOutputs(TIM2,ENABLE);		
	
	TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); 
	TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);  	 
	
	TIM_ARRPreloadConfig(TIM3, ENABLE); 
	TIM_ARRPreloadConfig(TIM2, ENABLE); 
	TIM_Cmd(TIM3, ENABLE); 
	TIM_Cmd(TIM2, ENABLE); 
  1. Inicialice el temporizador en el programa principal y configure la salida PWM
	TIM1_PWM_Init(8999,0);
 		TIM_SetCompare4(TIM2,0);	 
		TIM_SetCompare2(TIM3,5999);	//AIN1

La forma de onda de salida PWM de la configuración anterior es la siguiente:
inserte la descripción de la imagen aquí
Grabe el programa en la placa y podrá ver que la rueda del motor conectado comienza a girar.
Por favor agregue una descripción de la imagen

Supongo que te gusta

Origin blog.csdn.net/amimax/article/details/127408015
Recomendado
Clasificación