stm32步进电机控制教程.pdf

上传人:小** 文档编号:88563289 上传时间:2019-05-02 格式:PDF 页数:8 大小:735.69KB
返回 下载 相关 举报
stm32步进电机控制教程.pdf_第1页
第1页 / 共8页
stm32步进电机控制教程.pdf_第2页
第2页 / 共8页
stm32步进电机控制教程.pdf_第3页
第3页 / 共8页
stm32步进电机控制教程.pdf_第4页
第4页 / 共8页
stm32步进电机控制教程.pdf_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《stm32步进电机控制教程.pdf》由会员分享,可在线阅读,更多相关《stm32步进电机控制教程.pdf(8页珍藏版)》请在金锄头文库上搜索。

1、本教程介绍步进电机驱动和细分的工作原理,以及 stm32103 为主控芯片制作的一套自 平衡的两轮车系统,附带原理图 pcb 图和源代码,有兴趣的同学一起来吧.本系统还有 一些小问题,不当之处希望得到大家的指正. 一.混合式步进电机的结构和驱动原理 电机原理这部分不想讲的太复杂了,拆开一台电机看看就明白了。 电机的转子是一个永磁体, 它的上面有若干个磁极 SN 组成,这些磁极固定的 摆放成一定角度。电机的定子是几个串联的线圈构成的磁体。 出线一般是四条线标 记为 A+,A-,B+,B-。A 相与 B 相是不通的,用万用表很容易区分出来,至于各相的 +-出线实际是不用考虑的,任意一相正负对调电机

2、将反转。另外一种出线是六条线的 只是在 A 相和 B 相的中间点做两条引出线别的没什么差别,六出线的电机通过中间出 线到 A+或 A-的电流来模拟正向或负向的电流,可以在没有负相电流控制的电路中实 现电机驱动,从而简化驱动电路,但是这种做法任意时刻只有半相有电流,对电机的 力矩是有损失的。步进电机的转动也是电磁极与永磁极作用力的结果,只不过电磁极 的极性是由驱动电路控制实现的。 我们做这样的一个实验就可以让步进电机转动起来。1 找一节电池正负随意接 入到 A 相两端;然后断开;(记为 A 正向)2 再将电池接入到 B 相两端; 然后断开;(记为 B 正向)3 电池正负对调再次接入 A 相; 然

3、后断开;(记为 A 负向)4 保持正负对调接入 B 相;然后断开;(记为 B 负向)如此循环你会看到步进电机在缓慢转动。注意电机的相 电阻是很小的接通时近乎短路 。 我们将相电流的方向记录下来应该为:A+B+A-B-A+, 如果我们更换接线顺序使得相电流顺序为 A+B-A-B+A+这时我们会看到电机向反方 向运动。这里每切换一次相电流电机都会转动一个很小的角度,这个角度就是电机的 步距角。步距角是步进电机的一个固有参数, 一般两相电机步距角为 1.8 度即切换 200 次可以让电机转动一圈。这里我们比较正反转的电流顺序可以看出 A+和 A-;B+和 B-的交换后的顺序和正反顺序是一致的,也就是

4、前面所说的”任意一相正负对调电机 将反转”。以上为四排工作方式,为了使相电流更加平滑另外可以使用八排的工作方 式即: A+;A+B+;B+;B+A-;A-;A-B-;B-;B-A+;从前往后循环正转,从后往前循环反转。 为了用单片机实现相电流的正负流向控制必须要有一个 H 桥的驱动电路,这种 带 H 桥的驱动模块还是很多的,比较便宜的是晶体管 H 桥比如 L298N,晶体管开关速 度比较慢,无法驱动电机高速运动。有些模块将细分控制电路也包含在内,我们也不 用这种 , 因为我们的细分由软件控制 。 实际应用中使用ST 的mos管两桥驱动芯片L6205 一片即可驱动一台步进电机。有了 H 桥通过

5、PWM 就可以控制相电流大小,改变输入极 IN1、IN2 的状态(参看手册第 8 页)可以控制相电流的方向。 二.细分的原理和输出控制 从这里开始重点了,别的地方看不到哦。 一个理想的步进电机电流曲线应该是相位相差 90 度的正弦曲线如下图: 图中蓝色线时 A 相电流,红色线是 B 相电流。如果把 A 相正负极值视为 A+A-, B 相正负极值视为 B+B-,比较一下四拍方式正转 A+B+A-B-和反转 A+B-A-B+不难看出 四排方式实际上是用一个脉冲来代替一个正弦半周期,相位点从左到右变化则电机正 转,从右到左电机反转。类似的我们把八拍方式 A+;A+B+;B+;B+A-;A-;A-B-

6、;B-;B-A+; 放到曲线里也可以找到对应点,图中标出了各拍的相位点 1,2,3,不难看出用 A+B+ 代替第 2 拍点用 B+A-代替第四拍点都是近似的做法。那么这种近似和理想情况的电流 的差值去哪里了呢?这些电流被无谓的消耗掉了而且多余的电流会引起电机转动的 不平稳。为什么要细分呢?实际细分的终极目标就是在正弦的周期中插入若干个点使 得相电流接近正弦变化,细分可以提高定位精度和电机运转的平稳性。 由此我们抛开细分不谈,如果你能调制出两条相差为 90 度的正弦波形就是理 想的步进电机驱动器了,调制出的正弦波形的频率就是步进电机的转速,正弦的幅值 就是步进电机的转矩。这个听起来貌似不难啊,但

7、是你不要忘了调制出的正弦是有要 求的。第一要有一定的驱动能力步进电机的功率越大驱动能力要求也越大。第二要能 够保持 90 度的相差前提下改变正弦的频率 , 这样才能够驱动电机按不同的转速运转, 步进电机的旋转方向实际上是两条正弦波的相位点顺序。第三最好能够调幅,调整幅 值能够实现电机的恒力矩输出,调幅的实际意义还不止这些后面再讲。总之一句话就 是通过 pwm 调制输出可以调频调幅的两路固定相差的正弦波。(如果是三相步进电机 应该是相差各位 120 度的三路正弦波,原理是一样的。) 上面那个图和两相步进电机驱动的关系可能有些疑惑“真的是这样的吗?“,我 们在这里再安排一个试验。我们知道电动机和发

8、电机是两个可逆的过程,因此我们可 以用步进电机来当发电机。很简单的实验,我们把步进电机的两相引线接到双踪示波 器输入上,然后找个电机带着转轴运转(我是用一个手电钻夹住电机的转轴,我的这 个手钻是可以正反转的)。保持稳定的转速,你会在示波器上看到上面那个图:即两 路相差固定的完美的正弦波,当转速增大时幅值和频率都有变化(线性关系),并且 正转和反转时两路正弦相位位置不同,如果你能够确定转速的话你还可以验证以下周 期、转速、步距角之间的关系。 步进电机的驱动要比逆变器、伺服电机驱动复杂的地方在于需要大范围的变 频,如果能做好这个步进电机的驱动器其它那两个就不成问题了,至少在波形调制上 绝对没问题了

9、,它们的基本原理是通的。 下面我们展开正弦调制的讨论,这部分是核心的部分将占很大的篇幅,你放心 我绝对不会罗列一大堆的数学式在教程里,不然怎么能叫超级无敌呢?教程超级无敌, 这个 stm32 实现的驱动程序也是超级无敌的(吼吼)。但是“载波比、spwm、死区、 单双极性”这几个词如果你觉得很陌生的话建议你还是要看看电力电子课程的相关 章节基本概念还是要有的。 三.spwm 运算和输出 Spwm 的产生可以分为软件方法和硬件方法,硬件方法通过硬件产生一路三角波一路 正弦波,经过一个比较器比较正弦波幅值与三角波幅值的关系即可得到 spwm 波。这种方 法也应用于很多 spwm 集成芯片 http:

10、/ 上不需要软件参与,并且调频和调幅控制上都是比较简单的。硬件方法的功能和性能取决 于芯片本身,对于比较复杂的应用上会受到限制。 软件方法的思路是使得 pwm 波以 spwm 的脉宽数据变化滤波后就可以得到正弦波形, 通过计算得到占空比的波形数据,按波形数据调整 pwm。其实软方法和硬方法也并不是绝 对的,比如 ti 的 dsp 芯片内部的 spwm 发生器,他的做法是在内存中存储一张正弦表,然 后用一个和定时器时钟同步的计数器正负计数模拟一个三角波,每个时钟将正弦表的值与 三角计数值作比较输出即得到 spwm,实际上可以看成是一种半软件半硬件的做法。软件方 法的优势在于成本低且更灵活,成本低

11、不用说了,灵活性上举个例子:调制正弦波性的极 性是由独立的控制位实现的(双极性),如果输出标准的正弦波形硬方法需要三角波发生 器和正弦波发生器的起始点精确对齐,这在硬件电路实现上需要附带锁相环电路才能保证, 而软件方法则不需要任何附加操作。现在为了改善步进电机的驱动性能,我们希望极性翻 转点落后输出几个微秒,要做到这一点硬件方法改动肯定是难上难,而软件方法上只需要 增加个定时滞后输出就行了。 为了减少运算开销也可以使用查表法,把计算好的spwm数据存储在rom里,按顺序输出表中的值 即可 。 这种方法的数据计算可以在pc机上通过matlab软件进行 , 将数据算好粘贴到源程序中就可以了。 查表

12、法的局限在于参数的变化和存储开销的矛盾,参数越复杂占用存储空间越大。 (1)三角波向锯齿波的转换 载波为三角波时输出的是一个左右不对称的pwm波形,只有这种波形能够调制出半周期对称的正弦 波,这种方法称为非对称的自然采样法。其它方法(规则采样等效面积)都是为了减小计算量或不得 以而采取的近似方法。非对称pwm开点与关闭点没有必然关系,必须由中央对齐的pwm模式通过一个周 期的两次更新来输出。三角波可以看成是两个锯齿波的组合,因此我们可以通过锯齿波的数据来简化程序 结构。我们比较下面三张图: 图 1 是一个锯齿波幅值为 1,载波比 N=16,正弦幅值 0.5,正弦与锯齿波相差为半个 锯齿波周期;

13、图 2 是图 1 水平翻转的结果;图 3 是图 1 和图 2 的叠加结果。图三中看到三 角波形的 spwm 数据了吗?没错就这么简单,锯齿波正弦幅值比为 2:1,相差半个锯齿波 周期,计算出来的数据首尾组合成三角波数据。算法上就很简单了,假设数组中存放上述 的锯齿波 spwm 数据,编号 015 共 16 个,依次取 0,1,2,15 为三角波形开点输出数 据,则反向取 15,14,13,0 为三角波形关点数据即可。特别的如果载波比为奇数时三 角波也为奇数,中间的数自然和自己组合的数据仍然是正确的。 注意这里提及的方法可以把三角波形的计算转换为锯齿波,但并不能减少计算量,因 为如果是偶数个三角

14、波只要计算四分之一周期就够了其他的是对称的,而锯齿波形数据需 要计算半个周期。至此我们可以使用锯齿波的方法计算按三角波的数据输出。 (2)spwm 迭代运算 为计算 spwm 占空比首先要求得锯齿波斜线与正弦交点,即方程 KX+B=Y 与 Sin(X)=Y 的解。这个方程是一个超越方程,只能通过迭代的方法计算。我们将直线方程变为 X=(Y-B)/K,首先任取一个 X 值(这个值就是迭代初值),将它带入 Sin(X)求一个 Y 值再 将 Y 值代入(Y-B)/K 求一次 X 值,再将 X 带入 Sin(X)求一个 Y 值如此反复若干次后可以 得到一个结果就是方程式的解,这个就叫做迭代法。迭代次数

15、越多;迭代初值越接近结果 精度越高。每一组数据计算有这样几个参数 1:正弦幅值(三角幅值与之成比例)2:载波 比 N 值即半周期中三角波个数。另外 pwm 的占空比即定时器的通道值是和 pwm 的周期值有 关系的,因此为了计算定时器通道值还需要一个周期值,对于 stm32f 这个值就是定时器 ARR 寄存器的值,它决定 pwm 周期(或频率)。附件中有个 matlab_spwm.rar,matlab 下 计算定时器 spwm 数值和绘图的小工具上面几个图就是用它画的,开始部分可以置参数 s_M=32768/65536 %正弦波幅值比 01 s_N=16 %半周期三角波个数 s_Pre=1638

16、4 %单片机定时器模数值 执行分为三部分,计算 spwm 数据;将数据按周期值换算为定时器设定值;画图; 计算定时器设定结果在 TimerSetting 中,复制粘贴替换 tab 字符成逗号就行了,下面是 上述参数的计算结果: 1780 5246 8444 11221 13461 15088 16 063 16384 16075 15182 13764 11893 9645 7102 4346 1463 (3)spwm 实时运算的优化 如前所述简单的应用查表法就可以解决了但是复杂一点的功能就不能满足要求了 , 比 如步进电机大范围调速、不同转速下恒力矩输出、恒加速运动等等。网上有很多文章介绍 自然采样法的数学方法,并给出了各种优化算法,这些算法力图精确求解三角方程与正弦 方程的交点,由于运算中带有大量的浮点运算若没有 dsp 或高速浮点处理

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号