四相步进电机定位控制系统

上传人:自*** 文档编号:23240402 上传时间:2017-11-30 格式:DOC 页数:26 大小:1.17MB
返回 下载 相关 举报
四相步进电机定位控制系统_第1页
第1页 / 共26页
四相步进电机定位控制系统_第2页
第2页 / 共26页
四相步进电机定位控制系统_第3页
第3页 / 共26页
四相步进电机定位控制系统_第4页
第4页 / 共26页
四相步进电机定位控制系统_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《四相步进电机定位控制系统》由会员分享,可在线阅读,更多相关《四相步进电机定位控制系统(26页珍藏版)》请在金锄头文库上搜索。

1、四相步进电机定位控制系统四相步进电机定位控制系统功能概述步进电机每接收到一组脉冲数字信号,便旋转一个角度,成为步进角。不同规格的步进电机的步进角不同,这决定于其内部的线圈数量。线圈中的供应电流可以决定线圈所产生的磁场方向。假设有两组线圈 A和 B,如图一所示。A 线圈如果提供 A 点低电位而 A点高电位,电流由 A螺旋向上流到 A,形成向上的磁场方向;同理,提供 B 点低电位而 B 点高电位,电流由 B螺旋流到 B,形成向左的磁场方向。A 和B 这两组线圈形成的总磁场方向即为左上方。如果将电动机的转子置于线圈所产生的磁场中,便会受到磁场的作用而产生与磁场方向一致的力,转子便开始转动,直到转子的

2、磁场方向与线圈的磁场方向一致为止。如图二所示。由 A 和 B 两组线圈电流方向的排列组合,最多可以产生 8 种磁场方向,分别是 0、45、90、135、180、225、270、315。这些方向的电流方向列于表一。图一 图二由表一可知,假设电动机转子刻度原先在 0的位置,想让其转到180,就必须让端口信号依次由 0001、0011、0010、0110 到 0100 变化。但是是否有更快的办法,是否一定要经过 4 个信号过程呢?其实有更快更省电的方式让电动机从 0达到 180的位置。这就是所谓的激磁方式的不同。四相电动机可以分为 3 种激磁方式。AA BB电 流电 流 电 流 电 流转 子1802

3、70 9005135315 45逆 时 针 旋 转表一:四相步进电机的 8 个方向和电流以及电压信号的关系磁场方向 0 45 90 135 180 225 270 315AA AA 0 AA AA AA 0 AA电流方向A 线圈B 线圈 0 BB BB BB 0 BB BB BB端口信号 0001 0011 0010 0110 0100 1100 1000 10011-相激磁法:当目标角度是 90 的整数倍时,采用这种方法。例如要从 0 转到 270,只要让端口信号的顺序为0000,0001,0010,0100,1000 即可。2-相激磁法:当目标角度是 45 而非 90 的整数倍时,可采用这

4、种方法。例如要从 0 转到 225,只要让端口信号的顺序为0000,0011,0110,1100 即可。1-2-相混合激磁法:按照表二中所列的信号顺序。表二:四相步进电机 3 种不同激磁方式对应提供的端口信号磁场方向 0 45 90 135 180 225 270 315端口信号 BA0001 0011 0010 0110 0100 1100 1000 10011-相激磁 2-相激磁 1-2-相激磁 四相步进电机定位控制系统的 VHDL 源码及注释-四相步进电机示例程序library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_ari

5、th.all;use IEEE.std_logic_unsigned.all;entity step_motor isport (reset:in STD_LOGIC; -系统复位信号dir: in STD_LOGIC; -步进电机正反转方向控制开关(0:逆时针;1:顺时针)clk: in STD_LOGIC; -系统时钟(FPGA 内部提供的 4MHz 的时钟信号)ini: in STD_LOGIC; -使能开关 manner: in STD_LOGIC_VECTOR (1 downto 0); -激磁方式的选择开关(00:自动选择激磁方式;-01:1- 相激磁;10:2-相激磁;11:1-

6、2-相激磁)angle: in STD_LOGIC_VECTOR (7 downto 0); -步进角的倍数设定输入键baBA: out STD_LOGIC_VECTOR (3 downto 0); -步进电机的状态输出end step_motor;architecture stepmotor_arch of step_motor issignal count: INTEGER range 0 to 7; -内部电路的计数累加器,用于产生输出所需对应的状态signal cntInc: INTEGER range -2 to 2; -设定累加器所需的累加/减计数值signal cntIni: I

7、NTEGER range -1 to 0; -设定累加器所需的计数初值signal angleDnCount: INTEGER range 255 downto 0; -设定步进角所需的计数次数signal angleDnCntDec: INTEGER range 2 downto 1; -设定步进角所需的累减计数值begin-步进电机方向设定电路模块该模块的功能是设定步进电机的旋转方向(顺时针或逆时针) ,并设定电机在顺时针转动或逆时针转动时所需的初值与累加/减值。process(dir,manner,angle)beginif dir=0 thencase manner iswhen 01

8、 = -1-相激磁cntIni -2-相激磁cntIni -1-2-相激磁cntIni -自动选择激磁方式-angle 为偶数即角度为 90 的倍数时,采用 1-相激磁,否则 2-相激磁if (angle(0)=1) then -2-相激磁cntIni -1-相激磁cntIni -2-相激磁cntIni - 1-2-相激磁cntIni -自动选择激磁方式 if (angle(0)=1) then -2-相激磁cntIni angleDnCntDec then -判断是否已到达设定位置angleDnCount =7;end stepmotor_arch;四相步进电机定位控制系统的模块图四相步进电

9、机定位控制系统的仿真结果自动模式,顺时针,旋转角为 45*11 的情况:自动模式,顺时针,旋转角为 45*16 的情况:1-相激磁,逆时针,旋转角为 45*7 的情况:1-相激磁,顺时针,旋转角为 45*7 的情况:2-相激磁,逆时针,旋转角为 45*17 的情况:2-相激磁,逆时针,旋转角为 45*17 的情况:1-2-相激磁,顺时针,旋转角为 45*11 的情况:1-2-相激磁,顺时针,旋转角为 45*8 的情况:直流电机速度控制系统直流电机速度控制系统功能概述驱动电路称为桥式驱动或是H 型驱动电路(如右图所示) ,采用的控制方法称为脉冲宽度调制法(PWM) ,即利用晶体管on-off(导

10、通- 不导通)进行控制的方法。使用 FPGA 纯数字式的控制时,假设电机速度从静止开始加速,首先 Q1、Q2 必须维持导通一段时间,此时电机所承受的电压约为供电电压 U,称之为强加速。待速度接近目标速度时,加速可以减缓,此时 Q1、Q2 和 Q3、Q4 轮流导通,只是 Q1、Q2 在一个周期内所导通的时间 ton 比 Q3、Q4 导通的时间 toff 长一些,此时称为弱加速。任何时候,电机所承受的平均电压 U0 可表示为 U0=U*(ton toff)(tontoff) 。如果速度已经达到目标,便可以调整 ton 和 toff 的时间比例使之相等,此时平均电压为零,称为定速控制。由此可知,平均

11、电压若为正值,是加速控制;负值时是减速控制;为 0 时即达到匀速。当然,还涉及到确定电机目前的速度是多少,比目标速度快还是慢,也就是速度检测的问题,常用的办法是光遮断法,在此就不再论述了。MQ1Q4 Q3Q1在程序仿真时只简单的输入固定的速度模拟一下。直流电机速度控制系统的 VHDL 源码及注释library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity motorctrl is port (clk: in STD_LOGIC; -FPGA

12、 内部提供的 4MHZ 的时钟信号reset: in STD_LOGIC; -系统内部自复位信号speed_now: in STD_LOGIC_VECTOR (7 downto 0); -速度检测编码器检测到的当前速度target_speed: in STD_LOGIC_VECTOR (7 downto 0); -设定电机预定达到的目标速度th_speed: in STD_LOGIC_VECTOR (7 downto 0); -设定电机进入弱加速时的临界速度差值pwme: out STD_LOGIC); -脉宽调制的输出,负责控制电机转动的信号end;architecture motorctr

13、l_arch of motorctrl is-define the signal_structure and flow of the device 定义内部信号signal cnt125: INTEGER range 0 to 124; -125 个时钟的计数器signal cnt375: INTEGER range 0 to 374; -375 个时钟的计数器signal cnt500: INTEGER range 0 to 499; -500 个时钟的计数器signal dth: STD_LOGIC_VECTOR (7 downto 0); -设定电机进入弱加速时的临界值(dth=targ

14、et_speed-th_speed)signal pwm: STD_LOGIC; -负责产生脉宽调制的信号,提供正确的输出-相位类型,负责产生正反转两种状态信号,用来控制电机的加速和减速phase 有 2 种状态:状态 0:phase= target_speed th_speed ,则进行弱加速控制,t on = (3/4)ktclk, toff = (1/4)ktclk;3) 如果 speed_now target_speed,则减速控制,t on = (1/4)ktclk, toff = (3/4)ktclk;另外,方向控制通过将 pwme 信号的输出反向。根据上面的分析,需要 3 个分频

15、器,分别产生 ktclk ,(1/4)kt clk 和(3/4)ktclk 的周期信号。假设时钟周期 tclk 为 10MHz,电机频率为 20kHz,因此k=10MHz/20kHz =500,(1/4)k=125 ,(3/4)=375,这也就是定义cnt125,cnt375,cnt500 三个计数器的原因。peeding_machine: process (reset,clk)beginif reset=1 then -复位高电平有效speeding -情况 1if (speed_now = target_speed) thenspeeding target_speed) thenspeeding =dth) and (speed_now -情况 2if (speed_now = target_speed) thenspeeding =dth) and (speed_now target_speed) thenspeeding 弱加速临界速度&=dth & speed_now 限速speed_now target_speed现速限速speed_now target_speed现速弱加速临界速度&=dth & speed_now -

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

当前位置:首页 > 行业资料 > 其它行业文档

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