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