前言随着社会的进步和生产的需要,利用无线通信进行温度数据采集的方式应用已经渗透到生活各个方面。
图1.1短距离无线通信的应用
在工业现场,由于生产环境恶劣,工作人员不能长时间停留在现场观察设备是否运行正常,就需要采集数据并传输数据到一个环境相对好的操控室内,这样就会产生数据传输问题。由于厂房大、需要传输数据多,使用传统的有线数据传输方式就需要铺设很多很长的通讯线,浪费资源,占用空间,可操作性差,出现错误换线困难。而且,当数据采集点处于运动状态、所处的环境不允许或无法铺设电缆时,数据甚至无法传输,此时便需要利用无线传输的方式进行数据采集。
在农业生产上,不论是温室大棚的温度监测,还是粮仓的管理,传统上都是采取分区取样的人工方法,工作量大,可靠性差。而且大棚和粮仓占地面积大,检测目标分散,测点较多,传统的方法已经不能满足当前农业发展的需要。当前的科技水平下,无线通信技术的发展使得温度采集测量精确,简便易行。
在日常生活中,随着人们生活水平的提高,居住条件也逐渐变得智能化。如今很多家庭都会安装室内温度采集控制系统,其原理就是利用无线通信技术采集室内温度数据,并根据室内温度情况进行遥控通风等操作,自动调节室内温度湿度,可以更好地改善人们的居住环境。
以上只是简单列举几个现实的例子,在现实生活中,这种无线温度采集系统已经被成功应用于工农业、环境监测、军事国防、机器人控制等许多重要领域,而且类似于这种温度采集系统的无线通信网络已经被广泛的应用到民用和军事领域。凡是布线繁杂或不允许布线的场合都希望能通过无线方案来解决。为此,需要设计相应的接口系统,控制这些射频芯片工作,完成可靠稳定的无线数据通信,这样的研究也变得更加有意义了。
本系统的设计采用了Nordic公司新推出的工作于2.4GHz频段NRF24L01射频芯片,由AT89S52单片机控制实现短距离无线数据通信。该接口设计具有成本低、传输速率高、软件设计简单以及通信稳定可靠等特点。整个系统有发送和接收二部分,通过NRF24L01无线数据通信收发模块来实现无线数据传输。发送部分以单片机AT89S52为核心,使用温度转换芯片DS18B20实时采集温度并通过nRF24l01将采集的温度无线传送给接收部分,然后在LCD1602上显示,并通过串口发送到PC机上显示,通过蜂鸣器实现对温度过高或过低进行报警。
1 系统方案分析与选择论证
1.1 系统方案设计
1.1.1 主控芯片方案
方案一:采用传统的AT89S52单片机作为主控芯片。此芯片价格便宜、操作简便,低功耗,比较经济实惠。
方案二:采用TI公司生产的MSP430F149系列单片机作为主控芯片。此单片机是一款高性能的低功耗的16位单片机,具有非常强大的功能,且内置高速12位ADC。但其价格比较昂贵,而且是TPFQ贴片封装,不利于焊接,需要PCB制板,大大增加了成本和开发周期。
方案三:采用宏晶科技有限公司的STC12C5A60S2增强型51单片机作为主控芯片。此芯片内置ADC和SPI总线接口,且内部时钟不分频,可达到1MPS。而且价格适中。
考虑到此系统需要不用到ADC,从性能和价格上综合考虑我们选择方案一,即用AT89S52作为本系统的主控芯片。
1.1.2 无线通信模块方案
方案一:采用GSM模块进行通信,GSM模块需要借助移动卫星或者手机卡,虽说能够远距离传输,但是其成本较大、且需要内置SIM卡,通信过程中需要收费,后期成本较高。
方案二:采用TI公司CC2430无线通信模块,此模块采用Zigbee总线模式,传输速率可达250kbps,且内部集成高性能8051内核。但是此模块价格较贵,且Zigbee协议相对较为复杂。
方案二:采用NRF24L01无线射频模块进行通信,NRF24L01是一款高速低功耗的无线通信模块。他能传输上千米的距离(加PA),而且价格较便宜、,采用SPI总线通信模式电路简单,操作方便。
考虑到系统的复杂性和程序的复杂度,我们采用方案三作为本系统的通信模块。
1.1.3 温度传感方案
方案一:采用AD590是美国ANALO G DEV ICES 公司的单片集成两端感温电流源。AD590测量热力学温度、摄氏温度、两点温度差、多点最低温度、多点平均温度的具体电路,广泛应用于不同的温度控制场合由于AD590精度高、价格低、不需辅助电源、线性好,常用于测温和热电偶的冷端补偿。但其需要用到差分放大器放大和A/D转换,需要原件多。
方案二:采用美国DALLAS公司生产的 DS18B20可组网数字温度传感器芯片,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。经济,方便。
使用DS18B20线路简单,编程容易,但是比AD590精度低。AD590还需要其它辅助电路,线路复杂,编程难度大,但是温度精确。考虑到电路的设计,成本,还有多点通信,我们选择方案二,即用DS18B20作为本系统的温度传感器。
1.1.4 显示模块方案
方案一:选择主控为ST7920的带字库的LCD12864来显示信息。12864是一款通用的液晶显示屏,能够显示多数常用的汉字及ASCII码,而且能够绘制图片,描点画线,设计成比较理想的结果。
方案二:采用字符液晶LCD1602显示信息,1602是一款比较通用的字符液晶模块,能显示字符和数字等信息,且价格便宜,容易控制。
方案三:采用LED7段数码显示管显示,其成本低,容易显示控制,但不能显示字符。
综合以上方案,我们选择了经济实惠的字符液晶LCD1602来作为接收端的显示。发送端用7段数码管显示。
1.1.5 单片机与PC机通信模块
采用RS-232串口与PC机通信。
1.2 系统最终方案
发送端:
发送端由温度传感器DS18B20,AT89S52单片机,nRF24L01无线射频模块,数码管显示模块和外设继电器组成。
图1.2发送端系统方框图
接收端:
接收端由AT89S52单片机,nRF24L01无线射频模块,LCD1602显示模块,报警电路和串口组成。
图1.3 接收端系统方框图
2 主要芯片介绍和系统模块硬件设计
2.1 AT89S52
单片机是一种集成的电路芯块采用了超大规模技术把具有运算能力(如算术运算、逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换及A/D转换器等电路集成到一块单片机上,构成一个最小然而很完善的计算机系统。这些电路能在软件的控制下准确快速的完成程序设计者事先规定的任务。总的而言单片机的特点可以归纳为以下几个方面:集成度高、存储容量大、外部扩展能力强、控制功能强、低电压、低功耗、性能价格比高、可靠性高这几个方面。
单片机有着微处理器所不具备的功能,它可以独立地完成现代工业控制所要求的智能化控制功能这就是单片机的最大特点。然而单片机又不同于单板机,芯片在没有开发前,它只是具备功能极强的超大规模集成电路,如果赋予它特定的程序,它便是一个最小的、完整的微机控制系统。它与单板机或个人电脑有着本质的区别,单片机属于芯片级应用,需要用户了解单片机芯片的结构和指令系统以及其它集成电路应用技术和系统设计所需要的理论和技术,用这样特定的芯片设计应用程序,从而使芯片具备特定的智能
AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。
AT89S51具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个 全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。引脚图如图2.1
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断 系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三 种封装形式,以适应不同产品的需求。
图2.1 单片机管脚图
(1)主要功能特性:
· 兼容MCS-51指令系统
· 8k可反复擦写(>1000次)ISP Flash ROM
· 32个双向I/O口
· 4.5-5.5V工作电压
· 2个16位可编程定时/计数器
· 时钟频率0-33MHz
· 全双工UART串行中断口线
· 256x8bit内部RAM
· 2个外部中断源
· 低功耗空闲和省电模式
· 中断唤醒省电模式
· 3级加密位
· 看门狗(WDT)电路
· 软件设置空闲和省电功能
· 灵活的ISP字节和分页编程
· 双数据寄存器指针
(2)AT89S52单片机引脚介绍:
引脚如图2.1所示,以下是各引脚的说明。
VCC:AT89S52 电源正端输入,接+5V。
VSS:电源地端。
XTAL1:单芯片系统时钟的反向放大器输入端。
XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英振荡晶体系统皆可以工作了,此外可以在两个引脚与地之间加入一20PF的小电容,可以使系统更稳定,避免噪声干扰而死机。
RESET:AT89S52的重置引脚,高电平工作,当要对晶片重置时,只要对此引脚点评提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。
EA/Vpp:“EA”为英文“External Access”的缩写,表示存取外部程序代码之意,低电平动作,也就是说当引脚为低电平后,系统会调用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果使用8751内部程序空间时,引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21 V的烧录高压(Vpp)。
PORT0(P0.0―P0.7):端口0是一个8位宽的开路电极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0―A7)及数据总线(D0―D7)。设计者必须外加一个锁存器将端口0送出的地址锁住成为A0―A7,再配合端口2所送出的A8―A15合成一个完整的16位地址总线,而定位地址到64K的外部存储器空间。
PORT1(P1.0―P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,若将端口1的输出设为高电平,使是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当作定时器2的外部缓冲输入脚,而P。1可以有T2EX功能,可以做外部中断输入的触发引脚。
PORT2(P2.0―P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,同样地,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8―A15,这个时候P2便不能当做I/O来使用了。
PORT3(P3.0―P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。
其引脚分配如下:
P3.0:RXD,串行通信输入。
P3.1:TXD,串行通信输出。
P3.2:INT0,外部中断0输入。
P3.3:INT1,外部中断1输入。
P3.4:T0,计时计数器0输入。
P3.5:T1,计时计数器1输入。
P3.6:WR,外部数据存储器的写入信号。
P3.7:RD,外部数据存储器的读取信号。
2.1.1 单片机控制模块
单片机控制模块由AT89S52最小系统组成,其中包括单片机,晶振电路和复位电路。
(1)、晶振电路
晶振电路由两个30pF电容和一个12MHz晶体振荡器构成,接入单片机的X1、X2引脚。
(2)、复位电路
单片复位端低电平有效。
单片机最小系统如图2.2:
图2.2 单片机最小系统
2.2 单片2.4GHz nRF24L01无线模块
2.2.1 nRF24L01芯片概述
nRF24L01是一款新型单片射频收发器件,工作于2.4 GHz~2.5 GHz ISM频段。内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融合了增强型ShockBurst技术,其中输出功率和通信频道可通过程序进行配置。nRF24L01功耗低,在以-6 dBm的功率发射时,工作电流也只有9 mA;接收时,工作电流只有12.3 mA,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。
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。
2.2.2 引脚功能及描述
nRF24L01的封装及引脚排列如图所示。各引脚功能如下:
图2.3 nRF24L01封装图
CE:使能发射或接收;
CSN,SCK,MOSI,MISO:SPI引脚端,微处理器可通过此引脚配置nRF24L01:
IRQ:中断标志位;
VDD:电源输入端;
VSS:电源地;
XC2,XC1:晶体振荡器引脚;
VDD_PA:为功率放大器供电,输出为1.8 V;
ANT1,ANT2:天线接口;
IREF:参考电流输入。
2.2.3 工作模式
通过配置寄存器可将nRF241L01配置为发射、接收、空闲及掉电四种工作模式,如表所示。
待机模式1主要用于降低电流损耗,在该模式下晶体振荡器仍然是工作的;
待机模式2则是在当FIFO寄存器为空且CE=1时进入此模式;
待机模式下,所有配置字仍然保留。
在掉电模式下电流损耗最小,同时nRF24L01也不工作,但其所有配置寄存器的值仍然保留。
表1:nRF24L01四种工作模式
模式 | PWR_UP | PRIM_RX | CE | FIFO寄存器状态 |
接收模式 | 1 | 1 | 1 | - |
发射模式 | 1 | 0 | 1 | 数据在TX FIFO 寄存器中 |
发射模式 | 1 | 0 | 1→0 | 停留在发送模式,直至数据发送完 |
待机模式2 | 1 | 0 | 1 | TX FIFO 为空 |
待机模式1 | 1 | - | 0 | 无数据传输 |
掉电 | 0 | - | - | - |
2.2.4 工作原理
发射数据时,首先将nRF24L01配置为发射模式:接着把接收节点地址TX_ADDR和有效数据TX_PLD按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号(自动应答接收地址应该与接收节点地址TX_ADDR一致)。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从TX FIFO中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC)达到上限,MAX_RT置高,TX FIFO中数据保留以便在次重发;MAX_RT或TX_DS置高时,使IRQ变低,产生中断,通知MCU。最后发射成功时,若CE为低则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。
接收数据时,首先将nRF24L01配置为接收模式,接着延迟130μs进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在RX FIFO中,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。
在写寄存器之前一定要进入待机模式或掉电模式。如下图,给出SPI操作及时序图:
图2.4 SPI读操作
图2.5 SPI 写操作
2.2.5 配置字
SPI口为同步串行通信接口,最大传输速率为10 Mb/s,传输时先传送低位字节,再传送高位字节。但针对单个字节而言,要先送高位再送低位。与SPI相关的指令共有8个,使用时这些控制指令由nRF24L01的MOSI输入。相应的状态和数据信息是从MISO输出给MCU。
nRF24L0l所有的配置字都由配置寄存器定义,这些配置寄存器可通过SPI口访问。nRF24L01 的配置寄存器共有25个,常用的配置寄存器如表2所示。
表2:常用配置寄存器
地址(H) | 寄存器名称 | 功能 |
00 | CONFIG | 设置24L01工作模式 |
01 | EN_AA | 设置接收通道及自动应答 |
02 | EN_RXADDR | 使能接收通道地址 |
03 | SETUP_AW | 设置地址宽度 |
04 | SETUP_RETR | 设置自动重发数据时间和次数 |
07 | STATUS | 状态寄存器,用来判定工作状态 |
0A~0F | RX_ADDR_P0~P5 | 设置接收通道地址 |
10 | TX_ADDR | 设置接收接点地址 |
11~16 | RX_PW_P0~P5 | 设置接收通道的有效数据宽度 |
2.2.6 nRF24L01模块原理图
nRF24L01单端匹配网络:晶振,偏置电阻,去耦电容。
图2.6 nRF24L01单端50Ω射频输出电路原理图
2.3 温度传感器 DS18B20
DALLAS最新单线数字温度传感器DS18B20简介新的"一线器件"体积更小、适用电压更宽、更经济 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 "一线总线"接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、 DS1822 "一线总线"数字化温度传感器 同DS1820一样,DS18B20也 支持"一线总线"接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。DS1822的精度较差为± 2°C 。现场温度直接以"一线总线"的数字方式传输,大大提高了系统的抗干扰性。
2.3.1 DS18B20管脚配置和内部结构
DS18B20的管脚和封装如下图2.7:
图2.7 DS18B20引脚及封装
引脚定义:
(1)DQ为单数据总线,是数字信号输入/输出端;
(2)GND为电源地;
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
内部结构:
图2.8 DS18B20内部结构图
(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
(2) DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
图2.9 DS18B20温度值格式表
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
2.3.2 DS18B20的工作原理
DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。18B20共有三种形态的存储器资源,它们分别是:
- ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。
- RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。
控制器对18B20操作流程:
- 复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。
- 存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。
- 控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。
- 控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。
- 执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待18B20执行其指令,一般转换时间为500uS。如执行数据读写指令则需要严格遵循18B20的读写时序来操作。数据的读写方法将有下文有详细介绍。
当主机收到DSl8B20的响应信号后,便可以发出ROM操作命令之一,这些命令如下:
指令代码 代码
Skip ROM(跳跃ROM指令)[CCH]
这条指令使芯片不对ROM编码做出反应,在单总线的情况之下,为了节省时间则可以选用此指令。如果在多芯片挂接时使用此指令将会出现数据冲突,导致错误出现。
Read Scratchpad (从RAM中读数据)[BEH]
此指令将从RAM中读数据,读地址从地址0开始,一直可以读到地址9,完成整个RAM数据的读出。芯片允许在读过程中用复位信号中止读取,即可以不读后面不需要的字节以减少读取时间。
Convert T(温度转换)[44H]
收到此指令后芯片将进行一次温度转换,将转换的温度值放入RAM的第1、2地址。此后由于芯片忙于温度转换处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持500MS,来维持芯片工作。
与DS18B20的所有通讯都是由一个单片机的复位脉冲和一个DS18B20的应答脉冲开始的。单片机先发一个复位脉冲,保持低电平时间最少480μs,最多不能超过960μs。然后,单片机释放总线,等待DS18B20的应答脉冲。DS18B20在接受到复位脉冲后等待15~60μs才发出应答脉冲。应答脉冲能保持60~240μs。单片机从发送完复位脉冲到再次控制总线至少要等待480 μs。
读时隙需15~60 μs,且在2次独立的读时隙之间至少需要1 μs的恢复时间。读时隙起始于单片机拉低总线至少1 μs。DSl8820在读时隙开始15μs后开始采样总线电平。
写时隙需要15~75 μs,且在2次独立的写时隙之间至少需要1μs的恢复时间。写时隙起始于单片机拉低总线。
2.3.3 DS18B20的硬件设计
DS18B20在本系统中与发送端单片机的P3.3连接。如图:
图2.10的DS18B20硬件连接图
2.4 显示模块
本系统显示模块分两种:1、接收端显示模块用LCD1602液晶模块。2、发送端使用数码管显示。
2.4.1 接收端显示模块
本设计在接收端部分采用LCD1602液晶显示模块来显示温度,,P0由上拉电阻提高驱动能力,作为数据输出并作为LCD的驱动,P2口的P2.7-P2.6分别作为液晶显示模块的使能信号E,数据/命令选择RS,R/W端则配置成写。具体电路如图2.11所示。
图2.11 LCD1602液晶显示模块电路图
2.4.2 发送端显示模块
本设计在发送端部分采用数码管显示,P0由上拉电阻提高驱动能力,作为数据输出。P2.7-P2.4分别作为数码管位显示S1-S4。
如图2.12所示:
图2.12发送端数码管显示连接
2.5 报警电路
当外界温度超过预设温度上下限时,为更加有效的引起用户的注意,及时关注温度的变化,本系统设计了声报警电路。该电路由蜂鸣器和NPN三极管组成,具体电路如图2.13所示。
图2.13 接收端报警电路
2.6 接收端与PC机通信
本系统采用MAX232来完成TTL- EIA(美国电子工业联合会)双向电平转换。MAX232内部有电压倍增电路和转换电路,仅需+5 V电源便可工作,使用十分方便,其与AT89S52连接时可以采用最简单的方式连接(见图2.14),MAX232的T1 IN引脚与89S52的串行输入口线P3.1TXD相连,R1 OUT引脚与89S52的串行输入口线P3.0RXD相连,MAX232的T1 OUT、R1 IN分别于与RS232的2、3引脚相连。MAX232泵电源引脚必须接0.1μf 电容,如图中的C7、C8、C9、C10。
图2.14 单片机与PC机串口通信电路
2.7 电源电路设计
A、本系统单片机需要一组+5V电源,采用的电源电路如图2.15所示。该电路是把市电220V交流电压经电压器降压至8V,输入进行全桥整流,成为脉动直流,经过,一级滤波后送至三端稳压集成电路lm7805稳压,再经二级滤波后即为+5V输出,图2.15的四个二极管组成了全桥整流电路,C1,C3是一级滤波电容,U1是稳压管lm7805,C4是二级滤波电容。
图2.15 +5V电源电路
B、本系统无线模块需要一+3.3V电源,采用电源电路如图2.16所示。该电路把先前转换得到的+5V电源经过低压差电压调节器lm1117转换为+3.3V电源。
图2.16 无线模块+3.3V电源供电电路
2.8 其他外围电路
本系统需要在温度过高的情况下驱动继电器,打开通风系统。
继电器连接发送端单片机P3.7口。
3 系统软件设计
3.1 单片机软件设计
3.1.1 发送端软件设计
本系统发送端采用DS18B20温度传感器采集温度,经AT89S52收集处理数据,温度数据数码管显示,如果温度过高,则单片机控制继电器工作,再由nRF24L01模块发送到接收端。其中包括DS18B20和nRF24L01模块的初始化配置。软件流程图如3.1。
图3.1 发送端程序流程图
3.1.2 接收端软件设计
本系统接收端采用nRF24L01无线模块接收发送端传来的温度数据,经单片机AT89S52在LCD1602液晶显示器上显示。温度过高则报警电路工作。最后单片机把数据经串口传输给PC机。其中包括nRF24L01模块和LCD1602液晶显示器的初始化。流程图如3.2 。
图3.2 接受端程序流程图
4 系统仿真
4.1 电源电路的仿真
4.1.1 +5V电源电路仿真
使用multisim仿真,由家电220V经过变压器转换成7.6V交流电压,再经过桥式整流,后经7805稳压芯片得到直流5V电压。如图4.1
图4.1 +5V电源设计仿真
4.2 发送端温度采集与显示仿真
发送端温度采集与显示电路由Protues仿真软件进行仿真。DS18B20接单片机P3.3口。P0口接4位数码管段选端,P2.7-P2.4分别接数码管位选段S4-S1。当前DS18B20显示18.0,LCD1602显示18.0 。显示仿真成功。
图4.3 温度采集及显示仿真
4.3 接收端LCD1602显示温度仿真接收端接收到温度数据后由单片机处理数据。由LCD1602液晶显示器显示。1602的数据端接单片机的P0口,RS,RW和E端分别接P2.0-P2.2口。用Protue显示仿真结果如图4.4 。
图4.4 接收端LCD1602液晶显示仿真
5 硬件电路板设计
5.1 系统硬件原理图
5.1.1 发送端原理图
电源模块:由VCC提供+5V高电平,Power接口接入,经过LM1117降压为+3.3V电平,为nRF24L01模块提供高电平。
显示模块:P1口接无线模块的控制端口。P0.0—P0.7接数码管段选端D0-D7。
无线模块控制模块:无线模块由P2口控制。
温度采集模块:温度采集由DS18B20 I/O端接入单片机P3.3口。
单片机最小系统:X1,X2接外部振荡电路,RESET端接复位电路,EA端接高。
图5.1 发送端原理图
5.1.2 接收端原理图
接收端由单片机主控电路、USB电源+5V接入、串口通信电路、无线模块供电电路、LCD1602液晶显示接口和报警电路组成。
单片机主控电路由AT89S52最小系统组成。
+5V电源由USB接口提供给单片机和其他模块。接入后发光二极管点亮。
串口通信模块由DB9和RS232的外围电路组成。串口通信一边接单片机的RXD和TXD,一边连接PC机。
LCD1602显示模块数据端接单片机P0口,RS,RW,E分别接单片机的P2.0-P2.2 。
报警电路接单片机的P2.7脚。由一个三极管和喇叭组成。
图5.2 接收端原理图
5.2 系统PCB图
5.2.1 发送端PCB图
图5.3 发送端PCB图
5.2.2 接收端PCB图
图5.4 接收端PCB板图
5.3 硬件制作
硬件的制作有印制电路板,打孔和焊接原件组成。
印制电路板用热传印纸打印电路图,经过热传印机把纸上的电路图转印到电路铜板上,之后进行腐蚀铜板处理,把不需要的铜去掉,得到所要电路。经过印制打孔后的电路板如下图。
图5.5 印制后的电路板
焊接原件后如下图。
图5.6 焊接原件后的电路板
5.4 硬件调试在没通电之前,先用万用表检查线路的正确性,并核对元器件的型号、规格是否符合要求。特别注意电源的正负极以及电源之间是否有短路,并重点检查地址总线、数据总线、控制总线是否存在相互间的短路或其他信号线的短路。晶体振荡器和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好是保证振荡器稳定和可靠地工作。在本系统中我们都进行了仔细的检杏,所以此步骤不会发生故障,这一步如果检查不细通电后可能会造成不可想象的后果,所以这一步也至关重要。
通电后检查各器件引脚的电位,仔细测量各点电位是否正常,尤其应注意单片机的插座上的各点电位,若有高压,将有可能损坏单片机仿真器。同样,如果电压过低就没有能力驱动其负载。
在断电的情况下,除单片机以外,用仿真插头将所连接电路与单片机仿真器的仿真接口相连,为软件调试做好准备。
其中遇到的问题很多,如印制电路线不合格,中间有些许断路,造成调试的失败。还有USB电源供电电压不足的问题,电源电压经过供电给负载,电压下降0.5V,致使单片机不工作的问题。
5.5 硬件调试结果我们进行的是单点通信,传输温度数据。发送端采集温度,在4位LED数码显示管上显示,并发送到接收端。其结果如图。
图5.7 发送端采集到温度显示
接收端接收到温度及显示:
图5.8 接收端接收到数据并显示在LCD1602上
6 nRF24L01应用于无线组网6.1 无线组网的意义及研究价值随着GSM、WCDMA及3G商用,近距无线通信并能上网成了一种迫切需求:实现低功耗、低价位、可替代电缆的无线数据链路。人们希望通过一个小型的 短距离的无线网络为移动和商业用户提供各种服务。而目前几乎所有的无线网络都在某一点上连接到有线网络中,以便访问文件、数据库和因特网。此时,点对多点无线通信的设计便显得尤为重要。
6.2 通信模型及协议设计1、通信模型的建立
常见的点对多点通信系统多采用环型和星型两种模式。
它们的系统示意图分别如图6.1和图6.2所示。
图6.1 环形系统示意图
图6.2所示为星形系统示意图。
图6.2 星形系统示意图
其中,环型系统主要用于传输距离较远且实时性要求不高的场合;而星型系统则特别适用于近距离条件下,数据量较大且实时性要求较高的场合。
总结
数据采集与处理是51单片机的常用领域,除了电信号以外,单片机还可以利用传感器实现对非电信号的采集。本设计介绍的数字温度计就是一个典型事例。本设计采用一种直接数字输入式的温度传感芯片DS18B20实现了单片机控制的数字温度计系统。基于DS18B20数字温度传感器构成的实时监控系统确实具有精度高、抗干扰能力强、电路简单等诸多优点,温度传感器得到电缆长度达到几十米都可以正常读取温度数据。相比之下,传统的温度检测系统采用热敏电阻等温度敏感元件,热敏电阻成本低,但需要后续信号调理、AD转换处理电路才能将温度信号转换成数字信号,不但电路复杂,而且热敏电阻的可靠性相对较差,测量温度的精度差,很难保证热敏电阻的一致性和线性,在应用中需要很好的解决引线误差补偿问题、共模干扰问题和放大电路零点漂移误差等技术问题。
本设计内容重点:
NRF24L01无线传输模块的操作。
DS18B20的各种操作命令。
单片机数码管和LCD1602显示。
单片机的串口通信。
研究展望:
进入21世纪后,智能温度控制器正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟温度控制器和网络温度控制器、研制单片测温控温系统等高科技的方向迅速发展。
1.提高温度控制器测温精度和分辨力
在20世纪90年代中期最早推出的智能温度控制器,采用的是8位A/D转换器,其测温精度较低,分辨力只能达到2°C。目前,国外已相继推出多种高精度、高分辨力的智能温度传感器,所用的是9~12位A/D转换器,分辨力一般可达0.5~0.0625°C。为了提高多通道智能温控器的转换速率,也有的芯片采用高速逐次逼近式A/D转换器。
2.增加温度控制器测试功能
新型智能温度控制器的测试功能也在不断增强。例如,采用DS1629型单线智能温度传感器增加了实时日历时钟(RTC),使其功能更加完善。DS1624还增加了存储功能,利用芯片内部256字节的E2PROM存储器,可存储用户的短信息。另外,智能温度控制器正从单通道向多通道的方向发展,这就为研制和开发多路温度测控系统创造了良好条件。
智能温度控制器都具有多种工作模式可供选择,主要包括单次转换模式、连续转换模式、待机模式,有的还增加了低温极限扩展模式,操作非常简便。对某些智能温度控制器而言,主机(外部微处理器或单片机)还可通过相应的寄存器来设定其A/D转换速率,分辨力及最大转换时间。