中文 | English

智慧家庭:健康體重的核心技術

作者曹 永忠@makerdiwo

文/曹永忠、許智誠、蔡英德

智慧家庭的核心就是人,而人最重要的就是有健康的身體,然而肥胖與過重都是健康的身體的無形殺手,所以健康的體重計是如何被設計出來的,如果我們可以用創客神器 Arduino 做出一台智慧型的體重計,那該有多好。

本文就是讓我們能夠瞭解健康體重的核心技術,荷重元與 ADC 放大器模組的使用,並且再最後實作出一台健康的體重計。

電子磅秤測量原理

當物體放在秤盤時,由於地心引力重力因素,會施壓力給感測器,該感測器發生形變,從而使阻抗發生變化,同時使用激勵電壓發生變化,輸出一個變化的類比信號。該信號經放大電路放大輸出到轉換器。轉換成便於處理的數位信號輸出到微處理器進行運算控制。微處理器根據命令以及程式將這種結果輸出到顯示器。

未命名

(圖 1)電子磅秤

磅秤使用功能

磅秤採用現代感測器技術、電子技術和電腦技術一體化的電子裝置,才能滿足並解決現實生活中提出的快速、準確、連續、自動去毛重等等要求,同時有效地消除誤差,使之更符合商業上的要求。

磅秤分類

  1. 按原理分類:電子機械秤、機電結合秤、電子桌秤
  2. 按功能分:計數秤、計價秤 計重秤
  3. 按用途分:工業秤、商業秤 特種秤
  4. 按放置位置分類:
  • 桌面秤:指全稱重在 30 Kg 以下的秤
  • 台秤:指全稱重在 30-300 Kg 以內的秤
  • 地磅:指全稱重在 300 Kg 以上的秤
  • 精密天平

     5.  按精確度分類:

  • I級:特種天平精密度達 10-6 基準秤
  • II級:高精度天平 10-5<精密度<10-6 精密秤
  • III級:中精度天平 10-3<精密度<10-精密度之工業、商業秤
  • IV級: 普通秤 10-2<精密度<10-的一般秤

電子磅秤特點

  1. 可遠距離操作
  2. 具自動化控制機制
  3. 數字顯示,直觀、方便、減少人為誤差(比較傳統磅秤)
  4. 準確度高、精準度強
  5. 可稱重範圍較廣
  6. 附加功能:扣重、預扣重、歸零、累計、警示等
  7. 維護簡單(簡單易修)
  8. 體積小、重量輕
  9. 安裝、校正簡單
  10. 可配合 e化企業,可接印表機或電腦資料傳輸
  11. 具人工智慧功能之電子秤、反應快、效率高

秤重感測器

自從 1971 年起,Ralph S.Shoberg 提出了有關於感測元一連串的專利(Shoberg, 1971, Shoberg, 1976, Shoberg, 1978),由於具有較高的精凖度,且因爲彎度設計容易且易製造,而被普遍地使用。

我們將上圖所示的電子磅秤,拆開之後,可以見到在秤重台下方中,有一個金屬的長條,一般就是秤重感測器(Load Cell),學術上稱作『荷重元』,如下圖所示:

未命名

(圖 2)電子磅秤上的荷重元

如上圖所示,秤重感測器是將應變計(Strain Gage)(Window and Holister, 1982)黏附於金屬元件之上,利用金屬元件受力之形變,如如下圖所示之結構示意圖,應變計(Strain Gage)元件之電阻值,依彎曲、變形程度而產生變化之特性,也就是如下圖所示,受力形變後產生電阻值改變,做成的一種感測器。然而應變計測量應變或應力時,是將應變計黏貼在被測物體上。在外力作用下,被測物體表面產生微小變形,黏貼在其表面上的應變計也隨其產生相同的變化,因此應變計之電阻也產生相同的變化。(Hannah and Reed, 1992)

未命名

(圖 3)電子磅秤上的荷重元

未命名

(圖 4)荷重元結構示意圖

未命名

(圖 5)金屬元件受力之形變

應變計(Strain gauge)的工作原理

由材質(受力物體)的電阻因施予壓力而產生的變化,這電阻值的變化與物體的電阻係數(resistivity)、幾何形狀均有關:

未命名

 

 

電阻係數(resistivity)是指單位長度、單位截面的某種物質的電阻,公制單位為「Ω-m」,其倒數為電導係數。

對 Eq. (1) 做全微分,可得到:

未命名

 

 

 

將 Eq. (2) 除以 Eq. (1),可以得到:

未命名

 

 

如果受力下的物體的形狀為一圓柱,則圓柱軸向形變與徑向形變的關係,可依 Poisson’s ratio 而知:

未命名

 

 

再將 Eq. (4) 代入Eq. (3),可以得到:

未命名

 

 

將 Eq. (5) 做整理,可以得到 Eq. (6):

未命名

 

 

 

由上式,應變計因數 Gage Factor (GF) 可被定義為:

未命名

 

 

 

一般來說 Eq. (7) 內的 dσ/σ 值會趨近於 0。舉例來說,如果 Poison’s ratio ν 的值是 0.3,則我們可知 GF = 1 + 2v ≌ 1.6根據材料力學,dL/L 可被視為軸向應變(axial strain)未命名

由 Eq. (7) 和 Eq. (8),電阻的變化 = Gage Factor(GF) χ 應變 ε,也就是未命名

上述的物理現象,如再搭配電橋的電路,便可做成應變計(strain gage)(Beckwith, et al., 2007)。

電橋量測原理

惠斯登橋(英語:Wheatstone bridge,又稱惠斯同電橋、惠斯通電橋)是在 1833 年由 Samuel Hunter Christie 發明,1843 年由查理斯.惠斯登改進及推廣的一種測量工具(Stein, 1990)。它用來精確測量未知電阻器的電阻值,其原理和原始的電位計相近。

惠斯登橋平衡原理係由四個適當電阻結合電源所組成的電路,如下圖所示:

未命名

(圖 6)惠斯頓電橋(資料來源:黃裕盛, et al., 2003)

理想平衡狀態下:R1/R4=R2/R時,電橋的輸出為零。假設將應變計(R2=R)放入橋式電路中的一臂,而其他三臂所用之電阻與應變計之電阻值相同(R1=R3=R4=R),當受外力作用時,應變計產生變化(R2=R+ΔR),此時電橋輸出電壓計算式如方程式 1 所示(黃裕盛, et al., 2003):

未命名

(方程式 1)電橋輸出電壓計算式(資料來源:黃裕盛, et al., 2003)

假設電橋四臂皆為應變計(strain gauge, strain gage),如下圖所示:

未命名

(圖 7)四個應變計組成之惠斯頓電橋(資料來源:黃裕盛, et al., 2003)

當外力作用時,各應變計阻值變化如 R1=R3=R-ΔR(壓縮 C),R2=R4=R+ΔR(拉伸 T),經電橋電路計算後,四個應變計的輸出電壓為一個應變計的四倍(黃裕盛, et al., 2003):

未命名

(方程式 2)應變計形之電壓計算式(資料來源:黃裕盛, et al., 2003)

Analog to Digital Converters 模組介紹

本書實驗引入了海芯科技(海芯科技, 2013)的產品,採用專業的 HX711 ADC 晶片(海芯科技, 2013),雙通道設計,週邊簡單,整合性高。由下圖與下下圖所示,模組板中金屬遮罩,且預留單晶片微處理機(MCU)腳位,可見整體設計上具有升級之機制,擴展性與通用性極高。

未命名

(圖 8)HX711 ADC 模組圖

未命名

(圖 9)HX711 ADC 模組外觀圖

HX711 是一款專為高精度電子秤而設計的 24 位元 A/D 轉換器晶片。與同類型其他晶片相比,該晶片內容包括穩壓電源、時鐘振盪器等其他同類型晶片所需要的週邊電路,具有整合性高、回應速度快、抗干擾性強等優點。降低了電子磅秤的整體成本,提高了整體的性能和可靠性。

該晶片與後端單晶片的線路連接和開發程式非常簡單,所有控制信號由晶片驅動,無需對晶片內部的暫存器編寫程式。輸入選擇開關可任意選取通道 A 或通道 B,與其內部的低雜訊可程式放大器相連。通道A 的可程式增益為 128 或 64,對應的滿額度差分輸入信號幅值分別為 ± 20 mV 或 ± 40 mV。通道 B 則為固定的 64 增益,用於系統參數檢測。晶片內提供的穩壓電源可以直接向外部感測器和晶片內的 A/D 轉換器提供電源,系統板上無需另外的類比電源。晶片內的時鐘振盪器不需要任何外接器件。上電自動復位功能簡化了開機的初始化過程。

HX711 模組特色

  • 工作電壓:8-5.5 v
  • 典型電流 6 mA
  • 體積:長 9 cm * 寬 1.7 cm * 高 0.4 cm
  • 帶金屬遮罩,強抗干擾,預留單晶片(STC15F104)位置,可自行升級。
  • 兩路可選擇差分輸入
  • 低雜訊、可以撰寫程式選擇放大器,可選增益為 32、64 和 128
  • 穩壓電路可直接向外部感測器和晶片內 A/D 轉換器提供電源
  • 含時鐘振盪器無需任何外接器件,必要時也可使用外接水晶振盪器或時鐘
  • 通電自動重設電路
  • 簡單的數位控制和 Tx/Rx 通訊:所有控制由接腳輸入,晶片內寄存器無需撰寫程式
  • 可選擇 10 Hz 或 80 Hz 的輸出資料速率
  • 同步抑制 50 Hz 和 60 Hz 的電源干擾
  • 耗電量(含穩壓電源電路):
  • 典型工作電流:<1.7 mA,斷電電流:<1 μA
  • 工作電壓範圍:6 ~ 5.5 V
  • 工作溫度範圍:- 20 ~ + 85 ℃

荷重元(Load Cell)連接方式

  • A通道對應本模組差分輸入引腳是 A+ A-
  • B通道對應差分輸入引腳是 B+ B-

由於 HX711 晶片內的 DIO、SCK 引腳是沒有上拉電阻的,為了防止某些弱上拉的單晶片模組連接的時候容易受到干擾,本實驗採用 22 k 的上拉電阻的設計,讓使用更加方便。模組背後的 J1 跳線位置是 HX711 晶片的資料輸出速率 80 hz/10hz 選擇。 使用中要注意的是,供電電壓需介於 4.7 V 以上,5.5 V 以下。若高於 5.5 V時,晶片有可能損壞,低於 4.7 V 會造成感測器供電不穩定,讀數誤差很大,甚至無法工作。

如果B通道不用,請將 B+ B-直接接地,防止引入干擾。至於資料和時鐘的脈寬時序等要求,請參考附錄的 HX711 技術資料。由下圖所示,可見到荷重元與 HX711 模組接線方法:請將感測器引線顏色和下圖所示對應的顏色對色接入即可:

未命名

(圖 10)荷重元連接 AD 放大器示意圖

整合 LCD 螢幕的電子磅秤

我們為了可以測試荷重元等感測器,我們簡單設計一個完整的電子秤,我們加入一個獨立的顯示螢幕,方能稱為一個完整個電子磅秤

加上我們需要一個去毛重的按鈕,方能讓電子秤更加完整,為了達到這個需求,我們參考下表來將 LCD Keypad Shield 模組與 Arduino 開發板之實體線路接腳,若實務上該接腳已占用,請參考表 1 原理,修改至正確接腳。

(表 1)LCD Keypad Shield 與 Arduino 開發板接腳表

Keypad接腳 Arduino開發板接腳 解說
D4 Arduino digital output pin 4 LCD 1602 資料接腳
D5 Arduino digital output pin 5
D6 Arduino digital output pin 6
D7 Arduino digital output pin 7
RS Arduino digital output pin 8 Register Selections
Enable Arduino digital output pin 9 ENABLE SIGNAL
A0 Arduino Analog input pin 0 Key buttons輸入(類比)
5V Arduino pin 5V 5V 陽極接點
GND Arduino pin Gnd 共地接點

我們可以參考下表所示之接腳表,了解如何將 HX711 模組與 Arduino 開發板連接之接腳。我們可以按下表所示之接腳的內容,並依讀者實際情形修改對應的接腳。

(表 2)HX711 模組與 Arduino 開發板接腳表

HX711接腳 Arduino開發板接腳 解說
Do/Rx Arduino digital output pin 10 模組的Do/Rx埠
Clock Arduino digital output pin 11 模組的Ck/Tx埠
Vcc Arduino pin 5V 5V 陽極接點
GND Arduino pin Gnd 共地接點

我們根據上述內容,將荷重元(Load Cell)、HX711 模組與 Arduino 開發板三者線路連接好之後,將下列整合程式輸入到 Arduino sketch 之中:

電子磅秤整合程式(hx711_5)
#include <HX711.h> // HX711 Arduino library#include <LiquidCrystal.h>

#define datapin 10    // 讀取資料接腳

#define clockpin 11  // 讀取時脈接腳

HX711 hx(clockpin, datapin,128,0.0031977841);     // 產生HX711物件

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int lcd_key = 0;

int adc_key_in = 0;

#define btnRIGHT 0

#define btnUP 1

#define btnDOWN 2

#define btnLEFT 3

#define btnSELECT 4

#define btnNONE 5

int read_LCD_buttons()

{

adc_key_in = analogRead(0); // read the value from the sensor

if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result

if (adc_key_in < 50) return btnRIGHT;

if (adc_key_in < 250) return btnUP;

if (adc_key_in < 450) return btnDOWN;

if (adc_key_in < 650) return btnLEFT;

if (adc_key_in < 850) return btnSELECT;

return btnNONE; // when all others fail, return this…

}

void setup() {

hx.set_offset(-13117.91613);

Serial.begin(9600);

hx.tare(50);  //在開始時候,取樣50次的皮重累加入系統

lcd.begin(16, 2); // start the library

lcd.setCursor(0,0);

// lcd.print(“Push the buttons”); // print a simple message

}

void loop() {

int key ;

   delay(500);

  double sum0 = 0;

  double sum1 = 0;

  key = checkkey();

if (key == 11)

{

  lcd.clear();

lcd.setCursor(0,0); // move cursor to second line “1″ and 9 spaces over

lcd.print(“tare ………”);

hx.tare(50);  //在開始時候,取樣50次的皮重累加入系統

delay(1000);

}

for (int i = 0; i < 10; i++) {

sum0 += hx.read();

sum1 += hx.bias_read();

}

lcd.clear();

lcd.setCursor(0,0); // move cursor to second line “1″ and 9 spaces over

lcd.print(“ADC :”); // display adc value 去除小數位

lcd.print((int)sum0/10); // display adc value 去除小數位

lcd.print(”  “); // display adc value 去除小數位

lcd.print(key); // display adc value 去除小數位

lcd.setCursor(0,1); // move to the begining of the second line

lcd.print((int)sum1/10);  //去除小數位

lcd.print(”  g “);  //去除小數位

lcd.print(sum1/10);  //去除小數位

lcd.print(”  g”);  //去除小數位

Serial.print(sum0/10);  //去除小數位

Serial.print(” “);

Serial.println((int)sum1/10);  //去除小數位

// checkkey();

}

int checkkey()

{

lcd_key = read_LCD_buttons(); // read the buttons

switch (lcd_key) {

case btnRIGHT:

{

return 1 ;

break;

}

case btnLEFT:

{

return 2 ;

break;

}

case btnUP:

{

return 3 ;

break;

}

case btnDOWN:

{

return 4 ;

break;

}

case btnSELECT:

{

return 11 ;

break;

}

case btnNONE:

{

return 0 ;

break;

}

} }

程式原始碼:https://github.com/brucetsao/makerdiwo/tree/master/201512

將上述程式編譯後,並上傳到 Arduino 開發板之後,進行程式測試,可見到下圖中,可以見到整合 Keypad Shield 模組板之顯示器與鍵盤的電子秤版本,已經可以將秤重內容完整顯示在 LCD 1602 上面,並且按下 Select 按鈕,也可以正確進行去除毛重(Tare)的功能。

本文主要介紹之 Arduino 開發板使用與應變計與 ADC(HX711)放大器,來實現健康體重的核心技術,透過本文的解說,相信讀者會對連接、使用應變計與 ADC(HX711)放大器,有更深入的了解與體認,後續筆者還會繼續發表智慧家庭相關的文章,讓我們在未來可以創造出更優質、智慧化的家庭。

參考資料:

  • 曹永忠, 许智诚, & 蔡英德. (2014). Arduino 电子秤设计与制作: Using Arduino to Implementation an Electronic Scale. 台湾、彰化: 渥玛数位有限公司.
  • 曹永忠, 許智誠, & 蔡英德. (2013). Arduino 電子秤設計與製作: The design and development of an electronic scale (初版 ed.). 台灣、彰化: 渥瑪數位有限公司.

本文內文引用自合作友站 makerdiwo 提供局部內容,完整內文請參考:原文連結

Tags 舊轉載

分享到社群

曹永忠

曹永忠 (Yung-Chung Tsao) ,目前為自由作家暨專業Maker,專研於軟體工程、軟體開發與設計、物件導向程式設計,商品攝影及人像攝影。長期投入創客運動、資訊系統設計與開發、企業應用系統開發、軟體工程、新產品開發管理、商品及人像攝影等領域,並持續發表作品及相關專業著作。 Email:prgbruce@gmail.com Line ID:dr.brucetsao 作者網站:https://www.cs.pu.edu.tw/~yctsao/ 臉書社群(Arduino.Taiwan):https://www.facebook.com/groups/Arduino.Taiwan/ Github網站:https://github.com/brucetsao/ Youtube:https://www.youtube.com/channel/UCcYG2yY_u0m1aotcA4hrRgQ