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