本文為大家?guī)?a target="_blank">ads1256中文資料匯總。
ADS1256模塊說明
1、 ADS1256芯片的模擬電壓是5V,數(shù)字電壓3.3V,所以模塊需在左上角供電5V,供電電源需紋波較小。3.3V數(shù)字電壓是模塊上AMS1117-3.3芯片產(chǎn)生的,無需再接3.3V電壓。
2、 芯片是數(shù)字IO口D0-D3全部引出,如需要自行連接調(diào)試。 3、 3.3V電壓輸出為模塊AMS1117-3.3芯片產(chǎn)生,可為外部單片機供電。
4、 芯片需要連接單片機的控制口全部引出,測試時按照測試程序配置連接。這個地方說明下:單片機需是3.3V電平的。
5、 左上角5V電壓輸出是5V外部供電經(jīng)過模塊濾波電路產(chǎn)生的,可為外部傳感器供電。
6、 基準(zhǔn)電壓芯片為REF3125,固定輸出2.5V電壓,電流約為50uA只能用過模塊的參考電壓測試點,不能用于外部供電。
7、8路模擬輸入是所要測量的電壓輸入點,可通過程序設(shè)置為單獨輸入模式或是差分輸入模式。模擬信號輸入后經(jīng)過模塊上的RC濾波器再送入到芯片,RC濾波器為低通濾波,通過頻率約為300HZ,如果想增加通過頻率,可修改RC值。
8、模塊的默認(rèn)模擬輸入電壓為-5V---+5V,如果想測試更高的電壓,可以在輸入端焊接分壓電阻,詳細(xì)焊點參考電路圖。
ads1256功能原理圖及說明
電源部分
說明:該電路為3.3V及1.8V產(chǎn)生電路,采用AMS1117的控制芯片,J1為+5V輸入端子,這里請?zhí)峁┹^干凈的輸入電源。
說明:該處為電源濾波。
說明:該處為DVCC供電選擇電壓。J13對應(yīng)撥碼開關(guān),撥碼開關(guān)打到左方,DVCC鏈接到1.8V,撥碼開關(guān)打到右方,DVCC鏈接到3.3V。
說明:模擬地與數(shù)字地隔離,實現(xiàn)單點接地。確保地線不干擾,不產(chǎn)生壓差。
采集輸入部分
說明:J2-J9為采集輸入點,您測試的電壓經(jīng)過該點進(jìn)入ADC芯片。偶數(shù)電阻R0 R2 R4 R6 R8 R10 R12 R14為輸入電阻,與后面的電容組成RC濾波電路,與奇數(shù)電阻(默認(rèn)不焊接)R1 R3 R5 R7 R9 R11 R13 R15組成輸入衰減電路,對大于5V的輸入信號進(jìn)行衰減。
晶振部分
2.5V參考電壓產(chǎn)生電路
說明:采用REF1004-2.5產(chǎn)生基準(zhǔn)電壓,經(jīng)過R17 C22組成的RC濾波,進(jìn)入U4OP350運放。運放在這里做跟隨器,放大倍數(shù)為1,作用有兩個,a :提高基準(zhǔn)電壓的輸出能力(原因:REF1004-2.5經(jīng)過R17之后,電流的輸出能力非常低)b:降低基準(zhǔn)電壓的噪聲。
主控ADS1256
說明:ACOM可靈活配置。可以接地,也可以接外部型號,作為參考端,JP10跳帽連接,ACOM接地;JP10跳帽斷開,ACOM懸空。
D0 D1 D2 D3引出到J11,方便客戶調(diào)試讀取數(shù)據(jù)用。
ADS1256模塊程序源代碼設(shè)計
#include 《avr/io.h》
#include 《avr/signal.h》
#include 《avr/interrupt.h》
#include 《avr/delay.h》
#include “ADS1256.h”
#include “main.h”
/***************************************************************
*名稱: void SPI_Init(void)
*功能: SPI初始化
*入口參數(shù): none
*出口參數(shù): none
*日期:
****************************************************************/
void SPI_Init(void)
{
SPI_IN; //輸入端口使能內(nèi)部上拉
SPI_DDR; //ADS1256的SPI端口方向設(shè)置
SPCR=(1《《SPE)|(1《《MSTR)|(1《《SPR0)|(1《《CPHA); // 使能SPI接口,主機模式,MSB高位在先,模式0, 16分頻,SPI時鐘約460KHz
}
*名稱: unsigned char read_register(unsigned char reg)
*功能: 讀ADS1256寄存器
*入口參數(shù): reg--要讀的寄存器
*出口參數(shù): 寄存器的值
*日期:
{
unsigned char x;
while(PIN_RDY); //DRDY信號低時才能讀寄存器
spi_TranByte(RREG|reg); //選擇寫入寄存器
spi_TranByte(0x00); //寫入1個寄存器
x=spi_TranByte(0xff);
return (x);
}
/***************************************************************
*名稱: long read_data()
*功能: 讀ADS1256的數(shù)據(jù)
*入口參數(shù): none
*出口參數(shù): none
*日期:
****************************************************************/
long read_data()
int main(void)
{
unsigned long x;
LCD_INIT();
SPI_Init();
ADS1256_Init();
while(1)
{
while(PIN_RDY); //DRDY信號低時才能讀寄存器
write_register(MUX,0x01);
spi_TranByte(WAKEUP);
spi_TranByte(RDATA); //選擇寫入寄存器
x=(unsigned long)(2*VREF*read_data())/0x007fffff;
LCD_NUM(x,0,0);
DelayMs(1000);
}
}
{
unsigned char rx_dat[4];
long x;
rx_dat[0]=spi_TranByte(0xFF);
rx_dat[1]=spi_TranByte(0xFF);
rx_dat[2]=spi_TranByte(0xFF);
x= (long)rx_dat[0]*65536+(long)rx_dat[1]*256 +(long)rx_dat[2];
return (x);
}
/***************************************************************
*名稱: void ADS1256_Init(void)
*功能: 初始化ADS1256
*入口參數(shù): none
*出口參數(shù): none
*日期:
****************************************************************/
void ADS1256_Init(void)
{
write_register(MUX,0x01); //MUX寄存器為默認(rèn)值
write_register(ADCON,0x20); //ADCON寄存器為默認(rèn)值
write_register(IO,0x00);
}
評論
查看更多