設(shè)計(jì)基于串行A/D轉(zhuǎn)換器ADS1100、低功耗單片機(jī)AT89S52和LCD顯示器的高精度電子秤。該高精度電子秤作用于傳 感器的力轉(zhuǎn)換成電壓值,經(jīng)A/D轉(zhuǎn)換后用單片機(jī)進(jìn)行處理,結(jié)果通過(guò)LCD顯示。核心器件ADS1100是16位A/D轉(zhuǎn)換器,在 使用中讀數(shù)準(zhǔn)確、反應(yīng)靈敏,具有低功耗、超量程報(bào)警等功能。
物品稱量是市場(chǎng)交易中最基本的活動(dòng),使用的衡具多種多樣,如桿稱、彈簧秤、電子秤等。傳統(tǒng)的量具是 桿稱或盤稱,20世紀(jì)70年代開(kāi)始出現(xiàn)了電子稱。早期的電子稱多通過(guò)模擬電路實(shí)現(xiàn),隨著電子技術(shù)的不斷 發(fā)展,數(shù)字芯片的價(jià)格逐漸下降,模擬控制已逐步被數(shù)字控制替代,電子稱的設(shè)計(jì)模式大都以微處理器為核 心,精度和可靠性有了明顯提高,但市場(chǎng)上廣泛使用的各式電子秤都采用8位A / D轉(zhuǎn)換器和LED顯示,具 有精度低和無(wú)法顯示漢字等缺點(diǎn)[1]。采用16位A / D轉(zhuǎn)換器ADS1100和LCD顯示,設(shè)計(jì)一個(gè)讀數(shù)準(zhǔn)確、反應(yīng) 靈敏,具有低功耗、超量程報(bào)警的電子秤。
1.系統(tǒng)結(jié)構(gòu)設(shè)計(jì)及工作原理
高精度電子秤采用的壓力傳感器為電阻應(yīng)變式壓 力(稱重)傳感器,可用于測(cè)拉力和壓力,它將作用于傳 感器的拉力或壓力轉(zhuǎn)換為電壓值,經(jīng)過(guò)放大器放大后, 送人A/D轉(zhuǎn)換器ADS1100,經(jīng)A/D轉(zhuǎn)換后用AT89X52單片機(jī)進(jìn)行處理,結(jié)果通過(guò)LCD顯示。系統(tǒng)結(jié)構(gòu)框圖如圖1。
整個(gè)高精度電子秤具有超量程報(bào)警功能以及采用具有I2C串行接口的A/D轉(zhuǎn)換器ADS1100,利用I2C總線協(xié)議,只需2根數(shù)據(jù)線和相應(yīng)的控制線就可以工作, 大大減少了印刷電路板的布線數(shù)目和CPU的I/O 口利用數(shù)目。
2.高精度電子秤的硬件電路設(shè)計(jì)
基本框架包含電阻應(yīng)變式稱重傳感器、模擬信號(hào)處理模塊、A/D轉(zhuǎn)換、超量程報(bào)警、LCD顯示模塊等,重 點(diǎn)給出各分電路的設(shè)計(jì)圖和說(shuō)明。
2.1電阻應(yīng)變式稱重傳感器
電阻應(yīng)變式稱重傳感器的原理:彈性體(彈性元件,敏感梁)在外力作用下產(chǎn)生彈性變形,使粘貼在它表 面的電阻應(yīng)變片(轉(zhuǎn)換元件)隨同產(chǎn)生變形,電阻應(yīng)變 片變形后,它的阻值發(fā)生變化(增多或減少),經(jīng)相應(yīng)的 測(cè)量電路把這一電阻變化轉(zhuǎn)換為電信號(hào)(電壓或電 流),完成將外力變換為電信號(hào)的過(guò)程' 電阻應(yīng)變式 稱重傳感器有多種形式,使用最多的為橋路形式,如圖 2。H為電阻應(yīng)變式片;盡為10 kD多圈調(diào)零電 位器;R)為溫度補(bǔ)償電阻;五為傳感器橋壓;AV為傳 感器輸出。
當(dāng)橋路中的某臂電阻發(fā)生變化時(shí),橋路不平衡,橋路輸出的變化量反映了壓力的變化量。
2.2模擬信號(hào)處理模塊
橋路輸出的變化量通過(guò)模擬信號(hào)處理模塊,經(jīng)過(guò)二級(jí)放大,將微弱信號(hào)放大到A/D轉(zhuǎn)換器可以分辨的 模擬信號(hào),如圖3。RW1為模擬信號(hào)處理零點(diǎn)調(diào)節(jié)器,可以利用該電位器調(diào)節(jié)零點(diǎn),RW2為模擬信號(hào)處理放 大倍數(shù)調(diào)節(jié)器'.
2.3A/D轉(zhuǎn)換
A/D轉(zhuǎn)換部分采用ADS1100,ADS1100每秒可采樣8,16,32或128次以進(jìn)行A/D轉(zhuǎn)換,并提供I2C端口與外部通信。片內(nèi)可編程增益放大器能提供高達(dá)8倍的增益,允許對(duì)小信號(hào)進(jìn)行測(cè)量。ADS1100有2種工作方式:?jiǎn)沃芷谵D(zhuǎn)換方式和連續(xù)周期轉(zhuǎn)換方式。在單周期轉(zhuǎn)換方式中,ADS 1100進(jìn)行一次A/D轉(zhuǎn)換后將自動(dòng)掉 電以減少電流消耗。
2.3.1ADS1100引腳功能 引腳(VIN+)為差分信 號(hào)正輸人端;引腳2(GND)為地線;引腳3 (SCL)為串 行時(shí)鐘輸人端;引腳4(SDA)為串行數(shù)據(jù)輸人/輸出端;
引腳5 (VDD)為+5 V電壓輸人端;引腳6(VIN-)為差 分信號(hào)負(fù)輸人端。
2.3.2A/D轉(zhuǎn)換電路 A/D轉(zhuǎn)換電路如圖4。
2.4ADS1100的內(nèi)部寄存器
2.4.1輸出寄存器 16位輸出寄存器中含有上一次A/D轉(zhuǎn)換的結(jié)果,該結(jié)果采取二進(jìn)制的補(bǔ)碼格式。在復(fù) 位或上電之后,輸出寄存器被清零,并保持為0直到第一次A/D轉(zhuǎn)換完成。輸出寄存器的格式如表1。
2.4.2配置寄存器 8位配置寄存器用來(lái)控制ADS1100的工作方式、數(shù)據(jù)速率和可編程增益放大器設(shè)置如表2,配置寄存器的默認(rèn)設(shè)置是8CH。
ST/BSY位表示它是被寫人還是被讀出。在連續(xù) 表3 DR位
方式中,ADS1100將忽略ST/BSY的值。位6和位5為 保留位,必須被置為“0”。SC位用于控制ADS1100的 工作方式。當(dāng)SC為“ 1”時(shí),ADS1100以單周期轉(zhuǎn)換方 式工作;當(dāng)SC為“0”時(shí),ADS1100以連續(xù)轉(zhuǎn)換方式工 作。該位的默認(rèn)設(shè)置為0。位3和位2(DR位)用于控 制ADS1100的數(shù)據(jù)速率,其控制方式如表3。位1和0 (PGA位)用于控制ADS1100的增益設(shè)置,控制方式如 表 4。
2.5 ADS1100讀寫操作
ADS1100的讀操作 從ADS1100中讀出輸出寄存器和配置寄存器的內(nèi)容。為此要對(duì)ADS1100尋 址,并從器件中讀出3個(gè)字節(jié)。前面的2個(gè)字節(jié)是輸出寄存器的內(nèi)容,第三個(gè)字節(jié)是配置寄存器的內(nèi)容。從AD1100中讀取多于3個(gè)字節(jié)的值是無(wú)效的。從第四個(gè) 字節(jié)開(kāi)始的所有字節(jié)將為FFH。ADS1100的讀操作時(shí)序如圖5。
2.5.2 ADS1100的寫操作 寫新的內(nèi)容至配置寄存器(但不能更改輸出寄存器的內(nèi)容),要對(duì)ADS1100尋 址,并對(duì)ADS1100配置寄存器寫人一個(gè)字節(jié)。對(duì)ADS1100的寫操作時(shí)序如圖6。
2.6超量程報(bào)警
在測(cè)量過(guò)程中,當(dāng)壓力超過(guò)容限后,通過(guò)電壓比較器開(kāi)通硬件報(bào)警電路報(bào)警。如圖7,當(dāng)壓力超出量程 后,輸入A/D的模擬信號(hào)也有過(guò)壓保護(hù),不會(huì)損壞A/D轉(zhuǎn)換器。
2.7 LCD顯示模塊
LCD顯示模塊采用RT12864圖形點(diǎn)陣型液晶顯 示模塊,主要由行驅(qū)動(dòng)器與列驅(qū)動(dòng)器組成??娠@示 128(列)64(行)點(diǎn)陣,可完成圖形顯示,也可顯示84個(gè) (16x16點(diǎn)陣)漢字。7條控制指與CPU接口采用8位 數(shù)據(jù)總線并口輸人輸出方式,RT12864液晶顯示模塊 電路如圖8。
接口引腳說(shuō)明:VSS為電源負(fù)端(0V);VDD為電 源正端(+5.0 V);V0為LCD驅(qū)動(dòng)電壓(外接可調(diào)電阻,可調(diào)節(jié)對(duì)比度)。RS =1表示無(wú)論單片機(jī)讀/寫操作,均 指向數(shù)據(jù)寄存器;RS =0表示當(dāng)單片機(jī)進(jìn)行讀模塊操 作,指向地址計(jì)數(shù)器。當(dāng)單片機(jī)進(jìn)行寫模塊操作,指向 地址寄存器。R/W=1讀操作;R/W=0寫操作。E為使 能信號(hào),當(dāng)R/W =H,E為高電平時(shí)讀操作有效;當(dāng)R/ W = L,E為下降沿時(shí)寫操作有效。DB0?DB7為數(shù)據(jù) 總線;CS1為片選信號(hào),左半屏64列選中(高電平有 效);CS2為片選信號(hào),右半屏64列選中(高電平有 效);REST為復(fù)位控制信號(hào)(低電平有效);VOUT為 LCD驅(qū)動(dòng)負(fù)電壓輸出端,RT12864液晶顯示運(yùn)行效果如圖9。
3.高精度電子秤的軟件設(shè)計(jì)
采用C語(yǔ)言編程,程序流程圖如圖10,圖10為主 函數(shù)main()流程圖。重點(diǎn)是ADS1100進(jìn)行初始化 Init_ads 1100(0x8C)函數(shù)和讀取ADS1100轉(zhuǎn)換結(jié)果 Rd_ads1100()函數(shù)。
Init_ads1100(0x8C)函數(shù)
Init_ads1100(0x8C)函數(shù)代碼如下: void Init_ads 1100(0x8C)
{ Start();
writebyte(0x90); /*寫命令*/ writebyte(0x8C);Stop。;}
Start()函數(shù)、Stop() Start()函數(shù)的功能是使I2C總線開(kāi)始工作,Stop()函數(shù)的功能是使I2C總線停止工 作,I2C總線的起始和停止條件如圖11。
writebyte()函數(shù) writebyte(0x90)函數(shù)向 ADS1100 發(fā)出寫操作命令 90H,使 R/W=0;然后 writebyte(0x8C)函數(shù)向ADS1100的配置寄存器寫人一個(gè)字節(jié)8CH,如圖6。
Rd_ads1100()函數(shù)
Rd_ads1100()函數(shù)的功能是讀取A/D轉(zhuǎn)換結(jié)果,代碼如下: unsigned int Rd_ads1100(void)
{ unsigned char H_AD; //H_AD用于存儲(chǔ)高8位A/D轉(zhuǎn)換結(jié)果 unsigned char L_AD; //L_AD用于存儲(chǔ)低8位A/D轉(zhuǎn)換結(jié)果 unsigned int T_AD; //T_AD用于存儲(chǔ)總的A/D轉(zhuǎn)換結(jié)果 Start();
writebyte(0x91); /*讀命令*/
H_AD=Readbyte();
WriteACK(0);
L_AD=Readbyte();
WriteACK(1);
Stop();
T_AD=(0x00ff&H_AD)<<8|L_AD;// 高 8 位和低 8 位合并 return T_AD; }
3.2.1讀轉(zhuǎn)換結(jié)果 writebyte(0x91)函數(shù)向ADS1100發(fā)出讀操作命令91H,使R/W=1;然后Readbyte()函數(shù)
從ADS1100的輸出寄存器讀出2個(gè)字節(jié),2個(gè)字節(jié)分別為轉(zhuǎn)換結(jié)果的高8位H_AD和低8位L_AD,如圖5。
WriteACK()函數(shù) 根據(jù)I2C總線協(xié)議,讀出高8位H_AD即一個(gè)字節(jié)數(shù)據(jù)后,在I2C總線上的第9個(gè) 時(shí)鐘脈沖發(fā)送應(yīng)答位為低電平ACK=0,表示字節(jié)傳輸完成;讀出最后一個(gè)字節(jié)數(shù)據(jù)低8位L_AD,發(fā)送應(yīng)答 位為高電平ACK=1,表示結(jié)束讀數(shù)據(jù),如圖5,12。
4.結(jié) 論
(1)高精度電子秤的核心器件ADS1100是貼片封裝,采用I2C串行總線,只需2根數(shù)據(jù)線和相應(yīng)的控制換器供電,能夠?qū)崿F(xiàn)高精度電子秤的便攜化。
(2)高精度電子秤的ADS1100是一種連續(xù)自校準(zhǔn)ADC,可提供差分輸人和16位無(wú)丟失碼精度,達(dá)到16位 A/D轉(zhuǎn)換的高精度,在使用中讀數(shù)準(zhǔn)確,反應(yīng)靈敏,采用低功耗LCD顯示,具有超量程報(bào)警功能。在同類產(chǎn) 品中具有很大優(yōu)勢(shì),達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo)。