基于CPLD 的步进电机控制
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 步进电机的运动控制
步进电机驱动原理是通过对每相线圈中的电流 顺序切换来使电机做步进式旋转,切换是通过 C P L D 输出脉冲信号来实现的。所以调节脉冲信号 的频率便可以改变步进电机的转速,改变各相脉冲 的先后顺序,可以改变电机的旋转方向。步进电机 的转速是可以通过 C P L D 来受控,控制速度有加速、 减速、保持原有状态 3 种。
电机驱动方式可以采用双四拍(A B - B C - C D -
RCA 2007.4 总第 121 期 11
研究与开发
铁 路 计 算 机 应 用
第 16 卷第 4 期
DA-AB)方式,也可以采用单四拍(A-B-C-D-A )方 式或单、双八拍(A-AB-B-BC-C-CD-D-DA-A)方式。 各 种 方 式 的 时 序 图 如 下( 高 电 平 有 效 ):
文章编号:1005-8451(2007)04-0011-03
研究与开发
RES EARC H AN D DEVELOPMEN T
基于 CPLD 的步进电机控制
董晓辉, 李国宁
(兰州交通大学 自动化与电器工程学院,兰州 730070)
摘 要:叙述基于 C P L D 的步进电机的控制,采用 V H D L 语言实现其控制,并在 M A X P L U S 2 下实现理
2 VHDL 语言设计及仿真
开始
初始化定义
分频及转速控制
D A A B BC C D D A A B C D
AB CDA A B C D
图 1 双四拍方式
图 2 单四拍方式
DA A AB B BC C CD D DA A B C D
图 3 单、双拍工作方式
上图中示意的脉冲信号是高有效,但实际控制 时公共端是接在 V C C 上的,所以实际控制脉冲是低 有效。CPLD 的 STEP[3..0]输出的脉冲信号经倒相驱 动后,向步进电机输出脉冲信号序列。通过 CPLD 控 制步进电机,利用 V H D L 语言编写程序输出脉冲序 列到步进电机接口,控制步进电机转正转、反转、加 速、减速、保持原速。
表 1 步进电机转速表
SPEED0 0 1 0 1
SPEED1
步进电机转速状态
1
加速
0
减速
0
保持原态
1
保持原态
D I R E C T I O N :电机方向控制信号
控制量控制
转向控制
程序结束
图 5 程序流程图
(1 )根据原理框图可以定义输入与输出( 略) (2 )中间变量初始化定义如下: ARCHITECTURE behavior OF step_motor IS SIGNAL indcoil: STD_LOGIC_VECTOR(3 downto 0) := "0001"; (3 )做单四拍工作工作方式时的初始化定义 SIGNAL clkscan: STD_LOGIC; 转速控 制过程控制的脉冲 SIGNAl PHASE,DIRECTION:STD_LOGIC; (4 )phase 控制direction 的中间变量,direction 控制步进电机左转、右转或者保持的中间变量 SIGNAL s:std_logic_vector(3 downto 0); 给输出 变量赋值的中间变量 SIGNAL comp:integer range 0 to 2500 ; SIGNAL osc:STD_LOGIC; 原cpld 提供的 f 的分频 BEGIN coil <= s; (5 )osc 的产生即 f 的分频如下: process(f,osc) variable delay:integer range 0 to 2500; begin if (f'event and f='1') then if delay>=2500 then delay:=0;osc<=not osc; else delay:=delay+1; end if; end if; 根据控制步进电机的频率不同,以上仅是适合 步进电机分频的一种。根据转速和步进电机频率要 求可以更改其分频程序即其中的 delay 的变化范围。 以下是控制转速变化过程的程序 if (osc'event and osc='1') then case speed is when "10" => if comp<2500 then comp <=comp+1; else comp<=comp;
想的仿真效果。该控制采用 CPLD 作为核心器件,减少分立元件使用,在实时性和灵活性等性能上都有很大
的提高。同时,采用 VHDL 语言控制可以根据步进电机的不同,改变程序参数就可以实现不同型号步进电
机控制,有利于步进电机的广泛应用。
关键词:步进电机控制;复杂可编程逻辑器件(C P L D );硬件描述语言(V H D L );控制
2 CLK200HZ 3 PHASE
4 DRECTION
5 SPEED[1.0]
NFOR
VCC NFOR VCC NFOR
VCC NFOR VCC
STEP_MOTOR
F P D SPEED[1..0] 1
COIL[3..0]
OUTPUY
STEP[3..0]
图 4 步进电机控制原理框图
原理框图中 CLK200 Hz 为 CPLD 时钟输入信号频 率取在 200 Hz - 400 Hz 之间,PHASE 为相位时钟 信号,频率在 38 Hz - 76 Hz 之间。
为了实现步进电机的运动控制较多采用的一种方案是以单片机作为控制系统的微处?器通过一些大规模集成电?如82538254等来控制其脉冲输出频率和脉冲输出数实现步进电机的速度和位置定位
第 16 卷第 4 期 Vol.16 No.4
铁路 计 算 机 应 用 RAILWAY COMPUTER APPLICATION
收稿日期:2006-09-17 作者简介:董晓辉,在读硕士研究生; 李国宁,副教授。
个系统的稳定性、可靠性有较大影响, 同时在某些 控制场合, 其程序处理速度也成为制约提高系统实 时控制性的一个瓶颈。
本文采用复杂可编程逻辑器件 CPLD (Complex Programmable Logic Device) ,通过 VHDL 语言编程 来实现步进电机的控制。整个系统选用器件少, 在 实时性和灵活性等性能上都有很大的提高, 有利于 步进电机的运动控制。
中图分类号:T N 4 7
文 献 标 识 码:A
Stepmotor control based on CPLD
DONG Xi ao-hui, LI Guo-ni ng
(Insti tute of Aut omat i on and El ectroengl i neeri ng, Lanzhou Ji aotong Uni versi ty, Lanzhou 730070, Chi na) Abstract: It was narrated the step-by-stepped el ectri cal machi nery control based on CPLD, i mpl em ented i ts control wi th the VHDL l anguage, and i m pl em ented t he i deal si mul ati on ef f ect under MXPLUS2. Thi s control used CPLD to take the core com ponent, t o reduce enormousl y di screte component use, i n perf ormance and so on ti mel i ness and f l exi bi l i t y al l had the very bi g enhancement. At the same ti ntrol to be possi bl e to act accordi ng to step-by-st eps the el ect ri cal m achi nery di f f erence, t he change program param eter m i ght i m pl ement t he di f f erent model t o step-by-step t he el ectri cal machi nery control , was advantageous i n step-by-steps t he el ectri cal machi nery wi despread appl i cat i on. Key w ords: step-by-stepped the el ectri cal machi nery control ; compl ex programmabl e l ogi c devi ce; very-hi gh-speed i ntegrated ci rcui t hardware descri pti on l anguage; control
12 2007.4 总第 121 期 RCA
第 16 卷第 4 期
基于 C P L D 的步进电机控制
研究与开发
end if; 控制加速 when "01" => if comp>2 then comp<=comp-1; else comp<=comp; end if; 控制减速 when others => if comp<2 then comp<=2; else comp<=comp; end if; 保持原速 end case; end if; end process; 控制clkscan,phase和direction的脉冲产生过 程根据需要可以编程实现。这里不再把程序一一 列出: motor: process 该过程是控制步进电机左 转、右转和保持的原程序 begin if (clkscan'event and clkscan='1') then WAIT UNTIL clkscan= '0';
步进电机是将电脉冲信号转变为角位移或线位 移的开环控制元件。在非超载的情况下,电机的转 速、停止的位置只取决于脉冲信号的频率和脉冲 数,而不受负载变化的影响,即给电机加一个脉冲 信号,电机则转过一个步距角。这一线性关系的存 在,加上步进电机只有周期性的误差而无累积误差 等特点, 使得在速度、位置等控制领域用步进电机来 控制变化非常简单,因此广泛应用在数控机床、机 器人、自动化仪表等领域。虽然步进电机已被广泛 地应用,但步进电机并不能象普通的直流电机、交 流电机在常规下使用。它必须由双环形脉冲信号、 功率驱动电路等组成控制系统方可使用。为了实现 步进电机的运动控制, 较多采用的一种方案是以单 片机作为控制系统的微处理器, 通过一些大规模集 成电路, 如 8253、8254 等来控制其脉冲输出频率和 脉冲输出数, 实现步进电机的速度和位置定位。但 是这种方案中微处理器所需的周边器件较多, 对整
indcoil(3)); --循环左移 END IF; ELSE IF ((indcoil = "1001") or (indcoil =
"0000")) THEN indcoil <= "1000";
CASE phase IS WHEN '1' => IF direction = '0' THEN IF ((indcoil = "1001") or (indcoil =
"0000")) THEN indcoil <= "0001";
ELSE indcoil <= (indcoil(2 downto 0) &
步进电机驱动原理是通过对每相线圈中的电流 顺序切换来使电机做步进式旋转,切换是通过 C P L D 输出脉冲信号来实现的。所以调节脉冲信号 的频率便可以改变步进电机的转速,改变各相脉冲 的先后顺序,可以改变电机的旋转方向。步进电机 的转速是可以通过 C P L D 来受控,控制速度有加速、 减速、保持原有状态 3 种。
电机驱动方式可以采用双四拍(A B - B C - C D -
RCA 2007.4 总第 121 期 11
研究与开发
铁 路 计 算 机 应 用
第 16 卷第 4 期
DA-AB)方式,也可以采用单四拍(A-B-C-D-A )方 式或单、双八拍(A-AB-B-BC-C-CD-D-DA-A)方式。 各 种 方 式 的 时 序 图 如 下( 高 电 平 有 效 ):
文章编号:1005-8451(2007)04-0011-03
研究与开发
RES EARC H AN D DEVELOPMEN T
基于 CPLD 的步进电机控制
董晓辉, 李国宁
(兰州交通大学 自动化与电器工程学院,兰州 730070)
摘 要:叙述基于 C P L D 的步进电机的控制,采用 V H D L 语言实现其控制,并在 M A X P L U S 2 下实现理
2 VHDL 语言设计及仿真
开始
初始化定义
分频及转速控制
D A A B BC C D D A A B C D
AB CDA A B C D
图 1 双四拍方式
图 2 单四拍方式
DA A AB B BC C CD D DA A B C D
图 3 单、双拍工作方式
上图中示意的脉冲信号是高有效,但实际控制 时公共端是接在 V C C 上的,所以实际控制脉冲是低 有效。CPLD 的 STEP[3..0]输出的脉冲信号经倒相驱 动后,向步进电机输出脉冲信号序列。通过 CPLD 控 制步进电机,利用 V H D L 语言编写程序输出脉冲序 列到步进电机接口,控制步进电机转正转、反转、加 速、减速、保持原速。
表 1 步进电机转速表
SPEED0 0 1 0 1
SPEED1
步进电机转速状态
1
加速
0
减速
0
保持原态
1
保持原态
D I R E C T I O N :电机方向控制信号
控制量控制
转向控制
程序结束
图 5 程序流程图
(1 )根据原理框图可以定义输入与输出( 略) (2 )中间变量初始化定义如下: ARCHITECTURE behavior OF step_motor IS SIGNAL indcoil: STD_LOGIC_VECTOR(3 downto 0) := "0001"; (3 )做单四拍工作工作方式时的初始化定义 SIGNAL clkscan: STD_LOGIC; 转速控 制过程控制的脉冲 SIGNAl PHASE,DIRECTION:STD_LOGIC; (4 )phase 控制direction 的中间变量,direction 控制步进电机左转、右转或者保持的中间变量 SIGNAL s:std_logic_vector(3 downto 0); 给输出 变量赋值的中间变量 SIGNAL comp:integer range 0 to 2500 ; SIGNAL osc:STD_LOGIC; 原cpld 提供的 f 的分频 BEGIN coil <= s; (5 )osc 的产生即 f 的分频如下: process(f,osc) variable delay:integer range 0 to 2500; begin if (f'event and f='1') then if delay>=2500 then delay:=0;osc<=not osc; else delay:=delay+1; end if; end if; 根据控制步进电机的频率不同,以上仅是适合 步进电机分频的一种。根据转速和步进电机频率要 求可以更改其分频程序即其中的 delay 的变化范围。 以下是控制转速变化过程的程序 if (osc'event and osc='1') then case speed is when "10" => if comp<2500 then comp <=comp+1; else comp<=comp;
想的仿真效果。该控制采用 CPLD 作为核心器件,减少分立元件使用,在实时性和灵活性等性能上都有很大
的提高。同时,采用 VHDL 语言控制可以根据步进电机的不同,改变程序参数就可以实现不同型号步进电
机控制,有利于步进电机的广泛应用。
关键词:步进电机控制;复杂可编程逻辑器件(C P L D );硬件描述语言(V H D L );控制
2 CLK200HZ 3 PHASE
4 DRECTION
5 SPEED[1.0]
NFOR
VCC NFOR VCC NFOR
VCC NFOR VCC
STEP_MOTOR
F P D SPEED[1..0] 1
COIL[3..0]
OUTPUY
STEP[3..0]
图 4 步进电机控制原理框图
原理框图中 CLK200 Hz 为 CPLD 时钟输入信号频 率取在 200 Hz - 400 Hz 之间,PHASE 为相位时钟 信号,频率在 38 Hz - 76 Hz 之间。
为了实现步进电机的运动控制较多采用的一种方案是以单片机作为控制系统的微处?器通过一些大规模集成电?如82538254等来控制其脉冲输出频率和脉冲输出数实现步进电机的速度和位置定位
第 16 卷第 4 期 Vol.16 No.4
铁路 计 算 机 应 用 RAILWAY COMPUTER APPLICATION
收稿日期:2006-09-17 作者简介:董晓辉,在读硕士研究生; 李国宁,副教授。
个系统的稳定性、可靠性有较大影响, 同时在某些 控制场合, 其程序处理速度也成为制约提高系统实 时控制性的一个瓶颈。
本文采用复杂可编程逻辑器件 CPLD (Complex Programmable Logic Device) ,通过 VHDL 语言编程 来实现步进电机的控制。整个系统选用器件少, 在 实时性和灵活性等性能上都有很大的提高, 有利于 步进电机的运动控制。
中图分类号:T N 4 7
文 献 标 识 码:A
Stepmotor control based on CPLD
DONG Xi ao-hui, LI Guo-ni ng
(Insti tute of Aut omat i on and El ectroengl i neeri ng, Lanzhou Ji aotong Uni versi ty, Lanzhou 730070, Chi na) Abstract: It was narrated the step-by-stepped el ectri cal machi nery control based on CPLD, i mpl em ented i ts control wi th the VHDL l anguage, and i m pl em ented t he i deal si mul ati on ef f ect under MXPLUS2. Thi s control used CPLD to take the core com ponent, t o reduce enormousl y di screte component use, i n perf ormance and so on ti mel i ness and f l exi bi l i t y al l had the very bi g enhancement. At the same ti ntrol to be possi bl e to act accordi ng to step-by-st eps the el ect ri cal m achi nery di f f erence, t he change program param eter m i ght i m pl ement t he di f f erent model t o step-by-step t he el ectri cal machi nery control , was advantageous i n step-by-steps t he el ectri cal machi nery wi despread appl i cat i on. Key w ords: step-by-stepped the el ectri cal machi nery control ; compl ex programmabl e l ogi c devi ce; very-hi gh-speed i ntegrated ci rcui t hardware descri pti on l anguage; control
12 2007.4 总第 121 期 RCA
第 16 卷第 4 期
基于 C P L D 的步进电机控制
研究与开发
end if; 控制加速 when "01" => if comp>2 then comp<=comp-1; else comp<=comp; end if; 控制减速 when others => if comp<2 then comp<=2; else comp<=comp; end if; 保持原速 end case; end if; end process; 控制clkscan,phase和direction的脉冲产生过 程根据需要可以编程实现。这里不再把程序一一 列出: motor: process 该过程是控制步进电机左 转、右转和保持的原程序 begin if (clkscan'event and clkscan='1') then WAIT UNTIL clkscan= '0';
步进电机是将电脉冲信号转变为角位移或线位 移的开环控制元件。在非超载的情况下,电机的转 速、停止的位置只取决于脉冲信号的频率和脉冲 数,而不受负载变化的影响,即给电机加一个脉冲 信号,电机则转过一个步距角。这一线性关系的存 在,加上步进电机只有周期性的误差而无累积误差 等特点, 使得在速度、位置等控制领域用步进电机来 控制变化非常简单,因此广泛应用在数控机床、机 器人、自动化仪表等领域。虽然步进电机已被广泛 地应用,但步进电机并不能象普通的直流电机、交 流电机在常规下使用。它必须由双环形脉冲信号、 功率驱动电路等组成控制系统方可使用。为了实现 步进电机的运动控制, 较多采用的一种方案是以单 片机作为控制系统的微处理器, 通过一些大规模集 成电路, 如 8253、8254 等来控制其脉冲输出频率和 脉冲输出数, 实现步进电机的速度和位置定位。但 是这种方案中微处理器所需的周边器件较多, 对整
indcoil(3)); --循环左移 END IF; ELSE IF ((indcoil = "1001") or (indcoil =
"0000")) THEN indcoil <= "1000";
CASE phase IS WHEN '1' => IF direction = '0' THEN IF ((indcoil = "1001") or (indcoil =
"0000")) THEN indcoil <= "0001";
ELSE indcoil <= (indcoil(2 downto 0) &