摘要:通过使用DS18B20温度模块采集数据,将数据通过51单片机控制模块使用NRF24L01无线模块进行传输,在接收端通过液晶显示模块LCD1602显示温度模块传输的温度数据,本设计具有发射距离远,精度高的优点,能满足我们课程设计的要求。
关键词:温度模块DS18B20 无线模块NRF24L01 LCD16021、设计目的、要求及方案1.1设计目的在工业生产中,温度是一个非常重要的指标。
为了保证安全生产,需要对温度进行采集与测量,并根据采集到的数据控制输出。
传统的数据传输方式是通过敷设有线的通信线路来传递数据信息(常见的有RS485总线结构等),这种方式不仅施工麻烦、费用高,而且出现故障时不易排查,越来越不能满足现代工业快速发展的需求。
而无线数据传输方式具有不用布线、实时性高、容易重新部署等优点,非常适用于现代工业监控系统[1]。
在本系统中把温度传感器DS18B20所采集到的温度值送给单片机进行处理,通过NRF2401无线模块实现远程无线传输,使用数码管或液晶屏显示所采集的温度。
故设计本系统,既能准确的测量温度,又能解决测量距离上的问题。
1.2设计要求(1)实时获取被测对象温度,温度测量范围:-10℃~+45℃;测量精度:±0.1℃。
(2)无线传输实时获取的温度值,传输距离≥10m。
(3)实时显示接收到的温度值。
(4)基于单片机实现。
(5)电路制作时,必须有学号或姓名。
(6)能够切换信道,用数码管显示信道(0—5)。
1.3设计方案1.3.1控制模块采用宏晶科技有限公司的STC89C52作为主控芯片。
此芯片内置ADC和SPI 总线接口,且内部时钟不分频,达到1MPS。
而且价格适中,方便制作电路板及焊接工作,能达到设计要求的性能[1]。
1.3.2无线通信模块方案由于NRF24L01是一款高速低功耗的无线通信模块,能传输上百米的距离,而且价格较便宜,采用SPI总线通信模式电路简单,操作方便。
符合设计要求,故采用NRF24L01无线射频模块进行通信1.3.3温度传感方案采用美国DALLAS公司生产的DS18B20可组网数字温度传感器芯片,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
经济,方便。
线路简单,编程容易,考虑到电路的设计,成本,还有多点通信,采用DS18B20作为本系统的温度传感器[2]。
1.3.4显示模块方案由于只需要显示温度,还有学号,故选择采用字符液晶LCD1602当作显示器较为合适,LCD1602是一款比较通用的字符液晶模块,能显示字符、数字等信息,且价格便宜,容易控制[2]。
1.3.5信道选择方案直接使用按键接单片机的I/O口,进行信道的选择,通过数码管模块显示信道的序号。
1.3.6设计方案框图综合以上几点设计方案,设计出方案框图如图1发送模块方案框图,图2接收模块方案框图图1发送模块方案框图图2接收模块方案框图2.基本原理无线温度监控系统由发送模块和接收两大模块组成,其原理如下:发送模块:温度传感器DS18B20将采集到的信号送到单片机控制模块存储,通过按键使控制模块将信号处理然后送到无线模块NRF24L01经行数据传输,数码管显示出所选择的通信信道。
接收模块:通过按键使无线模块NRF24L01接收到发送模块的数据,把数据送到51控制模块,控制模块将数据处理后通过LCD1602把温度显示出来,数码管显示出所选择的通信信道。
系统组成方框图如图3无线温度监测器系统组成方框图所示:图3无线温度监测器系统组成方框图3.硬件电路设计3.1 温度模块温度模块设计分析:根据DS18B20的设计原理,第1个引脚接GND;第2个引脚接单片机的P2.2口;第2个引脚再串联一个4.7k到VCC;第3个引脚直接接VCC。
[3] 电路连接原理图如图4温度模块原理图所示图4温度模块原理图3.2 无线收发模块无线收发模块NRF24L01的各引脚与单片机的P1口相连,电路连接原理图如图5无线模块收发原理图所示图5无线模块收发原理图无线收发模块NRF24L01引脚功能:CSN(P1.0):芯片的片选线,CSN 为低电平芯片工作。
SCK(P1.4):芯片控制的时钟线(SPI 时钟)。
MISO(P1.3):芯片控制数据线(Master input slave output)。
MOSI(P1.1):芯片控制数据线(Master output slave input)。
IRQ(P1.2):中断信号。
无线通信过程中MCU主要是通过IRQ与NRF24L01 进行通信。
CE(P1.5):芯片的模式控制线。
在CSN为低的情况下,CE协同NRF24L01 的CONFIG寄存器共同决定NRF24L01的状态。
3.3 液晶显示模块液晶显示模块设计,数据口DB0-DB7连接单片机的P0口;RS、R/W、E这3条控制线分别接单片机的P2.3、P2.4和P2.5口。
电阻R3用来调节背光的亮度。
电路连接原理图如图6显示模块原理图所示图6显示模块原理图3.4系统原理图及PCB图发送端原理图如图7无线发送系统原理图所示:图7无线发送系统原理图接收端原理图如图8线接收系统原理图所示:图8无线接收系统原理图4、软件程序设计4.1无线收发模块NRF24L01的编程4.1.1NRF24L01编程的基本思路(1)置CSN为低,使能芯片,配置芯片各个参数。
配置参数在Power Down 状态中完成。
(2)如果是Tx模式,填充Tx FIFO。
(3)配置完成以后,通过CE与CONFIG中的PWR_UP与PRIM_RX参数确定NRF24L01要切换到的状态。
Tx Mode:PWR_UP=1;PRIM_RX=0; CE=1(保持超过10us就可以);Rx Mode:PWR_UP=1;PRIM_RX=1; CE=1;(4) IRQ引脚会在以下三种情况变低:① Tx FIFO 发完并且收到ACK(使能ACK情况下)② Rx FIFO收到数据③达到最大重发次数4.1.2 Tx与Rx的配置过程Tx模式初始化过程(1)写Tx节点的地址 TX_ADDR(2)写Rx节点的地址(主要是为了使能Auto Ack) RX_ADDR_P0(3)使能AUTO ACK EN_AA(4)使能PIPE 0 EN_RXADDR(5)配置自动重发次数 SETUP_RETR(6)选择通信频率 RF_CH(7)配置发射参数(低噪放大器增益、发射功率、无线速率) RF_SETUP(8)选择通道0有效数据宽度 Rx_Pw_P0(9)配置24L01的基本参数以及切换工作模式 CONFIG。
4.1.3NRF24L01数据信道的切换NRF24L01配置为接收模式时,可以接收6路不同地址相同频率的数据,每个数据通道拥有自己的地址,并且可以通过寄存器来进行分别配置。
数据通道是通过寄存器EN_RXADDR来设置的默认状态下只有数据通道0和数据通道1是开启状态的每一个数据通道的地址是通过寄存RX_ADDR_Px来配置的,通常情况下不允许不同的数据通道设置完全相同的地址。
数据通道0有40位可配置地址,数据通道1-5的地址:为32位共用地址+各自的地址(最低字节),1-5数据通道的最低位必须不同。
发送端通过按键把数据通道从0-5经行切换,选择不同的地址经行通信,接收端同样经行对应的处理以便通信。
发送端切换通道的程序:接收端的选择程序uchar code dizhi[]={0x01,0x02,0x04,0x08,0x10,0x20}; //接收通道和使能通道的切换通过按键的选择,通道能从0到5进行切换,然后只有通道相同才可以传输数据,显示屏上才有数据更新。
4.2 DS18B20温度模块温度模块读取温度程序流程图如图9读取温度程序流程图所示图9读取温度程序流程图程序见附录A5、PCB 板的设计与制作:5.1 PCB图设计PCB图如图10所示:PCB图的设计如图10 PCB图所示图10 PCB图所示6、电路的调试及调试结果把PCB板制作完毕之后,拿到元器件之后,开始进行焊接,对安装焊接工艺要求是:电阻,电容尽可能卧式安装,减少虚焊,脱焊现象,贴片元器件等需要快速焊接,避免元器件由于温度过高而损坏。
进行测试的时候发现LCD没有显示数据,然后对LCD1602进行测试,没有问题;对照资料才发现数据口反过来接了,然后用杜邦线进行重新连接,测试通过了[3]。
接着排查无线模块,温度模块,进行资料的查询,发现DS18B20引脚接反了,然后把DS18B20调转插在底座上面[3]。
无线模块也没有正常工作,是因为没有正常的供电,缺少AMS1117降压模块,然后手工焊接了一个降压模块,无线模块也正常工作了,然后进行整体测试,硬件测试通过。
接着就是程序测试,一开始是数据不能正确显示,有一些字符乱码,通过调试程序,优化LCD显示,完成测试。
[3]由于设计要求需要进行信道的切换,一开始写了数组进行信道的选择,但是达不到所需要的效果,只能有通道0和1可以单独通信,其他通道无法进行通信。
后来才知道信道的使能端也需要进行选择处理,才可以对数据进行单独处理。
因为一开始对无线模块的使能通道处理不妥当,发送端和接收端全打开(0x3f)处理,所以进行通信的时候,只有0和1可以切换,其他通道时会出现错误,当接收端为0时,发送端每一个通道都可以传输数据,所以一直在找原因。
最后才知道要在接收端进行使能端的选择,才能使通道单独选择,而不收其他通道的影响。
发送端原处理程序如下:SPI_W_Reg(W_REGISTER+EN_AA,0x30);/*接收通道自动应答*/SPI_W_Reg(W_REGISTER+EN_RX_ADDR,0x30);/*使能接收通道*/修改后把0x30改为0x3f,把通道使能全打开,程序如下:SPI_W_Reg(W_REGISTER+EN_AA,0x3f);/*接收全通道自动应答*/SPI_W_Reg(W_REGISTER+EN_RX_ADDR,0x3f);/*使能接收权通道*/接收端的使能端进行按键选择,原程序如下:SPI_W_Reg(W_REGISTER+EN_AA,0x3f);SPI_W_Reg(W_REGISTER+EN_RX_ADDR,0x3f);调试之后程序为:uchar code dizhi[]={0x01,0x02,0x04,0x08,0x10,0x20};SPI_W_Reg(W_REGISTER+EN_AA,dizhi[xuan]);SPI_W_Reg(W_REGISTER+EN_RX_ADDR,dizhi[xuan]);7、实验总结及心得体会这次课程设计一共做了几个PCB才成功,由于第一个缺陷太多,所以重新修改原理图及PCB,制作第二个PCB板,把元器件拆卸下来重新焊接到第二板子上,出现了不少错误,后来在切换信道的功能上,又进行了第三个板子制作,终于调通了。