理论
为了实现步进电机的平缓启停以及避免转高转速时不失步停转 。在步进电机启动、停止过程中 , 需要采用加减速的算法对启动过程进行控制 。S曲线是加减速控制最理想的方案 。但是S曲线的公式以及控制过程都比较复杂 。基于单片机实现这一算法需要有深厚的数学以及单片机软件设计能力 。本视频从浅入深介绍S曲线加减数的理论、编程与实践 。
将S曲线离散化 , 在整个加减速过程中 , 以一定的时间间隔更新频率 , 总的更新次数为2*N , i表示为第i次的更新 , 则第i次更新的频率f(i)表示为:
其中fb为开始的频率 , fr是最终运行的频率 , α是曲线的伸缩系数 , 一般可以取3-5之间的常数 。
比如 , 启动加速 , 开始频率为400Hz , 运行频率为5KHz 。
停止减速 , 开始频率为5KHz , 停止频率为400Hz ,
加减速的时间均为1s , 按10ms的时间间隔更新频率 , 总共更新100次 , α取5 。
则可以绘制以下的加减速曲线:
编程 通过以下步骤实现实现步进电机的S曲线的加减速控制:
配置1ms的定时器以及1ms的中断程序在中断程序中对加减速的频率更新次数i进行计数配置产生步进电机驱动信号的PWM模块 , 设置PWM的定时中断以及中断程序在PWM的定时中断程序中 , 计算当前更新次数对应的频率 , 并按出来的频率更新PWM的频率以及占空比在PWM的定时中断程序中 , 计算步进电机运行的步数 , 如果达到设置的步数减去停止的S曲线减速运行所设置的步数 , 则开始减速运行 。同时检测外部输入 , 如果有需要停止运行的输入条件 , 则开始减速运行 。【步进电机控制程序编写 stm32步进电机控制程序系统】整个加减速控制过程的难点在于:
步进电机的计步以及频率更新需要在每一个PWM中断中进行 。步进电机的运行频率最高到40KHz , 这种频率下 , PWM的定时中断周期达到了25us , PWM定时器中断程序运行总时间尽量小 , 根据经验至少小于中断周期的30% , 即7.5us 。一旦超过这个数值 , 导致所有中断程序(包括PWM定时中断程序)漏运行 , 基本主程序无法运行 , 导致整个控制器假死现象 。根据S曲线的公司是一个复杂的非线性的指数浮点数运算 , 需要耗费大量的时间 , 直接调用C语言的库函数计算这一数值可能耗费几十上百毫秒 。为了解决S曲线的运算时间问题 , 基于STM32F103 , 我采用了查表法 , 具体步骤如下:
1. 将α值定义5 ,
的取值范围为-5~5之间 。
2. 在整个加减速过程中 , 表达式
在取值范围-5~5内均匀取1024个数值 , 得到数值表 。
3. 定义一个unsigned short型有1024个元素的const类型的数组 , 用于存储数值表 。
猜你喜欢
- 用户账户控制需要关闭吗 用户账户控制
- cmd如何打开MySQL数据库的控制台?cmd打开Python数据库控制台的方法
- 股东是什么意思,控股股东和实际控制人区别
- 什么花的花语是控制
- 刍议无公害茶叶栽培与加工综合控制技术
- 最常用的编程软件 西门子可编程控制器
- 远程控制软件推荐下载 远程控制软件有哪些
- 微信骰子插件怎么添加 微信控制骰子点数设置
- 报道称苹果可能会放松对默认iPhone应用程序的控制
- 多肉什么情况下需要控制浇水
