数字系统课程设计报告1、申请题目:(4号宋体加粗)题目,命题描述(5号宋体)智能电风扇本设计中的智能电风扇控制系统,是指将电风扇的电机转速作为被控制量,由FPGA分析采集到的数字温度信号,对风扇电机的转速进行调节,从而达到无须人为控制便可自动调整风力大小的效果。2、课题背景:存在问题、应用背景电风扇曾一度被认为是空调产品冲击下的淘汰品,其实并非如此,市场人士称,家用电风扇并没有随着空调的普及而淡出市场,近两年反而出现了市场销售复苏的态势。其主要原因:一是风扇和空调的降温效果不同——空调有强大的制冷功能,可以快速有效地降低环境温度,但电风扇的风更温和,更加适合老人儿童和体质较弱的人使用;二是电风扇有价格优势,价格低廉而且相对省电,安装和使用都非常简单。尽管电风扇有其市场优势,但传统电风扇还是有许多地方应当进行改良的,最突出的缺点是它不能根据温度的变化适时调节风力大小,对于夜间温差大的地区,人们在夏夜使用电风扇时可能遇到这样的问题:当凌晨降温的时候电风扇依然在工作,可是人们因为熟睡而无法察觉,既浪费电资源又容易引起感冒,传统的机械定时器虽然能够控制电风扇在工作一定后关闭,但定时范围有限,且无法对温度变化灵活处理。鉴于以上方面的考虑,我们需要设计一种智能电风扇控制系统来解决这些问题。本设计的前景很广,可以在各大校园进行广泛推广,相信会获得众多大学生的欢迎,尤其是寝室未装空调的各大校园。3、项目规划:功能、指标、规模传统电风扇是220V交流电供电,电机转速分为几个档位,通过人为调整电机转速达到改变风力大小的目的,亦即,每次风力改变,必然有人参与操作,这样势必带来诸多不便。本设计中主要的一环是对温度传感器的设计,当然传感器对温度的变化越敏感越好。本设计中由高到低共设五个档位,当温度上升2度,电风扇自动上升一个档位;当温度下降2度,则自动下降一个档位。当档位处于最高档位时,此时温度上升档位也不会发生变化。同时设置了一个下限温度,当温度低于此下限温度时,电风扇停止工作;而当温度超过此温度时电风扇又将重新启动。面板(显示)、操作、规则本设计中通过数码管来显示测得的温度。电风扇设置有开关键、reset键和锁存键,开关键控制电机的通电状态,reset键可以使电机的档位回归为最低的档位,锁存键则是可以使电机的档位保存在当前的状态,不随温度的变化而发生变化。输入、输出接口本设计中输入为数字温度信号,输出的PWM控制波形。数字温度信号是通过温度传感器和模数转换器获得的。根据输入的数字温度信号,利用FPGA进行分析处理输出占空比可调的PWM来控制电机的转速。4、实现方案:核心问题本设计中的核心问题为电机的调速控制模块和温度传感器模块。解决方案电机的调速控制模块:起初计划用可控硅来实现电机的调速控制,通过控制双向可控硅的导通角,使输出端电压发生改变,从而使施加在电风扇的输入电压发生改变,以调节风扇的转速,实现各档位风速的无级调速。但是后来发现这样做的话整个系统就基本上不用通过FPGA来控制了,这与我们课程设计的初旨是相违背的。于是后来采用了PWM来控制电机的转速,这样不仅避免了搭建外设的麻烦,而且符合课程的设计初旨。温度传感器模块:此模块尝试了两种方案,分别是DS18B20传感器和PT100铂电阻传感器。关于DS18B20传感器,其输出为9~12位的数字信号,这样就可以避免AD转化的过程,但实际上DS18B20非常的难以控制,其驱动代码非常的麻烦,最终放弃这种方案。而至于PT100铂电阻传感器,我们可以利用铂电阻的阻值与温度成正比的关系来设计外围电路,再通过AD转化来得到8位数字温度信号。5、系统结构:系统框图温度传感器模块FPGA控制模块温度显示开关输入模块电机控制模块和档位显示模块模块功能描述1)温度传感器模块:本实验中采用PT100铂电阻温度传感器进行测温,铂电阻的阻值与温度成正比,可以用电桥法将传感器的阻值变化量转化为电压信号,再将电压信号通过ADC0809进行转换,从而得到8位的数字温度信号2)温度显示模块:根据PT100型铂热电阻分度表对温度传感器输出的8位数字信号进行译码,由于在本次设计中采用的是4位的数码管,所以将温度信号译为8位的BCD码,从而显示出当前的温度。3)开关输入模块:电风扇设置有开关键、reset键和锁存键,开关键控制电机的通电状态,reset键可以使电机的档位回归为最低的档位,锁存键则是可以使电机的档位保存在当前的状态,不随温度的变化而发生变化。4)FPGA控制模块:使用VerilogHdl语言来实现整个电风扇的状态控制。根据开始工作时的温度来设定温度值的上下限。若温度超出了上下限,则进入相应的状态内,此时重新设定温度值的上下限。当温度低于一定的值时,则电风扇自动停止工作;而当温度高于这个值时,电风扇自动重新工作。当档位处于最高档位时,此时温度上升档位也不会发生变化。5)电机控制模块和档位显示模块:根据电风扇所在的状态,输出不同占空比的PWM以及档位的显示信号。档位通过数码管来显示。将输出的PWM信号经过放大处理后输入到直流电机,从而控制电机的转动。模块接口标注(参数、协议)EP1C3T144C8实验箱的输入输出的实际连线与管脚表输入输出名称芯片引脚号实验箱标注钉子线连接clk4P37TTLdangwei[3]5P36D2dangwei[2]31P35C2dangwei[1]32P34B2dangwei[0]33P33A2reset_motor34P32K1pwn_out35P31DJc36P30K2bcd[7]37P29D1bcd[6]38P28C1bcd[5]39P27B1bcd[4]40P26A1bcd[3]41P25D0bcd[2]42P24C0bcd[1]47P23B0bcd[0]48P22A0start49P21Startoe50P20Oereset_ad51P19K3eco52P18EOCale53P17ALEclk_500khz54P16TTLad_data_in[0]55P15ADC0809ad_data_in[1]56P14ADC0809ad_data_in[2]57P13ADC0809ad_data_in[3]58P12ADC0809ad_data_in[4]59P11ADC0809ad_data_in[5]60P10ADC0809ad_data_in[6]61P9ADC0809ad_data_in[7]62P8ADC0809channel_in[0]67P7ADC0809channel_in[1]68P6ADC0809channel_in[2]69P5ADC0809channel_out[0]70P4ADC0809channel_out[1]71P3ADC0809channel_out[2]72P2ADC08096、状态流程图:系统工作状态流程开始开始测温是否高于开启温度一档温度上升2度温度低于开启温度二档是否是否是否温度上升2度温度下降2度三档是否是否温度上升2度温度下降2度四档是否是否温度下降2度温度上升2度五档温度下降2度是否是否是否7、各主要模块仿真结果波形各模块的仿真波形,详细注释输入输出功能端口1)译码输出模块:data_in输入端是ADC0809输出的数字温度信号;bcd输出端是温度信号的BCD码,通过四位的数码管可以显示出温度值;con是FPGA控制模块里温度输入信号。2)状态控制及输出模块:temp是温度信号输入端口,即上述模块中的con信号;reset是复位信号输入端口;c输入端是电机开关信号;clk输入端是时钟信号;dangwei是电机所处档位的输出端口;dutycycle输出端是PWM的占空比信号;pwn_out是最终的pwm输出端口。8、课程设计总结预期的目标与当前实现功能的差异详细注释在本次设计中,总体来说,计划的功能基本上都实现了,但还是有一部分的功能没有能够实现。首先在计划中,用户可以对电风扇进行档位的设置,而我设计出来的电风扇只能从一档开始,这是与实际情况不符合的,需要改进。其次当档位被锁存后,温度应该是继续显示的,但是我的设计中,当档位被锁存后,其温度的显示也同时锁存了,即一直显示锁存那一刻的温度值,这也是与实际情况不相符的。可以进一步发挥提高的部分可以设置两种工作模式,一种为常规模式,一种为智能模式。常规模式就是手动设置档位,让电风扇进行工作。而智能模式就是由温度来控制档位的调节。在智能工作模式下,用户同样可以随时调节档位。课程设计体会通过本次课程设计,个人感觉收获很大。首先掌握了VerilogHDL这种应用非常广泛的硬件描述语言,能够利用其来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。同时通过本次设计,个人认为做事情一定要有耐心和恒心,不能因为一两次的失败而放弃。9、参考文献基于FGPA的数字系统设计数字逻辑电路设计实践