直流有刷电机基本驱动实验

您所在的位置:网站首页 m425-402电机电路图 直流有刷电机基本驱动实验

直流有刷电机基本驱动实验

2024-07-11 07:30| 来源: 网络整理| 查看: 265

功能实现:按键控制刹车,调速,正反转

基础知识点:TIM , PWM ,电机驱动原理 ,STM32CubeIDE参数设置,常用HAL库函数

TIM :本次采用高级定时器TIM1输出两路互补PWM波驱动电机驱动板PWM:采用TIM1通道CH1/CH1N电机驱动原理:采用H桥电路,AT8236芯片。

H桥电路图如下,由四个MOS管连接电机组成,MOS管接收高电平时导通,低电平时关闭,由此可知Q1与Q4导通时电机启动(设此时为正转),那么Q3与Q2导通时电机为反转,故只需在Q1与Q4端口连接CH1通道,Q3与Q2端口连接CH1N通道,通过选择CH1/CH1N通道使与关闭便可控制电机正反转。同时调节PWM波形占空比即可控制直流有刷电机转速;

配合电机驱动板厂家给出参数控制表,我们便可得出电机驱动的思路(基本驱动):

IN1接口接CH1输出,IN2接口接CH1N输出。正转:CH1通道正常输出PWM波,CH1N通道关闭输 出PWM波并置低电平。反转:CH1N通道正常输出PWM波,CH1通道关闭输出PWM波并置低电平。通过更改CH1与CH1N通道输出的PWM波占空比来调节电机转速。

STM32CubeIDE 定时器参数设置与说明

补充:

TIM定时器溢出事件计算方法(单位S):

T =(ARR + 1)*(PSC + 1)/ F

F :启用APBx总线时钟频率

TIM定时器频率计算方法(单位Hz):

频率 = 1 / T

PWM占空比计算方法:

占空比 = Pulse / ARR * 100 %

分辨率计算方法:

频率 / F(启用总线频率)

常用HAL库函数

定时器启动函数:HAL_TIM_Base_Start();

定时器关闭函数:HAL_TIM_Base_Stop();

CH1通道PWM输出启动函数:HAL_TIM_PWM_Start();

CH1N通道PWM输出启动函数:HAL_TIMEx_PWMN_Start();

CH1通道PWM输出关闭函数:HAL_TIM_PWM_Stop();

CH1N通道PWM输出关闭函数:HAL_TIMEx_PWMN_Stop();

更改占空比函数:__HAL_TIM_SetCompare();

程序源码实例(仅电机驱动函数):

uint8_t direction = 0; //电机状态标志位 1 正转 0 反转 uint8_t STAO = 0; //启停标志位 1 启动 0 停止 uint16_t velocity = 299; //速度变量 void motor_start_stop() //电机停止 { HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_1); //关闭CH1通道输出 HAL_TIMEx_PWMN_Stop(&htim1, TIM_CHANNEL_1); //关闭CH1N通道输出 } void motor_advance() //电机前进 { HAL_TIMEx_PWMN_Stop(&htim1, TIM_CHANNEL_1); //关闭CH1N通道输出 HAL_Delay(50); //延时 HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); //开启CH1通道输出 direction = 1; //电机状态标志位置 1 __HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_1,299); //给定初始速度(占空比10%) velocity = 299; //加速变量 复位 } void motor_Back() //电机后退 { HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_1); //关闭CH1通道输出 HAL_Delay(50); //延时 HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1); //开启CH1N通道输出 direction = 0; //电机状态标志位置 0 __HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_1,299); //给定初始速度(占空比10%) velocity = 299; //加速变量 复位 } void motor_hasten() //电机加速 { if(velocity


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3