基于USB接口的高增益数据采集系统的设计
的设计
信号调理电路主要包括模拟信号多路选择、滤波和信号放大等组成部分,电路如图3所示。
系统电路设计中,只使用了单片机C8051F000本身自带的一路模拟输入AIN0;在单片机外围用多路模拟开关CD4051扩展了8路模拟输入。当单片机给CD4066的引脚CONT1输入一个低电平、给引脚CONT2输入一个高电平时,CD4066的引脚IN1和OUT1之间断开、引脚IN2和OUT2之间短接,运算放大器ICL7650的负端输入与它的输出断开,此时ICL7650对它的输入信号放大8倍;当单片机给CD4066的引脚CONT1输入一个高电平、引脚CONT2输入一个低电平时,CD4066的引脚IN1和OUT1之间短接、引脚IN2和OUT2之间断开,ICL7650的负端输入与它的输出直接短接,此时ICL7650和它的外围电路一起组成了一个电压跟随器,只是增大A/D转换器的输入阻抗,并不对它的输入信号进行增益放大。
C8051F000片内集成的增益放大器PGA编程范围为0.5~16,当ICL7650作为一个电压跟随器时,系统可编程增益范围为0.5~16;当ICL7650对输入信号进行8倍放大时,系统可编程增益范围为4~128,由此可见,系统可编程增益范围较宽,满足大多数情况下增益放大需要。
2 软件设计与实现
系统软件包括单片机固件程序,USB驱动程序及其链接库,及用户应用程序。为了降低开发难度及缩短开发周期,系统采用了周立功公司开发的D12 SMART套件中的USB驱动程序及其链接库[3],该链接库为用户应用程序提供了API函数,在编写应用程序时,只需调用API函数与采集系统之间交换数据,而不需要关心具体的USB通讯协议。
单片机固件设计采用中断驱动方式。CPU在前台进行数据采集, USB传输则在后台进行, 而其中断和主循环的数据交换则通过事件标志和数据缓冲区进行。这样既保证了数据采集的实时性,又获得了最佳的传输速率。固件结构如图4 所示。
中断服务程序主要负责从PDIUSBD12收集数据, 将建立包和OUT数据存入数据缓冲结构体,并设置相应的标志位;而主循环负责对数据进行处理,根据标志位区分是标准请求还是厂商请求,进而调用标准请求处理程序和厂商请求处理程序。其中标准请求处理程序主要负责在设备枚举过程中主机为识别设备而发送的请求, 主要包括读取USB设备描述符、给USB设备分配地址、配置USB设备等功能。只有在计算机与USB设备建立链接之后,计算机才能识别出USB设备,与USB设备进行通讯。而厂商请求处理中是自行定义的请求处理函数, 用来处理计算机发送给采集系统的各个设定命令,主要包括设定采集系统的量程、读取通道采样数据等命令。标准设备请求是在枚举过程中由安装在PC机中的USB驱动程序发送给USB设备的,而厂商请求是由用户应用程序通过调用USB链接库提供的API函数将命令传递到功能驱动程序后, 通过相应例程发送到USB设备的。
PDIUSBD12 命令接口是一套访问PDIUSBD12 所有功能的处理函数,主要包括对PDIUSBD12设置地址、设置端点使能、设置模式、读中断寄存器、选择端点、读端点状态、读取缓冲区、清缓冲区等操作。当固件中的其它程序需要对PDIUSBD12 进行操作时, 只须调用其中相应的子程序即可。
硬件提取层是固件中的最底层代码, 直接对PDIUSBD12访问,其执行与具体硬件电路有关,使用的单片机不同, 或者实现的设备功能不同时这部分代码也有所不同。
3 结束语
系统采用高速SOC单片机C8051F000和PDIUSBD12实现了宽量程的数据采集和基于USB接口的数据传输,基于该方案的采集系统已经在实验室调试通过,能够准确地进行数据采样和传输。本文作者创新点:利用了C8051F000片内集成的增益放大器PGA,并结合外围增益放大电路使系统的最大增益放大倍数达到了128倍,从而使系统能完成较宽范围内的电压信号采集;系统在PDIUSBD12与单片机之间的接口电路设计中采用了单地址数据总线方案,相对于通常所采用的多路地址/数据总线方式大大减少了单片机I/O引脚的占用。
- 基于计算机的测量仪器的内部和外部校准(10-08)
- 基于AD73360和TMS320F2812的数据采集系统设计(12-06)
- 基于暂态行波法的配电网故障定位装置研究(02-01)
- 数据采集处理系统在电力中的应用设计(12-30)
- 如何通过整合众多特点和性能来解决数据采集兼容性问题(09-15)
- VC串口通信的数据采集系统设计(10-09)