完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
引言
温度作为一种最基本的环境参数,与人民的生活有着密切关系。温度的测量和控制在工业、农业、国防、医疗等各个领域中应用普遍。温度测量仪是利用物质各种物理性质随温度变化的规律,把温度转换为电量并显示的一种仪器,有着广泛的适用范围。 本文利用FPGA器件与DS18B20温度传感器设计实现了一种数字温度测量仪,用于检测室温。与其它系统相比较,此测量仪具有结构简单、抗干扰能力强、精确性高、转换速度快、扩展性好等优点。 1 软件程序设计 根据系统的设计要求,将程序部分设计分为5个模块,包括分频模块、DS18B20通信模块、控制模块、数制转换模块、显示模块,如图1所示。利用VHDL语言在QuartusII开发平台上完成程序设计。 [/url] 1.1 分频模块 分频模块是FPGA设计项目中的基本模块之一。针对50MHz的时钟频率进行分频产生1MHz频率信号,分频模块如图2所示。 [url=http://upload.semidata.info/new.eefocus.com/article/image/2012/08/18/50b8c14b5e702.jpg] 系统提时钟信号进入分频模块clock引脚,经过分频后得到信号从clk 1m输出。分频模块仿真结果如图3所示。 由图3可知,输入端的50MHz时钟信号被50分频后得到输出端的1MHz信号。 1.2 DS18B20通信模块 图4中时钟clock为输入端口,DS18820数据总线口dq[0..0]为双向端口,使能端enable为输出端口,led[11..1]为测试时的指示端口,在实际操作中无需接出。 [/url] DS18B20采用一根I/O总线读写数据,因此它对读写数据位有严格的时序要求,如图5所示。 [url=http://upload.semidata.info/new.eefocus.com/article/image/2012/08/18/50b8c14b682e9.jpg] 从分频模块的clk_1m输出1MHz到通信模块的clock作为时钟信号;根据DS18B20所遵循的初始化时序、读时序、写时序等通信协议将程序完成;将获取的12位的温度信号传送给下一个模块。 1.3 控制模块 通过控制模块,将从DS18B20读取的二进制温度信息传给数制转换模块,如图6所示。 [/url] 程序中设定了三个状态(清除clear、使能enable、显示display),当ena为‘1’时,状态从显示转到清除;ena为‘0’时,状态一直为显示,把输入数据win[11..1]从输出端口wout[11..1]输出到下一模块,之间的转换关系如图7所示。 [url=http://upload.semidata.info/new.eefocus.com/article/image/2012/08/18/50b8c14b6e3a7.jpg] 控制模块仿真结果如图8所示。 图8中,clock输入为1 MHz信号,经过500分频后,得到频率为1kHz的信号clk lk,此时累加器cnt0为‘0’。当cnt0为‘1’时,系统状态由原来的清除状态转变为使能状态,此时enb为‘1’,cnt0进行累加;当cnt0=‘1’时,系统状态从使能状态转变到显示状态,系统就把win[11..1]输入的数据通过wout[11..1]输出到下一模块。 1.4 数制转换模块 利用数制转换模块将输入的11位二进制的温度数据转换为3位十进制表示,如图9所示。 [/url] 图9中,clear为清零输入端口,enable为使能输入端口,indata[11..1]为数据输入端口,b1『3..0]、b2[3..0]、b3[3..0]为三个输出端口。如果clear输入信号为‘1’时,程序将清除暂存寄存器中数据;反之则不清除。enable输入信号出现上升沿时,程序开始进行数制转换,并通过b1[3..0]、b2[3..0]、b3[3..0]端口将得到的十进制数输出到相应的显示模块中。数制转换模块仿真见图10。 [url=http://upload.semidata.info/new.eefocus.com/article/image/2012/08/18/50b8c14b761ca.jpg] 由图10知,输入数据为“010011 10000”,clear端为低电平,当enable信号有上升沿时,数据开始转换。转换后数据为b1=0、b2=9、b3=3,符合设计值。 1.5 显示模块 从数制转换模块输出的十进制数接入到显示模块中,将其译码为七段值,输出到共阴数码管上显示,模块如图11所示。 [/url] 由图12可知,当输入为0时,输出为“1111110”;当输入为1时,输出为“0000110”;当输入为2时,输出为“1101101”;当输入为3时,输出为“1111001”等,在七段数码管上正好显示相同数字,表明所编写的程序正确。 [url=http://upload.semidata.info/new.eefocus.com/article/image/2012/08/18/50b8c14b7c692.jpg] 1.6 总体电路框图 整体电路图如图13所示。 [/url] 输入50MHz信号接入分频模块的clock端口,经过分频后的信号输入到DS18B20通信和数制转换模块的clock端,作为模块的时钟信号。DS 18B20将测得的温度数据传给控制模块的win[11..1],通过数制转换模块将数据转换为3位十进制表示,最后利用显示模块译码后由共阴数码管显示。 2 硬件电路设计 设计采用FPGA器件和DS18B20实现温度测量仪,FPGA电路板主要由FPGA器件、时钟电路、下载电路、电源电路、显示电路、指示灯和按键等构成。核心芯片采用ALTERA公司生产的CycloneII系列EP2C5T144C8芯片。在设计温度传感器部分时,由于DS18B20进行精确转换时需要I/O引脚保持大电流供电,这样对FPGA芯片引脚造成很大压力,所以要使DS18B20的VDD引脚接外部电源。电路框图如图14所示。 [url=http://upload.semidata.info/new.eefocus.com/article/image/2012/08/18/50b8c14b82cf8.jpg] 3 下载调试 选择下载FPGA芯片为EP2C5T144C8,在菜单中选择Pins项设定引脚,在弹出的窗口中设置好各个输入输出端与硬件相对应的引脚,并编译通过。 将FPGA的下载数据线一端连接FPGA电路板,一端接计算机USB口,在命令栏里Programmer项,在弹出的窗口中选择Hardware Setup,确认计算机已与DE2板连接好后,点击Start开始下载运行。 [url=http://upload.semidata.info/new.eefocus.com/article/image/2012/08/18/50b8c14b87991.jpg][/url] 连接好DS18B20温度传感器电路,即可测量室内温度,实物电路图如图15所示。由实测知,当前室温为24.2℃。 4 结束语 本文利用FPGA与DS18B20设计并实现了一种用于检测室温的简易的数字温度测量仪。在QuartusII开发平台上,利用VHDL语言完成软件程序设计,并完成硬件电路板设计,最后下载验证。实现的测量仪具有结构简单、测量精确性高、使用方便、扩展性能好的优点。 |
|
相关推荐
|
|
感谢楼主精彩的分享!
|
|
|
|
|
|
不错可以参考参考
|
|
|
|
|
|
169 浏览 0 评论
1397 浏览 1 评论
469 浏览 0 评论
求FPGA 驱动控制ltc2271 或者 ltc2180 或者 ltc2190或者 ltc2202 的代码
2090 浏览 0 评论
530 浏览 0 评论
4933 浏览 111 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-12 04:18 , Processed in 0.547782 second(s), Total 67, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191