本文基于單片機和AD574設計了一款簡易電子秤。電子秤是根據重力作用測量物體質量的裝置,本文在分析測量原理的基礎上,選擇了比較簡單的51系列單片機作為主控制系統,根據測量要求設計了傳感器電路、AD轉換電路、超量程報警電路、顯示電路、按鍵電路等,根據硬件電路,完成了相應的軟件設計。經過測試,該簡易電子秤應用簡單,方便快捷,具有良好的應用前景。
電子秤是一種根據重力作用測量物體質量的檢測裝置,隨著電子技術的發展,在國民經濟的各個領域,電子秤的應用越來越廣泛,對電子秤的要求也越來越高,本文根據當前電子秤的應用情況,分析采用單片機和AD574設計一款簡易電子秤裝置,在分析測量原理的基礎上,選擇了比較簡單的51系列單片機作為主控制系統,根據測量要求設計了傳感器電路、AD轉換電路、超量程報警電路、顯示電路、按鍵電路等,根據硬件電路,完成了相應的軟件設計。
1.測量原理
電子秤一般由三部分組成,稱重傳感器、承重系統、傳力復位系統。在這個基礎上,分成了其他的硬件電路子單元,如單片機最小系統電路、傳感器電路、AD轉換電路、超量程報警電路、顯示電路、按鍵電路、存儲電路等。其測量原理是:將物體放置在承重系統的秤臺上時,其重量參數會通過傳感器,產生壓力-電效應,轉換為與其重量相對應的電信號,然后通過放大電路將電信號放大并經過AD處理,最后將信號輸入給單片機處理,經單片機處理后,將輸入信息顯示在LCD上。測量的精度一般由稱重傳感器決定。
2.硬件電路設計
2.1 總體設計框圖
根據其測量原理,設計整體硬件框圖如圖1所示。主要包含壓力傳感器電路模塊、放大電路模塊、AD轉換模塊、LCD顯示器模塊、閾值報警模塊、單片機控制系統模塊。
2.2 傳感器電路設計
設計采用SP20C-G501電阻應變式傳感器,稱重傳感器由組合式S型梁結構及金屬箔式應變計構成,具有過載保護裝置。過程設計中采用惠斯登電橋進行電壓采集轉換,它能抑制溫度變化的影響,抑制干擾能力強,補償方便簡單,因此選用的傳感器精度高、零漂小、工作穩定等。傳感器原理圖如圖2所示:
其工作原理:用應變片測量時,將其粘貼在彈性體上。當彈性體受力變形時,應變片的敏感柵也隨之變形,其阻值發生相應的變化,通過轉換電路轉換為電壓或電流的變化。由于內部線路采用惠更斯電橋,當彈性體承受載荷產生變形時,輸出信號電壓可由下式(1)給出: [Eout=R2×R4(R2+R4)×△R1R1+△R2R2+△R3R3+△R4R4×Ein] (1)
2.3 AD轉換電路設計
AD574是美國Analog Device公司生產的12位單片A/D轉換器。它采用逐次逼近型的A/D轉換器,最大轉換時間為25us,轉換精度為0.05%,所以適合于高精度的快速轉換采樣系統。芯片內部包含微處理器借口邏輯(有三態輸出緩沖器),故可直接與各種類型的8位或者16位的微處理器連接,而無需附加邏輯接口電路,切能與CMOS及TTL電路兼容。AD574采用28腳雙列直插標準封裝。
2.4 LCD顯示電路設計
顯示電路采用LCD顯示。其驅動方式包括靜態驅動、動態驅動。本設計采用動態驅動的方式,電路原理圖如圖4所示。
2.5 報警電路設計
報警電路采用有源蜂鳴器設計,只要通電流即可發聲進行報警,在其兩端并聯一個反向的二極管,防止誤報警。
3.程序設計
根據硬件原理分析和設計,軟件同樣分為幾個部分:傳感器信號采集部分、AD轉換部分、顯示部分和報警部分,其中數據處理部分最為重要,處理過程同樣比較復雜。必須利用單片機的中斷系統結構,如圖6所示。
其主要部分程序代碼如下:
#include
sbit CSPIN = P2^7; //93c46:CS sbit SCKPIN = P2^6; //93c46:CLK sbit SDOPIN = P2^4; //93c46:DATA OUT sbit SDIPIN = P2^5; //93c46:DATA IN void EEPROMByteWrite(UINT8 addr,UINT8 value); //寫值為value到地址addr中 void WriteRom(UINT8 addr,UINT8 value); //寫值為value到地址addr中,但不包括寫允許和寫禁止 UINT8 EEPROMByteRead(UINT8 addr); //從93C46中讀出地址為addr的值 UINT8 ReceiveByte(void); //接收8位數據 void Sendsck(UINT8 c,UINT8 c1); void EEPROMByteWrite(UINT8 addr,UINT8 value) {Sendsck(0x80,0x60);//write enable CSPIN=0; _nop_(); _nop_(); WriteRom(addr,value);Sendsck(0x80,0x00);//write disable CSPIN=0; _nop_(); _nop_(); SCKPIN=0; Delay1ms(10);} UINT8 EEPROMByteRead(UINT8 addr) {UINT8 value; Sendsck(0xc0,addr); Delay1ms(1); value=ReceiveByte(); SCKPIN=0; CSPIN=0; Delay1ms(20); return(value);} void Writelong(UINT8 addr,UINT32 d)//寫入一個LONG類型 {EEPROMByteWrite(addr,d>>24); EEPROMByteWrite(addr+1,d>>16); EEPROMByteWrite(addr+2,d>>8); EEPROMByteWrite(addr+3,d&0xff);} UINT32 Readlong(UINT8 addr)//讀一個LONG類型 {UINT8 d8; UINT32 d32=0; d8=EEPROMByteRead(addr); d32|=d8; d8=EEPROMByteRead(addr+1); d32<<=8; d32|=d8; d8=EEPROMByteRead(addr+2); d32<<=8; d32|=d8; d8=EEPROMByteRead(addr+3); d32<<=8; d32|=d8; return(d32);}
4.結論
本論文通過對電子秤的稱重原理進行分析,在此基礎上介紹了硬件設計和軟件設計,最后完成了本簡易電子秤裝置的設計,采用高精度AD轉換芯片AD574和實時處理的MCU-AT89C52單片機進行處理,精度高,操作簡單,可推廣性強。