现代电子系统课程设计直流电机控制设计.doc

上传人:仙人指路1688 文档编号:2987054 上传时间:2023-03-07 格式:DOC 页数:20 大小:1.08MB
返回 下载 相关 举报
现代电子系统课程设计直流电机控制设计.doc_第1页
第1页 / 共20页
现代电子系统课程设计直流电机控制设计.doc_第2页
第2页 / 共20页
现代电子系统课程设计直流电机控制设计.doc_第3页
第3页 / 共20页
现代电子系统课程设计直流电机控制设计.doc_第4页
第4页 / 共20页
现代电子系统课程设计直流电机控制设计.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《现代电子系统课程设计直流电机控制设计.doc》由会员分享,可在线阅读,更多相关《现代电子系统课程设计直流电机控制设计.doc(20页珍藏版)》请在三一办公上搜索。

1、河南科技大学课 程 设 计 说 明 书课程名称 现代电子系统课程设计题 目 直流电机控制设计 学 院 电信学院班 级 电信科071学生姓名 指导教师 日 期 2010年1月9日摘要随着科学技术日益发展,特别是EDA技术的发展,直流电机的应用也越来越来广泛。直流电机有许多有点,如速度容易控制,精度高,效率高等,能在交款的范围内调速,因而在许多工业领域中应用广泛。然而,在许多场合直流电机的实现并不是那么容易,特别是在控制要求精度较高时候,由于PWM数据宽度小,占用内存较多,因此片外数字PWM电路成为了人们的理想选择。在本文中,我们采用FPGA作为直流电机的控制期间,负责信号处理,速度快、可靠性高。

2、主要模块如下:、PWM模块:该模块主要用来驱动,方案论证及具体功能及其实现将在各模块阐述。、速度控制模块:该模块主要用来调节直流电机的转速,方案论证及具体功能及其实现将在各模块阐述。、方向控制模块:该模块主要用来控制直流电机的正传及反转,方案论证及具体功能及其实现将在各模块阐述。、去抖动模块:该模块主要用来消除直流电机的抖动,能够便于观察,方案论证及具体功能及其实现将在各模块阐述。、显示模块:该模块主要用来显示直流电机的转速及档位,方案论证及具体功能及其实现将在各模块阐述。关键词:EDA,PWM,FPGA,速度,方向,去抖动,显示,模块目录一. 任务解析3二. 系统方案论证32.1总体方案与比

3、较论证2.2 系统原理与结构2.3 主要芯片选型三PWM模块63.1 设计方案论证3.1方案的选择3.1 方案的实现四. 速度控制模块设计.84.1方案的论证4.2 方案的实现五. 正反转模块设计84.1方案的论证4.2 方案的实现六显示模块.94.1方案的论证4.2 方案的实现 七总结.107.1 总体仿真7.2 性能测试7.3误差及分析7.4 改善方法7.5 心得体会八参考文献.12九附录.13一任务解析利用PWM控制技术实现直流电机的速度控制。(1)基本要求: a速度调节:4档,数字显示其档位。b能控制电机的旋转方向。c通过红外光电电路测得电机的转速,设计频率计用4位10进制显示电机的转

4、速。(2)发挥部分a设计“去抖动”电路,实现直流电机转速的精确测量。b修改设计,实现直流电机的闭环控制,旋转速度可设置。从上面的要求,我们大概可以看出要设计几个模块以及其大概功能。例如,基本部分中,在PWM模块,锯齿波发生器,10进制都是必须的;关于速度调节,在这个模块中,很明显是通过调节占空比来调节转速,因此比较器是必不可少的;而在方向控制时,双二选一选择器能够实现正反转;在显示模块中,由于要用到频率计,因而分频记的设计也应该有。 二系统方案论证2.1 总体方案与比较论证方案一:使用单片机设计控制的直流电机通过单片机,我们完全能够实现驱动模块,转速模块显示模块等需要的模块。优点:硬件电路简单

5、,所用器件少,且实现各种模块及其功能相对容易,而且调控起来也比较方便。缺点:精度不易满足,产生调控范围小,难以产生较高转速。方案二:基于FPGA控制设计的直流电机通过用VHDL语言编写各个模块,再加以整合,从而实现整体功能。采用此方案,所形成的电机功能稳定性强,精度高,可控范围较大,能形成最大速度较大,更能满足设计任务。比较以上两种方案的优缺点,方案二简洁、灵活、可扩展性好,控制性能、最大值均比方案一强,能完全达到设计要求,故采用第二种方案。2.2系统原理与结构由上图我们可以看出系统工作原理:设定值计数器设置PWM 信号的占空比. 当U /D = 1, 输入CL K2, 使设定值计数器的输出值

6、增加,PWM 占空比增加, 电机转速加快. 当U/D = 0, 输入CL K2, 使设定值计数器的输出值减小, PWM 占空比减小, 电机转速变慢。在CL K0 的作用下, 锯齿波计数器输出周期性线性增加的锯齿波。当计数值小于设定值时, 数字比较器输出低电平; 当计数值大于设定值时, 数字比较器输出高电平, 由此产生周期性的PWM 波形。 旋转方向控制电路控制直流电动机转向及启动停止, 该电路由两个2 选1 选择器组成, Z/F 键控制选择PWM 波形从正端Z 进入H 桥, 还是从负端F 进入H 桥, 以控制电机的转动方向。START 键通过“与”门控制PWM 的输出, 实现对电机的工作停止控

7、制.。H 桥电路由大功率晶体管组成, PWM 波形通过方向控制送到H 桥, 经功率放大以后驱动电机转动。直流电机控制原理框图: 2.3 主要芯片选型 STC89C52单片机:资源丰富,有8K字节可重擦写Flash闪速存储器,256x8字节内部RAM,32个可编程I/O口线,3个16位定时/计数器,8个中断源,可编程串行UART通道低功耗空闲和掉电模式 ;性能优越, 1000次擦写周期,全静态操作:0Hz24MHz。 DAC0800:不需要任何驱动,连好电路即可使用,使用方便,转换频率可达到1MHz。LM084:工作电压范围大,输出电流大,运行速度达到16V/us,相对LM324性能更优越。 T

8、DA2030A:体积小巧,输出功率大,静态电流小(50mA以下),动态电流大(能承受3.5A的电流),负载能力强。三. PWM模块设计3.1设计方案论证该模块主要包括一个计数器和一个锯齿波发生器,因此可以采取多种方案来实现。 方案一: 采用单片机实现一个十进制计数器和锯齿波发生器。我们知道,单片机AT89C51内部具有2个16位定时计数器,定时计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。在定时器工作方式下,在被测时间间隔内,每来一个机器周期,计数器自动加1(使用12 MHz时钟时,每1s加1),这样以机器周期为基准可以用来测量时间间隔。在计数器工作方式下,加至外部引脚

9、的待测信号发生从1到0的跳变时计数器加1。因此,可实现计数功能。我们以前也做过实验,用单片机来产生各种波形,这里就不在赘述单片机产生锯齿波。 方案二:采用FPGA实现计数功能和锯齿波。这样可以节省资源,而且精度高。3.2方案的选择最终,我们选择了方案二。理由如下:l 由于FPGA本身是将大量的逻辑功能继承与一个器件内,集成度要远远高于单片机,能够利用的资源也相对充裕,因此可以较好地完成要求。l 由于对于FPGA的设计,可以直接采用VHDL硬件语言直接进行的,在不同的场合,我们只要对语言进行适当的改动,就可实现具体情况具体应用。因此,利用FPGA来进行开放,其可移植性更强。l 利用FPGA和单片

10、机协调来进行开发,只要利用较少的器件就可以实现系统的功能。3.3方案的实现:CNT5是一个5位二进制 计数器,作为脉冲宽度计数器;DECD是一个转速控制模块,脉冲宽度计数器在CLK5的激励下输出是从0开始的逐渐增大的锯齿波。CNT5的仿真如下: 四.速度控制模块设计4.1 方案论证该模块主要为一个数字比较器。刚才在三模块中,我们应经知道了有两路 输出,他们将同时加载上面的数字比较器上,当脉宽计数器输出值小于DECD的规定值时,比较器输出低电平;当脉宽计数器输出值大于DECD的规定值时,比较器输出低电平。改变 DECD的输出值就等于改变PWM的输出信号的占空比,也等于改变了周期,这样就实现了速度

11、调控4.2方案实现 仿真结果如下五.正反转模块设计5.1方案论证该模块其实就是一个双二选一,控制正反转。如下图,当输入为1时,两个MUX21都选a,但下面那个MUX21的a却是接地的,因此只有上面的MUX21输出,此时为正转;而转速由上面的比较器输出信号控制。当输入为0时,两个MUX21,都选b,但上面那个b缺失却是接地的,因此只有下面的MUX21输出,此时为反转;而转速由上面的比较器输出信号控制。5.2方案实现仿真如下:六.显示模块设计6.1 方案论证显示模块由一个分频计,一个频率计构成用分频计将4hz的输入信号分成1HZ,而频率计的另一个输入端是去抖电路的输出,可以通过数码管显示转速,通过

12、示波器来检验转速另外,该转速时通过红外光电路测得。红外光电路这里就不在赘述。6.2方案实现仿真如下:七. 总结7.1总体仿真将以上介绍的几个模块进行整合,编写顶层文件,然后进行总体编译仿真,仿真结果如下图: 7.2性能测试速度测试:最高速度82转/s,最低速度20转每秒。调速测试:将速度分为4当-0,1,2,3,呈递增趋势。正反转测试:当按下按钮时,显示1,即正转;再按一下则反转。7.3误差及其分析误差:数码管上显示82转/s,而示波器上却显示90转/s分析:可能是由于箱子摩擦力较大,红外线测出的转速与信号产生的转速不同误差:调速时,1档和2档间的速度变化不是很明显。分析:可能是硬件问题,也可

13、能是编程实现时出了差错。7.4改善方法 换其他的实验箱发现效果有明显改善,最大速度明显提高。修改速度控制模块部分程序,结果在换挡时,转速变化较原来明显。7.5心得体会 经过将近2周的电子系统课程设计,我收获了很多很多,不仅是知识层面,而且还有精神层面。 在一开始听说要进行课程设计,我心里有点浮躁,毕竟离考研没多少天了。于是和寝室室友讨论选择哪个题目比较简单,最后选择了直流电机。从查资料到进实验室这几天里,心里一直在矛盾,最终下决心要吧课程设计做好。进实验室后才发现,现实是残酷的,面对一次又一次的失败,备受打击。于是我向其他同学请教,一步步改进,终于把基本功能实现了。在这个过程中,收益匪浅。首先

14、,我的个方面的技能得到了大幅度提高,如VHDL语言的应用,软件的使用更加熟练,硬件调试更加效率,查找错误的速度有了较大幅度的提高。其次,我对工程和模块的理解更加深刻。当看见一个任务时,应当首先想想这个工程应该由多少个模块实现,以及各模块之间有什么联系都要搞清楚。在编写完每个模块后,最好不要急于仿真,等整体完成之后,进行总体仿真,看看错误时出现在哪个模块,这样提高了很多效率。最后,我对硬件的使用跟家熟练。例如,以前总是因为频率的选择不当而导致结果出不来,现在知道了如何选择最佳频率。此外,这次课程设计我们用到了示波器,我发现示波器是一个十分好的检验辅助工具,它往往能给人意想不到的效果,以后应当加强

15、对示波器的了解及使用。 同时,我还发现了自己的许多不足之处。首先,我只完成了基本功能,发展部分没有做出来。课程设计结束后,我请教了其他同学,大概知道了闭环部分如何实现。其次,我对于书本的理论知识掌握的还不扎实,在理论实际结合方面更是有待提高。 总之,通过这次课程设计,我学到了很多,对以后的生活学习必将有莫大的帮助。八. 参考文献1 曹晰燕、周凤臣,EDA技术实验与课程设计,清华大学出版社,20052 潘松、黄继业,EDA技术与VHDL,清华大学出版社,2005;3 谭会生,EDA技术应用实例,西安电子科技大学出版社,20074 黄仁欣,EDA实用教程,清华大学出版社,2007九. 附录 DEC

16、D:程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DECD ISPORT(CLK: IN STD_LOGIC;DSPY:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);D:OUT STD_LOGIC_VECTOR(3 DOWNTO 0 );END;ARCHITECTURE ONE OF DECD ISSIGNAL CQ:STD_LOGIC_VECTOR(1 DOWNTO 0 );BEGINPROCESS(CQ)BEGIN CASE CQ ISWHEN 00=D

17、DDDNULL;END CASE;END PROCESS;PROCESS(CLK)BEGINIF CLKEVENT AND CLK=1 THEN CQ=CQ+1;END IF;END PROCESS;DSPY=CQ;END;MUNX21 程序library 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) o

18、r (not s and b);end;CNT10 程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fre_cnt10 isport(clk_1hz:in std_logic;freq:in std_logic;d_out0:out std_logic_vector(3 downto 0);d_out1:out std_logic_vector(3 downto 0);end fre_cnt10;architecture fre of fre_cnt10 issignal clk

19、_2hz:std_logic;signal clr,load,c_en:std_logic;signal cnt0,cnt1:std_logic_vector(3 downto 0);beginprocess(clk_1hz,clk_2hz,load)beginif rising_edge(clk_1hz) thenclk_2hz=not clk_2hz;end if;load=not clk_2hz;end process;process(clk_1hz,clr,clk_2hz)beginif clk_1hz=0 and clk_2hz=0 then clr=1;else clr=0;end

20、 if;end process;process(clk_2hz,freq,clr)beginif clr=1 then cnt00);elsif clk_2hz=1 thenif rising_edge(freq) thenif cnt0=1001 then cnt0=0000;c_en=1;else cnt0=cnt0+1;c_en=0;end if;end if;end if;end process;process(clk_2hz,clr,c_en)beginif clr=1 then cnt10);elsif clk_2hz=1 thenif rising_edge(c_en) then

21、if cnt1=1001 then cnt1=0000;else cnt1=cnt1+1;end if;end if;end if;end process;process(load,cnt0)beginif rising_edge(load) thend_out0=cnt0;d_out1=cnt1;end if;end process;end;CPM3程序:INCLUDE lpm_compare.inc;SUBDESIGN CMP3(dataa3.0 : INPUT;datab3.0 : INPUT;AgB : OUTPUT;)VARIABLElpm_compare_component : l

22、pm_compare WITH (LPM_REPRESENTATION = UNSIGNED,LPM_TYPE = LPM_COMPARE,LPM_WIDTH = 4);BEGINAgB = lpm_compare_component.AgB;lpm_compare_component.dataa3.0 = dataa3.0;lpm_compare_component.datab3.0 = datab3.0;END;CNT5程序INCLUDE lpm_counter.inc;SUBDESIGN CNT5(clock : INPUT;q3.0 : OUTPUT;)VARIABLElpm_counter_component : lpm_counter WITH (LPM_DIRECTION = UP,LPM_PORT_UPDOWN = PORT_UNUSED,LPM_TYPE = LPM_COUNTER,LPM_WIDTH = 4);BEGINq3.0 = lpm_counter_component.q3.0;lpm_counter_component.clock = clock;END;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号