风筝
发表于: 2018-8-21 10:18:51 | 显示全部楼层

在本篇文章中,我们将向您展示使用两个PIC微控制器制作无线温度计的一种方法。其中一个微控制器(PIC16F688)测量LM34的电压,并将其转换为ADC值,然后发送出去。接收器将接收数据,然后在LCD上显示消息。


使用433MHz发送器发送数据很简单:本例中,我们将PIC微控制器的TX引脚连接到433MHz模块的数据引脚,然后发送器将发送UART引脚产生的任何信号。


但接收数据部分是比较困难的部分。接收器将接收其范围内的所有内容。要整理出我们想要的数据,我们需要某种协议或纠错机制。在之前的文章中,我使用了一个VirtualWire库的Arduino。在本篇文章中,我将使用另一种技术。现在,在发送端向传输的数据添加奇偶校验,然后在接收端检查奇偶校验。在写本文时,我找到了一个适用于PIC的VirtualWire库的网站。然而,这个库有一个缺点就是它几乎占满了PIC的内存。


所需的材料

●    MPLAB X IDE集成开发环境

●    PIC16F688微控制器

●    LM34传感器

●    PIC16F877A微控制器

●    LCD1602液晶显示屏

●    433MHz射频模块(发射器和接收器)

●    面包板


硬件原理框图

下面是发送和接收部分的原理框图。

发射部分

jc_PIC-wirelesThermometerTX.png

实现的功能:

●    编程微控制器的方法 - > ICSP

●    测量温度的传感器 - > LM34

●    用于处理数据的微控制器 - > PIC16F688

●    发送数据的方法 - > 433MHz RF TX模块


接收部分:

jc_PIC-wirelesThermometerRX.png


实现的功能:

●    编程微控制器 - > ICSP

●    显示消息 - > LCD1602液晶显示屏

●    用于处理数据的微控制器 - > PIC16f877A

●    接收RF信号 - > 433MHz RF RX模块


电路原理图:

发射部分:

jc_PIC-wireless-ThermometerTX_01.jpg


接收部分:

jc_PIC-wirelesThermometerRX_01.jpg


未使用的引脚没有连接到GND或测试点。所有原理图都不用于生产,它们仅用于面包板。


软件工作原理

发射部分:

程序运行时,它会读取LM34的电压。该电压转换为ADC值。然后将该值计算为华氏温度和摄氏温度。根据一些if-sentence,将值传递给uart_write函数。此函数检查值是否有效,并将其传输到uarttransmit-函数。此函数为数据添加奇偶校验,然后将其发送到TXREG。


这种类型的发射器在通电后始终发送数据,这会干扰在相同频率范围内工作的其他无线设备。当发射器开启时,车库门钥匙和遥控吊扇可能无法正确响应。为了解决这个问题,我们将仅在需要发送数据时才打开RF发射器,在不需要发送数据时关闭RF发射器。


接收部分:

接收部分拾取各种信号和噪声。该软件有一些调试代码和一个MAX232,用于在终端窗口中查看发生的情况。拾取信号时,将检查该帧的帧错误位。如果该值有一个帧错误,则将接收的数据设置为NULL。然后检查该值是否为Overrun Error位。如果溢出错误位检查失败,则RCSTAbits.CREN复位。如果接收到的值通过了这两个检测,则接收的数据不是垃圾,然后计算奇偶校验。如果计算的奇偶校验等于接收的奇偶校验,则该值有效,然后根据一些if句子采取动作。


检查接收到的数据并确定后,PIC会在LCD显示屏上显示一条消息。为了使LCD与微控制器一起工作,我使用了随XC8编译器一起安装的库文件。所有源文件都添加到一个lcd_lib.c文件中。


在开发过程中,我在面包板上添加了MAX232,并且将其连接到我的电脑。这样我就可以很容易地看到两个PIC上的EUSART端口发送了什么。

jc_PIC-wirelessThermRX.jpg


总结

在本篇文章中,我们向您展示了如何使用2个PIC微控制器、LM34传感器和LCD1602制作一个无线温度计。使用一个PIC微控制器测量温度,并计算ADC值。根据计算,数据被格式化并发送到USART端口。接收器检查是否有错误,当检查无误后,LCD1602上会显示一条信息。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



手机版|

GMT+8, 2024-11-8 04:33 , Processed in 0.072636 second(s), 9 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表