基于MSP430和USB的数据采集系统
主放大器我们选用美国ADI公司的精密仪表放大器AD620。
图3中运放U2部分组成了一个二阶压控低通有源滤波器。传感器信号通过调节放大之后被送到滤波器的输入端,通过滤波后将干扰部分消除。其传递函数为:。其中为特征角频率。
由于传感器测量的是拉、压力信号,即放大滤波后输出的电压信号为双极性信号,范围约为-10V~+10V,必须将它转换为单极性信号,即对信号进行直流偏置,在此采用简单的电阻分压方式,如图3所示。所需要的+2.5V电压基准可以由MSP430F149提供。
软件设计
本系统的软件设计主要包括单片机程序、USB驱动程序、PC机应用程序。单片机部分的程序也称为固件,它包括USB设备的连接、USB协议和中断处理等。 PDIUSBD12可以按照USB1.1协议对数据进行封装,然后与PC机进行数据交换。MSP430根据接受到的命令通过PDIUSBD12与PC机的应用程序进行交互。
MSP430向PDIUSBD12发送数据/命令部分程序如下:
void outportb(unsigned char port, unsigned char val)
{
P1OUT=0xBF; /使PDIUSBD12的WR引脚为低电平
P5DIR=0xFF; /P5口为输出模式
if(port)
P1OUT|=A0; /A0为高电平,传输命令
else
P1OUT=~A0; /A0为低电平,传输数据
P5OUT=val; /向PDIUSBD12写数据
P1OUT|=~0xBF; /恢复PDIUSBD12的WR引脚为高电平
}
MSP430从PDIUSBD12读取数据的部分固件程序如下:
unsigned char inportb(void)
{
unsigned char data=0x00;
P1OUT= 0xDF; /使PDIUSBD12的RD引脚为低电平
P5DIR=0x00; / P5口为输入模式
data=P5IN; /从PDIUSBD12读取数据
P1OUT|=~0xDF; /恢复PDIUSBD12的RD引脚为高电平
return i;
}
MSP430中ADC12模块提供了4种转换模式,在此采取序列通道单次转换模式,以方便上位机实时控制。四个通道A/D转换只须启动一次,最后一个通道转换完成后设置中断标志位。对转换模式、转换采样时序以及转换通道的设置如下:
ADC12CTL0=ADC12ON+SHT0_2+MSC; /打开ADC12并设置采样时间
ADC12CTL1=SHP+CONSEQ_1; /序列通道单次转换模式
ADC12MCTL0=INCH_0; /选择通道0
ADC12MCTL1=INCH_1; /选择通道1
ADC12MCTL2= INCH_2; /选择通道2
ADC12MCTL3= INCH_3+EOS; /选择通道3和序列结束标志
ADC12CTL0|=ENC; /启动AD转换
整个数据采集的过程都是由PC机为中心,PC机通过向MSP430发送命令来控制A/D转换的开始和结束。对于MSP430收到的控制数据(命令),我们在此规定:
字节1:0xFF----启动A/D转换,0xFE----停止A/D转换
如果MSP430收到的数据第一个字节是0xFF,先设置标志adflag=1,然后启动A/D转换并设置相应其他的参数,当四个通道的数据采集和转换均完成,最后通过USB接口向PC发送采集到的数据。当MSP430收到的数据的第一个字节是0xFE,则设置adflag=0,不启动A/D转换。
评论