步进电机细分驱动控制.docx
“EDA技术应用”专用周报告(步进电机细分驱动控制)系 部:电 气 信 息 工 程 系 班 级:通 信 技 术 111 指导老师:龚 老 师 姓 名:齐 棋 2 姓 名:付晓会 2 摘 要本次课题(步进电机细分驱动控制)要求使用PWM方法来控制步进电机的驱动和细分旋转,实现1/4细分(4.5°/步)控制盒不细分控制(18°/ 步)。用KEY1控制步进电机正/反(由LED1和数码管指示状态);KEY2控制步进电机正常运行/细分运行(由LED2和数码管指示状态)。利用Quartus完成设计、仿真等工作,最后在SmartEDA实验箱上进行硬件测试达到课题要求。关键词:步进电机 PWM 驱动 细分目 录第一章 课题介绍11.1 课题目的11.2 课题内容11.3 课题原理11.3.1 4相反应式步进电机的工作方式2第二章 硬件电路32.1 步进电机及驱动电路图32.1.1 步进电机细分驱动的工作原理42.2 系统电源电路62.3 按键及LED电路72.4 七段数码管显示电路7第三章 设计步骤93.1 设计步骤93.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拍运行方式正转时线圈通电顺序为:A BCD反转时线圈通电顺序为:ADCB2) 双相4拍运行方式正转时线圈通电顺序为:ABBCCDDA反转时线圈通电顺序为:ADDCCBBA 3)双相8拍运行方式正转时线圈通电顺序为:A AB B BC C CD D DA 反转时线圈通电顺序为:AADDDCCCBBBA第二章 硬件电路2.1 步进电机及驱动电路图图21步进电机及驱动电路图步进电机电路图如图21所示,电路中采用了达林顿管驱动芯片ULN2003A来驱动四相步进电机,只要正确输出I/O控制时序,即可控制步进电机转动。图21中,电阻R59、R62、R65及R68为电机线圈上的限流/保护电阻。使用步进电机电路时,要将电源跳线JP4短接。电路中的COM5(STEP_COM)是对外的逻辑分析仪测试点以及接口。这些信号都以及连接到相应的引脚上,使用时不需要进行连线控制。2.1.1 步进电机细分驱动的工作原理步进电机细分驱动的工作原理是通过对电机励磁绕组电流进行控制(这里绕组电流是呈阶梯波,即电流分成多少个台阶),使步进电机定子的合成磁场成为按细分步距旋转的磁场,从而带动转子转动实现的。当两相邻绕组同时通过不同大小的电流时,各相产生的转矩之和为零的位置就是新的平衡位置,所以通过控制各相的电流可以实现细分控制。要使电机按等步距转动,电流必须符合两个条件: 电流合成矢量旋转时每次变化的角度要均匀; 电流合成矢量的大小或幅值要保持不变。如图22所示的是四相步进电机4细分驱动的原理。设A相通电时磁场方向为0°,如果以A相或B相单独通电时产生的磁场大小为半径(设半径为R)画圆(如图22所示为1/4图),即可算出位置“1”时的两分量,。同理可以算出,。因此,可算出各相在某一时刻的电流值,把各细分点的电流参数记录下来,电机运行时以查表的方式取出数据,即可做到细分控制。如图23所示为四相双拍4细分各绕组电流波形图,由图中也可以看出一般总有两相绕组通电,一相逐渐增大,要相逐渐减小。对应一个步距角,电流可以分为N个台阶,也就是电机位置可以细分为N个小角度,实现N细分,从而可以驱动步进电机平滑运行。本实验是用PWM信号来控制电机的,电机各相电流的大小取决于PWM信号占空比,所以可通过调节PWM信号的占空比来控制电机各相的电流。图22步进电机细分驱动原理图23四相双拍4细分各绕组电流波形图2.2 系统电源电路图24 系统电源电路图主板使用了一块专门的电源板进行供电,电源板所提供的电源有+5V、+12V以及-12V,在主板上设计一个系统电源电路,使用LDO芯片(低压差电源芯片)将5V电源转换得到3.3V系统电源。系统电源电路如图24所示,电源供电由J6和J8连接器输入实验箱主板,5V电源经过LDO芯片U12稳压输出3.3V电源。另外,主板上设计有模拟电路,需要一个5V的模拟电源VCC5A,它通过5V电源经过滤波得到。模拟地和数字地是通过0电阻进行隔离,以降低噪声干扰。主板上的J1J5为电源输出接口,可以向用户板提供+12V、-12V、5V和3.3V电源,但要求负载功率不要过重,也不要与其他电源连接,否则可能导致器件损坏。2.3 按键及LED电路图25 按键及LED电路图主板上具有8个独立按键和8个独立LED,电路如图25所示,电路中低电平表示按键按下。低电平点亮LED的压降约为1.7V。LED点亮时的电流,即7.3mA。电路中电阻RP9、RP10都是起保护作用的。防止FPGA的I/O设为输出且为高电平在按键按下时直接对地短路。核心板上的按键和LED与主板上的一一对应,所用的控制I/O口也相同。本次实验我们使用的按键分别是KEY1、KEY2,LED分别使用的是LED1、LED2。2.4 七段数码管显示电路主板上七段数码管显示电路如图26所示,RP4和RP6是段码上的限流电阻,位码由于电流较大,采用了三极管驱动。从电路可以看出,数码管是共阳极的,当位码驱动信号为0时,对应的数码管才能操作;当断码信号为0时,对应的段码点亮。图26 七段数码管显示电路第三章 设计步骤3.1 设计步骤1)、启动Quartus 建立一个空白工程,设计时可以采用硬件描述语言输入的方式。2)、将设计好的.bdf或.v文件进行综合编译,荐在编译进程中发现错误,则打出并更正错误,直至编译成功为止。3)、选择目标器件并对相应的引脚进行锁定,将未使用的引脚设置为三态输入。3.2 引脚定义第四章 程序清单modulestep(clock,key,dig,seg,led,pwm_out);inputclock; /系统输入时钟input1:0key; /按键输入output1:0led; /LED指示输出output3:0pwm_out; /PWM输出output7:0seg,dig;reg3:0pwm_out_r;reg3:0p_out_r;reg23:0count;/时钟分频计数器reg3:0pwm_count;/PWM内部计数器reg3:0cnt4; /电机步进时序计数器reg15:0duty_cycle; /PWM占空比控制regdir; /电机旋转方向控制regmode; /电机控制模式reg1:0dout1,dout2,dout3,buff; /消抖寄存器wire1:0key_edge; /按键消抖输出wirepwm_clk; /PWM计数时钟wirespeed_clk;/电机转动速度控制wirediv_clk; /消抖动时钟wire8:1dig;reg8:1seg;/时钟分频部分always(posedgeclock)begincount<=count+1'b1;endassigndig=8'b00000000;assignpwm_clk=(count6:0=7'h7f);assigndiv_clk=(count15:0=16'hffff);assignspeed_clk=(count=24'hffffff);/按键消抖部分always(posedgeclock)beginif(div_clk)begindout1<=key;dout2<=dout1;dout3<=dout2;endend/按键边沿检测部分always(posedgeclock)beginbuff<=dout1|dout2|dout3;endassignkey_edge=(dout1|dout2|dout3)&buff;/按键操作部分always(posedgeclock) /按键1beginif(key_edge0)dir<=dir;endalways(posedgeclock) /按键2beginif(key_edge1)mode<=mode;endassignled=mode,dir; /输出LED指示assignpwm_out=mode?pwm_out_r:p_out_r;/输出模块选择always(posedge clock) /数码管显示begincase(led)2'b00:seg=8'hb0;2'b01:seg=8'ha4;2'b10:seg=8'hf9;2'b11:seg=8'hc0;endcaseendalways(posedgeclock)/电机正/反转控制beginif(speed_clk)beginif(dir=1'b1)cnt4<=cnt4+1'b1;elsecnt4<=cnt4-1'b1;endendalways(posedgeclock)/PWM波计数器beginif(pwm_clk)pwm_count<=pwm_count+1'b1;endalways(posedgeclock)beginif(pwm_count3:0<duty_cycle15:12)/PWM A通道pwm_out_r3<=1'b1;elsepwm_out_r3<=1'b0;endalways(posedgeclock)beginif(pwm_count3:0<duty_cycle11:8)/PWM B通道pwm_out_r2<=1'b1;elsepwm_out_r2<=1'b0;endalways(posedgeclock)beginif(pwm_count3:0<duty_cycle7:4)/PWM C通道pwm_out_r1<=1'b1;elsepwm_out_r1<=1'b0;endalways(posedgeclock)beginif(pwm_count3:0<duty_cycle3:0)/PWM D通道pwm_out_r0<=1'b1;elsepwm_out_r0<=1'b0;endalways(posedgeclock)/步进电机控制时序beginif(speed_clk)begincase(cnt41: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;endcaseendendalways(cnt4)begincase(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;endcaseendendmodule第五章 总结姓名:付晓会 学号: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知识进行了巩固与学习,实践是检验真理的唯一标准,只有通过实践才能发现我们在理论中所不能发现的问题。在解决问题的过程中感谢龚老师的悉心教导与耐心讲解。这次实训学到了许多课堂上所不能学到的知识。谢谢老师!附 录附1步进电机及驱动电路附2系统电源电路附3按键及LED电路附4七段数码管显示电路附5引脚分配参考文献1)、Verilog数字系统设计【第2 版】 夏宇闻 编著2)、EDA实验与实践 周立功 等编著