宁波网站建设服务,免费快递网站源码,北京网站开发公司大全,成都个人团队网站开发目的#xff1a;学习使用STM32电机驱动器步进电机#xff0c;进行电机运动精确控制。
测试环境#xff1a;
MCU主控芯片STM32F103RCT6 #xff1b;A4988步进电机驱动器模块#xff1b; 微型2相4线步…目的学习使用STM32电机驱动器步进电机进行电机运动精确控制。
测试环境
MCU主控芯片STM32F103RCT6 A4988步进电机驱动器模块 微型2相4线步进电机10mm丝杆滑台金属丝杆安装有滑块。
10mm二相四线微型步进电机电机的输入接线是4个引脚需要自己焊线相电阻53欧步进角度估计18度丝杆滑块行程32mm丝杆转一圈铜滑块大约移动行程0.4mm。步进电机重约7.3g。 主要模块之间的连接如下
一. 电机和A4999之间的连接 导线 电机 驱动模块 黄 A 1A 黑 B 2A 绿 A- 1B 红 B- 2B
二 . MCU和A4999之间的连接 PD2 MCU -- MOTOR1_EN PB3 MCU -- MOTOR1_MS1 PB4 MCU -- MOTOR1_MS2 PB5 MCU -- MOTOR1_MS3 PB0 MCU -- MOTOR1_STEP PB6 MCU -- MOTOR1_DIR
软件设计的关键设置 使用TIM1作为脉冲步进输出 关键代码 在脉冲计数的回调函数对数据脉冲数量进行控制。
uint32_t gMotor1stPluseMax0;
uint32_t gMotor2ndPluseMax0;
uint32_t gMotor1stPwmCnt0;
uint32_t gMotor2ndPwmCnt0;
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{if(htim-Instance TIM1)//MOTOR1{if((HVAPI_OUTPUT_REG 0x0002)0) MOTOR1_POS1;else MOTOR1_POS-1;gMotor1stPwmCnt1;if(gMotor1stPwmCntgMotor1stPluseMax){HAL_TIMEx_PWMN_Stop_IT(htim1, TIM_CHANNEL_2);//Motor1st 停止PWMgMotor1stPwmCnt0;gMotor1stPluseMax0;gMotor1stPluseCnt0;}}if(htim-Instance TIM3)//MOTOR2{if((HVAPI_OUTPUT_REG 0x0200)0)MOTOR2_POS1;elseMOTOR2_POS-1;gMotor2ndPwmCnt1;if(gMotor2ndPwmCntgMotor2ndPluseMax){ HAL_TIM_PWM_Stop_IT(htim3, TIM_CHANNEL_2);//Motor2nd 停止PWMgMotor2ndPluseMax0;gMotor2ndPwmCnt0;gMotor2ndPluseCnt0;}}
}
测试结果 在步进电机不堵转的情况下可以实现移动距离的精确控制。
TIPs 1. 主程序设置电机的启动、停机、运动方向、运动的步数。 2. 在回调函数中计算步数当步数达到的时候停止脉冲输出。 3. 安全考虑控制脉冲的最大输出数量持续脉冲输出的时间。这样可以保护电机和滑台。