stm32f103zet6微控制器
步进电机的转速由由输出给驱动器的pwm频率而定,使用mcu的一个定时器(tim2_ch1)输出占空比 d=50% 的脉冲。
定时器的时钟频率为72mhz,分频后8mhz,于是输出pwm的最低频率大约为120hz。
假定需要在时间 t 内运行 θ 角度,根据驱动器的细分数,齿轮传动比等可以算出所需要的脉冲数 pls_cnt。
1.双曲线加速
刚开始的想法是,前半程加速,后半程减速,加减速时间间隔为 delta_t,由另一定时器的中断周期而定,在定时器isr里面对频率进行调整,便能让电机平滑地起停。
但是我并不能直接改变输出pwm的频率 freq,能直接改变的只是定时器的自动重载值 period,freq 和 period 之间显然是双曲线的关系:
其中 tim_freq = 8mhz,
让 period 线性化,结果导致 freq 呈双曲线变化,加速过程很慢,减速很快,实验现象也是如此,而且这个过程的时间也不好控制。
2.线性加速曲线
要让 freq 线性化,首先确定 freq 的范围,freq_min 我设定为300hz,freq_max 因该就是这段行程平均速度的2倍了:
在 [freq_min, freq_max] 内将 freq 线性化:
freq = linspace(freq_min, freq_max, t/delta_t);
然后算出 period:
period = tim_freq 。/ freq;
减速过程的可以将数组其反过来:
1period = [period, fliplr(period)];
可以得到如下的频率曲线:
实验中电机的加减速还算比较平滑,精度也还可以。
3.s形加速曲线
既然可以用线性加速曲线,那应该可以用更为平滑的加速曲线,在印象中s形曲线是非常平滑的,会得到速度连续,加速度也连续的调速过程。于是用s形曲线再试试。
sigmoid函数的原型我想是这样子的:
绘出其在[-5, 5]上的图形:
这里选择[-5, 5]这段曲线比较合适,加速过程可能有点长,如有要求可以选择[-4, 4]。
然后将其变成我想要的样子:
起始点增益,也就是最低频率:freq_min;
最大增益,也就是最高频率:freq_max;
横轴范围:0~t;
对横坐标做平移变换,然后伸缩变换,再对纵坐标做伸缩变换便得到下式:
由于在0~t时间段内,指数项不可能为∞,所以起始频率要略高于 freq_min,指数项也不可能为0,所以最高频率要略低于 freq_max。
变换后得到的图像可能是这样:
其中 t:0~4s,freq_min = 300hz, freq_max = 1khz。
上式中 freq_min 可以自己先给定,这样还有一个参数 freq_max,需要确定。
在 0~t 时间段内运动 θ 角度,那么:
这样s形曲线便确定了,然后再算出 period 数组即可。减速过程同样的可以将数组反过来,例如:
实验中s形曲线自然是最为平滑的,精度不算太好,如有可能的话,可用编码器进行修正。
2019年迄今全球最大上市:阿里股价HK首发跃升超7%
基于RFID技术的重要资产管理系统
如何选择自动驾驶的毫米波雷达系统的设计材料?
AMD新一代主流芯片组B550主板的配置信息介绍
三大运营商开启5G套餐预约,距离5G正式商用已为时不远
关于步进电机三种加速曲线分析
发光二极管正负极接反会怎样 发光二极管正负极怎么区分
谷歌艺术和文化实验室推出了一个名为“诗歌肖像”的应用
割了韭菜!美团外卖的回应“杀熟会员”称定位偏差导致
江西红板提高生产工艺与设施的智能化 加大资金投入
Swann智能安全摄像头又现漏洞,这次是“直播门”
智能制造为中国制造业高质量发展提供历史性的机遇
瑞芯微RK3566平板产品已通过Android 11 GMS认证
消息称三星西安半导体工厂开启工艺升级,正采购新设备备产 236 层 NAND
贴片功率电感和共模电感线圈区别
欧拉(openEuler )Summit 2021直播地址
空气监测仪语音芯片方案,唯创知音WT2003H-24SS
高通CEO:明年推出TD芯片 看好中国与智能本市场
纬创并未淘汰出局,或为苹果代工6.1英寸LCD版iPhone
Stryker拟收购波士顿科学,1100亿医疗设备巨头诞生