您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 基于EDA的直流电机测速
EDA实验综合应用设计(报告)(课程设计)题目直流电动机测速实验学院专业通信工程班级通信1101B学生姓名学号1134140141/1134140107指导教师李平时间直流电动机测速实验【摘要】:本文章介绍的是以EP1C6试验箱为核心的直流电机测速系统。系统已EP1C6作为驱动芯片,通过控制占空比来实现直流电机的驱动及其速度的调节,通过按键来个定的直流电机转速的信息,并由霍尔元件感应测试其速度,经数码管显示出来。本设计采用vhdl语言,使用quartus进行编程。最终实现直流电机的控制。【关键字】EDA;直流电机;PWM;VHDL引言工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机,电动机,机床主轴等旋转设备的实验运转和控制中,常需要分时或连续测量,显示其转速及瞬间速度。同时随着社会的发展,各种智能化的产品日益走人寻常百姓家。为了实现产品的便携性、低成品及对电源的限制,小型直流电机的应用以及电机转速的精确控制的需求相当广泛。整个系统以EP1C6实验箱为核心,通过按键输入一个转速,通过调整占空比来实现转速向预设的值靠近。一、设计要求1.用数码管显示直流电机转速2.控制直流电机转速3.控制直流电机保持在一个恒定值二、设计目的a)掌握直流电机的工作原理。b)了解开关型霍尔传感器的工作原理和使用方法。c)掌握电机测速的原理。三、设计方案原理1、总体方案本设计分为直流电机测速控制模块、直流电机测速有时钟是能的十进制计数器模块、译码显示输出模块、PWM产生控制模块2、分模块介绍(1)模块一:直流电机测速控制模块通过把1M时钟信号分频为1hz信号,当clk6时,产生6秒钟计数,当clk=6时锁存信号=1,clk=7时清0信号=1。每一个模块要求先用文字叙述一下,然后给出对应的代码,最后给出该模块的RTL电路图。模块一:实验原理图(2)模块二:直流电机测速有时钟使能的十进制计数器模块每当有一个时钟信号CLK'EVENTANDCLK='1'时cqi加1,当cqi=9时,在加1,cqi=0,从而达到10进制计数。每当出现1111时再加1,就变为0000,同时进位信号为1.模块二:实验原理图模块三:译码显示输出模块译码显示模块分为位选信号和8位数码管显示信号。位选信号为3位有8种组合,通过000到111来选不同位,8位数码管显示信号有8位分别定义1~9的显示模块三:实验原理图(3)模块四:pwm产生控制模块程序把占空比为1000分频,预先设定了占空比为500.通过控制占空比从而达到控制直流电机转速的目的,在这个模块中我们让数码管显示的速度DOUT与一个预先设定的速度DOUT1比较如果DOUTDOUI,那么占空比加1,如果大于,占空比减1,如果等于,占空比不变。模块四:实验原理图3、总体设计框图PIN_29VCCmotorINPUTPIN_28VCCclkINPUTPIN_58VCCCLKKEYINPUTPIN_57VCCCLRKEYINPUTPIN_43PIN_44PIN_45sel[2..0]OUTPUTPIN_21PIN_23PIN_24PIN_37PIN_38PIN_39PIN_41PIN_42ledag[7..0]OUTPUTPIN_14MOTOR_AOUTPUTCLKCLRENACQ[3..0]CARRY_OUTCNT10instCLKCLRENACQ[3..0]CARRY_OUTCNT10inst1CLKCLRENACQ[3..0]CARRY_OUTCNT10inst2CLKCLRENACQ[3..0]CARRY_OUTCNT10inst3Clkenaclrloadteltclinst4LOADDIN[15..0]DOUT[15..0]REG32Binst6CLKCLRCQ[3..0]CARRY_OUTcontrolinst8CLKCLRCQ[3..0]CARRY_OUTcontrolinst9CLKCLRCQ[3..0]CARRY_OUTcontrolinst10CLKCLRCQ[3..0]CARRY_OUTcontrolinst11in7[3..0]in6[3..0]in5[3..0]in4[3..0]in3[3..0]in2[3..0]in1[3..0]in0[3..0]clklout7[7..0]SEL[2..0]displayinst14clockDOUT[15..0]DOUT1[15..0]pwm_outPWMinst15dout[3..0]dout[7..4]dout[11..8]dout[15..12]in[15..0]dout[15..0]IN1[3..0]IN1[7..4]IN1[11..8]IN1[15..12]IN1[15..12]IN1[11..8]IN1[7..4]IN1[3..0]in[15..0]IN1[15..0]in[15..12]in[11..8]in[7..4]in[3..0]四、设计过程介绍1、设计过程1、测速显示当电机旋转时,带动转盘是的磁钢片一起旋转,当磁钢片旋转到霍尔器件的上方时,可以导致霍尔器件的输出端高电平变为低电平。当磁钢片转过霍尔器件上方后,霍尔器件的输出端又恢复高电平输出。这样电机每旋转一周,则会使霍尔器件的输出端产生一个低脉冲,我们就可以通过检测单位时间内霍尔器件输出端低脉冲的个数来推算出直流电机在单位时间内的转速。电机的转速通常是指每分钟电机的转速,也就是单位为rpm,实际测量过程中,为了减少转速刷新的时间,通常都是5~10秒刷新一次。如果每6秒钟刷新一次,那么相当于只记录了6秒钟内的电机转数,把记录的数据乘10即得到一分钟的转速。最后将这个数据在数码管上显示出来。为了使显示的数据能够在数码管是显示稳定,在这个数据的输出时加入了一个16位的锁存器,把锁存的数据送给数码管显示,这样就来会因为在计数过程中,数据的变化而使数码管显示不断变化。2、pwm产生控制通过控制占空比,从而达到控制直流电机控制。用按键先预设一个速度值,让电动机的实际转速与预设值比较,如果不相等,就调节占空比使之达到预设值。2、设计过程中出现的几个问题及解决方法(1)问题一不了解直流电机转动原理解决办法通过在图书馆资料学习以及不懂得地方问老师(2)问题二不会控制直流电机转速解决办法通过学习了解了控制占空比就可以控制直流电机转速五、调试过程介绍1、调试过程把程序下载到实验箱,观察实验现象,如果不对就修改程序,重复前面的操作,直到成功2、调试过程中出现的问题及其解决方法(1)问题一数码管显示的速度跳动很大解决方法通过把占空比从100分频调到1000,这样占空比没变化1速度的变化就会减少(2)问题二显示的速度在你预设的速度间波动很大解决方法由于直流电机测速采用的是6秒钟计数,所以要把控制信号的时钟频率也变为6秒,通过分频把1M时钟变为6秒,让计数频率与控制频率一致六、总结通过了这次课程设计,学会了vhdl语言,虽然以前也学过EDA,但是没有深入了解vldl语言,对编程更是不行,通过这三个星期的学习,能熟练的读懂程序,并且还具备了一些VHDL编程能力以及VHDL硬件描述语言的思维方法。在这次试验中我们这组做了一个直流电机测速及其控制。从一开始什么都不懂,到最后自己不仅能修改程序,在系统的设计方面也有了自己的一些想法。这次课程设计基本还算成功。为什么说基本呢,是因为要求的功能都能实现。唯一不足的也是实验未完成的地方就是按键消抖部分。其实我也尝试消抖但没成功,这是最大的缺点。没有消抖,按键按一下就会跳动很大。如果消抖解决了那么我们的课题就非常成功了,总之在这次课程设计学到了很多东西,也得到了老师很多的帮助与指导,我对eda技术也有了更多的兴趣,希望还能设计,接受下一次挑战。参考文献:[1]潘松,黄继业.EDA技术与VHDL(第2版).北京:清华大学出版社.2007年1月[2]潘松,黄继业.EDA技术实用教程(第3版).科学出版社[3]王振红.VHDL数字电路设计与应用实践教程.北京:机械工业出版社.2003年6月[4]包明.EDA技术与可编程逻辑器件的应用.北京:北京航空航天大学出版社.2006年8月[5]江国强.EDA技术习题与实验.哈尔滨:哈尔滨工程大学电子工业出版社.2005年1月[6]刘昌华.数字逻辑EDA设计与实践.北京:国防工业出版社.2007年10月[7]江思敏.VHDL数字电路及系统设计.北京:机械工业出版社.2006年8月[8]王道宪.VHDL电路设计技术.北京:国防工业出版社.2004年1月[9]廖常初.可编程序控制器应用技术(第三版)[M].重庆:重庆大学出版社.2000年[10]俞一鸣.Altera可编程逻辑器件的应用与设计[M].北京:机械工业出版社.2007年[11]周景润.基于Quartus的FPGA数字系统设计[M].北京:电子工业出版社.2007年[12]孟庆辉.EDA技术实用教程[M].北京:国防工业出版社.2008年附录二源程序直流电机测速控制产生libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;-------------------------------------------------------entityteltclisport(Clk:instd_logic;--时钟输入1Mhzena:outstd_logic;--允许计数clr:outstd_logic;--计数器清零信号产生load:outstd_logic--锁存、显示输出允许);endteltcl;------------------------------------------------------architecturebehaveofteltclissignalclk1hz:std_logic;--1HZ时钟信号signalcount:std_logic_vector(2downto0);--6秒计数signalclr1:std_logic;--清零信号signalena1:std_logic;--允许计数信号signalload1:std_logic;--允许计数信号signalcq1,cq2,cq3,cq4:INTEGERRANGE0TO15;--计数数据beginprocess(clk)--1HZ信号产生variablecnttemp:INTEGERRANGE0TO999999;beginIFclk='1'ANDclk'eventTHENIFcnttemp=999999THENcnttemp:=0;ELSEIFcnttemp500000THENclk1hz='1';ELSEclk1hz='0';ENDIF;cnttemp:=cnttemp+1;ENDIF;endif;endprocess;process(Clk1hz)--6秒计数beginif(Clk1hz'eventandClk1hz='1')thencount=count+1;ifcount6thenena1='1';load1='0';clr1='0';elsifcount=6thenload1='1';ena1='0';clr1='0';elsifcount=7thenena1='0';load1='0';clr1='1';endif;endif;ena=ena1;load=load1;clr=clr1;endprocess;endbehave;直流电机测速有时钟使能的十进制计数器产生LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYCNT10ISPORT(CLK:INSTD_LOGIC;--计数时钟信号CLR:INSTD_LOGIC;--清零信号ENA:INSTD_LOGIC;--计数使能信号CQ:OUTINTEGERRANGE0TO15;--4位计数结果输出CARRY_OUT:OUTST
本文标题:基于EDA的直流电机测速
链接地址:https://www.777doc.com/doc-2569396 .html