基于PIC16F87X系列单片机开发的高精度数据采集器
1ADS1210引脚及功能
ADS1210是一种高精度、宽动态范围,采用单5V电源供电,具有24位分辨率的新型A/D转换器。封装形式有18脚双列直插式和18线贴片式,引脚功能描述如表1。
●指令寄存器(INSR)
指令寄存器是一个8位寄存器,它指明了系统是进行读操作还是写操作,并确定读/写操作的字节长度以及读/写操作寄存器的起始地址。
●命令寄存器(CMR)
命令寄存器是ADS1210的关键,它控制着ADS1210的所有特性功能。一旦串口时钟的下降沿将数据字节的最后一位写入命令寄存器,新的模式就开始生效。命令寄存器控制ADS1210所选用的选项和操作模式,包括可编程增益放大器的增益(G)设置、增强模式(TMR)、输出数据率(Decimation)和校正方式等等。
●数据输出寄存器(DOR)
数据输出寄存器保存最近的转换结果。“数据准备就绪信号”变为低电平前,寄存器的内容被一个新的结果更新。
●失调寄存器(OCR)
失调寄存器对放入数据输出寄存器前的转换结果进行失调校正。在这种应用中,失调寄存器的内容可能是自校正结果,也可能是系统校正结果,通过串行口可以对失调寄存器进行读写。
●满刻度校正寄存器(FCR)
满刻度校正寄存器对放入数据输出寄存器前的转换结果进行满刻度校正。实际的失调寄存器值和满刻度校正寄存器值随结构、温度和电源的变化而改变。因此,任何状态下的失调寄存器和满刻度校正寄存器的实际值都不能精确地预测,也就是说,给定系统的校正不能简单地通过外部误差的测量来获得某一结果,将其写入寄存器作为校正因子。
与ADS1210的通信是在数据转换完成之后,即电平为低的时候开始进行的。通常首先是对指令寄存器进行写操作,指明下一步要进行操作的寄存器的起始地址和字节长度以及系统是进行读操作还是写操作,由此决定接下来进行什么类型的通信。之后随着合适的时钟脉冲产生(SCLK时钟的周期数是由指令寄存器指定的字节长度所决定的),对指令寄存器指定的寄存器进行操作,完毕后等待引脚的下一个低电平产生,如此反复直到数据采集完成。
在实际的测量中,电源是影响精度的重要因素。为了减小其影响,电源必须稳定,噪声小,因此,使用MAX666作+5V电压的稳压芯片,以及利用外围电容的作用减少电压波动。此外,ADS1210可使用本身的校正寄存器,通过编程对A/D转换的数据进行校正,进一步提高测量精度。通过CMR的设置,使用者可自行选择合适的校正模式。在背景校正下,校正以固定的时间间隔重复不断地进行,其他的几种类型,一旦校正运行完成就恢复正常运行。本设计采用背景校正模式。
PIC系列单片机硬件系统设计简洁,指令系统设计精炼。PIC单片机集成了丰富的外围模块,可以通过对内部的寄存器操作实现对外围模块的控制。
串行扩展通信接口是单片机与其他计算机或模块之间进行数据交换的重要渠道。PIC16F87X系列单片机主要配置有2种形式的串口通信模块,即主控同步串行通信MSSP和通用同步/异步收发器USART。其中,MSSP模块主要应用于系统内部近距离的串行通信,如SPI和I2C模式;USART模块主要应用于系统之间的远距离的串口通信。 SPI(Serial Peripheral Interface)是一种单片机外设芯片同步串行扩展接口,由于ADS1210自带一个灵活的同步串行接口与SPI通信模式兼容,故本设计中PIC单片机与ADS1210进行的所有数据交换都采用SPI的通信模式。PIC单片机的SPI模块电路包含3个主要部分:发送缓冲器、接收缓冲器和移位寄存器。
USART在异步模式下采用的数据格式为1位起始位、8位或9位数据位和1位停止位,无奇偶位校验码,常用的数据为8位。片内提供的8位波特率发生器BRG,可以利用系统时钟信号产生标准的波特率频率为串行传送所用。USART具有分别独立的发送器和接收器,但它们所采用的数据格式和波特率是相同的。本设计运用单片机的USART异步发送功能通过MAX232芯片进行必要的电平转换后向上位机传送所采集的数据。
ADS1210与外部器件接口形式有双线制、三线制、四线制和多线制,此处采用的是四线制实现与单片机的接口,接口信号是数据准备就绪信号(),数据输入/输出线(SDIO)、数据输出线(SDOUT)、时钟信号线(SCLK)。具体见图1。
PIC单片机程序的流程图如图2。
图3是用来从串口接收数据的软件运行界面,作为本设计的测试软件。接收区内显示的 数据是使用本数据采集器所采集的几组数据,而界面下端的状态栏RX显示的是接收数据的组 数,实验表明,本设计完全可以达到20位以上的精度。
本设计可用于工业过程控制、仪器仪表、血液分析、智能发射机、电位计、质量标准、 压力转换等高分辨率测量场合,例如可用于精度要求较高的电容式测压微传感器的性能测试 ,具有一定的通用性。
PIC16F87X系列 数据采集器 相关文章:
- 基于USB总线通信数据采集器的设计与实现(11-29)
- 基于CAN总线的数据采集器的设计(03-17)
- 基于PIC系列单片机开发的高精度数据采集器(10-18)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)