《直流电机PWM控制.doc》由会员分享,可在线阅读,更多相关《直流电机PWM控制.doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date直流电机PWM控制河南科技大学河南科技大学课 程 设 计 说 明 书课程名称 现代电子系统课程设计题 目 直流电机控制设计学 院 班 级 学生姓名 指导教师 日 期 课程设计任务书(指导教师填写)课程设计名称 现代电子系统课程设计 学生姓名 专业班级 设计题目 直流电机控制设计 一、 课程设计目的学习直流电机PWM的FPGA控制;掌握PWM控制的工作原理;掌握GW48
2、_SOPC实验箱的使用方法;了解基于FPGA的电子系统的设计方法。二、 设计内容、技术条件和要求利用PWM控制技术实现直流电机的速度控制。(1)基本要求: a速度调节:不少于4档,可实现加减档控制。b能控制电机的旋转方向。c通过红外光电电路测得电机的转速,设计频率计用4位10进制显示电机的转速。(2)发挥部分a设计“去抖动”电路,实现直流电机转速的精确测量。b修改设计,实现直流电机的闭环控制,旋转速度可设置。c其它。三、 时间进度安排布置课题和讲解:1天 查阅资料、设计:4天实验:3天 撰写报告:2天四、 主要参考文献何小艇 电子系统设计 浙江大学出版社 2008.1潘松 黄继业 EDA技术实
3、用教程 科学出版社 2006.10齐晶晶 现代电子系统设计实验指导书 电工电子实验教学中心 2009.8指导教师签字: 2013年 11月21日 -摘 要近年来,随着科技的进步,直流电机得到了越来越广泛的应用,直流电机具有优良的调速特性,调速平滑、方便、调速范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速起动、制动和反转,需要满足生产过程自动化系统各种不同的特殊要求,从而对直流电机提出了较高的要求,改变电枢回路电阻调速、改变电压调速等技术已远远不能满足现代科技的要求,这时通过PWM(脉冲宽度调制技术)方式控制直流电机调速的方法就应运而生。在本文中,我们设计了一个直流电机控制的电路
4、。本设计以Quartus2软件为工具,利用FPGA可编程芯片及VHDL语言编程实现直流电机PWM控制的设计。该设计可以实现直流电机的加速、减速以及电机的正传和反转,并且可以调整电机的转速,还可以方便的读出电机转速的大小,能够很方便的实现电机的自动控制。总体方案:锯齿波发生器和设定值计数器经过数字比较器产生PWM波形;设定计数器设置PWM信号的占空比控制电机转速;设计2选1多路选择器控制电机的旋转方向。直流电机PWM的PFGA控制的主要组成部分:1、 预置转速模块:通过一个ROM控制存储器和D触发器组成的微程序程制器设置直流电机的四个档位。2、 PWM信号产生电路:产生PWM波,并且控制直流电机
5、转速。3、正反向控制模块:用2选1数据选择器控制直流电机PWM信号的输入,以控制电机的旋转方向。4、消抖电路:通过两个维持阻塞D触发器实现消抖,以便观察。5、显示模块:通过LED灯和数码管显示直流电机的档位、预置速度和实际速度关键词:FPGA,PWM,VHDL,直流电机,控制目录一任务解析- 3 -1、任务与要求- 3 -2、系统原理框图- 3 -二系统方案论证- 4 -2.1 总体方案与比较论证- 4 -2.2系统原理与结构- 4 -2.2.1主要芯片选型- 4 -2.2.2系统结构- 5 -2.2.3 FPGA直流电机驱动控制- 5 -三. 预置转速模块设计- 6 -3.1方案论证- 6
6、-四.PWM模块设计- 7 -4.1设计方案论证- 7 -4.3 仿真波形- 8 -五.正反转模块设计- 8 -5.1 该模块通过两个2选1多路选择器组成。- 8 -5.3 仿真波形图- 9 -六消抖模块设计- 9 -6.1方案论证- 9 -6.3 仿真波形图- 10 -七. 显示模块设计- 10 -7.1方案论证- 10 -7.2方案实施- 11 -7.3 仿真波形图- 11 -八.总结- 11 -8.1测试性能概览- 11 -8.2误差分析- 12 -8.3心得体会- 12 -九 参考文献- 13 -附录1 ROM内容及参考程序:- 14 -附录2 系统整体原理图:- 18 -一任务解析1
7、、任务与要求 利用PWM控制技术实现直流电机的速度控制。(1)基本要求: a速度调节:不少于4档,可实现加减档控制。b能控制电机的旋转方向。c通过红外光电电路测得电机的转速,设计频率计用4位10进制显示电机的转速。(2)发挥部分a设计“去抖动”电路,实现直流电机转速的精确测量。b修改设计,实现直流电机的闭环控制,旋转速度可设置。c其它。2、系统原理框图二系统方案论证2.1 总体方案与比较论证方案一:采用线性控制方式进行直流电机的控制此方案一般用于小功率电机平滑转速控制,而大功率电机高效控制时,则常使用PWM控制方式。方案二:采用单片机产生PWM信号波形进行直流电机的控制。此方案PWM信号是通过
8、模拟比较器产生的,需要通过D/A转换器产生锯齿波电压和设置参考电压,通过外接模拟比较器输出PWM波形,因此外围电路比较复杂。方案三:采用FPGA中的数字PWM进行直流电机的控制。此方案用数字比较器代替模拟比较器,省去了外接的D/A转换器和模拟比较器,FPGA外部连线很少、电路更加简单、便于控制。由于FPGA本身是将大量的逻辑功能集成到一个器件内,集成度要远远高于单片机,能利用的资源也相对充裕,而且可移植性更强,可以较好地完成要求。综上,选择方案三。2.2系统原理与结构2.2.1主要芯片选型Gw-48-PK2中FPGA可编程芯片:通过VHDL语言与该可编程芯片实现了对直流电机的PWM控制。数码管
9、、LED灯:实现对直流电机的档位、实际速度和预置速度的显示。按键:实现档位的调换、速度预置、正反转控制和预设使能控制。累加器:实现对红外传感信号的累加计数,进而实现测速功能2.2.2系统结构直流电机控制结构框图2.2.3 FPGA直流电机驱动控制FPGA直流电机驱动控制电路设定值计数器设置PWM信号的占空比。当U/D=1,输入CLK2,使设定值计数器的输出值增加,PWM的占空比增加,电机转速加快;当U/D=0,输入CLK2,使设定值计数器的输出值减小,PWM的占空比减小,电机转速变慢。在CLK0的作用下,锯齿波计数器输出周期线性增加的锯齿波。当计数值小于设定值时,数字比较器输出低电平;当数值大
10、于设定值时,数值比较器输出高电平,由此产生周期性的PWM波形。旋转方向控制电路控制直流电机转向和启/停,该电路由2选1多路选择器组成,Z/F键控制选择PWM波形从正端Z进入H桥,还是从反端进入H桥,以控制电机的旋转方向。START键通过与门控制PWM的输出,实现对电机的工作/停止控制。H桥电路由大功率晶体管组成,PWM波形通过方向控制电路送到H桥,经过过滤放大以后驱动电机转动。三. 预置转速模块设计3.1方案论证通过为程序控制器设计电机四个档位的转速。微程序控制器主要由控制存储器CS、微地址产生器和微控制器三大部分组成。其实现过程就是把控制子系统中的8个预置转速(正/反)状态要输出的控制信号以
11、及该状态的转移去向(U/D)安一定的格式编写成微指令,将他们保存在存储器。运行时,按预定的要求逐条取出这些预置转速微指令,从而实现控制电机转速过程。3.2 方案的实现四.PWM模块设计4.1设计方案论证该模块由三部分组成:设定值计数器、锯齿波发生器和数字比较器。用FPGA产生PWM波形,只需FPGA内部资源就可以实现。用数字比较器代替模拟比较器,数字比较器的一端接设定计数器输出,另一端接线性递增计数器(锯齿波发生器)输出。当线性计数器的值小于设定值时输出低电平,当计数器大于设定值时输出高电平。脉宽调制式细分驱动电路的关键是脉冲调制,转速的波动随着PWM脉宽细分数的增大而减小。4.2 方案实施4
12、.3 仿真波形五.正反转模块设计5.1 该模块通过两个2选1多路选择器组成。当把PWM信号选通到正转的H桥输入端时,电机正转(但同时要保证反转输入端接入低电平);反之亦然。在数字电路设计中,进行选通设计用到最多的是二选一数据选择器。把PWM信号接到两个二选一选择器的互逆的端口上,就可以保证一次只有一个H桥端口有PWM信号输入;另一对互逆的端口上接低电平,则又保证了不工作的H桥端口始终为低电平。5.2 方案实施5.3 仿真波形图六消抖模块设计6.1方案论证红外检测电路产生的脉冲信号在加到频率计输入端时,在开始的一段短暂的时间里,会产生抖动,所以要设计一个消抖电路去除抖动。输入信号开始会有一段抖动
13、,然后频率趋于稳定。很明显,抖动的那一段信号的周期相对于稳定后的信号来说很短。我们就可以通过两个D触发器滤除抖动的那一段信号。假设第一个D触发器的输出为D1,第二个D触发器的输出为D2。当CLK上升沿到来时,若这时的输入信号为高电平,那么输出的D1就为1,D1经过一个非门变成0,D1的非与D2相与,输出是0。第二个CLK上升沿到来时,若输入信号还为高电平,则这时D1为1,D2为1,D1的非与D2相与,输出还是0。只有当CLK上升沿到来,输入信号变成低电平时,这时D1变成0,D2为1,D1的非与D2相与后,输出才为1。由此分析,当CLK频率选取合适时,在一个输入信号高电平到来时,至少需要两个CL
14、K周期才能输出高电平,而抖动的那一段信号由于周期太短,满足不了这个要求,因此抖动信号就不会输出,这样就完成了消抖功能。6.2方案实施6.3 仿真波形图七. 显示模块设计7.1方案论证本次设计的显示模块有三部分:电机转速级别显示、预置电机转速显示和实际电机转速显示。电机转速级别显示是通过PWM模块的一个输出连接两个LED灯,观察LED灯亮灭情况分别显示1、2、3和4档位;预置电机转速显示是通过预置转速模块ROM控制存储器的输出连接四个数码管,显示四个档位的预置转速。实际电机转速显示模块由一个分频计和一个频率计构成,用分频计将4HZ的输入信号分成1HZ作为一端输入,另一端输入是消抖电路的输出,可以
15、通过数码管显示实际转速。其原理就是检测在一秒时间内红外电路产生的脉冲的个数,即检验在一秒时间内电机转动了多少圈7.2方案实施7.3 仿真波形图八.总结8.1测试性能概览本次使用的直流电机最高转速为4500转/分。l 速度测试:档位(挡)预置转速(转/分)实际转速(转/分)01200 103212100 198523300 320834500 4370l 正反转测试:按下按键,高电平正转;再按按键,低电平反转。8.2误差分析此次设计中,电机的实际转速未能达到预置转速,原因主要包括两个方面: 设计造成的误差:预置转速模块的设计存在缺陷,ROM控制存储器把预置速度定死,不能够随意通过按键控制预置转速
16、;再者是设计中未设计闭环控制模块,也可导致转速的误差。 硬件系统造成的误差:红外传感模块的问题将导致速度测试的不准确性;另外就是电机自身存在摩擦无法避免造成实际转速减慢。8.3心得体会此次课程设计是基于FPGA产生PWM脉宽调制信号控制直流电机,基本的设计要求已经实现,发挥部分未能圆满完成。通过这次课程设计我收获了许多,不仅仅是知识方面,从思想上也认识了自己的不足,端正了某些方面的态度。本次课程设计维持两周,第一周主要是负责资料的收集和整理,第二周是到实验室验证功能。由于之前自己一直忙于找工作,对课程设计的精力投入的不多,前期没有好好准备,导致没能在验收前,圆满实现各个模块的功能。进实验后,遇
17、到了很多难题,而且自己并不能一一解决,后来请教了同学,在同学的帮助下一步步改进,顺利的实现了PWM模块、正反转模块和频率计模块。消抖模块自己查阅了书籍,最终利用两个D触发器实现其功能。最后考虑预置转速模块,由于自己所学的理论基础不扎实,对知识点的理解不透彻,想了很久也没能想出来,后来经过同学的提醒,自己联系了之前所做的实验,决定用设计微程序控制器的方法来实现预置转速功能。因为自己此前浪费了一些时间,剩下调预置转速模块的时间不足,所以未能圆满的调试出来,还有闭环控制模块也没能够实现。通过这次课程设计,我能更熟练的使用软件和调试硬件,对FPGA有了更进一步的认识和了解。课程设计考察的知识是多方面的
18、。首先自己要重视课程设计,对自己所要做的设计题目好好准备资料和程序,这样在进实验室后才不会忙乱;其次,注重知识的积累。其实课程设计中考察的知识点很多都是我们以前学过的,例如这次课程设计中频率计和二选一数据选择器等,都是之前学过而且做过实验的,如果平时不收集、整理和回顾所学知识,等用上的时候就要重新学习,无形中降低了效率。还有对于自己不能够思考出来的问题,要多向他人请教,然后消化吸收。最后,在平时进实验室多多练习,把理论的东西转化成实践能力。虽然这次课程设计没能够完成所有设计指标,但是能从过程中认识自身的不足,这将对往后的学习有很大的促进作用。九 参考文献【1】何晓艇 电子系统设计第四版, 浙江
19、大学出版社【2】潘松、 黄继业EDA技术使用教程第三版,科学出版社【3】侯伯亨、 刘凯 、顾新VHDL硬件描述语言与数字逻辑电路设计第三版,西安电子科技大学出版社【4】曹晰燕 、周凤臣EDA技术试验与课程设计,清华大学出版社附录1 ROM内容及参考程序:addr+000+001+010+01100001001000000000000001000010000000000100110011000000000100100010100000000011+100+101+110+111000100100000000010000100001000000001010011001100000000110010
20、0010100000000111一 decd程序library ieee ;use ieee.std_logic_1164.all ;use ieee.std_logic_unsigned.all;entity decd is port ( clk2,ud,en: in std_logic ; dw : out std_logic_vector( 1 downto 0 ) ; sp : out std_logic_vector (3 downto 0 ) ;end ;architecture one of decd is signal xh : std_logic_vector ( 1 dow
21、nto 0 ) ; begin process( xh ) begin case xh is when 00 = sp sp sp sp null ; end case ; end process ; process (clk2 ) begin if en=1 then if clk2event and clk2 = 1 then if ud=1 then if xh =11 then xh = 00 ; else xh = xh +1 ; end if ; else if xh =00 then xh = 11 ; else xh = xh -1 ; end if ; end if; end
22、 if; end if; end process ; dw = xh ;end ;二 CNT5程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT5 ISPORT(CLK:IN STD_LOGIC;AA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END CNT5;ARCHITECTURE FRE OF CNT5 ISSIGNAL CNT:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF CLKEV
23、ENT AND CLK =1 THEN CNT=CNT+1;END IF;END PROCESS;AA=CNT(3 DOWNTO 0);END;三 CMP程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CMP ISPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);AGB:OUT STD_LOGIC);END CMP;ARCHITECTURE C OF CMP ISBEGINPROCES
24、S(A,B)BEGINIF B=A THENAGBA THENAGB=0;END IF;END PROCESS;END;四 mux程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mux IS PORT (A,B,S,START:IN STD_LOGIC; Y:OUT STD_LOGIC);END ENTITY mux;ARCHITECTURE one OF mux IS BEGIN PROCESS(START,A,B,S) BEGIN IF START=0 THEN Y=0; E
25、LSIF S=0 THEN Y=A; ELSE Y=B; END IF; END PROCESS;END;五 fenpinqi程序Library ieee;Use ieee.std_logic_unsigned.all;Use ieee.std_logic_1164.all;Entity fenpinqi isPort ( clkk: in std_logic; cnt_en: out std_logic; load: out std_logic; rst_cnt: out std_logic);end fenpinqi;architecture behav of fenpinqi issignal div2clk :std_logic;begin process(clkk) begin if clkkevent and clkk=1 thendiv2clk=not div2clk; end if;end process;process(clkk,div2clk)beginif clkk=0 and div2clk=0 then rst_cnt=1;else rst_cnt=0;end if;end process;load=not div2clk;cnt_en=div2clk;end behav;附录2 系统整体原理图:评 语 成绩: