基于STC单片机的无线传感设计与数据采集系统
题 目: 基于STC单片机的无线温控系统设计
院 (系): 测控技术与仪器
一 实验目的 1 本实验通过利用STC89C52单片机和nRF24L01模块来控制DS18B20实现的无线温度控制系统。控制通过简单的无线通信协议,实现可靠性与功耗平衡。该系统能实现对温度的测量,同时还可以进行温度的设定,是可以实现远程控制的无线温度控制系统。 2 掌握用Altium Designer软件绘制原理图和PCB电路,以及电路板的制作过程(包括腐蚀,焊接,下载与调试),熟练Keil软件环境以及单片机C代码的编写、调试和hex文件的生成并下载到单片机芯片内,掌握软硬联调技巧与方法。 二 系统分析 1、系统的概述 本实验研究基于51单片机的无线温度控制系统设计,以STC89C52单片机为控制核心,以DS18B20为测试器件,以LCD1602和LCD12864为显示器件,以nRF24L01模块为无线传输模块,以直流电机和继电器为控制温度的器件。系统利用单总线数字温度传感器DS18B20采集温度数据,由单片机进行内部分析处理,由LCD1602和LCD12864显示数据(如果温度大于设定值则驱动直流电机模拟降温环境,如果温度低于设定温度则启动继电器),从机采集到的温度数据和控制状态可以通过nRF24L01模块发送到主机显示出来,主机可以通过按键来控制温度情况。 2、STC89C52单片机介绍 2.1 芯片简介 STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory)的低电压高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS51指令集和输出管脚相兼容。STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。 2.2 主要特性如下: - 增强型8051单片机,6时钟机/器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。
- 工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)。
- 工作频率范围:0~40MHz相当于普通8051的0~80MHz实际工作频率可达48MHz。
- 用户应用程序空间为8K字节。
- 片上集成512字节RAM。
- 通用I/O口32个,复位后为P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时需加上拉电阻。
- ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P30,TxD/P31)直接下载用户程序,数秒即可完成一片。
- 具有EEPROM功能。
- 具有看门狗功能。
- 共3个16位定时器/计数器即定时器T0/T1/T2。
- 外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒。
- 通用异步串行口(UART)还可用定时器软件实现多个UART。
- 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)。
- PDIP封装。
2.3 STC89C52RC单片机的工作模式: 1.掉电模式:典型功耗<01μA,可由外部中断唤醒,中断返回后,继续执行原程序。 2.空闲模式:典型功耗2mA。 3.正常工作模式:典型功耗4Ma~7mA。 4.掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备。 3.1、DS18B20简介 DS18B20为单总线数字温度传感器。单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。单总线通常要求外接一个约为4.7K—10K 的上拉电阻,这样,当总线闲置时其状态为高电平。 3.2、DS18B20的特点 DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点: (1)采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。 (2)测量温度范围宽,测量精度高DS18B20 的测量范围为-55℃~+125℃ ; 在-10~+85°C 范围内,精度为±0.5°C。 (3)在使用中不需要任何外围元件。 (4)持多点组网功能多个 DS18B20 可以并联在惟一的单线上,实现多点测温。 (5)供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。 (6)测量参数可配置 DS18B20 的测量分辨率可通过程序设定 9~12 位。 (7)负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 (8)掉电保护功能 DS18B20 内部含有 EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。 DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。 3.3、DS18B20温度转换原理 DS18B20内部结构主要由4部分组成:64 位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM的排的循环冗余校验码(CRC=X^8+X^5+X^4+1)。 ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
DS18B20中的温度传感器完成对温度的测量,用16位二进制形式提供,形式表达,其中S为符号位。
例如:+125℃的数字输出为07D0H(正温度 直接吧16进制数转成10进制即得到温度值),-55℃的数字输出为FC90H(负温度把得到的16进制数取反后加1再转成10进制数)。3.4、DS18B20的管脚排列 1.GND为电源地; 2.DQ为数字信号输入/输出端; 3.VDD为外接供电电源输入端 4、nRF24L01的介绍 4.1、nRF24L01简介 nRF24L01是一款新型单片射频收发器件,工作于2.4 GHz~2.5 GHz ISM频段。内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融合了增强型ShockBurst技术,其中输出功率和通信频道可通过程序进行配置。nRF24L01功耗低,在以-6 dBm的功率发射时,工作电流也只有9 mA;接收时,工作电流只有12.3 mA,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。 4.2、nRF24L01主要特性: GFSK调制;硬件集成OSI链路层;具有自动应答和自动再发射功能;片内自动生成报头和CRC校验码;数据传输率为l Mb/s或2Mb/s;SPI速率为0 Mb/s~10 Mb/s;125个频道;与其他nRF24系列射频器件相兼容;QFN20引脚4 mm×4 mm封装;供电电压为1.9 V~3.6 V。 4.3、工作原理 发射数据时,首先将nRF24L01配置为发射模式:接着把地址TX_ADDR和数据TX_PLD按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从发送堆栈中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC_CNT)达到上限,MAX_RT置高,TX_PLD不会被清除;MAX_RT或TX_DS置高时,使IRQ变低,以便通知MCU。最后发射成功时,若CE为低则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。 接收数据时,首先将nRF24L01配置为接收模式,接着延迟130μs进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在接收堆栈中,同时中断标志位RX_DR置高,IRQ变低,以便通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。 三硬件电路分析 1、硬件电路概述 本实验的基于单片机的温度控制系统由5部分构成:电源稳压模块,温度采集模块,显示模块,控制模块,无线模块。电源稳压模块是将单片机供电的5V电源通过稳压电路变为3.3V。其中稳压芯片采用的是AMS1117-3.3V的稳压芯片。温度采集模块用的是数字温度传感器DS18B20与单片机直接相连,不需要A/D转换模块,由单片机控制DS18B20采集被测对象的温度,转换成16位数字信号,通过输入输出引脚直接传送至单片机的I/O口P1.7。控制部分为STC89C52单片机,由其控制DS18B20采集温度数据,经过单片机程序处理之后传输到显示模块。显示模块有LCD1602液晶和LCD12864液晶显示经过单片机处理过的数据,显示在液晶上。无线传输模块采用的是两片nRF24L01芯片,电压是3.3V,半双工通信。 该系统具有整体性能可靠,温度测量范围大(约为-55℃~+125℃),精度高(理论测温的分辨率为0.0625℃,实际上实现精度为0.01℃),易于扩展和系统稳定性好的优点。
图3 电源稳压模块 如图3是电源稳压模块,电源稳压模块是将单片机供电的5V电源通过稳压电路变为3.3V。其中稳压芯片采用的是AMS1117-3.3V的稳压芯片。 AMS1117是一个低漏失电压调整器,它的稳压调整管是由一个PNP驱动的NPN管组成的,漏失电压定义为: VDROP = VBE+ VSAT。 AMS1117有固定和可调两个版本可用,输出电压可以是:1.2V,1.5V,1.8V,2.5V,2.85V,3.0V,3.3V,和5.0V。片内过热切断电路提供了过载和过热保护,以防环境温度造成过高的结温。 为了确保AMS1117的稳定性,对可调电压版本,输出需要连接一个至少22μF的钽电容。对于固定电压版本,可采用更小的电容,具体可以根据实际应用确定。通常,线性调整器的稳定性随着输出电流增加而降低。 3、温度采集模块
图4 DS18B20温度传感器检测电路如图4是温度采集模块,DS18B20温度传感器检测电路,温度采集通过数字化的温度传感器DS18B20,通过QD接向单片机的P1.7口。 4、显示模块
图5 从机1602液晶显示电路如图5,是从机的1602液晶显示电路,1602是一款操作比较简单,适用于只有数字和字母的显示,D0~D7进行数据的传输,RS,RW是数据读写的控制位,E是使能端。
图6 主机LCD12864的液晶显示电路如图6,是主机的LCD12864液晶显示电路,LCD12864相比于LCD1602更加高端一点,不但可以显示数字,字母还可以显示汉字,符号等。 5、控制模块和无线模块。
图7 单片机的最小系统和无线模块电路如图7,是单片机最小系统和无线模块。单片机最小系统包括STC89C52单片机,复位电路和晶振电路,他是本实验系统的控制系统,进行命令和数据的传输和控制。例如温度采集数据,显示数据,无线的发送和接受数据,按键采集等。其中还有nRF24L01模块和单片机的接口电路。 晶振控制电路:晶振采用的是11.0592MHZ的标准晶振。接入单片机的XTAL1、XTAL2。 图8 按键电路 如图8是按键电路,给I/O口低电平的时候开关导通执行相关的操纵。
图9 继电器电路 如图9,是继电器电路,他用PNP三极管控制继电器的打开,如图中PNP三极管相当于一个开关电路,因为三极管工作在在饱和区(如图10)。 如图10 三极管输出特性曲线 二极管作用:二极管的主要特性是单向导电性,也就是在正向电压的作用下,导通电阻很小;而在反向电压作用下导通电阻极大或无穷大。正因为二极管具有上述特性,无绳电话机中常把它用在整流、隔离、稳压、极性保护、编码控制、调频调制和静噪等电路中。本实验用于消耗线圈的反向电流。
图11 直流电机电路如图11,使用三极管驱动直流电机。这是一个简单的单向驱动电路,没有H桥复杂,不可以正反转,只是用来模拟温度可以被加热和降温。用P2.1口控制电机。 四 软件系统 本实验的软件部分包括两部分:从机部分和主机部分。
主机系统程序主要包括:主程序,按键控制子程序,温度显示子程序,无线数据发送接受子程序等。图11 温度控制系统主机程序流程图 从机系统程序主要包括:主程序,读出温度子程序,温度显示子程序,无线数据发送接受子程序等。 下面看一下程序流程图。 主机系统程序流程图(如图11): 主机开机之后会显示从机发来的温度,并且检测从机的工作状态,从机采集的温度会一直通过nRF24L01模块进行传输。当有按键信号发出时,主机单片机开始进行判断,检测到是设定从机温度的情况,开始进行从机温度设定,然后开始检测设定温度和测试到的温度是否相等,如果相等了,就发送正常指令,从机停止加热或者降温,如果不匹配,就继续进行加热或者降温,直道达到设定要求。如果检测到的温度和设定温度不同,可以通过按键进行操作,通过nRF24L01发送模块控制从机状况。 从机系统程序流程图(如图12): 图12 温度控制系统从机程序流程图 从机开机之后DS18B20开始进行数据的采集,单片机经过数据处理,显示在LCD1602上,并且同时通过nRF24L01模块不断的发送温度数据,传送给主机,进行显示和其他操作。同时会检测主机是否通过nRF24L01模块发送过来按键信号,如果没有信号,继续发送数据,检测按键。如果检测到有主机发送的信号,就开始进行相应的操作。降温,加热和正常工作。 五 实验结果 单片机接口实验我完成了自己想要实现的功能,进行无线控制温度的检测,数据的发送,按键信号的传递,以及温度的显示。 六 总结与体会 这次接口实验通过借鉴别人和自己创新,我学到了很多东西,以前大学的时候自己也做过一些东西,但是不系统,不完整,有些软件或者硬件上有些问题也是一知半解,不求甚解,通过这次完整的操作,我懂得自己好多不好的习惯,也学会怎么做一个项目,虽然还欠缺很多,但是已经看到自己的进步。刚来桂电时,感觉自己什么都不会,在做接口实验时,许多师兄和同学给我很多无私的帮助。接口实验虽然不是那么顺利,但是通过本次实验学到了很多东西,这也是学习的过程。 以前不太会做PCB电路板,通过这次设计电路板,才对电路板有了很好的认识,因为电路板这个东西,对我们是很有用的,因为以后我们就是和这个东西打交道。其次是知道了怎么去设计电路板,虽然设计出的板子比较简单,但是也感觉到其实设计电路板也不像想象中那么困难,只要最开始设计好原理图,后面的一切就交给计算机去设计。不过从实验中中也体会到,仔细认真,对我们理工科学生是相当重要,因为在封装的时候任何一个小错误,都会造成后面设计电路板不成功。还有就是不能太急躁,最开始想很快做完,结果做的后面都要重做,设计这个东西,也要循环渐进。 还有就是软件,由于在大学的时候只是略微接触VC、Keil,真正做出的东西也比较少,机会也不多,所以刚开始的时候进度比较慢,很多不太理解的,但是通过这次我感觉到软件的强大,我以后一定多在这些方面下功夫,不断提高自己,成为大神。 八 谢辞 首先要感谢老师给予这样一个锻炼自己的机会,通过这次实验,我完整的学习了一个系统的设计。在本次试验过程中,遇到了很多困难和问题,除了自己独立解决之外,也得到了各位老师,师兄和师姐的指导与帮助,还有同学们的耐心讲解与讨论,给了我很大的帮助与支持。
完整的Word格式文档51黑下载地址:
|