赛派号

stm32控制步进电机代码讲解 STM32的电机驱动和细分的调节

一、电机驱动

要想驱动电机,就需要知道电机驱动的几个参数:

1、脉冲---CP

使用PWM波形来当脉冲

switch(Num) case MOTOR_1:     //电机 1 HAL_TIM_Base_Start_IT(&htim5); // 开启定时器中断 HAL_TIM_PWM_Start(&htim5,TIM_CHANNEL_1); break; case MOTOR_2: //电机2 HAL_TIM_Base_Start_IT(&htim3); // 开启定时器中断 HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2); break; case MOTOR_3: //电机3 HAL_TIM_Base_Start_IT(&htim3); // 开启定时器中断 HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_3); break; case MOTOR_4:     //电机4 HAL_TIM_Base_Start_IT(&htim1); // 开启定时器中断 HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); break; case MOTOR_5: //电机5 HAL_TIM_Base_Start_IT(&htim4); // 开启定时器中断 HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_4); break; case MOTOR_6: //电机6 HAL_TIM_Base_Start_IT(&htim8); // 开启定时器中断 HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_3);     break; 2、方向---DIR

DIR=1;//正转

DIR=0;//反转

HAL_GPIO_WritePin(DIR1_GPIO_Port,DIR1_Pin,GPIO_PIN_SET);//正转 HAL_GPIO_WritePin(DIR1_GPIO_Port,DIR1_Pin,GPIO_PIN_RESET);//反转 3、使能---ENA

是否使电机运动

//电机的使能:使能的初始电平是低电平 //电机1 HAL_GPIO_WritePin(ENA1_GPIO_Port,ENA1_Pin,GPIO_PIN_RESET); //电机2 HAL_GPIO_WritePin(ENA2_GPIO_Port,ENA2_Pin,GPIO_PIN_RESET); //电机3 HAL_GPIO_WritePin(ENA3_GPIO_Port,ENA3_Pin,GPIO_PIN_RESET); //电机4 HAL_GPIO_WritePin(ENA4_GPIO_Port,ENA4_Pin,GPIO_PIN_RESET); //电机5   HAL_GPIO_WritePin(ENA5_GPIO_Port,ENA5_Pin,GPIO_PIN_RESET); //电机6     HAL_GPIO_WritePin(ENA6_GPIO_Port,ENA6_Pin,GPIO_PIN_RESET); 4、衰减---DECAY

减少电机运行时产生的噪音

注:开启就行,不需要使用多余的代码来使其运行 5、细分---MODE

控制电机多少个脉冲为一圈

//电机的细分 //电机1 ----8细分 HAL_GPIO_WritePin(MO1_0_GPIO_Port,MO1_0_Pin,GPIO_PIN_RESET); HAL_GPIO_WritePin(MO1_1_GPIO_Port,MO1_1_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(MO1_2_GPIO_Port,MO1_2_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(DIR1_GPIO_Port,DIR1_Pin,GPIO_PIN_SET); //电机2 ----8细分 HAL_GPIO_WritePin(MO2_0_GPIO_Port,MO2_0_Pin,GPIO_PIN_RESET); HAL_GPIO_WritePin(MO2_1_GPIO_Port,MO2_1_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(MO2_2_GPIO_Port,MO2_2_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(DIR2_GPIO_Port,DIR2_Pin,GPIO_PIN_SET); //电机3 ----8细分 HAL_GPIO_WritePin(MO3_0_GPIO_Port,MO3_0_Pin,GPIO_PIN_RESET); HAL_GPIO_WritePin(MO3_1_GPIO_Port,MO3_1_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(MO3_2_GPIO_Port,MO3_2_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(DIR3_GPIO_Port,DIR3_Pin,GPIO_PIN_SET); //电机4 ----8细分 HAL_GPIO_WritePin(MO4_0_GPIO_Port,MO4_0_Pin,GPIO_PIN_RESET); HAL_GPIO_WritePin(MO4_1_GPIO_Port,MO4_1_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(MO4_2_GPIO_Port,MO4_2_Pin,GPIO_PIN_SET); HAL_GPIO_WritePin(DIR4_GPIO_Port,DIR4_Pin,GPIO_PIN_SET); 二、细分的调节 1、如何实现步进电机细分驱动

转载于道客:https://www.doc88.com/p-2324833064862.html

2、使用电机运行芯片进行细分的调节

以 DRV8825 芯片为例

DRV8825细分表

MO0

MO1

MO2

细分类型

0

0

0

1

0

0

1

1/2

0

1

0

1/4

0

1

1

1/8

1

0

0

1/32

1

0

1

1/32

1

1

0

1/32

1

1

1

1/32

注: 1:表示高 0:表示低 细分: 1 --- 1 * 200 个脉冲一圈 1/2 --- 2 * 200 个脉冲一圈 1/4 --- 4 * 200 个脉冲一圈 1/8 --- 8 * 200 个脉冲一圈 1/16 --- 16 * 200 个脉冲一圈 1/32 --- 32 * 200 个脉冲一圈

详细可以参考:

转载于总结所学:https://blog.csdn.net/u011878611/article/details/125574966

转载于小白study:https://blog.csdn.net/android_lover2014/article/details/53462089

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lsinopec@gmail.com举报,一经查实,本站将立刻删除。

上一篇 没有了

下一篇没有了