总体介绍
对步进电机的控制通常使用pwm控制,改变频率来控制速度,然后统计脉冲个数知道电机当前位置,可以很容易实现加减速规划,或者不考虑加减速平稳性,直接以小于最大启动速度的速度启动,发完给定个脉冲后直接关闭定时器。以上控制方式都没实现对步进电机的位置的自由控制,即让步进电机跟随任意位置曲线运动,此项目是为了实现步进电机的自由控制,能准确定位。可以使用编码器或者电位器作为控制器,用手拧编码器,步进电机可跟随一起运动,也可以按照函数曲线运动。
步进电机驱动
步进电机驱动器有很多种,如a4988、tmc2208等,常用的驱动方式是脉冲加方向,有的高端点的使用can、串口等方式控制。本篇介绍如何使用脉冲加方向方式对步进电机进行位置的自由控制!
控制原理
使用通信协议方式控制步进电机,可周期性同步位置到驱动器,实现位置的自由控制,脉冲加方向方式也可抽象为使用通信协议在与驱动器通信,只不过是使用增量方式在通信,通过对脉冲的累计得到目标位置。
程序使用两个定时器,一个中断频率为1k,用于周期采样目标位置,并计算当前速度,当前速度值用于修改另一个定时器中断频率,所以在第二个定时器中判断目标位置与当前位置的偏差,然后翻转电平,实现对脉冲发送,同时判断方向,对应控制方向控制io电平。
在其他函数中可给定任意形式的位置变化,根据采样定理,应该位置变化频率不大于500hz的都能被1k的定时器中断正常采样,由于发送脉冲需要以一定的频率发送,所以第二个定时器频率根据目标位置变化率而改变,可以让速度平滑,也可以减小cpu带宽占用。以此方式可实现对步进电机的自由控制,可使用编码器或函数随意控制电机!
代码分析
此程序可实现对多个步进电机的控制,以下是步进电机类
/*步进电机控制类*/
typedef struct
{
volatile unsigned long *gpio_dir; //电机方向控制gpio
volatile unsigned long *gpio_pluse; //电机脉冲gpio
int pluse_count;
int goal_position;
int last_position;
int cur_position;
int pos_bias;
int speed;
uint8_t status;
}stepmotor;
步进电机控制核心函数,由一个简易状态机组成,此函数放上面提到的第二个中断函数执行,先得到当前偏差,状态转换,再发脉冲
void stepmotorctrl(stepmotor *motor)
{
switch(motor->status)
{
case 0:
if(motor->goal_position != motor->cur_position) //扫描
{
motor->pos_bias = motor->goal_position - motor->cur_position; //得到偏差
motor->status = 1;
}
break;
case 1:
if(motor->pos_bias > 0)
{
motor->pluse_count ++;
*(motor->gpio_dir) = 1; //正方向
*(motor->gpio_pluse) = !*(motor->gpio_pluse);
if(motor->pluse_count == (motor->pos_bias * 2))
{
motor->cur_position += motor->pos_bias;
motor->pluse_count = 0;
motor->status = 0;
}
}
else
{
motor->pluse_count ++;
*(motor->gpio_dir) = 0; //负方向
*(motor->gpio_pluse) = !*(motor->gpio_pluse);
if(motor->pluse_count == ((-motor->pos_bias) * 2))
{
motor->cur_position += motor->pos_bias;
motor->pluse_count = 0;
motor->status = 0;
}
}
break;
default:
break;
}
}
存储芯片行业撑过寒冬 行业复苏或将加快来临
A股区块链上市公司概念股盘点整体表现明显低于上市公司
华为全光城市目标网架构,加速构建5G商业正循环
如何鉴别笔记本电脑电池品质优劣?
长江存储32层三维NAND闪存芯片量产提上日程 光谷是希望之地
如何使用脉冲加方向方式对步进电机进行位置的自由控制
恩智浦双目视觉ADAS解决方案
押注向量数据库,为时过早?
超小超薄封装COBP光反射器NJL5901R-2/NJL59
烟道流量计用的高温超声波换能器接收信号是什么样?
浅谈第三代半导体的氮化镓性能优势
参考时钟对SERDES性能的影响
票据打印机的打印宽度
什么是 “星闪”?星闪技术架构和特点分析
高压漏电起痕试验机的应用范围以及优势介绍
韩国持续领跑全球5G网络建设
quartus是什么_quartus有什么用
华为发布新一代互联网基础设施解决方案,助力ISP行业绿色数字化
高通历年芯片发展看智能手机领域变迁
稳压器功率的选择 稳压器的选配