直流电机控制设计-现代控制系统课程设计说明书_第1页
直流电机控制设计-现代控制系统课程设计说明书_第2页
直流电机控制设计-现代控制系统课程设计说明书_第3页
直流电机控制设计-现代控制系统课程设计说明书_第4页
直流电机控制设计-现代控制系统课程设计说明书_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河南科技大学课 程 设 计 说 明 书课程名称 现代电子系统课程设计题 目 直流电机控制设计 学 院 电子信息工程学院班 级 学生姓名 指导教师 日 期 课程设计任务书(指导教师填写)课程设计名称 现代电子系统课程设计 学生姓名 专业班级 设计题目 直流电机控制设计 一、 课程设计目的学习直流电机PWM的FPGA控制;掌握PWM控制的工作原理;掌握GW48_SOPC实验箱的使用方法;了解基于FPGA的电子系统的设计方法。二、 设计内容、技术条件和要求利用PWM控制技术实现直流电机的速度控制。(1)基本要求: a速度调节:4档,数字显示其档位。b能控制电机的旋转方向。c通过红外光电电路测得电机的转速,设计频率计用4位10进制显示电机的转速。(2)发挥部分a设计“去抖动”电路,实现直流电机转速的精确测量。b修改设计,实现直流电机的闭环控制,旋转速度可设置。c其它。三、 时间进度安排布置课题和讲解:1天查阅资料、设计:4天实验:3天撰写报告:2天四、 主要参考文献何小艇 电子系统设计 浙江大学出版社 2008.1潘松 黄继业 EDA技术实用教程 科学出版社 2006.10齐晶晶 现代电子系统设计实验指导书 电工电子实验教学中心 2009.8指导教师签字: 2010年 12月30日摘要利用FPGA可编程芯片及VHDL语言实现了对直编程实现流电机PWM控制器的设计,对直流电机速度进行控制。介绍了用VHDL语言编程实现直流电机PWM控制器的PWM的产生模块、转向调节模块、转速控制模块、去抖动电路模块、电机转速显示等模块功能。采用CPU控制产生PWM信号,一般的PWM信号是通过模拟比较器产生的,比较器的一端按给定的参考电压,另一端接周期性线性增加的锯齿波电压。当锯齿波电压小于参考电压时输出低电平,当锯齿波电压大于参考电压时输出高电平。改变参考电压就可以改变PWM波形中高电平的宽度。若用单片机产生PWM信号波形,需要通过D/A转换器产生锯齿波电压和设置参考电压,通过外接模拟比较器输出PWM波形,因此外围电路比较复杂。FPGA中的数字PWM控制与一般的模拟PWM控制不同,用FPGA产生PWM波形,只需FPGA内部资源就可以实现。用数字比较器代替模拟比较器,数字比较器的一端接设定值计数器输出,另一端接线性递增计数器输出。当线性计数器的计数值小于设定值时输出低电平,当计数值大于设定值时输出高电平。与模拟控制相比,省去了外接的D/A转换器和模拟比较器,FPGA外部连线很少,电路更加简单,便于控制。脉宽调制式细粉驱动电路的关键是脉宽调制,转速的波动随着PWM脉宽细分数的增大而减小。直流电机控制电路主要由三部分组成:(1) FPGA中PWM脉宽调制信号产生电路。(2) FPGA中的工作/停止控制和正/反转方向控制电路。(3) 由功率放大电路和H桥组成的正反转功率驱动电路关键词直流电机、PWM、控制、速度、FPGA目 录一. 任务解析.5二. 系统方案论证.62.1 总体系统方案论证. 62.2 系统原理与结构.62.2.1主要硬件芯片选择.62.2.2系统结构.6三、直流电机控制模块设计.73.1速度控制模块设计73.2 正反转、工作/停止控制计.83.3 闭环控制设计.9四. 仿真调试,硬件功能验证.94.1模块仿真.104.1.1 PWM控制模块仿真.104.1.2 旋转方向控制模块仿真.104.1.3速度档位控制模块仿真.104.2 硬件功能验证与误差分析114.2.1 功能验证.114.2.2 误差分析.11五、设计心得11六、参考文献12附页1(参考程序).13附页2(系统整体原理图).22封底(评语成绩).23一、任务解析本次设计利用PWM控制技术实现直流电机的速度控制。根据题目的要求实现如下功能:a速度调节:4档,数字显示其档位。b能控制电机的旋转方向。c通过红外光电电路测得电机的转速,设计频率计用4位10进制显示电机的转速。d设计“去抖动”电路,实现直流电机转速的精确测量。e修改设计,实现直流电机的闭环控制,旋转速度可设置。 本次设计采用单片大规模FPGA实现的发生的直流电机控制器,其中产生的PWM波具有脉冲中心对称、PWM周期和死区时间可编程等特点,且性能优异,灵活性和可靠性高,用数字比较器代替模拟比较器,数字比较器的一端接设定值计数器的输出,另一端接线性递增计数器输出。与模拟控制相比,省去了外接的DA转换器和模拟比较器,FPGA外部连线很少,电路更加简单。而且通过总线数据或按键控制在系统调整脉宽数及数字比较器的设定值,从而实现对电机转速等参数的灵活控制。该系统以芯片为控制核心,通过按键或上位机设定电机速度和PWM占空比,由FPGA的IO口控制直流电机驱动芯片驱动直流电机的转动。转速的测量由码盘完成,速度显示数码管来实现。本系统是基于实现电机的恒速调节而进行设计的。整个直流电机控制系统分为PWM模块、电机速度控制模块、电机方向控制模块、去抖动电路模块、电机转速显示等模块。直流电机控制原理框图如图l所示。图1:直流电机控制原理框图二、系统方案论证2.1 总体系统方案论证方案一:采用线性控制方式进行直流电动机的控制。此方式一般用于小功率电机平滑转速控制。方案二:采用一般模拟PWM进行电动机的控制。此方案外接有D/A转换器和模拟比较器,外部连线较多。电路复杂、不便于控制,故该方案不理想。方案三:采用FPGA 中的数字PWM进行电动机的控制。该方案省去了外接D/A转换器和模拟比较器,外部连线比较少、电路更加简单、便于控制。 比较以上三种方案第二种方案比较简洁易于操作控制,综合各方面的因素最终选择第二种方案进行设计2.2 系统原理与结构2.2.1主要硬件芯片选择Gw-48-PK2 中FPGA可编程芯片:通过HDL语言与该可编程芯片实现了对直流电机的PWM控制数码管:实现对直流电机的档位、速度、预设速度的直观显示按键:实现了档位调换、速度预设、正反转控制、预设使能控制累加器:实现对红外传感信号的累加计数进而实现测速功能示波器:通过观察方波频率验证显示速度是否正确2.2.2系统结构本次设计系统硬件整体设计系统的整体框图如图2所示。该系统以芯片为控制核心,通过按键或上位机设定电机速度和PwM占空比,由FPGA的IO口控制直流电机驱动芯片驱动直流电机的转动。转速的测量由码盘完成,速度显示数码管来实现。本系统是基于实现电机的恒速调节而进行设计的。系统分以下几个模块:转速调节模块,脉宽调制(PwM)模块,速度检测模块,串行通信模块。 图2:整体硬件系统框图三、直流电机控制模块设计3.1速度控制模块设计本次设计是采用定制的PWM信号对直流电机速度进行控制该模块如图3所示图3:PWM定制模块该PWM模块通过对输入信号a和b两者的信号进行比较最终输出方波信号,该信号作用于开关晶体管的基极上,控制开关管的导通时间t,改变占空比,达到控制目的。整个控制模块有信号发生电路、PWM速度控制电路、电机驱动电路等几部分组成。整个控制模块采用了转速、电流双闭环控制结构,如图4所示。在系统中设置两个调节器,分别调节转速和电流,二者之间实行串级连接,即以转速调节器的输出作为电流调节器的输入,再用电流调节器的输出作为PWM的控制电压。从闭环反馈结构上看,电流调节环在里面,是内环,按典型型系统设计;转速调节环在外面,成为外环,按典型型系统设计。为了获得良好的动、静态品质,调节器均采用PI调节器并对系统进行了校正。检测部分中,采用了霍尔片式电流检测装置对电流环进行检测,转速还则是采用了测速电机进行检测,达到了比较理想的检测效果。主电路部分采用了以GTR为可控开关元件、H桥电路为功率放大电路所构成的电路结构。PWM方式是在大功率开关晶体管的基极上,加上脉冲宽度可调的方波电压,控制开关管的导通时间t,改变占空比,达到控制目的。图4 是直流PWM系统原理框图。这是一个双闭环系统,有电流环和速度环。核心部分是脉冲功率放大器和脉宽调制器。控制部分采用SG1525集成控制器产生两路互补的PWM脉冲波形,通过调节这两路波形的宽度来控制H电路中的GTR通断时间,便能够实现对电机速度的控制。图4: 直流电动机PWM系统原理图3.2 正反转、工作/停止控制模块设计图5为 FPGA直流电机驱动控制电路。电机的正反转是由两个二选一多路选择器进行控制,Z/F键控制选择PWM波形从正端Z进入H桥,还是从负端F 进入H桥,以控制电机的转向。Start键通过与门 控制PWM的输出,实现对电机的工作/停止的控制。H桥电路由大功率晶体管组成,PWM波形通过方向控制电路送到H桥,经功率放大以后驱动电机转动。 图5: FPGA直流电机驱动控制电路3.3 闭环控制设计该模块实现对直流电机速度的设置,控制直流电机按照设定的速度旋转,该模块如图6所示:图6:闭环预设控制模块该模块实现对直流电机旋转速度的预设,通过使能键实现直流电机按照预设的速度进行旋转四. 仿真调试,硬件功能验证4.1模块仿真4.1.1 PWM控制模块仿真仿真结果如图7所示图7该模块通过改变PWM的占空比来实现直流电机速度的控制4.1.2 旋转方向控制模块仿真仿真结果如图8所示图8电机的正反转是由两个二选一多路选择器进行控制,Z/F键控制选择PWM波形从正端Z进入H桥,还是从负端F 进入H桥,以控制电机的转向。4.1.3 速度档位控制模块仿真仿真结果如图9所示图9通过仿真结果可以看出通过按键en转换档位来实现速度的控制。档位0直流电动机停止转动,档位1,2,3,4直流电动机的转速依次不断的提高,实现直流电机的调速功能。4.2 硬件功能验证与误差分析4.2.1 功能验证通过把设计完成的工程下载到GW-48-pk2 中FPGA芯片上对设计所要求达到的功能进行验证,通过验证本次设计只能够完成直流电机速度测试、速度显示、正反转、调档、预设等功能但是由于能力和时间的原因去抖动功能没有实现导致速度测试结果与示波器观察到的结果有一定的差别。最终没有实现该次设计的完整功能 4.2.2 误差分析本次设计在硬件验证这一环节出现一定的误差,这包括两方面的产生的一是设计本身产生的,二是实验系统造成的。1) 设计误差分析由于设计者本身的能力以及在设计中的 逻辑分析中有一定的失误,以及设计的过程中一些能够影响到最终结果的因素没有考虑到造成在硬件验证这一环节出现一定的误差。2) 系统误差分析本次设计中速度测试传感模块由于码盘自身的老化,以及红外灯的放置有一定的问题最终将导致速度测试的不准确性,这是由硬件系统造成的是无法改变的,其次就是示波器观察波形这一测试过程中由于与硬件信号输出端连线存在一定的问题在测试的过程中,可能因为一个小小的问题就可能导致示波器无法正常接收到实验硬件输出的信号,导致实验数据的误差,再者就是实验系统有一定的问题导致验证无法实现,在实验的过程中换了几次实验箱才找到一个合适的,这也是产生误差的一个重要的原因,实验系统本身都有很大的毛病。五、设计心得通过这次课程设计对直流电机的工作原理及相关的控制原理有了进一步的了解,认识到自己所学知识的不足,以及所学知识在实际中的具体应用,进一步加深对所学知识的理解。在这次课程设计中遇到了众多的难题,有好多由于自己对所学知识不太透彻导致设计中遇到好多问题自己无法解决,最后还是在向同学寻求帮助才能够具体的实现其整体功能中的部分。如:直流电机的速度、转向控制、档位选择、等功能,另外的一些功能如:闭环预设、消抖动模块由于能力和时间的原因没有完全的实现,成为本次设计的一大遗憾。在具体到每一个模块的设计中,可能是由于在这方面的知识不足吧,并不是很顺利,例如在直流电动机的的方向控制模块,是怎么控制选通PWM信号通过H桥的不同的晶体管的基极来控制直流电动机的转向的在这一个方面都费了很大的力气才搞懂,再者就是直流电机闭环预设这一模块虽然开始下了很大的功夫但是也没有整出来,最后还是在其他同学的帮助下,借鉴其他同学的设计思想才整出来一个模型,最后才勉强能够实现速度的预设,但是在闭环使能按预设速度运行的时候无法测试到直流电机按预设速度进行旋转的速度,无法实现对预设结果是否正确进行判断。在消抖动模块中,随说是设计的有这一个模块,但是在进行硬件验证的过程中发现测试的速度很不稳定,并且测得的速度和示波器观察到的频率有一定的出入。也就是说,最终没有实现消抖动这一功能。也成为本次设计中的一大遗憾。虽说本次设计由于自己能力有限没有完成所有的功能但是由于是自己亲身参与,其中滋味只有自己知道,通过这次设计不但对自己有了更清楚的认识同时也为今后的工作学习有很大 促进作用,做任何事都要与其他人进行交流,通过不断的交流来完善自己的思想,最后达到自己的目的。六、参考文献1)何小艇 电子线路设计第四版 ,浙江大学出版社,20072)谭会生、瞿遂春,EDA技术综合应用实例与分析,西安电子科技大学出版社,20043)高有堂,EDA技术及应用实践,清华大学出版社,20064)亿特科技,CPLD/FPGA应用系统设计与产品开发,人民邮电出版社,20055)潘松、黄继业,技术实用教程第三版,科学技术出版社,20066)候伯亨、刘凯、顾新,VHDL硬件描述语言与数字逻辑电路设计第三版,西安电子科技大学出版社,20097)王彦,基于FPGA的工程设计与应用M 西安电子科技大学出版社 ,2007附页1:参考程序一:preset_conlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity preset_con isport(clk:in std_logic;en_set:in std_logic;din_tst:in std_logic_vector(7 downto 0);din_set:in std_logic_vector(7 downto 0);set_in:in std_logic_vector(7 downto 0);set_out:buffer std_logic_vector(7 downto 0);end preset_con;architecture con of preset_con issignal tmp_sp:std_logic_vector(7 downto 0);signal a,b,c:std_logic_vector(7 downto 0):=00000000;signal en_alu: std_logic;signal p,d:integer;-signal u_d: std_logic;beginp=6;d=-4;process(en_set,clk)beginif rising_edge(clk) thenif en_set=1 then tmp_sp=din_set;end if;end if;end process;process(en_set)beginif en_set=1 thenif (tmp_sp(7 downto 4)=din_tst(7 downto 4) and (tmp_sp(3 downto 0)=din_tst(3 downto 0) then en_aludin_tst(7 downto 4) or (tmp_sp(7 downto 4)=din_tst(7 downto 4) and tmp_sp(3 downto 0)din_tst(3 downto 0) then en_alu=1; -u_d=1;elsif (tmp_sp(7 downto 4)din_tst(7 downto 4) or(tmp_sp(7 downto 4)=din_tst(7 downto 4) and tmp_sp(3 downto 0)din_tst(3 downto 0)then en_alu=1;-u_d=0;end if;else en_alu=0;end if;end process;process(clk)beginif rising_edge(clk) thena=din_set;b=set_out;c=b;end if;end process;process(en_alu,clk)beginif en_alu=1 thenset_out=set_out+conv_std_logic_vector(p*conv_integer(a-b)+d*conv_integer(a-b-b+c),8);-if rising_edge(clk) then-if en_alu=0 then tmp=00000000;-elsif u_d=1 then-tmp=tmp+1;-elsif u_d=0 then-tmp=tmp-1;-end if;else set_out=set_in;end if;end process;-process(en_set,set_in)-begin-if en_set=1 then-set_out=tmp+set_out; -else set_out=set_in;-end if;-end process;end;二:g_setlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity g_set isport(en:in std_logic;grade:out std_logic_vector(2 downto 0);set_out:out std_logic_vector(7 downto 0);end g_set;architecture set of g_set issignal cnt:std_logic_vector(2 downto 0);beginprocess(en)beginif rising_edge(en) thenif cnt=100 thencnt=000;else cntset_outset_outset_outset_outset_outnull;end case;end process;grade=cnt;end;三:cmplibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cmp isport(a:in std_logic_vector(7 downto 0);b:in std_logic_vector(7 downto 0);pwm_wave:out std_logic);end cmp;architecture cmp of cmp isbeginprocess(a,b)beginif b=a thenpwm_wavea thenpwm_wave=0;end if;end process;end;四:mux21library ieee;use ieee.std_logic_1164.all;entity MUX21 isport(a:in std_logic;b:in std_logic;s:in std_logic;y:out std_logic);end MUX21;architecture rtl of mux21 isbeginy=(s and a) or (not s and b);end;五:cnt5library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt5 isport(clk:in std_logic;d_out:out std_logic_vector(7 downto 0);end cnt5;architecture fre of cnt5 issignal cnt:std_logic_vector(7 downto 0);beginprocess(clk)beginif rising_edge(clk) thencnt=cnt+1;end if;end process;d_out=cnt;end;六:zf_conlibrary ieee;use ieee.std_logic_1164.all;entity zf_con isport(z_f:in std_logic;zf_out:out std_logic);end zf_con;architecture zf of zf_con issignal tmp:std_logic;beginprocess(z_f)beginif rising_edge(z_f) thentmp=not tmp;end if;end process;zf_out=tmp;end;七:e_shakelibrary ieee;use ieee.std_logic_1164.all;entity e_shake isport(clk:in std_logic;in1:in std_logic;out1:out std_logic);end e_shake;architecture one of e_shake issignal q1:std_logic;signal not_q1:std_logic;signal q2:std_logic;beginprocess(clk)beginif rising_edge(clk) thenq1=in1;end if;end process;process(clk,q1)beginif rising_edge(clk) thenq2=q1;end if;end process;not_q1=not q1;out1=not_q1 and q2;end;八:fre_cont10library iee

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论