基于μC/OS-Ⅱ的数据采集系统设计与应用
扫描二维码
随时随地手机看文章
摘要:通用串行总线因 (USB)具有传输速度快、即插即用、易于扩展、占用系统资源少等优点;嵌入式实时操作系统 (RTOS)中的 ?C/OS-Ⅱ则具有代码效率高、占用空间小、良好的实时性和可靠性等特点。本文通过构建嵌入式软件开发环境、移植 ?C/OS-Ⅱ、编写固化到 ATmega16单片机的引导程序 (即固件程序),实现系统的数据采集、数码显示以及与 PC机通信等设备端任务。
1引言
随着科学技术的不断发展,人们对数据采集的性能指标要求越来越高,传统的数据采集方式已经不能满足需要。通用串行总线因 (USB)具有传输速度快、即插即用、易于扩展、占用系统资源少等优点;嵌入式实时操作系统 (RTOS)中的 ?C/OS-Ⅱ则具有代码效率高、占用空间小、良好的实时性和可靠性等特点。本文将二者与传统的数据采集技术相结合,设计实现了一种基于 USB通信和 ?C/OS-Ⅱ的集数据采集、分析、显示为一体的数据采集系统。
2 系统体系结构
基于 USB通信的数据采集系统的体系结构如图 1所示。系统的工作过程就是一个数据采集的过程,其中的每一步都需要不同组的支持。首先,温度和压力参数经传感器转换成模拟信号,模拟信号经过 A/D转换变单片机可识别的数字信号。单片机将数字信号进行处理之后,就可以送往 LED显示或者发送给 USB接口芯片。USB接口芯片在主机需要的时候,把接收到的数据经 USB总发送给主机进行处理和显示。主机和 USB接口的通信则需要设备固件程序、USB设驱动程序和 USB主机应用程序的支持。
3 USB数据采集系统的硬件电路设计
USB数据采集系统的硬件电路结构主要包括以下几个部分:USB通信电路部分、数据采集电路部分、数码显示电路部分和固件程序下载电路部分。这些模块的功能都是在以 ATmega16为核心的硬件平台上实现的。
3.1 USB通信电路的设计
USB通信电路的功能是实现数据采集系统设备端和主机端之间的通信,这一功能主要是由核心微控制器 ATmega16和 USB控制器件 PDIUSBD12实现的。其中, PDIUSBD12是符合 USB1.1协议的芯片,在 USB通信电路中起着联系设备和主机的桥梁的作用。微控制器 ATmegal6和 USB控制器 PDIUSBD12之间通过 8位并行总线进行通信, 8位并行总线在 ATmegal6端需要连接 8个 I/O口。PDIUSBD12片内集成了时钟乘法 PLL,晶振电路使用 6MHZ的晶振和两个 2pF到 68pF的电容。 PDIUSBD12的信号输出端 D+/D一上要各串接一个 18欧的匹配电阻。通信电路如图 2所示。
3.2 数据采集电路的设计数据采集电路的功能就是将现场的温度、压力以及应力等数据转换成合适的模拟信号,再把模拟信号传送给 A/D转换电路。此模块包括温度采集模块和压力采集模块两部分。[!--empirenews.page--]
由于 ATmegal6片内集成了可调增益的差分放大电路和 A/D转换通道,所以温度采集电路仅由一个用于测温的电桥组成。具体做法是根据热电阻阻值随温度变化的特性,将铜热电阻作为电桥的一臂,当温度改变时,电桥输出电压也随之发生变化。将电桥输出电压送至 ATmegal6内部的采样保持电路,然后进行放大、 A/D转换,再经过固件程序的换算就可以得到测量温度了。
在本系统中,测量压力采用的器件是广州森纳士仪器有限公司生产的压力变送器,其量程是 0.0lMPa,输出信号是 4~20mA的电流。当压力改变时,输出电流也随之发生变化,所以在信号输出端接一个精密电阻,然后对电阻两端的电压进行采样和转换,再经过固件程序的换算就可以得到测量压力了。
3.3 固件程序下载电路
固件程序下载电路的功能就是将编译好的程序代码下载到 ATmegal6单片机的 Flash中去。 ATmega16支持多种编程模式,其中比较简单也比较方便的一种就是 ISP(In-system-programming,在系统编程)模式,即通过串行 SPI(serial peripheral Interface,串行外设接口)总线将在 windows中调试、编译好的程序代码下载到 ATmegal6的存储器。 Flash程序存储器、 EEPROM数据存储器、熔丝位和加密锁定位都可以在这种模式下编程。固件程序下载电路如图 3所示。
3.4 LED显示部分设计
如图 4所示,系统的显示是使用 MAX7219实现的 8位稳定静态显示,MAX7219是串行共阴极数码管动态扫描显示驱动芯片,仅使用 3线串行接口传送数据,可直接与单片机接口,用户还可以方便地修改其内部参数以实现多位 LED显示,因此可以方便地使用单片机的串口送出显示数据,并且其占用的时间少,方便编程及对信号的检测。
4 USB数据采集系统的软件开发
USB数据采集系统是一个多任务系统,而且程序结构也比较复杂,为了提高开发率,增强系统的稳定性,降低开发和维护成本,就需要一个嵌入式操作系统作为系统发和运行的平台。?C/OS-Ⅱ作为一个源码公开的免费型嵌入式实时操作系统,其稳定性好、可靠性高,而且 ?C/OS-Ⅱ还具有移植性好、可固化、可裁剪等特点,非常适合作为 USB数据采集系统的开发平台。[!--empirenews.page--]
USB数据采集系统的软件由三个部分组成:USB设备固件程序、主机 PC上的 USB设备驱动程序和主机上的客户应用程序。系统软件的组成及各部分之间的关系如图 5所示。
固件程序按功能可以划分为 USB通信程序、A/D转换程序和 LED显示程序,其中 USB通信程序是整个固件程序的主要部分,其功能是实现 USB设备枚举和数据传输。USB设备枚举是 USB设备插上之后,主机与设备交换信息并自动配置的过程,枚举成功后, USB接口与主机就可以进行通信了。
设备驱动程序是连接设备和主机应用程序的纽带,它向上提供应用程序的访问接口 (API),向下则实现对具体设备的访问和管理功能。驱动程序与设备硬件和上层用户程序密切相关,在 USB体系的中间起到信息转换和传递的中介作用。在开发 USB设备时,设备驱动程序的设计是一个非常重要的环节,直接影响到整个设备系统的性能。
本系统采用 Driverworks开发 WDM型 USB设备驱动程序应用程序的主要功能是在设备驱动程序中查找设备,与设备交换数据,并将设备发送来的数据进行处理和显示。应用程序和驱动程序的通信是通过访问应用程序接口 (API)函数实现的,所以应用程序的开发必须在能访问 API函数的平台上进行。 Microsoft公司提供的visualC++6.0是一种功能强大的支持 API函数的编程工具,本设计的主机应用程序就是以VC为平台进行开发的,其功能主要包括查找 USB设备,与 USB设备交换数据和动态显示数据曲线。
5 总结
本文的创新点在于完成的基于 USB接口和 ?C/OS-Ⅱ的数据采集系统,采样频率可达 15KSPS(每秒采样次数),数据传输错误恢复率大于 99%,即插即用、使用方便且具有很低的开发成本,可以为数据采集特别是电池供电移动或手持采集设备提供一种有效的解决方案和方便使用、高效传输的设备形式;其次,而在 PC端引入微软新近的 WDM驱动程序模型,在其基础上开发了数据采集系统的设备驱动程序,可以成功地对设备进行识别、配置,并提供了同设备进行数据交换的应用程序接口,基于这些接口,编制了具有查询设备、与设备交换数据并将数据绘制成动态曲线等功能的 PC端应用程序。