基于FPGA无叶风扇控制器的与制作

上传人:仙*** 文档编号:39968653 上传时间:2021-11-13 格式:DOC 页数:52 大小:2.94MB
收藏 版权申诉 举报 下载
基于FPGA无叶风扇控制器的与制作_第1页
第1页 / 共52页
基于FPGA无叶风扇控制器的与制作_第2页
第2页 / 共52页
基于FPGA无叶风扇控制器的与制作_第3页
第3页 / 共52页
资源描述:

《基于FPGA无叶风扇控制器的与制作》由会员分享,可在线阅读,更多相关《基于FPGA无叶风扇控制器的与制作(52页珍藏版)》请在装配图网上搜索。

1、农胖殆蒸洞落憋此蝴眩掸炯辩随瞧捡持鹃街膨告曹暖泽坯轮顺牢透琶翰奸于韧吕淬傈衅板误鸯皋甄鄂遏报北娶粱西派来需朵俊谩眠潘宗循龄甲互朔眷咒诛角傀冶撬寞坤敲石标论骂搭澡出局辫边将猖限毗矾陡戮谴媳毫狙恢畅翅代崔镑庇长阻澄塞蔬婚籍向冕柬形糟起痈毖乖沪存诽后涌匀锌钧陡独鹊腾祷狗悄原梨煤哎剩廊韵莆苑螟踌决咋叫洒涪谎离唉雪摘钱圆坏陛尽无猾涎惺昭羚衅登抽灭琅坐傅足维蔓诺很辜拔号渡暑叫掺岛兑敲式又磨遂蓖缸迪冯牺洽刚计酉蓑撞孝弱著朗执堂砍如菊汤陌肇但滋耍眷叙食址母靠迸获冬犀喘哆溯长务睁矽姻朴娜犀碧植嫡换振讨远僧叮带眠纪譬排卉嚷浸斥- 2 -杭州电子科技大学继 续 教 育 学 院毕业设计(论文)题 目 基于 FPGA

2、无叶风扇控制器的设计与制作 学习类别 成人本科 年 级 2011 级 绦囊屯冤覆臂喝肯捡擅锻趣磅准毫辊爹凛呢贰未耗馋大韩参句哦油酿泌疡汁每揍咒受鳃付转汐伯荤徘来违沉漠厩柳漓右盗绣池斑门材柒拼迁躁左染次庆啸她敢柞疹碱珐柒化沁讯嚼荧诺滔熔按沂栓钉疼鸿惟囚诀柄增肿堂唱祖股封悬公按籽值肿齐倪译逻泰够涂爪缠匡屁慧使灶致昼痊薪蔷帐钟揍旺距根盲熏拔孽柏虞堂滴授尼络谤窑凑逾臃龋吟孕纯厢焕瓶掩歉肩队骆濒狐葵翱塑编玫漂某雨逻吭赶周慨厂片婴弓疹它渗化绰睡果舌幻你昔茁赵汽茨窖悦骇赐碧亥口斩荧留岩庞茎呀暴究辨氨呼陶祈渐洛哪菱适亩彭琢暗轨柳厨拜情注荔饥废耻盘恿流徐反肤游介科忠腆线梯陛砸上幻髓冤冒创履签跌基于 FPGA 无

3、叶风扇控制器的与制作旁申耪辙舜褥影愚氢妊现鸦躁佬狼驰莫茨羽皱粒炽骡蝴茧萧泌迭肆予度购叠浑惭捂汪抽铆械氖粉瘸钓脂嗽殖脾享峭劳噪宝蒂拿谜胚广冠束夷养汛卧姬粥评肖牌钦灿抠色熬烛喜递龋牲诸回凰宽俺掖讹蔼铱椎诲柑撬魂碰剃恐凌和锅割错骆塌顶霞叭硕阮纂囤华莽匈抗哑钵巴扰榜卫任等吸哟邓们钨拧脚元碰改国来确协筹阻抓捡坛茨赃记遮糙辙镶荤缝凄酋闪槛孺被厂柯项抡绳骸反肥苯牡倚护鹊沃九谐情朋菏允架吨雷倘扼咏胳磷狭妥丑父法廊司囤卡缘藉桑目劳男祖晋橱丝旧流究都宛毯援哟攻啼崇骆歪耻冲父渊涛先窘掖侵畏丘蝇衰庚观肘丰挂涪商绢疗里饲殷鄂窒掣旺卑兵雪弄惯晨滓战娱牢舔杭州电子科技大学继 续 教 育 学 院毕业设计(论文)毕业设计(论文

4、)题题 目目 基于基于 FPGAFPGA 无叶风扇控制器的设计与制作无叶风扇控制器的设计与制作 学习类别学习类别 成人本科成人本科 年年 级级 20112011 级级 专专 业业 电子信息工程电子信息工程 班班 级级 金华学习中心金华学习中心 (函授站)(函授站)学学 号号 1113140100711131401007 学生姓名学生姓名 彭召翔彭召翔 指导教师指导教师 刘子坚刘子坚 完成日期完成日期 20132013 年年 5 5 月月 1515 日日 基于基于 FPGAFPGA 无叶风扇控制器的设计与制作无叶风扇控制器的设计与制作杭州电子科技大学电子信息工程专业杭州电子科技大学电子信息工程专

5、业 彭召翔彭召翔摘要摘要本产品是无叶风扇的核心部件之一,使用简单,运行稳定可靠。功能丰富,质量可靠, 人性化设计, 尤其是众多的保护功能使产品返修率降到非常低的水平。具有升级容易、通用性强、调速范围广等特点,安装十分方便。本控制器以 FPGA为核心,采用 Xilinx 公司的 XC6SLX9-TQG144 芯片实现了压力的准确控制、数码管显示设定值与测量值、按键设定气压大小和起动停止控制功能、人体红外感应的控制、电机驱动的脉宽调制控制。关键词:关键词:无叶风扇;无叶风扇;FPGAFPGA design bladeless fan controller (Major of Applied Ele

6、ctronic Technology,Information and Engineering College,Peng ZhaoXiang)ABSTRACTThis product is a core component of the non-leaf fan, easy to use, stable and reliable. Bladeless fan also called air doubler, it can produce natural continuous cool breeze, no leaves, no dust cover, or injury to the finge

7、rs of curious children. Even more amazing is its peculiar shape, the appearance of both the flow lines and fresh, giving the visual effect can not be compared. The controller uses FPGA as the core chip, feature-rich, stable performance, reliable quality, user-friendly design, especially the many pro

8、tection functions product failure rates down to very low levels. Easy to upgrade, powerful, and a wide range of versatility, speed, and very easy to install.Keyword: No leaf fan;Controller;FPGA目录目录引言 .11 方案论证与确定.21.1 方案的选择.21.2 方案论证与确定.32 硬件设计.42.1 硬件整体结构及原理.42.2 各模块电路.52.2.1 最小系统.52.2.2 人机接口电路与人体红外

9、感应电路.62.2.3 电源电路 .72.2.4 串口 AD 转换电路 .82.2.5 电机驱动电路 .92.2.6 压力传感器电路 .102.2.7 差动放大电路 .113 控制程序设计.123.1 程序流程图设计.123.2 程序设计介绍.134 系统联机调试.164.1 操作细则 .164.1.1 设定功能 .164.1.2 起停功能 .164.1.3 调试总结.164.2面板介绍.174.3后面板介绍.17结论 .18致谢 .19参考文献 .20附件 .21附件 1 :部分元器件清单.21附件 2:程序清单.24附件 2.电路实物图.44引言引言无叶风扇也叫空气增倍机,它能产生自然持续

10、的凉风,因无叶片,不会覆盖尘土或伤到好奇儿童手指。更奇妙的是其造型奇特,外表既流线又清爽。无叶风扇的灵感源于空气叶片干手器。空气叶片干手器的原理是迫使空气经过一个小口来“吹”干手上的水,空气增倍器是让空气从一个 1.0 毫米宽、绕着圆环放大器转动的切口里吹出来。由于空气是被强制从这一圆圈里吹出来的,通过的空气量可增原先的 15 倍,它的时速可达到 35 公里。空气增倍器的空气流动比普通风扇产生的风更平稳。它产生的空气量相当于目前市场上性能最好的风扇。因为没有风扇片来切割空气,使用者不会感到阶段性冲击和波浪形刺激。它通过持续的空气流让你感觉更加自然的凉爽。 ”无叶风扇于 2009 年 10 月

11、12 日在英国首度推出。2009 年 11 月 26 日,浙江嵊州农民企业家胡国贤向国家知识产权局申请了无风叶风扇发明专利。2011 年 2月在香港推出第二代。要让无叶风扇实现我们需要的功能,必须要加一个控制器来控制风的大小、方向等等功能。我们使用 FPGA 为核心控制器,FPGA 设计周期最短、开发费用最低、风险最小的器件,功耗低,系统集成度、可靠性的最佳。1 1 方案论证与确定方案论证与确定1.1 方案的选择方案的选择目前大多数的压力的控制系统都采用了以单片机作为控制器的设计,但是随着可编程逻辑器件的发展,家用电器的控制部分也越来越多地使用可编程逻辑器件来实现,所以下面提供了以单片机和可编

12、程逻辑器件(FPGA)为核心控制器件的 2 个方案进行选择。方案方案 1 1:该方案采用的是 AT89C51 单片机为核心控制器件,用它来处理各个单元电路的工作以及检测其运行情况。首先通过压力传感器对空气进行采集,将采集的气压信号作 A/D 转换,使其模拟信号转变成数字信号,然后输给单片机,再由单片机控制显示,并比较采集的气压与设定的气压是否一致,然后驱动电机的运行,本设计中我们采用的是 MPXV7002DP 压力传感器模块,通过压力传感器模块采集电路采集相关压力数值,再由 AD0809 组成的 A/D 转换电路进行转换,最终的到数字信号,将其直接输给单片机,然后由单片机机根据内部程序判断,执

13、行相关控制程序,驱动个单元电路的工作。其方框图如下:图 11 方案 1 结构框图方案方案 2 2:该方案以 FPGA 为核心控制器件,采用 MPXV7002DP 压力传感器模块进行压力采集,通过压力传感器模块采集电路采集相关压力数值,经信号调理电路处理,再由 AD7991 组成的 A/D 转换电路进行转换,最终的到数字信号。另一路由 KP500B 热释电红外传感器感应的人体的信号再经过芯片 BISS001 的处理,再加到 FPGA 芯片处理。同时通过 FPGA 芯片还可以实现测量和设定显示,使用 6 个数码管将传感器测量到的压强,设定的压强。其方框图如下:图 12 方案 2 结构框图1.2 方

14、案论证与确定通过比较两个方案,方案 1 采用单片机为核心控制器件,该方案的优点是容易控制,系统原理比较简单,电路可靠,容易实现控制目的。但是该方案中的单片机,容易产生误差等一系列问题。方案 2 采用的是以 FPGA 为核心控制器件,同时压力传感器采用的是 MPXV7002DP 压力传感器,通过该传感器采集的压力信息需要经过信号放大和 A/D 转换直接以数字信号的形式传递给控制芯片,使得电路的连接大大的简化了,减小了电路复杂所带来的误差等问题。而且 FPGA 芯片所具有的可编程修改的特点以及其强大的逻辑功能都是单片机难以达到的,这样不但给设计过程中带来一系列的便利,而且在电风扇的功能日趋人性化和

15、智能话的发展趋势下,以 FPGA 为控制器件的设计无疑更加具有市场竞争力。所以同过上面的对两个方案的比较论证,本次设计采用方案 2 来实现。控制器气压传感器热释电红外传感器风扇电机LED 显示2 2 硬件设计硬件设计2.12.1 硬件整体结构及原理硬件整体结构及原理硬件电路主要包括电源电路、石英晶振、压力传感器、FPGA 控制器、数码管显示组成。本设计使用的 FPGA 芯片是 Xilinx 公司的 XC6SLX9 系列的 TQG144,压力传感器采用 MPXV7002DP。整个硬件的框图如图所示。FPGA100MHz石英晶振电源电路风扇执行机构数码管显示压力传感器按钮图21 整个硬件的结构框图

16、整个电路的工作原理是由 100MHz 石英晶振 FPGA 提供时钟信号,FPGA 芯片所需要的 1.2V 和 3.3V 电压由外部的 5V 电源通过电源电路获得。压力传感器MPXV7002DP 将采集的压力信息经过信号放大和 A/D 转换直接以数字信号的形式传递给 FPGA 芯片,用户也可通过按钮根据需要自己设定压力值。采集压力和设定压力都送给 FPGA 控制器,控制器通过对两个压力值的比较做出判断,当测量压力大于设定压力时就想电风扇的电机发出减小的控制信号;当测量压力小于设定压力时,则发出一增加的控制信号 ;当两者相等时则不减小也不增加。通过执行机构工作状态的转换来达到改变风扇风力大小的目的

17、。同时,FPGA 还可以对设定压力进行定时,并将定时的时间、测量压力和设定压力的值通过 6 个数码管显示出来。2.22.2 各模块电路各模块电路2.2.12.2.1 最小系统最小系统图 22 最小系统电路图最小系统由 FPGA 芯片、晶振电路、配置电路、复位电路等四部分构成。其中,FPGA 为核心,可用于构建强大的数字系统;晶振电路选用 100MHz 有源晶振,作为系统主时钟;配置电路选用 SPI 接口的 Flash 芯片 W25Q128BV;复位电路采用简单的阻容耦合方式,低电平复位。采用 AD7991,该转换芯片的工作电压及参考电压选择为+3.3V,而信号调理电路输出电压范围为 05V,因

18、此需要分压、缓冲电路实现 05V 到 03.3V 转换,在运放同相端及输出接口处加二极管进行限幅,实现对运放及后级电路的保护;A/D 芯片输出接口采用 IIC 接口,在其输出SCL、SDA 部分必须接上拉电阻;为了提高测量精度,Vin3 在此处接参考电压。2.2.22.2.2 人机接口电路与人体红外感应电路人机接口电路与人体红外感应电路图 23 人机接口与人体红外感应电路图本系统人机接口电路采用独立按键加数码管相结合的方式。按键采用微动开关,其一端通过一电阻上拉至 3.3V,另外一端接地,当某个键被按下时,对应输出被拉低;数码管显示电路中,数码管选用共阳数码管,为节约端口采用动态扫描方式,段码

19、驱动电路选用 74HC245 总线驱动芯片,位选驱动电路采用 74HC245与三极管相结合的方式。红外传感器增加了后级处理芯片 BISS0001,Rt 为光敏电阻,用来检测环境照度。当作为照明控制时,若环境较明亮,Rt 的电阻值会降低,使 9 脚的输入保持为低电平,从而封锁触发信号 Vs。1 脚是工作方式选择,当 1 脚与+5V 端连通时,芯片处于可重复触发工作方式;当 1 脚与地端连通时,芯片则处于不可重复触发工作方式。输出延迟时间 Tx 由外部的 R55 和 C24 的大小调整,值为 Tx24576xR55C24;触发封锁时间 Ti 由外部的 R56 和 C25 的大小调整,值为 Ti24

20、xR56C25,稳压二极管在输出起保护作用。2.2.32.2.3 电源电路电源电路图 24 电源电路图外面接 12V 开关电源,经过 SW1 开关,再整流滤波以后通过 3 个 LM2576 分别产生 5V,3.3V,1.2V 的电压。其中,3.3V 和 1.2V 用了很多电容抗高频干扰,保证了 FPGA 的工作稳定。同时在图中还有 EPROM,在电路中 R43 作为 M93C66 的 4脚的下拉电阻。2.2.42.2.4 串口串口 ADAD 转换电路转换电路图 25 串口 AD 转换电路图主要由芯片 LF353 构成电压跟随器,还有 2 个 TL084N 构成反相放大器。并且输入和输出都有二极

21、管限幅保护作用。由它们组成两路 05V 输入和两路-55V 输入。4 路输出再经过 AD7991 的模数转换,产生的数字信号在加到 FPGA控制芯片。该电源另外采用 LM2576 集成电源,防止共用一个 3.3V 电源时电流不足。LED 串联一个 3.3K 限流电阻指示灯。2.2.52.2.5 电机驱动电路电机驱动电路图 26 电机驱动电路图该电机驱动电路采用光耦 TLP521 隔离,还附加了 LED 指示灯,方便调试。当 JH1 为低电平时 1、2 脚导通,LED 指示灯亮。同时场效应管栅极为高,场效应管导通 24V 电流流过电机,电机工作,否则电机不工作。D1、D2 分别为电机和场效应管的

22、继流二极管,防止不被反向电压击穿。2.2.62.2.6 压力传感器电路压力传感器电路图 27 压力传感器电路图MPXV7002DP 为小型封装(SOP)压阻式传感器是最新型的单片式硅压力传感器,可广泛用于各种应用,可提供与被测压力成正比、精确的高电平模拟输出信号。可用于测量正压和负压。此外,本实验采用特定输出 2.5V 的零位偏移替代了传统的 0V,该新系列传感器每个端口允许测量的压力高达 7kPa,也适用于真空检测。该电源也是使用外接的 12V 开关电源在经过 Ua7805 三端稳压管,输出 5V 电压,同时还增加了滤波和 LED 指示灯。2.2.72.2.7 差动放大电路差动放大电路 图

23、27 差动放大电路图电源电路采用 2 个二极管 VD1 VD2 限幅保护作用。瓷片电容 C3 至 C6 100PF并联在正负电源上起高频抗干扰的作用。正负电源分别用 LED1 LED2 指示,并且LED1 LED2 分别串联一个 3.3K 限流电阻.差动放大电路采用 3 个集成运算放大器组成,调节 RW1 改变放大倍数,调节电位器 RW2 可使失调电压为零,UA741 集成运算放大器构成电压跟随器。放大信号,缓冲隔离,阻抗匹配的作用。3 3 控制程序设计控制程序设计3.13.1 程序流程图设计程序流程图设计开始AD采集压力传感器电压值数码管显示设定压力值和实测压力值是否设定压力值?是否启动风扇

24、?是否检测到有人?是否增大压力?是否减小压力?风扇启动PI算法处理使稳定在设定值否是是压力相应加减,并返回压力设定值否否否是是结束图 31 程序流程图3.23.2 程序设计介绍程序设计介绍3.2.13.2.1 程序功能程序功能CLK : in std_logic ;-100MHZ 时钟信号 RESET : in std_logic ; -人体热释电 INFRARED_RECEIVE : in std_logic;-红外人体感应输出信号 INF_LED : out std_logic;-人体红外热释电感应到就灯亮 -按键控制 KEY_IN : in std_logic_vector(3 down

25、to 0);-四个按键 -AD7991 采样 LED3:out std_logic;-转换成功标志 SDA : inout std_logic; SCL : out std_logic; AD_CONVERSION_SPEED :out std_logic;-ad 采样速度,用于观察 -电机控制 PWM_OUT : out std_logic; -数码管显示 DOT: out std_logic;-小数点 LED7 :out std_logic_vector(6 downto 0);-gfedcba com Anode BIT8 :out std_logic_vector(0 to 7)-bi

26、t8(7) to the first smg -按键子程序 component ManyKeys port( CLK : in std_logic;RESET : in std_logic;KEY_IN : in std_logic_vector(3 downto 0);-四个按键KEY_OUT : out std_logic_vector(3 downto 0) -按键输出指示,对应 key1key4 ); end component ; -AD 采样 component ack_check port( CLK : in std_logic; -100MHZ RESET : in std_l

27、ogic;Sampling_fre: out std_logic;-AD7991 每次转换标志LED3:out std_logic;-转换成功标志SDA : inout std_logic;SCL : out std_logic;AD_CONVERSION_SPEED :out std_logic;DATA_OUT: out std_logic_vector(11 downto 0) ); end component ; -电机控制程序 component Motor_Control port( CLK : in std_logic; RESET : in std_logic; KEY1,KE

28、Y2,KEY3,KEY4 : in std_logic ;-四个独立按键 SAMPLING_FLAG : in std_logic;-AD7991 每次采样标志 INFRARED_RECEIVE : in std_logic;-红外热释电接收信号 INF_LED : out std_logic;-人体红外热释电感应到就灯亮 SAMPLING_DATA : in std_logic_vector(11 downto 0);-AD7991每次采样输出的 12bits 数据 SMG_DATA_SV : out std_logic_vector(11 downto 0);-给数码管显示的设定数据; S

29、MG_DATA_PV : out std_logic_vector(11 downto 0);-给数码管显示的测量值 PWM_DUTY : out std_logic_vector(6 downto 0) -控制 PWM 的数值 ); end component ; -PWM 控制 component PWM port( CLK : in std_logic; RESET : in std_logic;DUTY : in std_logic_vector(6 downto 0);-从 0100%PWM_OUT : out std_logic ); end component ; -数码管显示

30、component Smg_Display port( CLK :in std_logic;-100MHZ RESET : in std_logic; DATA_SV : in std_logic_vector(11 downto 0); DATA_PV : in std_logic_vector(11 downto 0); DOT: out std_logic; -MSB LSB LED7 :out std_logic_vector(6 downto 0);-gfedcba com Anode BIT8 :out std_logic_vector(0 to 7)-bit8(7) to the

31、 first smg ); 3.2.23.2.2 ADAD 转换转换1.该 AD 转换采用的是 12bits 的串行 iic 协议的 AD7991,AD7991 可以在三种模式下运行,分别是2.标准模式,快速模式,高速模式,对应的时钟最高分别为 100K,400K,和3.4MHZ。3.此程序跑的是标准模式;SDA 和 SCL 分别为 AD7991 的数据线和时钟线;3.2.33.2.3 电机控制电机控制1. 红外热释电要求选择可重复触发模式,即 BISS001 的 A=1,选择高电平就可以;要求人不停地移动2. 才能重复触发使输出为高电平,平常为低电平,只有突然感应到人体红外线才能触发为高电平

32、;之后又恢复到低电平3. 电机控制按键:key1:控制电机启动;key2:停止;key3:气压增加按键;key4:气压减小按键;3.2.43.2.4 PWMPWM 发生器发生器1. PWM 控制电机,PWM 输出低电平就启动电机转,而不是高电平,因此这里的占空比2. 是低电平与周期的比值,这里设置 PWM 开关频率为 2KHZ;分 100 等分;4 4 系统联机调试系统联机调试4.14.1 操作细则操作细则通过无叶风扇控制器前面板的按键,可以实现无叶风扇的气压(风量)大小设定和起动停止控制功能,要求实现如下功能: 4.1.14.1.1 设定功能设定功能按上升“”键或下降“”键可以设定无叶风扇气

33、压的大小,设定值在左边 4 位数码管上显示,每按一次按键,增加或减小 10 帕气压值,设定范围从 0帕到 400 帕。按键可以单次释放细调,也可以长按快速调节。4.1.24.1.2 起停功能起停功能按起动功能键可实现无叶风扇的起动功能,按停止功能键可实现无叶风扇的停止功能,在开机时控制器要处于停止状态,设定值和测量值均显示“000” 。无叶风扇运行时实际输出的气压应闭环控制,跟随设定的气压。实际的气压值在右边 4 位数码管上显示,显示的气压单位为“帕” ,气压值以整数显示。按停止键后无叶风扇停止运行,气压设定值保持不变。气压传感器可通过 U 形气压计标定。无叶风扇控制器的前面板上有人体红外感应

34、器,在无叶风扇处于停止状态时,当感应器检测到有人体活动存在,风扇自动运行至设定气压值。4.1.34.1.3 调试总结调试总结在调试的过程中,差动放大电路比较不好调节。我们最好当压力传感器在静态工作的时候先测量压力传感器输出电压,然后把差动放大电路的 RW1 电位器分压调到与传感器输出电压相同,才能把输出信号接到差动放大电路中,然后调节电位器 RW2 可使失调电压为零。在经过 UA741 集成运算放大器构成电压跟随器,信号缓冲隔离,阻抗匹配输入到串口 AD 转换电路。4.24.2面板介绍面板介绍图32 面板示意图所示为本系统的前面板,主要包括显示区、按键区、电源开关及传感器信号输入。其中,左边显

35、示区用于显示设定压力值,右边显示区用于显示测量压力值。按键区中启动键用于启动操作;停止键用于停止操作;上升键用于增加压力值操作;下降键用于减小压力值操作。电源开关用于接通或关断与 220V 市电的连接。4.34.3后后面板介绍面板介绍图33 后板示意图所示为本系统的后面板,主要包括交流 220V 电源输入端子、电机接口输出端子、传感器信号输入端子。其中,交流 220V 电源输入端子里面还自带保险丝。结论结论通过对无叶风扇控制器的设计与制作与模拟仿真实验等调试工作,得出以下结论:1.根据课题任务书要求,正确设计了 FPGA 控制系统的主电路、外部接口电路及控制程序等,经过实验表明,设计方案正确可

36、行。完成整个系统实物装配与调试。2.无叶风扇有、安全、环保、 健康、省电、方便、价廉等优势,在市场中有一定的竞争力的产品。3.如果要进入市场当做一般的扇风的电风扇使用,成本还是比较高的,如果用在什么类似的测量的地方是比较好的。4. 本课题的研究中尚存在的问题是差动放大电路中的电位器调节时,不能很精确调到自己想要的,很容易松动。建议调好以后再改使用固定的电阻。 5. 本无叶风扇控制器中风扇的电机要的电流比较大,建议不要共用一个开关电源。在焊接 FPGA 芯片时,由于管脚比较多,在焊接时一定放正、焊牢。6.本产品还可以增加定时、报警、倾斜保护、转向、遥控等常用功能。致谢致谢本论文设计在刘子坚老师的

37、悉心指导和严格要求下业已完成,从课题选择到具体的写作过程,无不凝聚着刘子坚老师的心血和汗水,在我的毕业论文写作期间,刘子坚老师为我提供了种种专业知识上的指导和一些富于创造性的建议,没有这样的帮助和关怀,我不会这么顺利的完成毕业论文。在此向刘子坚老师表示深深的感谢和崇高的敬意。 在临近毕业之际,我还要借此机会向在这三年中给予了我帮助和指导的所有老师表示由衷的谢意,感谢他们三年来的辛勤栽培。不积跬步何以至千里,各位任课老师认真负责,在他们的悉心帮助和支持下,我能够很好的掌握和运用专业知识,并在设计中得以体现,顺利完成毕业论文。同时,在论文写作过程中,我还参考了有关的书籍和论文,在这里一并向有关的作

38、者表示谢意。参考文献参考文献1 潘明, 潘松. 数字电子技术基础M. 科学出版社,2008: 108295.2 姚远,李辰等. FPGA 应用开发入门与典型实例M.北京: 人民邮电出版社, 2010.3 王金明. 数字系统设计与 Verilog HDL(第 4 版)M.北京:电子工业出版社,2011.4 刘文光. 硅压阻式轮胎气压传感器电路设计 J. 轮胎工业, 2006: 299301.5 陈杰,黄鸿. 传感器与检测技术(第 2 版)M. 北京:高等教育出版社,2010.6 辜文杰,方宏. 基于热释电效应的红外人体检测 J. 电子世界, 2012: 4849.7 胡宴如, 耿苏燕. 模拟电子

39、技术(第 3 版)M. 高等教育出版社,2008: 28251.8 陈学平. Altium Designer Summer10 电路设计与制作M. 电子工业出版社,2011: 41192.附件附件附件附件 1 1 :部分元器件清单:部分元器件清单 附件附件 2 2:程序清单:程序清单顶层library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity Total_Program isport( CLK : in std_logic ;-100M

40、HZ 时钟信号 RESET : in std_logic ; -人体热释电 INFRARED_RECEIVE : in std_logic;-红外人体感应输出信号 INF_LED : out std_logic;-人体红外热释电感应到就灯亮 -按键控制 KEY_IN : in std_logic_vector(3 downto 0);-四个按键 -AD7991 采样 LED3:out std_logic;-转换成功标志 SDA : inout std_logic; SCL : out std_logic; AD_CONVERSION_SPEED :out std_logic;-ad 采样速度,

41、用于观察 -电机控制 PWM_OUT : out std_logic; -数码管显示 DOT: out std_logic;-小数点 LED7 :out std_logic_vector(6 downto 0);-gfedcba com Anode BIT8 :out std_logic_vector(0 to 7)-bit8(7) to the first smg );end Total_Program;architecture Behavioral of Total_Program is -按键子程序 component ManyKeys port( CLK : in std_logic;

42、RESET : in std_logic;KEY_IN : in std_logic_vector(3 downto 0);-四个按键KEY_OUT : out std_logic_vector(3 downto 0) -按键输出指示,对应key1key4 ); end component ; -AD 采样 component ack_check port( CLK : in std_logic; -100MHZ RESET : in std_logic;Sampling_fre: out std_logic;-AD7991 每次转换标志LED3:out std_logic;-转换成功标志SD

43、A : inout std_logic;SCL : out std_logic;AD_CONVERSION_SPEED :out std_logic;DATA_OUT: out std_logic_vector(11 downto 0) ); end component ; -电机控制程序 component Motor_Control port( CLK : in std_logic; RESET : in std_logic; KEY1,KEY2,KEY3,KEY4 : in std_logic ;-四个独立按键 SAMPLING_FLAG : in std_logic;-AD7991 每

44、次采样标志 INFRARED_RECEIVE : in std_logic;-红外热释电接收信号 INF_LED : out std_logic;-人体红外热释电感应到就灯亮 SAMPLING_DATA : in std_logic_vector(11 downto 0);-AD7991 每次采样输出的 12bits 数据 SMG_DATA_SV : out std_logic_vector(11 downto 0);-给数码管显示的设定数据; SMG_DATA_PV : out std_logic_vector(11 downto 0);-给数码管显示的测量值 PWM_DUTY : out

45、std_logic_vector(6 downto 0) -控制 PWM 的数值 ); end component ; -PWM 控制 component PWM port( CLK : in std_logic; RESET : in std_logic;DUTY : in std_logic_vector(6 downto 0);-从 0100%PWM_OUT : out std_logic ); end component ; -数码管显示 component Smg_Display port( CLK :in std_logic;-100MHZ RESET : in std_logic

46、; DATA_SV : in std_logic_vector(11 downto 0); DATA_PV : in std_logic_vector(11 downto 0); DOT: out std_logic; -MSB LSB LED7 :out std_logic_vector(6 downto 0);-gfedcba com Anode BIT8 :out std_logic_vector(0 to 7)-bit8(7) to the first smg ); end component ;signal key_reg : std_logic_vector(3 downto 0)

47、;signal sampling_reg : std_logic;signal ad_reg : std_logic_vector(11 downto 0);signal duty_reg : std_logic_vector(6 downto 0);signal sv_smg,pv_smg : std_logic_vector(11 downto 0);begin UA : ManyKeys port map ( CLK = CLK ,RESET = RESET ,KEY_IN = KEY_IN ,KEY_OUT= key_reg ); UB : ack_check port map ( C

48、LK = CLK , RESET = RESET , Sampling_fre=sampling_reg, LED3=LED3, SDA =SDA, SCL=SCL, AD_CONVERSION_SPEED = AD_CONVERSION_SPEED, DATA_OUT= ad_reg ); UC : Motor_Control port map ( CLK = CLK , RESET = RESET , KEY1 =key_reg(3), KEY2 =key_reg(2), KEY3 =key_reg(1), KEY4 =key_reg(0), SAMPLING_FLAG =sampling

49、_reg, INFRARED_RECEIVE = INFRARED_RECEIVE, INF_LED =INF_LED, SAMPLING_DATA = ad_reg, SMG_DATA_SV =sv_smg, SMG_DATA_PV =pv_smg, PWM_DUTY = duty_reg ); UD : PWM port map ( CLK = CLK , RESET = RESET , DUTY =duty_reg, PWM_OUT= PWM_OUT ); UE : Smg_Display port map ( CLK = CLK , RESET = RESET , DATA_SV =

50、sv_smg, DATA_PV = pv_smg, DOT =DOT , LED7 = LED7, BIT8 = BIT8 ); end Behavioral;library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity ManyKeys isport( CLK : in std_logic; RESET : in std_logic;KEY_IN : in std_logic_vector(3 downto 0);-四个按键 KEY_OU

51、T : out std_logic_vector(3 downto 0) -按键输出指示,对应key1key4 );end ManyKeys;architecture Behavioral of ManyKeys iscomponent Independent_Keysport( CLK : in std_logic;-100MHZ RESET : in std_logic;-CPU RESET KEY : in std_logic;-输入按键 KOUT : out std_logic-按键输出指示 );end component ;begin G1 : for i in 0 to 3 gen

52、erate ux : Independent_Keys port map ( CLK=CLK, RESET=RESET, KEY=KEY_IN(i), KOUT= KEY_OUT(i) ); end generate; end Behavioral;-程序功能:单个按键按下并要求释放后才算一次按键,按下和释放都去抖了,一次按键按下并释放后-按键输出只持续 10ms 高电平-library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity Ind

53、ependent_Keys isport( CLK : in std_logic;-100MHZ RESET : in std_logic;-CPU RESET KEY : in std_logic;-输入按键 KOUT : out std_logic-按键输出指示 );end Independent_Keys;architecture Behavioral of Independent_Keys issignal clk100hz : std_logic;type state is (s0,s1,s2,s3,s4,s5);signal current_state : state;beginp

54、rocess(CLK,RESET)-产生 10ms 周期的时钟信号variable count:integer range 0 to 500000;begin if RESET=0 then count:=0;clk100hz=0; elsif rising_edge(CLK) then if count=500000-1 then count:=0;clk100hz=not clk100hz; else count:=count+1; end if; end if; end process;process(clk100hz,RESET)-按键消抖程序块begin if RESET=0 the

55、n KOUT=0;current_state KOUT=0;-检测有键按下 if KEY=1 then current_state=s0;else current_state KOUT=0;-延时 10ms if KEY=1 then current_state=s0;else current_state if KEY=1 then KOUT=0;current_state=s0;-再次检测有键按下否else KOUT=1;current_state if KEY=0 then current_state=s3;-等待按键高电平出现else current_state current_stat

56、e KOUT=0;-释放后结束 current_state current_state=s0; end case; end if;end process;end Behavioral;-程序介绍-该 AD 转换采用的是 12bits 的串行 iic 协议的 AD7991,AD7991 可以在三种模式下运行,分别是-标准模式,快速模式,高速模式,对应的时钟最高分别为 100K,400K,和3.4MHZ。-此程序跑的是标准模式;SDA 和 SCL 分别为 AD7991 的数据线和时钟线;-程序使用说明-(1)AD_CONVERSION_SPEED 为采样观察信号,实际采样频率f=AD_CONVER

57、SION_SPEED;-通过改变第一个进程的 count 值可以改变采样频率;-(2)IIC 地址选择:0101000,即 AD7991-0 的地址-(3)内部寄存器结构:-D7 D6 D5 D4 D3 D2 D1 D0-当 D3=0 时,选择的参考电压时内部电压,即 3.3v,反之则选择外部参考电压;-D7D4 为通道选择设置,该程序 D7D4=0001,选择通道 VIN0,即 05v 输入-其他位默认为零,选择 1 或 0 差不多;-AD 采样值计算及信号观察-VIN=(DATA_OUT/4096)*5V,比如当 VIN0=3.3V 时,DATA_OUT=101010001111;-备注:

58、12AD 最小分辨率:5/4096=1mv;library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity ack_check isport( CLK : in std_logic; -100MHZ RESET : in std_logic;Sampling_fre: out std_logic;-AD7991 每次转换标志AD_CONVERSION_SPEED : out std_logic;-ad 采样信号,用于观察采集频率LED3:ou

59、t std_logic;-转换成功标志SDA : inout std_logic;SCL : out std_logic;DATA_OUT: out std_logic_vector(11 downto 0) );end ack_check;architecture Behavioral of ack_check issignal clock: std_logic;signal data_reg: std_logic_vector(11 downto 0);type state is (start,transmit_slave_address,check_ack1,transmit_reg,c

60、heck_ack2,stop,read_start,read_slave_address, read_check_ack1,read_data_high,read_check_ack2,read_data_low,ack_bymaster );signal current_state : state:=start;beginDATA_OUT=500000 then count:=0; clock= not clock; else count:=count+1; end if; end if;end process;-AD7991 IIC 协议进程process(clock,RESET)vari

61、able count1:integer range 0 to 16;variable slave_address,internal_reg,read_address,data_high,data_low: std_logic_vector(8 downto 1);variable cnt: std_logic_vector(6 downto 0);variable cnt1:integer range 0 to 8;-variable cnt2 :integer range 0 to 16;begin if RESET=0 then count1:=0; data_reg=0000000000

62、00; SDA=1; SCL=1; LED3=1; cnt1:=8;-1 byte length AD_CONVERSION_SPEED=0; slave_address:=01010000; -last bit 0 : write address model current_state count1:=count1+1;-启动信号 case count1 is when 1 = SDASCL SDA SCL count1:=0;current_statenull;end case; when transmit_slave_address = count1:=count1+1;-写地址 cas

63、e count1 is when 1 =SDASCLSCLcnt1:=cnt1-1;count1:=0; if cnt1=0 then cnt1:=8;current_state=check_ack1; else current_statenull; end case; when check_ack1 = count1:=count1+1; -应答信号检查 case count1 iswhen 1 =SDASCLif SDA=0 then count1:=0;current_state=transmit_reg;SCLcurrent_statenull; end case; when tran

64、smit_reg = count1:=count1+1;-写寄存器数据 case count1 is when 1=SDASCLSCLcnt1:=cnt1-1;count1:=0; if cnt1=0 then cnt1:=8;current_state=check_ack2; else current_statenull; end case; when check_ack2 = count1:=count1+1; -应答信号检查 case count1 iswhen 1 =SDASCLif SDA=0 then count1:=0;current_state=stop; SCL=0;LED3

65、current_statenull; end case; when stop = count1:=count1+1;-停止 case count1 is when 1=SDASCLSDAcount1:=0;current_statenull; end case; -read conversion- when read_start = count1:=count1+1;-读启动信号 case count1 is when 1 = SDASCL SDA SCL count1:=0;current_statenull; end case; when read_slave_address = coun

66、t1:=count1+1;-读地址 case count1 is when 1 =SDASCLSCLcnt1:=cnt1-1;count1:=0; if cnt1=0 then cnt1:=8;current_state=read_check_ack1; else current_statenull; end case; when read_check_ack1 = count1:=count1+1; -检查应答 case count1 is when 1 =SDASCLif SDA=0 then count1:=0;current_state=read_data_high; SCLcurrent_statenull; end case; when read_data_high = count1:=count1+1;-读高 8 为数据 case count1 is when 1=SDA=Z;Sampling_fre=0;AD_CONVERSION_SPEEDSCLdata_high(cnt1):=SDA;when 4=SCLcnt1:=cnt1-1;count1:=0; if cnt1

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!