STM32控制步进电机脉冲定位

概述

在成功启动步进电机之后,可通过运行数个脉冲后停止定时器做到控制步进电机转动特定角度,实现脉冲定位。

前言

STM32控制启动步进电机

原理

步进电机是将电脉冲转化为角位移的执行机构,也就是当步进驱动器接收到一个脉冲信号后,就会驱动电机按设定方向转动一个固定的角度。所以可以通过精准控制输出脉冲的个数来控制角位移量,而脉冲频率用来控制转动角速度(详见前言)
定时器产生脉冲:利用STM32c8t6定时器输出PWM脉冲,定时器计数溢出之后则代表产生了一个脉冲,并请求一次中断,可在中断函数中记录已输出脉冲个数,就知道当前电机转动了多少角度。
细分: 常见的步进电机固有步距角为1.5°、1.8°等,步距角就是一个脉冲对应转动的角度,若是需要更小的步距角,就要用到步进驱动器的细分功能:

细分 步距角 转一圈需要脉冲数
0 1.8° 200
16 0.1125° 3200

如图,驱动器设置16细分后,固有步距角就被分成了16分,此时一个脉冲就对应转动0.1125°,定位角度就更加精确。

实现结果

这里用串口输入目标角度的方式控制电机转动,结果如下:

可见,除了9°刚好是0.1125°的80倍才能精确地转动,其他度数都会存在一点误差。

PS:在此过程中,在初始化定时器之后,并没有启动定时器,但程序自动进入了一次中断,解决的办法就是在初始化函数中的修改预分频器psc前加入TIM4->CR1 |= TIM_CR1_URS;
详情见:探究STM32F103定时器初始化或程序运行中重配后会立即进入一次中断的原因和解决办法

代码

编写流程:
TIM4CH1脉冲通道配置(前言) -> DIR方向IO口配置(前言)->编写定时中断函数->main函数

static int target_angle = 0;        //目标角度
static int pulse = 0;               //脉冲个数
static double actual_angle = 
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值