簡易數(shù)字電子秤設(shè)計(jì)
一、引言
隨著科技的發(fā)展,數(shù)字電子秤在日常生活和工業(yè)應(yīng)用中扮演著越來越重要的角色。本文將圍繞一款基于單片機(jī)控制的簡易數(shù)字電子秤的設(shè)計(jì)展開詳細(xì)闡述,介紹其設(shè)計(jì)理念、硬件電路設(shè)計(jì)、軟件編程以及系統(tǒng)測試等方面的內(nèi)容。
電子秤作為精確測量物體重量的工具,廣泛應(yīng)用于商業(yè)貿(mào)易、工業(yè)生產(chǎn)和家庭使用中。傳統(tǒng)的機(jī)械秤由于操作繁瑣且讀數(shù)不夠直觀,逐漸被數(shù)字電子秤所取代。數(shù)字電子秤具有讀數(shù)直觀、使用方便、稱重準(zhǔn)確等優(yōu)點(diǎn),因此得到了廣泛的認(rèn)可和使用。
二、總體設(shè)計(jì)
1.系統(tǒng)框圖概述
簡易數(shù)字電子秤的系統(tǒng)結(jié)構(gòu)包括傳感器模塊、信號調(diào)理電路、模數(shù)轉(zhuǎn)換器(ADC)、單片機(jī)控制電路和顯示電路等幾部分。具體系統(tǒng)框圖如下:
```
+--------------------------+
+----------------------| |-------------+
| | | | |
傳感器 信號調(diào)理 模數(shù)轉(zhuǎn)換 單片機(jī) 顯示電路
模塊 電路 電路 控制電路
+---------+ +------+ +----------+
| | |
電源電路 鍵盤輸入模塊
+-----------------------------+
```
2.各模塊功能描述
2.1 傳感器模塊
稱重傳感器是電子秤的核心部件,主要功能是感應(yīng)物體的重量并將其轉(zhuǎn)化為電信號。本設(shè)計(jì)采用應(yīng)變片式傳感器,通過應(yīng)變片的形變引起電阻變化,進(jìn)而轉(zhuǎn)化為電壓信號。
2.2 信號調(diào)理電路
信號調(diào)理電路用于將傳感器輸出的微弱電信號進(jìn)行放大和濾波處理,以便后續(xù)的模數(shù)轉(zhuǎn)換。常用的方法包括差分放大電路和全橋測量電路。
2.3 模數(shù)轉(zhuǎn)換電路
A/D轉(zhuǎn)換電路將模擬信號轉(zhuǎn)換為數(shù)字信號。本設(shè)計(jì)采用HX711芯片,該芯片集成度高、抗干擾性強(qiáng),并且具備24位高精度,能夠確保重量數(shù)據(jù)的準(zhǔn)確性。
2.4 單片機(jī)控制電路
單片機(jī)是整個(gè)系統(tǒng)的控制核心,本設(shè)計(jì)采用STC89C52單片機(jī),負(fù)責(zé)數(shù)據(jù)處理、顯示及用戶交互等功能。
2.5 顯示電路
顯示電路用于將最終的重量值顯示給用戶。本設(shè)計(jì)采用LED數(shù)碼管顯示,能夠?qū)崟r(shí)顯示稱量結(jié)果。
三、硬件電路設(shè)計(jì)
1.傳感器選擇與工作原理
本設(shè)計(jì)選擇應(yīng)變片式電阻傳感器,當(dāng)傳感器受到外力作用時(shí),應(yīng)變片的電阻值發(fā)生變化,通過電橋測量電路將電阻變化轉(zhuǎn)化為電壓信號。電橋測量電路如下圖所示:
```
V_in
|
___|R1
| | | |
R2 R3 R4
| | | |
A B C D
| | | |
___|Rf
|
V_out
```
當(dāng)四個(gè)橋臂電阻達(dá)到平衡狀態(tài)時(shí),電橋輸出為零;當(dāng)有壓力作用時(shí),橋臂電阻值發(fā)生變化,電橋失去平衡,輸出電壓與壓力成正比。
2.信號調(diào)理電路設(shè)計(jì)
為了增強(qiáng)信號的穩(wěn)定性和準(zhǔn)確性,需要對傳感器輸出信號進(jìn)行放大和濾波處理。本設(shè)計(jì)采用AD620放大器構(gòu)建差分放大電路,如下圖所示:
```
V_in1
|
AD620 |
| GND
O/P |
V_in2 |
| |
GND |
V_out |
|
V_ref >+----+
| |
VDD |
| |
VSS >-----+
```
3.A/D轉(zhuǎn)換電路設(shè)計(jì)
本設(shè)計(jì)采用HX711芯片,該芯片內(nèi)部集成了穩(wěn)壓電源、片內(nèi)時(shí)鐘振蕩器等外圍電路,具有集成度高、響應(yīng)速度快、抗干擾能力強(qiáng)的特點(diǎn)。其典型接口電路如下圖所示:
```
HX711 單片機(jī)
+-------------+---------+
| | |
NC SCK DATA
DT DOUT VCC,VEE,GND,PDWN
NGND NC NC,DVDD
STL NC NC,DVDD,SCK,DIN,CLK
EXT NC NC,DVDD,DIN,DOUT,CLKIN
NC NC NC,DVDD,CS,FS,RESET,CLKON
```
4.單片機(jī)控制電路設(shè)計(jì)
選用STC89C52單片機(jī)作為主控單元,其主要功能是對采集的數(shù)據(jù)進(jìn)行處理,并通過顯示電路顯示重量。STC89C52單片機(jī)具有豐富的I/O接口和強(qiáng)大的處理能力,適用于本設(shè)計(jì)的需求。
5.顯示電路設(shè)計(jì)
采用四位一體共陽極LED數(shù)碼管顯示,驅(qū)動電路簡單且顯示效果穩(wěn)定。數(shù)碼管的段選信號由單片機(jī)控制,通過位選碼實(shí)現(xiàn)動態(tài)掃描顯示。
顯示電路如下圖所示:
```
------------+--+---------+---------+--+------+------------+
+5V R1 Q1 ... Q8 鎖存器 74HC595 數(shù)碼管DS1
| | | ... | CN DS2
| | | | | ... DSn
GND |------+ GND | ... | |
... DP ... | |
| |
EN ... | |
... ... ... | |
地 ... ... ... ... ... | |
... ... | |
... ... | |
... ... | |
..........................| |
```
四、軟件設(shè)計(jì)及實(shí)現(xiàn)
1.軟件流程圖
軟件部分主要包括系統(tǒng)初始化、數(shù)據(jù)采集與處理、數(shù)據(jù)顯示等步驟。系統(tǒng)通電后,首先初始化單片機(jī)及相關(guān)外設(shè),然后進(jìn)入數(shù)據(jù)采集循環(huán)。采集到的數(shù)據(jù)經(jīng)過濾波處理后,再進(jìn)行標(biāo)定和單位轉(zhuǎn)換,最后送顯示電路顯示。軟件流程圖如下:
```mermaid
flowchart TD
初始化(初始化變量,定義初值) --> 調(diào)用A/D采集模塊(采集數(shù)據(jù))
A/D采集模塊 --> 數(shù)據(jù)處理(濾波,調(diào)零,定標(biāo))
數(shù)據(jù)處理 --> 顯示模塊(調(diào)用數(shù)碼管顯示子函數(shù))
```
2.主要函數(shù)說明
2.1 A/D數(shù)據(jù)采集函數(shù)
該函數(shù)負(fù)責(zé)從HX711芯片讀取24位A/D串行二進(jìn)制數(shù)據(jù),并將其轉(zhuǎn)換為十進(jìn)制數(shù)。具體代碼如下:
```c
unsigned long Read_Ad() {
unsigned long ad_data = 0; // A/D采集串行二進(jìn)制數(shù)據(jù)轉(zhuǎn)為十進(jìn)制數(shù)存放在這里
//前24個(gè)AD脈沖選擇通道和增益為128或者64,第25個(gè)AD脈沖開始采集高8位數(shù)據(jù),接下來的1SK,1~SK3依次采集低8位,最后一位是零點(diǎn)校正標(biāo)志位。
for (int i = 0;i < 24;i++) {
while(!HX711); //檢測HX711的DOUT引腳是否輸出低電平,如果輸出為低則表示可以進(jìn)行數(shù)據(jù)接收。
ad_data = (ad_data << 1) + (1&HX711_DOUT); //讀取一位A/D數(shù)據(jù),存入ad_data中并左移一位。
}
delay_us(50); //延時(shí)等待A/D轉(zhuǎn)換結(jié)束
return ad_data; //返回采集到的24位高低電平組合成的二進(jìn)制數(shù)。如果沒有加入調(diào)零程序的話此時(shí)得到的數(shù)值為原始輸出值。
}
```
2.2 顯示刷新函數(shù)
該函數(shù)負(fù)責(zé)將處理后的數(shù)據(jù)傳輸?shù)斤@示電路,并按位選碼動態(tài)掃描顯示。具體代碼如下:
```c
void DisplayRefresh(unsigned long weightValue) {
// 動態(tài)掃描顯示千位、百位、十位、個(gè)位和單價(jià)小數(shù)點(diǎn)后兩位數(shù)碼管的數(shù)值。
// 延時(shí)程序要對千位、百位、十位位選延時(shí)100ms,各位數(shù)碼管的延時(shí)時(shí)間設(shè)置為1ms,如果不設(shè)置延時(shí)因?yàn)橐曈X暫留的現(xiàn)象會看到各位數(shù)碼管同時(shí)被點(diǎn)亮,從而觀察到四位數(shù)碼管同時(shí)被點(diǎn)亮的現(xiàn)象,所以這里要設(shè)置延時(shí)。
//千位位選延時(shí)100ms,百位位選延時(shí)100ms十位位選延時(shí)100ms個(gè)位位選延時(shí)100ms,如果各位數(shù)碼管的延時(shí)時(shí)間過短會導(dǎo)致數(shù)碼管不夠亮,不便于觀察,實(shí)驗(yàn)時(shí)可以調(diào)整延時(shí)時(shí)間來得到最佳觀察亮度。
}
```
3.數(shù)據(jù)處理與誤差校正方案
為了保證測量精度,需要對采集的數(shù)據(jù)進(jìn)行誤差校正和單位換算。具體步驟如下:
- 濾波處理:通過軟件算法去除噪聲干擾,提高數(shù)據(jù)穩(wěn)定性。
- 標(biāo)定過程:通過已知重量物體進(jìn)行多次測量,求取平均值,確定零點(diǎn)偏移量和靈敏度系數(shù)。
- 單位換算:將A/D采集到的數(shù)字量轉(zhuǎn)換為相應(yīng)的重量單位,如克或千克。
五、系統(tǒng)測試與性能驗(yàn)證
1.測試儀器及工具列表
為了全面驗(yàn)證設(shè)計(jì)的簡易數(shù)字電子秤的性能,需要準(zhǔn)備以下測試儀器和工具:
- 標(biāo)準(zhǔn)砝碼:用于校準(zhǔn)和測試電子秤的準(zhǔn)確性。
- 萬用表:用于檢測電路板上各測試點(diǎn)的電壓值。
- 示波器:用于觀測信號波形及其變化。
- PC機(jī):用于MATLAB繪圖及分析。
- 焊接工具:用于電路板的焊接工作。
- EDA仿真工具:用于設(shè)計(jì)和測試原理圖。
- MCU燒寫工具:用于程序下載和調(diào)試。
- 其他基本電工工具。
2.指標(biāo)測試及測試結(jié)果分析
2.1 物體稱重標(biāo)定與測試
為了檢驗(yàn)電子秤的準(zhǔn)確性,需使用標(biāo)準(zhǔn)砝碼對其進(jìn)行標(biāo)定和測試。具體步驟如下:
- 初始標(biāo)定:在不放任何物品的情況下,調(diào)節(jié)電子秤使其初始讀數(shù)為“0”。記錄此時(shí)的初始輸出值。例如,若初始讀數(shù)為70g,則需要在程序中減去這個(gè)初始值。
- 多點(diǎn)校準(zhǔn):在電子秤上放置不同重量的標(biāo)準(zhǔn)砝碼(如10g, 20g, ..., 100g),記錄每次的輸出值,繪制成線性圖表。理想情況下,輸出值與實(shí)際重量呈線性關(guān)系。通過MATLAB進(jìn)行曲線擬合,得出線性方程y=kx+b,其中k為靈敏度系數(shù),b為零點(diǎn)偏移量。通過最小二乘法擬合直線,求得k≈76.043,b≈64.044。定標(biāo)后的校驗(yàn)過程表明線性相關(guān)度很高,滿足設(shè)計(jì)要求。
- 重復(fù)性測試:多次重復(fù)測量同一重量的標(biāo)準(zhǔn)砝碼,檢查讀數(shù)的一致性。若存在誤差,可進(jìn)一步調(diào)整軟件中的濾波和誤差校正參數(shù)。
- 誤差分析:通過對比實(shí)測值和真實(shí)值之間的偏差,計(jì)算電子秤的測量誤差。若誤差超出預(yù)期范圍(如±5g),需重新檢查硬件連接和軟件算法。
2.2 輸出電壓信號測試與分析
使用示波器觀測A/D轉(zhuǎn)換前后的信號波形,驗(yàn)證信號的穩(wěn)定性和噪聲情況。具體步驟如下:
- 傳感器輸出電壓測試:在未加載和滿載情況下,使用萬用表測量電橋輸出端的電壓值。未加載時(shí)的電壓值約為0V,而滿載時(shí)應(yīng)接近最大輸出電壓。
- 放大電路測試:測量經(jīng)過AD620放大后的輸出電壓,確保其在合理范圍內(nèi)(約2.5V)。調(diào)整放大器增益以獲得最佳放大效果。
- A/D轉(zhuǎn)換測試:讀取HX711的輸出數(shù)據(jù)并進(jìn)行驗(yàn)證。確保A/D轉(zhuǎn)換后的數(shù)據(jù)能正確反映輸入模擬信號的大小。例如,當(dāng)輸入電壓為2.00mV時(shí),對應(yīng)的A/D值為336480,符合設(shè)計(jì)預(yù)期。
- 動態(tài)響應(yīng)測試:在不同加載和卸載速度下觀測輸出信號的變化情況,確保無滯后或過度振蕩現(xiàn)象。
- 溫度影響評估:在不同環(huán)境溫度下進(jìn)行測試,檢查溫度變化對輸出信號的影響