步进电机细分驱动控制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“EDA技术应用”专用周报告(步进电机细分驱动控制)
系部:电气信息工程系
班级:通信技术11—1
指导老师:龚**
***** 2
姓名:付晓会 2
摘要
本次课题(步进电机细分驱动控制)要求使用PWM方法来控制步进电机的驱动和细分旋转,实现1/4细分(4.5°/步)控制盒不细分控制(18°/ 步)。
用KEY1控制步进电机正/反(由LED1和数码管指示状态);KEY2控制步进电机正常运行/细分运行(由LED2和数码管指示状态)。
利用QuartusⅡ完成设计、仿真等工作,最后在SmartEDA实验箱上进行硬件测试达到课题要求。
关键词:步进电机 PWM 驱动细分
目录
第一章课题介绍 (1)
1.1 课题目的 (1)
1.2 课题内容 (1)
1.3 课题原理 (1)
1.3.1 4相反应式步进电机的工作方式 (2)
第二章硬件电路 (3)
2.1 步进电机及驱动电路图 (3)
2.1.1 步进电机细分驱动的工作原理 (4)
2.2 系统电源电路 (6)
2.3 按键及LED电路 (7)
2.4 七段数码管显示电路 (7)
第三章设计步骤 (9)
3.1 设计步骤 (9)
3.2 引脚定义 (9)
第四章程序清单 (10)
第五章总结 (17)
附录 (19)
参考文献 (22)
第一章课题介绍
1.1 课题目的
学习使用FPGA实现步进电机和细分控制,了解步进电机细分控制的原理。
1.2 课题内容
使用PWM方法来控制步进电机的驱动和细分旋转,实现1/4细分(4.5°/步)控制盒不细分控制(18°/ 步)。
用KEY1控制步进电机正/反(由LED1和数码管指示状态);KEY2控制步进电机正常运行/细分运行(由LED2和数码管指示状态)。
利用QuartusⅡ完成设计、仿真等工作,最后在SmartEDA实验箱上进行硬件测试。
1.3 课题原理
步进电机是一种应用非常广泛的几点产品,与普通电机相比它可以实现精确的位置控制,在驱动脉冲的控制下可以按规定的速度和角度旋转。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按规定的方向转动到一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲信号个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机的相数是指其内部的线圈组数,如一个4相的步进电机有4组线圈。
下面以4相步进电机为例,说明步进电机的控制。
用A、B、C、D来表示步进电机的四个线圈。
1.3.1 4相反应式步进电机的工作方式:
1)单相4拍运行方式
正转时线圈通电顺序为:
反转时线圈通电顺序为:
2)双相4拍运行方式
正转时线圈通电顺序为:
反转时线圈通电顺序为:
3)双相8拍运行方式
正转时线圈通电顺序为:
反转时线圈通电顺序为:
2.1.1 步进电机细分驱动的工作原理
步进电机细分驱动的工作原理是通过对电机励磁绕组电流进行控制(这里绕组电流是呈阶梯波,即电流分成多少个台阶),使步进电机定子的合成磁场成为按细分步距旋转的磁场,从而带动转子转动实现的。
当两相邻绕组同时通过不同大小的电流时,各相产生的转矩之和为零的位置就是新的平衡位置,所以通过控制各相的电流可以实现细分控制。
要使电机按等步距转动,电流必须符合两个条件:
① 电流合成矢量旋转时每次变化的角度要均匀; ② 电流合成矢量的大小或幅值要保持不变。
如图2——2所示的是四相步进电机4细分驱动的原理。
设A 相通电时磁场方向为0°,如果以A 相或B 相单独通电时产生的磁场大小为半径(设半径为R )画圆(如图2——2所示为1/4图),即可算出位置“1”时的两分量
11sin θR A =,11cos θR B =。
同理可以算出22sin θR A =,22cos θR B =,33sin θR A =,33cos θR B =。
因此,可算出各相在某一时刻的电流值,把各细分
点的电流参数记录下来,电机运行时以查表的方式取出数据,即可做到细分控制。
如图2——3所示为四相双拍4细分各绕组电流波形图,由图中也可以看出一般总有两相绕组通电,一相逐渐增大,要相逐渐减小。
对应一个步距角,电流可以分为N 个台阶,也就是电机位置可以细分为N 个小角度,实现N 细分,从而可以驱动步进电机平滑运行。
本实验是用PWM 信号来控制电机的,电机各相电流的大小取决于PWM 信号占空比,所以可通过调节PWM 信号的占空比来控制电机各相的电流。
图2——2步进电机细分驱动原理图2——3四相双拍4细分各绕组电流波形图
C15200uF/16V
C16104
C17105
C18104
C19102C47104
C45104
C44104C4610u F/16V
R10R20
R13470Ω
LED9Power
1
234J6CON41234J8CON4L1
100uH
Vin
1
G N D
2
Vout
3U12
SPX1117-3.3
VCC5
VCC5A
VCC5
VCC-12
VCC5
VCC3_3
VCC3_3
VCC-12
3.3V@800m A T6
VSSA
2.2 系统电源电路
图2—4 系统电源电路图
主板使用了一块专门的电源板进行供电,电源板所提供的电源有+5V 、+12V 以及-12V ,在主板上设计一个系统电源电路,使用LDO 芯片(低压差电源芯片)将5V 电源转换得到3.3V 系统电源。
系统电源电路如图2——4所示,电源供电由J6和J8连接器输入实验箱主板,5V 电源经过LDO 芯片U12稳压输出3.3V 电源。
另外,主板上设计有模拟电路,需要一个5V 的模拟电源VCC5A ,它通过5V 电源经过滤波得到。
模拟地和数字地是通过0Ω电阻进行隔离,以降低噪声干扰。
主板上的J1——J5为电源输出接口,可以向用户板提供+12V 、-12V 、5V 和3.3V 电源,但要求负载功率不要过重,也不要与其他电源连接,否则可能导致器件损坏。
主板上七段数码管显示电路如图2—6所示,RP4和RP6是段码上的限流电阻,位码由于电流较大,采用了三极管驱动。
从电路可以看出,数码管是共阳极的,当位码驱动信号为0时,对应的数码管才能操作;当断码信号为0时,对应
的段码点亮。
图2——6 七段数码管显示电路
1SEG02SEG03SEG14SEG15SEG26SEG27SEG38SEG39SEG410SEG411SEG512SEG513SEG614SEG615
SEG7
16
SEG7
COM3SEG COM
1
SEG0
3
SEG1
5
SEG2
7
SEG3
9
SEG4
11
SEG5
13
SEG6
15
SEG7
2SEG04SEG16SEG28SEG310SEG412SEG514SEG616SEG7
COM6DIG_COM
12345678161514131211109RP4
RESPACK4
12345678
161514131211109RP6RESPACK4
Q8
8550
Q98550
Q108550
Q118550
Q128550
Q138550
Q148550
Q158550
c 06
c 1
8
c 29c 3
12
a 11
b 7
c 4
d 2
e 1
f 10
g 5h 3LED12LED
c 06c 1
8
c 29c 3
12
a
11
b 7
c 4
d 2
e 1
f 10
g 5h 3
LED13
LED
VCC3_3VCC3_3VCC3_3VCC3_3VCC3_3VCC3_3VCC3_3VCC3_3
第三章设计步骤
3.1 设计步骤
1)、启动Quartus Ⅱ建立一个空白工程,设计时可以采用硬件描述语言输入的方式。
2)、将设计好的.bdf或.v文件进行综合编译,荐在编译进程中发现错误,则打出并更正错误,直至编译成功为止。
3)、选择目标器件并对相应的引脚进行锁定,将未使用的引脚设置为三态输入。
3.2 引脚定义
第四章程序清单
module step(clock,key,dig,seg,led,pwm_out);
input clock; //系统输入时钟input[1:0] key; //按键输入
output[1:0] led; //LED指示输出output[3:0] pwm_out; //PWM输出
output[7:0] seg,dig;
reg[3:0]pwm_out_r;
reg[3:0]p_out_r;
reg[23:0]count; //时钟分频计数器reg[3:0]pwm_count; //PWM内部计数器
reg[3:0]cnt4; //电机步进时序计数器reg[15:0]duty_cycle; //PWM占空比控制
reg dir; //电机旋转方向控制reg mode; //电机控制模式
reg[1:0] dout1,dout2,dout3,buff; //消抖寄存器
wire[1:0] key_edge; //按键消抖输出
wire pwm_clk; //PWM计数时钟
wire speed_clk; //电机转动速度控制wire div_clk; //消抖动时钟
wire[8:1]dig;
reg[8:1]seg;
//时钟分频部分
always@(posedge clock)
begin
count<=count+1'b1;
end
assign dig=8'b00000000;
assign pwm_clk=(count[6:0]==7'h7f); assign div_clk=(count[15:0]==16'hffff); assign speed_clk=(count==24'hffffff); //按键消抖部分
always@(posedge clock)
begin
if(div_clk)
begin
dout1<=key;
dout2<=dout1;
dout3<=dout2;
end
end
//按键边沿检测部分
always@(posedge clock)
begin
buff<=dout1|dout2|dout3;
end
assign key_edge=~(dout1|dout2|dout3)&buff;
//按键操作部分
always@(posedge clock) //按键1 begin
if(key_edge[0])
dir<=~dir;
end
always@(posedge clock) //按键2 begin
if(key_edge[1])
mode<=~mode;
end
assign led=~{mode,dir}; //输出LED指示assign pwm_out=mode?~pwm_out_r:p_out_r; //输出模块选择always@(posedge clock) //数码管显示begin
case(led)
2'b00:seg=8'hb0;
2'b01:seg=8'ha4;
2'b10:seg=8'hf9;
2'b11:seg=8'hc0;
endcase
end
always@(posedge clock) //电机正/反转控制begin
if(speed_clk)
begin
if(dir==1'b1)
cnt4<=cnt4+1'b1;
else
cnt4<=cnt4-1'b1;
end
end
always@(posedge clock) //PWM波计数器begin
if(pwm_clk)
pwm_count<=pwm_count+1'b1;
end
always@(posedge clock)
begin
if(pwm_count[3:0]<duty_cycle[15:12]) //PWM A通道
pwm_out_r[3]<=1'b1;
else
pwm_out_r[3]<=1'b0;
end
always@(posedge clock)
begin
if(pwm_count[3:0]<duty_cycle[11:8]) //PWM B通道pwm_out_r[2]<=1'b1;
else
pwm_out_r[2]<=1'b0;
end
always@(posedge clock)
begin
if(pwm_count[3:0]<duty_cycle[7:4]) //PWM C通道pwm_out_r[1]<=1'b1;
else
pwm_out_r[1]<=1'b0;
end
always@(posedge clock)
begin
if(pwm_count[3:0]<duty_cycle[3:0]) //PWM D通道pwm_out_r[0]<=1'b1;
else
pwm_out_r[0]<=1'b0;
end
always@(posedge clock) //步进电机控制时序begin
if(speed_clk)
begin
case(cnt4[1:0])
2'b00:p_out_r=4'b1100;
2'b01:p_out_r=4'b0110;
2'b10:p_out_r=4'b0011;
2'b11:p_out_r=4'b1001;
endcase
end
end
always@(cnt4)
begin
case(cnt4)
4'h0:duty_cycle=16'hf000;
4'h1:duty_cycle=16'he600;
4'h2:duty_cycle=16'hbb00;
4'h3:duty_cycle=16'h6e00;
4'h4:duty_cycle=16'h0f00;
4'h5:duty_cycle=16'h0e60;
4'h6:duty_cycle=16'h0bb0;
4'h7:duty_cycle=16'h06e0;
4'h8:duty_cycle=16'h00f0;
4'h9:duty_cycle=16'h00e6;
4'ha:duty_cycle=16'h00bb;
4'hb:duty_cycle=16'h006e;
4'hc:duty_cycle=16'h000f;
4'hd:duty_cycle=16'h600e;
4'he:duty_cycle=16'hb00b;
4'hf:duty_cycle=16'he006;
endcase
end
endmodule
第五章总结
姓名:付晓会学号:2为期两周的“EDA技术应用”实训专用周结束了。
通过这两周的专用周学习,加深了我们对EDA知识的学习,掌握了QuartusⅡ的使用方法,能把所学的知识结合SmartEDA实验箱得到我们要实现的项目。
我们本次的课题是“步进电机细分控制”。
通过自我学习,我们对步进电机有了一定了了解。
它与普通电机相比它可以实现精确的位置控制,在驱动脉冲的控制下可以按规定的速度和角度旋转。
本次实验我们用的是四相步进电机,步进电机的相数是指内部的线圈组数,四相的步进电机有四组线圈,我们分别用字母A、B、C、D来表示步进电机的四个线圈。
实验要求使用PWM(Pulse Width Modulatiaon:脉冲宽度调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中)方法来控制步进电机的驱动和细分旋转,实现1/4细分(4.5°/步)控制盒不细分控制(18°/ 步)。
用KEY1控制步进电机正/反(由LED1指示状态);KEY2控制步进电机正常运行/细分运行(由LED2指示状态)。
利用QuartusⅡ完成设计、仿真等工作,最后在SmartEDA实验箱上进行硬件测试。
分析了解了课题后,我们首先从课题方案着手,制定了实验规划。
然后策划工作流程,确立了实验的走向。
其次我们根据实现目的分析了我们所需要的电路原理图,我们本次实验所用的电路原理图有:系统电源电路、按键及LED驱动电路和步进电机及驱动电路。
我们使用Protel 99 SE绘制电路图并分析了电路工作原理。
最后,我们进行软件编程和软、硬件调试。
在调试过程中,熟练的掌握了软、硬件的使用。
在整个实训过程中,我们遇到了很多问题,但是通过学习,我们都能一一的解决。
只有在问题中,我们才能找到自己所欠缺的知识,从而才能学到更多的知识。
在此次实训中,要感谢龚老师对我人们的细心指导与耐心讲解,谢谢!
姓名:齐棋学号:2 两周的EDA专用周结束了,通过这两周的学习与实践我学到了很多东西。
老师教导我们要理论联系实践才能更好的掌握并应用知识。
在两周的实训中,我们通过对于课题的实践加深了已学习了的EDA的知识,同时也学习到了很多新的关于EDA的知识与QuartusⅡ的操作流程和技巧。
本次我们做的课题是“步进电机细分驱动控制”,它是使用PWM方法来控制步进电机的驱动和细分旋转,实现1/4细分(4.5°/步)控制盒不细分控制(18°/ 步)。
用KEY1控制步进电机正/反(由LED1指示状态);KEY2控制步进电机正常运行/细分运行(由LED2指示状态)。
利用QuartusⅡ完成设计、仿真等工作,最后在SmartEDA实验箱上进行硬件测试。
在对于课题的研究与学习中,我们了解到步进电机是一种引用非常广泛的机电产品,与普通的电机相比它可以实现精确的位置控制,在驱动脉冲的控制下可以按规定的速度和角度旋转。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按规定的方向转动到一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲信号个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
本次我们所运用的为4相步进电机,它有单相4拍运行方式、双相4拍运行方式、双相8拍运行方式。
在这三种工作方式中,4相6拍工作方式电机运行最平稳,但在相同频率脉冲的情况下运转速度比4拍运作方式低一半。
确立了课题之后,我们首先对课题中涉及的不了解的知识进行了学习并确立了此次实验的方案。
分析与整理后我们画出了此次实验的框图,初步明确了我们实验的流程,对如何进行我们的课题有了一个清晰的思路。
同时我们也根据我们实验所需的部分进行了原理图的绘制,本次我们用到了系统电源电路、按键及LED驱动电路、步进电机及驱动电路。
在绘制原理图的同时我们也将Protel 99 SE中所学习的知识进行了复习与熟练。
之后,我们开始了对本次课题的内容进行了编程,将设计好的文件进行综合编译,找出并改正错误直至编译成功。
最后,我们进行了软件与硬件的调试,在试验箱上观察所出现的实验现象,根据实验现象进一步对程序进行更正,直至出现正确的现象。
通过这两周的实训更进一步让我对EDA知识进行了巩固与学习,实践是检验真理的唯一标准,只有通过实践才能发现我们在理论中所不能发现的问题。
在解决问题的过程中感谢龚老师的悉心教导与耐心讲解。
这次实训学到了许多课堂上所不能学到的知识。
谢谢老师!
4
3C15200uF/16V
C16104
C17105
C18104
C19102C47104
C45104
C44104C4610u F/16V
R10R20
R13470Ω
LED9Power
1
234J6CON41234J8CON4L1
100uH
Vin
1
G N D
2
Vout
3U12
SPX1117-3.3
VCC5
VCC5A
VCC5
VCC-12
VCC5
VCC3_3
VCC3_3
VCC-12
3.3V@800m A T6
VSSA
23
4
2ULN2003A 4ULN2003B 6ULN2003C 8
ULN2003D
1ULN2003A 3ULN2003B 5ULN2003C 7
ULN2003D
COM5
STEP_COM
IN11IN22IN33IN44IN55IN66IN77COMMON 8
OUT116OUT215OUT314OUT413OUT512OUT611OUT710CLAMP 9
U5
ULN2003A
R655/1W R685/1W
R625/1W R595/1W
MS1
MOTOR STEPPER
12
JP4MBV+
C28105
1 BA_COM 2MVB+3BC_COM 4BB_COM 5MBV+6
BD_COM
J11
MB_COM
VCCS
BA_COM BB_COM
M B V +
BC_COM
MBV+BD_COM
MBV+
MBV+
附 录
附1——步进电机及驱动电路
附2——系统电源电路
附5——引脚分配
参考文献
1)、《Verilog数字系统设计》【第2 版】——夏宇闻编著2)、《EDA实验与实践》——周立功等编著。