电子秤普遍出现于今天的工业应用上。电子秤制造商通常采用proprietary ASICs 去达到模拟前端的高精度和稳定度 ,不过有些设计也会选用标准产品高达23位有效精度类同定做的方案。电子秤设计最大的难题是如何混合多个负载元在使用上仍能保持极低噪声,而TI 推出的ADS1230, ADS1232和 ADS1234就可配合到。。
ADS1230的通过是一个精密的20位模数转换器(ADC)。内置低噪声可编程增益放大器(PGA),板载振荡器,精度20位∑-ΔADC,通过提供一个完整的桥式传感器的应用包括电子秤、应变计和压力传感器的前端解决方案。
低噪声PGA具有增益为64或128,支持全面的±39mv或±19.5mv差动输入,分别。Δ∑ADC具有20位有效分辨率,由第三阶调制器和第四阶数字滤波器组成。两个数据速率的支持:10sps(有50Hz和60Hz的排斥)和80sps。ADS1230通过可以由内部振荡器或外部时钟源时钟。偏移量标定进行点播,并通过可以放在低功耗待机模式或完全关闭掉电模式。所有的功能都通过专用引脚控制;有没有数字寄存器的程序。数据通过一个容易隔离的串行接口输出,该接口直接连接到msp430和其他微控制器。“通过提供一个采用TSSOP - 16封装和指定–40°C + 85°C.
以下是ADS1230-MS430源程序代码,可以参考!
/********************************************************************************
*program name:ADS1230.c
*function: driver for ADS1230(AD)
*Company: LSD Co,LTD
*Date: 2007-09-12
*修改: 15:07 2009-04-14,LJZ
include:
long ReadAD(void); //读AD,从数据线上读取AD输出的数据,可在查询或中断中调用
void OffsetAD(void); //失调校准,一般用来在启动AD后,进行一次AD校准
void InitADline(void);//初始化AD控制线,在启动AD前调用
/**********************************************************************
ADS1230
* 接口定义:DOUT《---》P2.0; SCLK《---》P2.1; PDWN《---》P2.2 *
***********************************************************************/
#define ADS_IE P2IE
#define ADS_IFG P2IFG
#define ADS_DIR P2DIR
#define ADS_OUT P2OUT
#define ADS_IN P2IN
#define ADS_DATA_BIT BIT0 //ADS_DOUT
#define ADS_CLK_BIT BIT1 //ADS_CLK
#define ADS_PD_BIT BIT2 //ADS_PDWN
#define ADS_DATA_DIR_IN() ADS_DIR &= ~ADS_DATA_BIT;
#define ADS_CLK_DIR_OUT() ADS_DIR |= ADS_CLK_BIT;
#define ADS_PD_DIR_OUT() ADS_DIR |= ADS_PD_BIT;
#define AD_IS_ON (ADS_OUT & ADS_PD_BIT)
#define AD_ON() ADS_OUT |= ADS_PD_BIT;
#define AD_OFF() ADS_OUT &= ~ADS_PD_BIT;
#define ADS_CLK_H() ADS_OUT |= ADS_CLK_BIT;
#define ADS_CLK_L() ADS_OUT &= ~ADS_CLK_BIT;
#define ADS_DATA_HI (ADS_IN & ADS_DATA_BIT)//AD_DATA输出位1
#define ADS_DATA_NOT_READY (ADS_IN & ADS_DATA_BIT)//AD_CLK输出位1
*********************************************************************************/
/*****************************************************************************
函数名称:ReadAD(void)
功 能:读AD
入口参数:无
返回参数:AD的转换结果,为long型
使用资源:无
******************************************************************************/
long ReadAD(void)
{
long ADdatatemp=0; //设置AD转换的初始值为0
for(uchar i = 0;i 《 20;i ++) //获取20位数据
{
ADS_CLK_H();
ADS_CLK_L();
ADdatatemp = ADdatatemp 《《 1;
if(ADS_DATA_HI) //AD输出的数据位是1?
{
ADdatatemp ++;
}
}
for(uchar i = 0;i 《 4;i ++) //为下一次转换准备
{
ADS_CLK_H(); //ADS_OUT |= ADS_CLK_BIT;
ADS_CLK_L(); //ADS_OUT &= ~ADS_CLK_BIT;
}
return(ADdatatemp);
}
/*****************************************************************************
函数名称:void OffsetAD()
功 能:一个补偿函数,补偿AD1230的标尺误差
入口参数:无
返回参数:无
使用资源:无
******************************************************************************/
void OffsetAD()
{
while(ADS_DATA_NOT_READY); //AD数据转换好?(ADS_IN & ADS_DATA_BIT)//AD_CLK输出位1
for(uchar i = 0;i 《 26;i ++) //发送26个CLK
{
ADS_CLK_H();
ADS_CLK_L();
}
}
/*****************************************************************************
函数名称:void InitADline(void)
功 能:初始化AD控制线
入口参数:无
返回参数:无
使用资源:port2
******************************************************************************/
void InitADline(void)
{
ADS_DATA_DIR_IN(); // ADS_DIR &= ~ADS_DATA_BIT;
ADS_CLK_DIR_OUT(); // ADS_DIR |= ADS_CLK_BIT;
ADS_PD_DIR_OUT(); // ADS_DIR |= ADS_PD_BIT;
ADS_CLK_L(); // ADS_OUT &= ~ADS_CLK_BIT;
AD_OFF(); // ADS_OUT &= ~ADS_PD_BIT;
}
评论
查看更多