在许多实时监测系统中, 经常需要接收距离较远的测控点 的数据, 如何可靠快速地实现现场数据的采集、数据的远程传输 及输出控制, 是这些监测模块必须解决的问题。在追求低成本的 现代化设计中, 许多功能强大, 性能可靠的单片机随之产生了。 本文就是基于功能齐全、性价比高的 C8051F021 单片机而设计 的数据采集模块。
1.1 硬件的总体结构
本模块的硬件总体结构框图如图1所示
本模块以 C8051F021 单片机为 CPU 控制单元的核心, 同 时还包括了数据采集、数据存储、数据通信、光电耦合和断电保 护等多种功能。由于 C8051F021 功能比较齐全, 因此使整个模 块特别简洁, 不仅减小了模块的体积和功耗、大大节省了外围设 备的开销, 而且极大地提高了模块的可靠性和稳定性。
1.2 模拟量采集单元
本模块选用 C8051F021 的 ADC0 模 /数转换通道作为模 拟量信号的采集通道。如通过温度、湿度传感器实时采集工作环 境 的 温 度 、 湿 度 情 况 。 由 现 场 采 集 的 模 拟 信 号 传 送 到 C8051F021 的 ADC0 输入通道的过程中必然要受到外来信号 的干扰, 从抗干扰和保证采集信号的高线性度考虑, 在输入端选 用了高线性度光耦 HCNR201, 对模拟信号进行一次隔离, 这样 在较准确获得有用信号的同时, 又去除了干扰成分。电路图如图 2 所示。图中的前端运放 LMV931 构成负反馈放大电路, 抑制LED 中电流的变化; 后端运放 LMV931 构成 I/V 转换电路。由图 可知 VOUT /VAIN=KR30 /R28, 即输出电压与输入电压是呈线性关系 的, 且与 LED 的输出光的强度无关。通过调整 R30 /R28 的值来调 整其电压增益。R29 为 LED 的限流电阻, 两个电容用于改善电路 的高频特性。
1.3 开关量信号采集单元
该采集单元适用于对具有开关量的信号进行采集, 如电路 的通电与否、水流的通过与否等开关量。电路如图 3 所示。该采 集单元设计的是 220V 交流电压输入。设定当输入大约小于交 流峰值一半时, 不给予响应。为了避免电气特性及恶劣工作环境 带来的干扰, 该处采用光电耦合对信号实现了一次电- 光- 电的 转换。在进入光电耦之前又通过电解电容滤除部分尖峰脉冲, 同 时此电容又与分压电阻形成放电回路, 这些措施有效地屏蔽了 信号传输过程中所受到的干扰。同时还安装有 LED 工作指示 灯, 可以使用户对每一通路的工作情况一目了然。
1.4 输出控制单元
该单元是对现场采集数据进行分析后, 由上位机工作人员或单片机按预先设置好的反馈条件自动地给出控制输出, 来控 制带有光电隔离的固体继电器 JGX- 1505FB, 进而驱动现场的 控制设备。同时也安装有 LED 工作指示灯, 同样可以对每一路 的工作状况一目了然。
1.5 RS-485通信接口
从目前解决单片机中长距离通信的诸多方案分析来看, RS- 485 总线通信模式由于具有结构简单、价格低廉、通信距离 和数据传输速率适当等特点而被广泛应用。因此本模块采用 RS- 485 通信, 选择 C8051F021 的 P0.0 和 P0.1 作为串行口的 TX0 和 RX0。从减少硬件的外围设备考虑, 在电路中, 使用自带 隔离的 RS- 485 接口芯片 IL485, 它采用双电源供电, 在与单片 机相接端采用+3.3V 电源供电, 另一端采用+5V 电源供电。通过 单片机 P2.4 置 0 或置 1 来控制 RS485 接口芯片的 DE 使能 端, 进而控制通信数据的发送; 它的接收使能端 /RE 接地保持低 电平, 即发送使能无效时, 始终保持接收状态。具体电路如图 4 所示。与普通的 RS- 485 芯片相比, 它能防止高电压雷电冲击。 对一些环境比较恶劣的现场, 可直接与传输线相接而不需要任 何外加保护元件。
模块软件采用汇编语言编写, 主要由主程序模块、数据采集 处理模块、通信模块、数据输出控制模块等组成。主程序的任务 包括各可编程器件、堆栈、各项参数等初始化。在初始化结束之 后, 立即开放中断, 则判明中断源后进入相应服务模块( 如数据 采集、数据的发送和接收等) , 服务结束, 均返回主程序中的规定 入口, 等待下一轮循环。 数据采集模块一般在现场工作, 由于现场工作的环境通常 比较恶劣, 以及各种设备引起的干扰较多, 使得采集的数据存在 一定的误差, 除了在硬件上加强抗干扰措施外, 在软件设计中也 采取了相应措施。通过分析误差产生的途径和原因, 将采集数据中的误差按粗大误差、系统误差和随机误差进行分类, 并根据这 三类误差的特点采用相应的处理策略: 首先采用去极值平均滤 波消除粗大误差和随机误差的影响, 其次考虑传感器等元器件 所带来的系统误差对采集数据的影响, 并根据系统误差得到的 修正值形成表格, 通过查表消除数据中的系统误差。 另外, 为了确保模块的可靠性和稳定性, 还附加有掉电保 护, 系统复位等其它软件功能。
本文设计的是带有 4 路传感器等模拟量输入、4 路带光电 隔离的开关量输入和继电器输出的数据采集模块。本模块选用 C8051F021 作为 CPU 的核心控制单元, C8051F021 有 64 个 管脚, 在本设计中有一部分管脚的空余, 可以利用这些空余的管 脚, 根据实际的需要进行其它功能的扩展。 本模块的一个典型应用就是在滴灌控制系统中。由传感器 采集土壤的湿度, 与滴灌的下限值进行比较, 来得到浇水与否的 命令。若为浇水命令, 则执行浇灌输出控制命令, 通过继电器驱 动给水电磁阀。同时由 4 路开关量采集水流信息, 从而得到浇灌 是否顺利进行的反馈信息。与此同时土壤湿度传感器实时采集 土壤的水分含量, 当超过滴灌的上限值时, 将执行关闭电磁阀的 输出控制命令。如图 5 的系统框图所示。