无线数据采集器的设计——毕业论文_第1页
无线数据采集器的设计——毕业论文_第2页
无线数据采集器的设计——毕业论文_第3页
无线数据采集器的设计——毕业论文_第4页
无线数据采集器的设计——毕业论文_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

集美大学毕业设计 林杨宝 无线数据采集器的设计 i 无线数据采集器的设计 集美大学信息工程学院 电子信息工程专业 2010 届 林杨宝 学号 2006820007 摘要 本文设计一个基于 TMS320LF2407EA 的多路无线温度采集系统 能够自动检测 DS18B20 个数 动态调整系统参数 主控 DSP 可以把温度数据显示在液晶屏幕中 并且 通过 nrf2401 无线模块传输到上位机 由 Qt 开发的程序将数据存储在 QSQLITE 数据库 并用 Qwt库绘制温度曲线 文章在简要介绍 DS18B20 nrf2401 无线模块 TMS320LF2407A 液晶模块以及 Qt 开发工具和扩展库 Qwt 的基础上 详细介绍了无线温度采集系统的硬 件和软件设计的过程 以及在设计过程中要注意的问题 关键词 DS18B20 温度采集 DSP Qt nRF2401 集美大学毕业设计 林杨宝 无线数据采集器的设计 ii The Design of Wireless Data Acquisition Lin Yangbao NO 2006820007 Communication Engineering Major 2010 Information Engineering College of Jimei University Abstract In this paper a multi channel wireless temperature acquisition system based on TMS320LF2407EA is designed which can automatically detect the number of DS18B20 dynamically adjust parameters of system Master DSP can displayed temperature data in the LCD screen and transferred data to PC through wireless module nrf2401 The program develop by the Qt can stored the data in the QSQLITE database and draw the temperature curve with Qwt library This paper briefly introduce DS18B20 nrf2401 wireless module TMS320LF2407A LCD module and Qt development tools and extensions Qwt Introduce the wireless temperature acquisition system hardware and software design process and in the design process what issues should pay attention Key words DS18B20 Temperature Acquisition DSP Qt nRF2401 目录 iii 目录 引言 1 第 1 章 概述 2 1 1 选题意义 2 1 2 设计任务要求 2 1 3 方案选择 2 1 3 1 下位机数据采集模块 2 1 3 2 下位机人机交互模块 3 1 3 3 与上位机无线通信模块 3 1 3 4 上位机数据处理编程 3 1 4 DSP 开发硬件平台介绍 3 1 5 无线数据采集器系统框图 4 第 2 章 数据采集模块的软硬件设计 6 2 1 DS18B20 简述 6 2 2 数据采集模块硬件设计 6 2 3 数据采集模块软件设计 7 2 3 1 DS18B20 的工作时序 7 2 3 2 数据采集模块子程序设计 8 第 3 章 人机交互模块软硬件设计 11 3 1 人机交互模块硬件设计 11 3 2 LCD液晶多级菜单的实现 12 3 2 1 定义菜单操作的结构体 12 3 2 2 菜单层次结构 13 3 2 3 菜单间切换 14 第 4 章 无线通信 16 4 1 无线通信硬件设计 16 4 1 1 无线传输模组介绍 16 4 1 2 无线传输模组接口电路 17 4 1 3 从单片机与 PC 串口通信的硬件设计 18 4 2 无线通信软件设计 18 4 2 1 nRF2401 工作时序 18 4 2 2 nRF2401A 的命令字 20 4 2 3 nRF2401A 初始化读写操作软件设计 22 4 3 自定义通信格式 23 第 5 章 上位机数据处理 25 5 1 QT简介 25 5 2 温度数据库实现 26 5 3 绘制温度曲线 27 5 4 无线数据采集终端界面设计 28 结论 31 致谢语 32 参考文献 33 附录 34 引言 1 引言 温度是环境监测的重要参数 在一些特定的场合常常需要对温度进行监测 很多温 度监测环境范围大 测点距离远 布线很不方便 这时就要采用无线方式对温度数据进行 采集 多路无线温度采集系统可被广泛应用于温度测量或相应的可转换为温度量或供电 故障监控的工业 农业 环保 服务业 安全监控等工程中 在本系统中各点的温度传 感器DS18B20 将采集到的温度值送给单片机进行处理 通过nRF2401 实现远程无线传输 在上位机的控制系统中 采用串口作为计算机与测控网络的接口 本系统能准确测量范 围内的温度 又能解决布线不便的问题 第 1 章 概述 2 第 1 章 概述 1 1 选题意义 温度是工业 农业生产中常见的和最基本的参数之一 在生产过程中常需对温度进 行检测和监控 采用微型机进行温度检测 数字显示 信息存储及实时控制 对于提高 生产效率和产品质量 节约能源等都有重要的作用 伴随工业科技 农业科技的发展 温度测量需求越来越多 也越来越重要 但是在一些特定环境温度监测环境范围大 测 点距离远 布线很不方便 这时就要采用无线方式对温度数据进行采集 多路无线温度采集系统可被广泛应用于温度测量或相应的可转换为温度量或供电 故障监控的工业 农业 环保 服务业 安全监控等工程中 例如 城市路灯故障检测 和供电线路防盗监视 城市居民小区供热检测 大型仓库温度检测 工业生产测控 农 业生产温度测控 环保工程 故障监控工程等 考虑到许多工业环境中对多点温度进行 监控 一般需要测量几十个点以上 本文设计多路无线温度监控系统 1 2 设计任务要求 1 能够开机检测温度传感器的个数 动态调整系统参数 2 下位机提供友好的人机 能显示各传感器的温度数据 3 无线传输距离 100 米以上 4 上位机能将温度数据存储于数据库并绘制温度曲线 1 3 方案选择 根据各项功能的实现方法以及硬件连接方式 将整个系统划分为四大模块 下机位 温度数据采集模块 下位机人机交互模块 与上位机无线通信模块 上位机数据处理 1 3 1 下位机数据采集模块 方案一 采用热敏电阻 价格比较便宜 但热敏电阻精度 重复性 可靠性较差 对于检测 1 摄氏度的信号是不适用的 在温度测量系统中 经常采用单片温度传感器 比如 AD590 LM35 等 但这些芯片输出的都是模拟信号 必须经过 A D 转换后才能送给 单片机 这样就使得测温装置的电路较复杂 另外 这种测温装置的一根线上只能挂一 个传感器 不能进行多点测量 即使能实现 也要用到复杂的算法 一定程度上也增加 了软件实现的难度 方案二 在多点测温系统中 传统的测温方法是将模拟信号远距离采样 然后进行 AD 转换 而为了获得较高的测温精度 就必须采用措施解决由长线传输 多点测量切换 及放大电路零点漂移等造成的误差问题 采用数字温度芯片 DS18B20 测量温度 输出信 号全数字化 便于控制 省去传统的测温方法的很多外围电路 且该芯片的物理化学性 很稳定 它能用做工业测温元件 DS18B20 的最大特点之一采用了单总线的数据传输 测温系统的电路就比较简单 体积也不大 TMS320LF2407 DSP 评估板只需要一个 I O 就可以带驱动多个 DS18B20 容易实现多点测量 轻松的组建传感器网络 第 1 章 概述 3 从上述两个方案的对比中看出 方案一的电路复杂 可扩展性不高 不方便进行多 点测量 因此我们选择方案二 1 3 2 下位机人机交互模块 方案一 由 DSP 驱动 128 64LCD 显示屏来实现温度的显示 本系统的键盘功能主 要有多路数据采集通道间切换 以及其它系统信息显示切换 可以通过图文的方式显示 更多信息 方案二 用七段数码管和键盘来做人机交互界面 优点是价格便宜 程序简单 缺 点是硬件电路复杂 不方便同时显示多路温度以及其它系统信息 界面表达不能满足要 求 从上述两个方案的对比中看出 选择方案一 1 3 3 与上位机无线通信模块 方案一 DSP 采集到的数据 通过无线模块传输到从单片机 再由从单片机驱 动 USB 芯片通过 USB 口将数据传到电脑中 这样硬件实现复杂 也使编程难度加 大 方案二 DSP 采集到的数据 通过无线模块传输到从单片机 再通过从单片机 的串口直接将数据传到上位机中 单片机与 PC 串口通信实现是简单可靠的 通过对比两个方案 选择更简单可靠的方案二 1 3 4 上位机数据处理编程 方案一 上位机编程采用 Java Java 语言本身比 C 语言要更简单 Java 有内建的 垃圾回收机制 因此程序员无需关注内存释放工作 Java 语言本身支持多线程 方案二 上位机编程采用 C 和基于 Qt 的开源跨平台开发框架来编写上位机程序 Qt 提供了一组更容易理解的 GUI 类 而且相对于 Java 的 Swing 类来说 它们运行更快 使用起来更加灵活 通过比较两个方案 选择方案二中更加熟悉的 C 以及在开源项目中广泛采用的 Qt 来进行上位机数据处理编程 1 4 DSP 开发硬件平台介绍 由于系统将来不仅用于采集数据 还要根据采集到的信息对相关设备进行复杂的控 制 比如工业生产某一过程对温度的控制精度要求很高 这时就要采用模糊控制 但一 般的单片机运算速度较慢导致控制实时性差 而采用数据信号处理器就能很好的完成任 务 所以本系统主控下位机采用 TMS320LF2407DSP 芯片 DSP 开发板是用学院提供的 TDS2407EA 评估板 TDS2407EA 评估板是一个性能优越的板卡 开发人员可对 LF2407 数信号处理器的 某些参数进行检测 以确定 DSP 是否满足要求 而且 此模块是一个可以开发和运行 LF2407 系列处理器芯片的开发平台 TDS2407EA 板使用的是 TMS320LF2407DSP 芯片 EVM 板可以对 LF2407 代码进行全速检验 其有 544 个字长的片上数据存储器 128K 字 长的板上存储器 片上只读闪烁存储器 片上 UART 和一个 MP7680D A 转换器 板上安 装的器件可使评估板解决各类问题 4 个扩展接口 可提供给任何评估电路 评估电路 第 1 章 概述 4 是用户自行开发 可应用大量的用户界面来转化代码 从而缩短开发时间和周期 1 图 1 1 1 显示的是 TDS2407EA 基本配置的方框图 EVM 板主要的接口包括目标只读 存储器 模拟接口 CAN 接口 串行引导 ROM 用户指示灯和开关 RS232 接口 SPI 数 据接口和扩展接口 LF2407 接有 128K 字长无延迟静态存储器 一个扩展的 I O 接口支 持 65 000 并行的 I O 端口 片上 CAN 接口和 RS232 串口可用作扩展接口 图 1 1 TDS2407EA 基本配置的方框图 1 51 5 无线数据采集器系统框图无线数据采集器系统框图 通过四个模块的方案选择 最终的系统框图如图 1 2 所示 图 1 2 系统框图 TMS320LF 2407A 液晶显示 DS18B20 DS18B20 DS18B20 无线模块 无线模块 从 MCU ATmega16L 上位机 PC 按键单元 RS232 第 1 章 概述 5 由系统框图可以看出系统工作原理 上位机定时发送温度读取命令 通过串口将命 令传到从单片机 ATmega16L 经过处理之后由 ATmega16L 控制无线模块将命令发出 在 主控端的无线模块将产生中断 DSP 在中断中处理收到的数据 之后 DSP 控制 DS18B20 采集温度信息 将温度信息同样通过无线模块发送到上位机 同时主控 DSP 也提供了强 大的人机交互键 输入采用三键设计 显示部分则用了 128 64 的大液晶 可以提供实 时的温度信息显示 第 2 章 数据采集模块的软硬件设计 6 第 2 章 数据采集模块的软硬件设计 2 1 DS18B20 简述 DS18B20 是 DALLAS 公司生产的一线制数字温度传感器 温度测量范围为 55 125 可编程为 9 位 12 位 A D 转换精度 测温分辨率可达 0 0625 被测温度用符 号扩展的 16 位数字量方式串行输出 其工作电源既可在远端引入 也可采用寄生电源 方式产生 多个 DS18B20 可以并联到一起 CPU 只需一根数据线就能与诸多 DS18B20 通 信 占用微处理器的端口较少 可节省大量的引线和逻辑电路 以上特点使 DS18B20 非 常适用于远距离多点温度检测系统 DS18B20 内部结构如图 2 1 所示 主要由 4 部分组成 64 位 ROM 温度传感器 温 度报警触发器 TH 和 TL 配置寄存器 DS18B20 的管脚排列如图 2 2 所示 DQ 为数字信 号输入 输出端 GND 为电源地 VDD 为外接供电电源输入端 寄生电源接线方式时接地 ROM中的64位序列号是出厂前被光刻好的 它可以看作是该DS18B20的地址序列码 每个 DS18B20 的 64 位序列号均不相同 ROM 的作用是使每一个 DS18B20 都各不相同 这 样就可以实现一根总线上挂接多个 DS18B20 的目的 DS18B20 中的温度传感器完成对温度的测量 用 16 位符号扩展的二进制补码读数形 式提供 以 0 0625 LSB 形式表达 例如 125 的数字输出为 07D0H 25 0625 的 数字输出为 0191H 25 0625 的数字输出为 FF6FH 55 的数字输出为 FC90H 2 2 数据采集模块硬件设计 多路温度采集模块的硬件是根据 DS18B20 一线式的特点来设计的 其特点是每一片 DSl8B20 在其 ROM 中都存有其在出厂前已写入唯一的 48 位序列号 DSP 在开机后向一线 总线发 SEARCH 搜索 ROM 命令 F0H 通过搜索算法得到在各路一线总线上的 DS18B20 个数及序列号 设计如电路图2 2所示 得出每个DS18B20的序列号后 就可以通过Match Rom 选择相应的 DS18B20 进行温度数据采集 图 2 2 DS18B20 硬件原理图 第 2 章 数据采集模块的软硬件设计 7 2 3 数据采集模块软件设计 2 3 1 DS18B20 的工作时序 DS18B20 的一线工作协议流程是 初始化 ROM 操作指令 存储器操作指令 数据 传输 其工作时序包括初始化时序 写时序和读时序 初始化时序如图 2 3 所示 2 图 2 3 初始化时序 主机首先发 480us 960us 的低电平进行复位 然后释放总线 之后总线被外部上 拉电阻抬高 大约等待 15 60us 之后 DS18B20 发出 60 到 240us 的低电平信号 以示 存在 至此初始化结束 写时序如图 2 4 所示 2 图 2 4 写操作时序 写 0 的时候 首先主机发复位信号 然后发 0 于是低电平持续 60us 就完成 了写 0 写 1 的时候首先主机发复位信号 持续时间大于 1us 小于 15us 然后发 1 持续 50us 以上即可 读时序如图 2 5 所示 第 2 章 数据采集模块的软硬件设计 8 图 2 5 读操作时序 读时序也是主机先发低电平 然后在 15us 内检测连接 DS18B20 的数据线的引脚 从而读得相应值 2 3 2 数据采集模块子程序设计 1 DS18B20 搜索算法的实现 根据 DALLAS 规定 单总线数字传感器的操作必须按照以下步骤进行 a 微处理器发出复位脉冲 脉宽为 480us 690us 进行初始化 一线总线上的传感 器则发出存在脉冲 脉宽为 60us 240us 2 做出响应 b 微处理器向一线总线发 SEARCH 搜索 ROM 命令 F0H c 微处理器通过一线总线读一位 数据 过程如下 每个 DS18B20 把各自 ROM 中的第一位放到一线总线上 产生 线与 由微处理器 读取 线与 结果 微处理器根据读取的两位 线与 结果 可得出如下结论 00 表明总线上有传感器连着 且在该数据位上它们的值发生冲突 产生 混 码 01 表明该数据位上的值均为 0 10 表明该数据位上的值均为 1 11 表明该数据位上没有传感器相连 微处理器通过算法判断 将 0 或者 1 写到总线上 选中总线上与该位相符的 传感器 d 通过软件重复以上步骤 直到完整读取 64 位序列号 搜索算法的流程如图 2 6 相关实现代码见附录中代码片段 1 第 2 章 数据采集模块的软硬件设计 9 图 2 6 搜索算法的流程图 2 获取其中一个通道上各传感器的温度值 相关实现代码见附录中代码片段 2 具体流程如图 2 7 复位总线 Record 64 N 0 初始化各个变量 开始 一 线 总 线 发 SEARCH 搜 索 ROM 命令 F0H N 64 DSP 读总线两次 是 00 是 01 或 10 没有器件响应 Nrecord 发前一个已搜索注册码 的补码 保存此补码 n 向总线写 0 并储存 n 输出第一次读的 结果并储存 Y Y Y Y Y N N N Y N N 第 2 章 数据采集模块的软硬件设计 10 图 2 7 获取其中一个通道上各传感器的温度值流程 图 2 7 中 主机发出跳过 ROM 命令之后再发出统一的温度转换 启动码 44H 就 可以实现所有 DS18B20 的统一转换再经过 750ms 后就可以用很少的时间去逐一读取 各个 DS18B20 逐一匹配序列号 温度数据存放在缓冲区中 选定通道总线复位 跳过读序号 列号 启动温度转换 转换结束 转换结束 复位 匹配序列号 读取匹配的传感器的温 度 开始 N Y 此总线上所有 温度都读出 N 结束 Y 第 3 章 人机交互模块的软硬件设计 11 第 3 章 人机交互模块软硬件设计 3 1 人机交互模块硬件设计 人机交互模块是由 ST7920 128 64 LCD 和三个按键组成 其主要负责显示各通道的 温度数据 以及其它系统信息显示 人机交互模块实物图如下图 3 1 图 3 1 人机交互模块实物图 图 3 2 按键硬件连接 选择用 DSP 开发板上哪个 IO 口做为按键输入是十分重要 原来是想用 IOA0 IOA1 和 IOA2 做为按键的输入口 但是调试时发现 IOA1 一直不能获得正确的电平信号 在排 除软件问题后 想是硬件连接问题 但是测试后又没发现断路 最后在 DSP 开发板的原 理图上发现了问题所在 IOA1 在开发板上是通过一个允许 5V 输入的快速转换芯片将信 号转换为 3 3V 而设计的人机交互模块是采用 3 3V 和 5V 混合供电的 而按键部分刚好 是由 3 3V 上拉到高电平的 导致电平信号在输入到快速转换芯片时判别出错 于是改 用了不经过快速转换芯片的 IOA6 口 调试发现程序正常工作了 按键硬件连接如图 3 2 系统采用 128 64 点阵液晶作为人机交互界面 该 LCD 模块是由 LCD 驱动器 LCD 控制器 少量的电阻电容以及 LCD 屏组成 质量轻 体积小 功耗低 显示内容丰富 提供 此外 液晶显示接口简单方便 可直接与微处理器相连 实时显示采集所测试的 第 3 章 人机交互模块的软硬件设计 12 参数值 3 ST7920 LCD 硬件连接 4 如图 3 3 所示 图 3 3 ST7920 LCD 硬件连接图 3 2 lcd 液晶多级菜单的实现 3 2 1 定义菜单操作的结构体 根据需求 首先建立一个结构 并定义一个结构变量StateTab 结构变量就是把多个 不同类型的变量结合在一起形成的一个组合型变量 构成一个结构的各个变量称为结构 元素 该结构中共有5个结构元素 分别是4个字符型和1个指针变量 4个字符型变量分别 为当前及各个按键的索引号 也就是操作的状态号 最后1个指针变量指向需执行函数 5 这样就可以做一个结构数组 在结构数组里为每一个菜单项编制一个单独的函数 并根 据菜单的嵌套顺序排好本菜单项的索引号 以及本级菜单项的上 下卷动的索引号和上 下级菜单的索引号 具体程序如下所述 typedef struct 菜单显示结构体 unsigned char KeyStateIndex 当前的状态索引号 unsigned char KeyDownState 按下向下键时的状态索引号 unsigned char KeyUpState 按下向上键时的状态索引号 unsigned char KeyEnterState 按下回车键时的状态索引号 void CurrentOperate 当前状态应该执行的功能操作 StateTab 第 3 章 人机交互模块的软硬件设计 13 3 3 2 2 2 2 菜单层次结构菜单层次结构 通过对下位机显示需求的分析和将来扩展的考虑 最终设计出了相当友好的人机交 互界面 一级菜单采用了直观的图标 可以方便用户辨认 二级显示用文字实现 这样 可以显示大量信息 显示界面效果如图 3 3 图 3 4 和图 3 5 所示 各层菜单设计按排代码如下 define MENU SIZE 20 菜单个数 const StateTab KeyTab MENU SIZE 菜单层次结构 key1 key3 key2 Right Left Index Down Up Enter Operate 0 1 5 6 Stat0 显示温度 1 2 0 7 Stat1 温度曲线 2 3 1 8 Stat2 发送数据 3 4 2 9 Stat3 设置 4 5 3 13 Stat4 关于团队 5 0 4 14 Stat5 版本 6 19 18 0 Stat6 显示通道 0 1 7 1 1 1 Stat7 温度曲线 8 2 2 2 Stat8 发送数据 9 10 12 15 Stat9 发送时间间隔 10 11 9 16 Stat10 曲线图设置 11 12 10 17 Stat11 关闭 LCD 时间 12 9 11 3 Stat12 返回 13 4 4 4 Stat13 关于团队 14 5 5 5 Stat14 版本 15 9 9 9 Stat15 发送时间间隔 16 9 9 9 Stat16 曲线图设置间 17 9 9 9 Stat17 关闭 LCD 时 18 0 0 0 Stat18 显示通道 0 温度 19 0 0 0 Stat19 显示通道 1 温度 图 3 3 开机欢迎界面 第 3 章 人机交互模块的软硬件设计 14 图 3 4 显示各菜单界面 图 3 5 显示其中一路传感器温度 3 2 3 菜单间切换 在设计各层菜单之后 就是对菜单进行了选择切换了 在本设中采用的是查询方式 在主循环内不停查询按键状态 若有键按下 则进行下按键散转 执行对应的菜单操作 语法格式 void MenuOperate unsigned int key 实现功能 按键散转 进行菜单的选择 入口参数 按键扫描得到的键值 返回值 无 void MenuOperate unsigned int key if key 0 x44 key 0 x41 key 0 x05 switch key case 0 x44 向上的键 KeyFuncIndex KeyTab KeyFuncIndex KeyUpState break 第 3 章 人机交互模块的软硬件设计 15 case 0 x05 回车键 KeyFuncIndex KeyTab KeyFuncIndex KeyEnterState break case 0 x41 向下的键 KeyFuncIndex KeyTab KeyFuncIndex KeyDownState break 下面是执行按键的操作 KeyFuncPtr KeyTab KeyFuncIndex CurrentOperate KeyFuncPtr 执行当前的按键操作 第 4 章 无线通信 16 第 4 章 无线通信 4 1 无线通信硬件设计 4 1 1 无线传输模组介绍 无线收发芯片是整个无线数据采集系统的核心 关系到通信的距离和可靠性 同时 也直接影响到整个系统的功耗 nRF2401 是单片射频收发芯片 工作于 2 4 2 5GHz ISM 频段 芯片能耗非常低 工作电流可以低至 10 5mA 接收时工作电流可以低 至 18mA 节能设计更方便 其 DuoCeiverTM 技术使 nRF2401 可以使用同一天线 同时接收两个不同频道的数据 基于上述 nRF2401 的特点 所以决定用其做为系 统的无线收发芯片 nRF2401 的 PCB 一般都是双层板 底层一般不放置元件 为地 层 顶层的空余地方一般都敷上铜 这些敷铜通过过孔与底层的地相连 直流电 源及电源滤波电容尽量靠近 VDD 引脚 nRF2401 的供电电源应通过电容隔开 这样 有利于给 nRF2401 提供稳定的电源 在 PCB 中 尽量多打一些通孔 使顶层和底 层的地能够充分接触 但是限于学校的条件 无法完成 PCB 板的制作 于是直接 购买凌阳公司的无线传输模块 以 nRF2401 为核心 nRF2401A及其外围电路如图 4 1 包括nRF2401A芯片部分 稳压部分 晶振部分 天线部分 电压VDD经电容C1 C2 C3处理后为芯片提供工作电压 晶振部分包括Y1 C9 C10 晶振Y1允许值为 4MHz 8MHz 12 MHz 16 MHz 如果需要1Mbps的通信速率 则必须选择16MHz晶振 天线部分包括电感L1 L2 用来将nRF2401A芯片ANT1 ANT2管 脚产生的2 4G电平信号转换为电磁波信号 或者将电磁波信号转换为电平信号输入芯片 的ANT1 ANT2管脚 6 凌阳提供的模组硬件原理如图4 1 图4 1 nRF2401A及其外围电路 第 4 章 无线通信 17 4 1 2 无线传输模组接口电路 主从单片机都要接一个无线传输模块 传输模块的接口如表 4 1 在两个主从 单片硬件上都设计了如图 4 2 的接口电路 图 4 3 为与从单片机连接的无线传输 模组实物图 表 4 1 芯片管脚连接及功能描述 2401A管脚 作用描述 PWR UP nRF2401A芯片上 电 CE nRF2401A使能 CS nRF2401A片选 DR1 通道1数据请求 CLK1 通道1时钟 DATA1 通道1数据 DR2 通道2数据请求 CLK2 通道2时钟 DATA2 通道2数据 图 4 2 接口电路设计 图 4 3 接口电路实物图 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 Y2 10PIN nPW R UP nCE nCS nDR1 nCLK1 nDATA1 VCC 第 4 章 无线通信 18 4 1 3 从单片机与 PC 串口通信的硬件设计 从单片机采用的是 ATmega16L 芯片 主要的功能是完成将无线模块收到数据 通过串口发送到 PC 端 同时也从串口获得 PC 端的控制信息 通过无线模块发送 到主控单片机 DSP 完成远端 DSP 与上位机间的无线通信 图 4 4 为从单片机模块 实物图 图 4 4 从单片机 ATmega16L 外围电路实物图 4 2 4 2 无线通信无线通信软件软件设计设计 4 2 1 nRF24014 2 1 nRF2401 工作时序工作时序 向 nRF2401A 写控制字操作须严格按照图 4 3 的时序进行 第 4 章 无线通信 19 图 4 3 向nRF2401A写命令字时序图 PWR UP 为高 CE 为低时 置位 CS 芯片处于命令字写入状态 通过通道 1 向芯片 的控制字缓冲区写入命令字 按照由高位到低位的顺序 命令字全部写入后 将 CS 置 低 nRF24101A 芯片将会根据命令字配置相应的内部模块 在第一次配置操作结束后 只有最后两个字节的命令字可以被更改 前 16 个字节的修改无效 如果需要修改前 16 个字节的命令字 如通道接收地址 接收数据长度等 则需要掉电 PWR UP 置低 后 重新上电 PWR UP 置高 才能对芯片进行彻底初始化操作 单片机从nRF2401A读取数据的时序如下 图 4 4 单片机从 nRF2401A 读取数据时序图 单片机向nRF2401A发送数据的时序如下 第 4 章 无线通信 20 图 4 5 单片机向 nRF2401A 发送数据时序图 由单片机发送到 nRF2401A 之后 nRF2401A 将会进行打包并发射 打包后的数据格 式为 图 4 6 nRF对外发送数据的打包格式 其中 Pre 为 8 位的校验头 CRC 为 8 位或 16 位的校验尾 在 Shock Burst 模式下由 nRF2401A 自动添加 需要注意的地方 1 Address Data CRC的位数之和不超过256 2 Address长度必须和目标接收通道的地址一致 数据和长度 3 Data长度必须和目标接收通道的接收数据宽度一致 4 发射端和接收端的RF频率须一致 如两端均采用通道1 则二者控制字的bit7 bit1一致 如接收端采用通道2 则发射端bit7 bit1值比接收端bit7 bit1值大8 4 2 2 nRF2401A4 2 2 nRF2401A 的命令的命令字字 nRF2401A共有18 Byte 144bit 的命令字 下面逐位介绍其作用 bit143 bit120 测试保留区 用户不需设置 bit119 bit112 通道2接收数据长度 bit 通道2接收数据的长度Data2 W 用于接收 如果通道2接收到一帧数据 在去掉地 址和校验位后 其数据长度和bit119 bit112值一致 则认为通道2接收到一帧数据 置位DR2 否则丢弃 bit111 bit104 通道1接收数据长度 bit 通道1接收数据的长度Data1 W 用于接收 如果通道1接收到一帧数据 去掉地址 和校验位后 其数据长度和bit111 bit104值一致 则认为通道1接收到一帧数据 置位DR1 否则丢弃 通道1和通道2的数据长度受nRF2401A帧数据总长度限制 帧数据 总长度为256 bit 每一帧的数据长度 Data W open QIODevice ReadWrite 3 设置串口参数 采用与单片机一致的位数 波特率和停止位十分重要 这里还注 重有些波特率只有在 Posix 标准下才有效 有些则相反 像 2400bps 和 9600bps 这些常 用波特率还是通用的 同时设置无奇偶校验 停止位 1 位 无硬件流控制 超时控制 easyCom setBaudRate BAUD9600 easyCom setDataBits DATA 8 easyCom setParity PAR NONE easyCom setStopBits STOP 1 easyCom setFlowControl FLOW OFF easyCom setTimeout 500 4 读出串口中的数据 以串口的 readyRead 做为信号 readEasyCom 做为槽 建 立两者之间的连接 当串口有数据时 就产生信号 执行串口类成员函数 readAll 就 可以将串口中的数据读出 connect easyCom SIGNAL readyRead this SLOT readEasyCom temponce easyCom readAll 5 2 温度数据库实现 在本次设计中采用的的数据库是 QSLite 版本 3 这个数据库在 Qt4 6 中有自带的数 据库驱动 QSQLITE3 存储数据库的主要步骤 10 如下 1 生成数据库文件 同时生成一个表 根据设计本身的要求 这个表的主键为一个 自增量 还要有四个字段 日期 时间 传感器编号和温度 在定义这些段时可以不声 明类型 QSqlDatabase db QSqlDatabase addDatabase QSQLITE db setDatabaseName db dat QSqlQuery query query exec create table temperature id integer primary key autoincrement sensornum date time temperature 第 5 章 上位机数据处理 27 2 保存数据 使用 QSqlQuery 执行 SQL 命令 保存下各字段信息 query exec QString insert into temperature sensornum date time temperature values 1 2 3 4 arg sensornum arg timeDate arg timeTime arg temperature 3 查看表 设计中使用 QTableView 窗口部件显示 QSqlTableView 下面给出了建立 QSqlTableModel 以显示 temperature 表所需的部分代码 QSqlTableModel model new QSqlTableModel this model setTable temperature model select QTableView view new QTableView ui tableView show 5 3 绘制温度曲线 Qwt 是一个基于 Qt 的扩展类库 包含了大量用于工程开发编程的 GUI 部件和辅助 工具 除了二维绘图控件类外 它还提供了诸如刻度 滑块 转盘等控件类供开发使用 QwtPlot 类对象本身不但集成了画布 坐标轴等部件 根据需要还可以在其上绘制曲线 栅格 标记等绘图项 要构建一个满足设计要求的具有绘图功能的部件还必须对 QwtPlot 类对象的相关属性进行修改 并添加绘图需要的曲线绘制类 绘图数据容器类等必要的 成员 基本的工作如下 1 设置坐标轴 背景网格主要是用来在画布中更直观的显示X 和Y 轴的刻度划分 使用到的主要函 数如下 void QwtPlot enableAxis int axisId bool tf true void QwtPlot setAxisScale int axisId double min double max double stepSize 0 2 添加绘图工具及数据容器 绘图工具使用到了类库中的 QwtPlotCurve 类 这个类可以以几种不同的曲线类型 在画布上进行曲线绘制 下面给出此类成员创建后的主要设置函数 void QwtPlotCurve setStyle CurveStyle style void QwtPlotItem setYAxis int axis 在Qwt 类库中 使用QwtArrayData 类来盛放绘图点数据 这个数据容器类包含了两 个 QwtArray类型成员 分别用来存放每个点的 X 轴和 Y 轴值 3 绘制波形 有了绘图数据 就可以调用 QwtPlotCurve 类的绘图函数来实现绘图 关键函数如 下 void QwtPlotCurve setRawData const double xData const double yData int size void QwtPlotCurve draw QPainter painter const QwtScaleMap 其中绘制函数 draw 中的 QwtScaleMap 类型参数可由以下方法获取 第 5 章 上位机数据处理 28 QwtScaleMap QwtPlot canvasMap int axisId 其中 axisId 是坐标轴标识号 5 4 无线数据采集终端界面设计 QT Designer是用来设计图形程序的一个图形设计的接口 它可以组织Qt中的组件 也可说它包含了 Qt 中的组件 它帮助用户在图形模式下设计各种部件以及各种对话框 用 QT Designer 设计界面如图 5 3 图 5 3 用 QT Designer 设计程序界面 完成设计后 会自动生成 ui com h 可以在此基础上进行部分代码手动修改 但是 要注意的是每当用 QT Designer 进行界面设计之后手动修改过后的 ui com h 会被自动 生成的文件覆盖 第 5 章 上位机数据处理 29 图 5 4 程序运行效果图 图 5 5 温度曲线显示 如图 5 4 所示 无线数据采集终端界面分为三个部分 曲线显示模块 数据库表查 询和实时温度显示 温度曲线可以选择显示哪路传感器 也可以同时显示多路温度 提 第 5 章 上位机数据处理 30 供了历史数据查询功能 可以通过指定日期和传感器编号来查询历史温度 在界面的右 下方提供了各路传感器实时的温度显示 图 5 5 显示的是第一路的 1 号 2 号传感器和 第二路 6 号 7 号传感器的温度曲线 曲线的实时变化直观的显示出监测点当前的环境 状况 结论 31 结论 本文设计一个基于 TMS320LF2407EA 的多路无线温度采集系统 主控下位机采用数 字信号处理器 在开机能时自动检测通道上传感器的数量 在采集到温度数据之后 能 够以数据形式显示在液晶屏幕中 并且通过 nrf2401 无线模块传输到上位机 由 Qt 开 发的程序将数据存储在 QSQLITE 数据库 并用 Qwt 库绘制温度曲线 本系统还是一个不完善的系统 还有许多需要改进的地方 设计中所采用的 DS18B20 搜索算法还存在不足 有时会发生重复或遗漏搜索 在通信协议不完整 没有进行发送 超时出错处理 还有各种不足之处有待将来改进 结论 32 致谢语 本论文能得以顺利完成 我首先衷心感谢我的导师 秦德兴 感谢他本学期来对我 的悉心教导 帮助和支持 他严谨治学的工作态度 科学实用的教学方法 热心地帮助 我 不仅授给我相关的专业知识 而且帮助我提高了实际应用的能力 教会了我做事做 人的道理 这一切 将对我以后的工作和人生道路产生积极的影响 同时 还要感谢电子实验室的各位老师 在我的毕业设计过程中 给予我的支持和 帮助 使我不仅顺利地完成了毕业设计 还使我的自学能力 独立思考能力和工作能力 等都得到了较大的提高 我所得到的一切都凝聚着上述各位的辛劳与智慧 参考文献 33 参考文献 1 TDS2407EA 用户使用手册 闻亭科技发展有限责任公司 2003 1 2 DS18B20 pdf OL http www xie 2008 3 刘和平 邓力 TMS320LF240 x DSP C 语言开发应用 M 北京航空航天大学出版社 2002 4 江世明 128 64 图形液晶显示模块与 51 系列单片机接口技木 J 电子世界 2005 6 5 陆铮 罗嘉 单片机 C 语言下 LCD 多级菜单的一种实现方法 J 工矿自动化 2006 6 无线传输模组使用说明书 凌阳科技股份有限公司 2006 11 7 TMS320CXX USER S GUIDE TEXAS INSTRUMENT CO LMT 1997 8 丁林松 黄丽琴 Qt4 图形设计与嵌入式开发 M 人民邮电出版社 2009 9 李仁见 战晓明 C 设计模式基于 Qt4 开源跨平台开发框架 M 清华大学出版社 2007 10 Jasmin Blancette Mark Summerfield C GUI Programming with Qt4 M Pearson Education 2008 参考文献 34 附录 DSP 硬件原理图 123456 A B C D 654321 D C B A Title NumberRevisionSize B Date 28 May 2010Sheet of File D MyDesigns TDS2407EA dsp ddbDrawn By 无 线 数 据 采 集 器 的 设 计 V1 0 VSS 1 VCC 2 V0 3 RS 4 R W 5 E 6 DB0 7 DB1 8 DB2 9 DB3 10 DB4 11 DB5 12 DB6 13 DB7 14 PSB 15 NC 16 RST 17 NC 18 LEDA 19 LEDK 20 J2 LCD12864 Q9 NPN R18 RESISTOR TAPPED GND R4 4k7 IOB0 IOB1 IOB2 IOB3 IOB4 IOB5 IOB6 IOB7 IOA3 IOA4 IOA5 IOA7 3 3V 3 3V 3 3V GND 1 DQ 2 VD 3 Q2 DS18B20 GND 1 DQ 2 VD 3 Q1 DS18B20 GND GND 5V 5V R1 4k7 R3 4k7 GND 1 DQ 2 VD 3 Q3 DS18B20 GND 5V GND 1 DQ 2 VD 3 Q4 DS18B20 GND 5V GND 1 DQ 2 VD 3 Q5 DS18B20 GND 5V GND 1 DQ 2 VD 3 Q6 DS18B20 GND 5V GND 1 DQ 2 VD 3 Q7 DS18B20 GND 5V GND 1 DQ 2 VD 3 Q8 DS18B20 GND 5V XQ1 1 XQ2 2 CD1 3 CK 4 CB 5 K1 RELAYSRD 1 2 J4 CON2 5V 5V 3 3V 5V Q10 NPN R16 1K D1 DIODE XQ1 1 XQ2 2 CD1 3 CK 4 CB 5 K4 RELAYSRD 1 2 J6 CON2 5V Q11 NPN R17 1K D2 DIODE 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 R12 8PIN 1 1 2 2 3 3 4 4 5 5 6 6 S6 SELFLOCK 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 Y3 10PIN nPWR UP nCE nCS nDR1 nCLK1 nDATA1 3 3V R13 1K S3 SW PB R14 1K S4 SW PB R15 1K S5 SW PB 3 3V 3 3V 3 3V 5V RELAY1RELAY2 RELAY1 RELAY2 nPWR UP nCE nCS nDR1 nCLK1 nDATA1 IOA0 1 2 3 4 5 6 7 8 9 10 J1 CON10 IOB0 IOB1 IOB2 IOB3 IOB4 IOB5 IOB6 IOB7 GND 5V D7 LED R23 1K 620 3 3V IOA0 IOA1 IOA2 IOA3 IOA4 IO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论