基于EDA的直流电机测速.doc_第1页
基于EDA的直流电机测速.doc_第2页
基于EDA的直流电机测速.doc_第3页
基于EDA的直流电机测速.doc_第4页
基于EDA的直流电机测速.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

电子信息工程综合应用设计(报告)(课 程 设 计)题目 直流电动机测速实验 二级学院 电子信息与自动化学院 专 业 电子信息工程 班 级 学生姓名 学 号 指导教师 时 间 2011.12.26.至2012. 1.13 直流电动机测速实验【摘要】:本文章介绍的是以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。模块一:实验原理图(2) 模块二:直流电机测速有时钟使能的十进制计数器模块每当有一个时钟信号CLKEVENT AND CLK= 1时cqi加1,当cqi=9时,在加1,cqi=0,从而达到10进制计数。每当出现1111时再加1,就变为0000,同时进位信号为1.模块二:实验原理图模块三:译码显示输出模块译码显示模块分为位选信号和8位数码管显示信号。位选信号为3位有8种组合,通过000到111来选不同位,8位数码管显示信号有8位分别定义19的显示模块三:实验原理图(3) 模块四: pwm产生控制模块程序把占空比为1000分频,预先设定了占空比为500.通过控制占空比从而达到控制直流电机转速的目的,在这个模块中我们让数码管显示的速度DOUT与一个预先设定的速度DOUT1比较如果DOUTDOUI,那么占空比加1,如果大于,占空比减1,如果等于,占空比不变。模块四:实验原理图 3、 总体设计框图四、 设计过程介绍1、 设计过程1、测速显示当电机旋转时,带动转盘是的磁钢片一起旋转,当磁钢片旋转到霍尔器件的上方时,可以导致霍尔器件的输出端高电平变为低电平。当磁钢片转过霍尔器件上方后,霍尔器件的输出端又恢复高电平输出。这样电机每旋转一周,则会使霍尔器件的输出端产生一个低脉冲,我们就可以通过检测单位时间内霍尔器件输出端低脉冲的个数来推算出直流电机在单位时间内的转速。电机的转速通常是指每分钟电机的转速,也就是单位为rpm,实际测量过程中,为了减少转速刷新的时间,通常都是510秒刷新一次。如果每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年附录一 原件清单1、 带有quartus的电脑一台2、 EP1C6试验箱一个附录二 源程序直流电机测速控制产生library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;-entity teltcl is port( Clk : in std_logic; -时钟输入1Mhz ena : out std_logic; -允许计数 clr : out std_logic; -计数器清零信号产生 load : out std_logic -锁存、显示输出允许 ); end teltcl;-architecture behave of teltcl is signal clk1hz :std_logic;-1HZ时钟信号 signal count : std_logic_vector(2 downto 0);-6秒计数 signal clr1 :std_logic;-清零信号 signal ena1 :std_logic;-允许计数信号 signal load1 :std_logic;-允许计数信号 signal cq1,cq2,cq3,cq4 : INTEGER RANGE 0 TO 15;-计数数据 begin process(clk) -1HZ信号产生 variable cnttemp : INTEGER RANGE 0 TO 999999; begin IF clk=1 AND clkevent THEN IF cnttemp=999999 THEN cnttemp:=0; ELSE IF cnttemp500000 THEN clk1hz=1; ELSE clk1hz=0; END IF; cnttemp:=cnttemp+1; END IF; end if; end process; process(Clk1hz)-6秒计数 begin if(Clk1hzevent and Clk1hz=1) then count=count+1; if count6 then ena1=1;load1=0;clr1=0; elsif count=6 then load1=1;ena1=0;clr1=0; elsif count=7 then ena1=0;load1=0;clr1=1; end if; end if; ena=ena1; load=load1;clr=clr1; end process;end behave;直流电机测速有时钟使能的十进制计数器产生LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT10 IS PORT (CLK:IN STD_LOGIC; -计数时钟信号 CLR:IN STD_LOGIC; -清零信号 ENA:IN STD_LOGIC; -计数使能信号 CQ :OUT INTEGER RANGE 0 TO 15;-4位计数结果输出 CARRY_OUT:OUT STD_LOGIC); -计数进位END CNT10;ARCHITECTURE ART OF CNT10 IS SIGNAL CQI :INTEGER RANGE 0 TO 15;BEGINPROCESS(CLK,ENA) ISBEGIN IF CLR= 1 THEN CQI= 0; -计数器异步清零 elsIF CLKEVENT AND CLK= 1 THEN IF ENA= 1 THEN iF CQI=10 THEN cqi=1; ELSE CQI=cqi+1; END IF; -等于9,则计数器清零 END IF; END IF;END PROCESS;PROCESS (CQI) IS BEGIN IF CQI=10 THEN CARRY_OUT= 1; -进位输出 ELSE CARRY_OUT= 0; END IF;END PROCESS; CQ=CQI;END ART;直流电机测速译码输出LIBRARY IEEE;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity display isport(in7,in6,in5,in4,in3,in2,in1,in0:in std_logic_vector(3 downto 0);lout7:out std_logic_vector(7 downto 0);SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);clk:in std_logic);end display;architecture phtao of display issignal s:std_logic_vector(2 downto 0);signal lout4:std_logic_vector(3 downto 0);beginprocess (clk)beginif (clkevent and clk=1)thenif (s=111) thens=000;else s=s+1;end if;end if;sellout4lout4lout4lout4lout4lout4lout4lout4lout4lout7lout7lout7lout7lout7lout7lout7lout7lout7lout7lout7lout7lout7=XXXXXXXX;end case;end process;end phtao;PWM产生及其控制library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;ENTITY PWM ISPORT(clock:IN STD_LOGIC;-duty_cycle:IN STD_LOGIC_VECTOR(6 DOWNTO 0);DOUT:IN STD_LOGIC_VECTOR(15 DOWNTO 0);DOUT1:IN STD_LOGIC_VECTOR(15 DOWNTO 0);pwm_out:OUT STD_LOGIC);END;ARCHITECTURE ART OF PWM ISSIGNAL PWM_OUT_IO:STD_LOGIC;SIGNAL COUNT: STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL CLK1HZ:STD_LOGIC;SIGNAL DUTY_CYCLE_IO:STD_LOGIC_VECTOR(9 DOWNTO 0):=0111110100;BEGINPWM_OUT=PWM_OUT_IO;process(clock) variable cnttemp : INTEGER RANGE 0 TO 999999; begin IF RISING_EDGE(CLOCK) THEN IF cnttemp=999999 THEN cnttemp:=0; ELSE IF cnttemp90000 THEN clk1hz=1; ELSE clk1hz=0; END IF; cnttemp:=cnttemp+1; END IF; end if; end process; PROCESS(CLOCK)BEGIN IF RISING_EDGE(CLOCK) THENif(COUNT1111101000000000)then COUNT=COUNT+1; else COUNT=0000000001000000;end if; END IF; END PROCESS; PROCESS(clock)BEGIN IF RISING_EDGE(clk1hz) THEN IF(DOUTDOUT1)THEN DUTY_CYCLE_IODOUT1)THEN DUTY_CYCLE_IO=DUTY_CYCLE_IO-1; ELSE DUTY_CYCLE_IO=DUTY_CYCLE_IO; END IF; END IF; END IF; end process;PROCESS(CLOCK)BEGINIF RISING_EDGE(CLOCK) THEN IF COUNT(15 DOWNTO 6)=DUTY_CYCLE_IO THENPWM_OUT_IO=1;ELSEPWM_OUT_IO=0;END IF;END IF;END PROCESS;END; 袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁

温馨提示

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

评论

0/150

提交评论