電子秤普遍出現于今天的工業應用上。電子秤制造商通常采用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;
}
評論