趙莉莉
摘 要:電子脂肪秤的設(shè)計(jì)是以STC89C52單片機(jī)作為控制中樞,外圍電路集成了電源供電模塊,壓力傳感器,超聲波傳感器,LCD1602液晶顯示模塊,按鍵模塊,復(fù)位電路,蜂鳴器等。系統(tǒng)測(cè)量完人體的身高和體重后,手動(dòng)輸入腰圍,系統(tǒng)自動(dòng)處理,液晶顯示身高,體重,腰圍和脂肪率,并且有語音播報(bào)功能。
關(guān)鍵詞:STC89C52單片機(jī);壓力傳感器;超聲波
1 概述
體內(nèi)脂肪的平衡與否,決定著人們身體的健康。如果脂肪過量囤積,就會(huì)導(dǎo)致各種疾病的發(fā)生,會(huì)對(duì)身體產(chǎn)生危害。那么怎么測(cè)量人體的脂肪率呢?也就是要知道人體的脂肪占據(jù)人體的比例,進(jìn)而來判斷人體的健康程度。眾所周知,肌肉內(nèi)含有較多的水分,從本質(zhì)上來說是可以導(dǎo)電的,但是脂肪卻是不導(dǎo)電的。我們可以通過對(duì)人體的不導(dǎo)電率的測(cè)量,來檢測(cè)出人體的脂肪率。本次設(shè)計(jì)利用BIA理論,即生物電阻抗分析方法,把我們?cè)O(shè)計(jì)的電極片和人體的雙腿接觸,加上一定的安全電壓,來測(cè)量人體的電阻。然后輸入用戶的基本數(shù)據(jù),帶入實(shí)驗(yàn)公式,系統(tǒng)自動(dòng)計(jì)算人體脂肪率。
2 設(shè)計(jì)思路
在本次設(shè)計(jì)中,系統(tǒng)上電后,就會(huì)通過LCD1602來顯示“Welcome to Used.”“Initializing...”然后我們按下確定按鍵,當(dāng)顯示完“height start....”的時(shí)候就去通過超聲波測(cè)試來測(cè)量人體的高度。測(cè)量完畢之后就會(huì)在LCD1602當(dāng)中顯示“height end....”和“Please confirm..”。顯示完畢之后按下“確定”按鍵,蜂鳴器響一聲,系統(tǒng)就會(huì)采集壓力傳感器的數(shù)據(jù),一開始會(huì)顯示“Weight start....”,開始調(diào)用壓力傳感器模塊。在此之前可以對(duì)壓力傳感器施予一定的壓力,來模擬有人體或者有物體已經(jīng)站上去的效果。當(dāng)對(duì)壓力傳感器采集數(shù)據(jù)完畢的時(shí)候,LCD1602會(huì)在顯示液面中顯示“Weight end...”和“Please confirm..”,當(dāng)你按下確定按鍵的時(shí)候,蜂鳴器響一聲,表示質(zhì)量的采集數(shù)據(jù)已經(jīng)采集完畢。接下來就是對(duì)腰圍的數(shù)據(jù)進(jìn)行輸入,腰圍的輸入是通過按鍵來進(jìn)行輸入的,按鍵提供了0到9的數(shù)字輸入,還有一個(gè)確定按鍵的設(shè)定,在LCD1602的液晶顯示面板中顯示“Enter waistline.”,便可以通過按鍵在液晶顯示液面的第二行中輸入鍵值,鍵值的位數(shù)設(shè)定為兩位,當(dāng)你設(shè)定完畢之后就按下“確定”按鍵,蜂鳴器響一聲,按下之后就會(huì)在液晶顯示液面當(dāng)中顯示“enter end...”。之后便進(jìn)入了數(shù)據(jù)的總的處理,還有顯示的階段了,在顯示數(shù)據(jù)之前,液晶的顯示液面就會(huì)有“calculating....”和“Please waiting..”的提示,表示數(shù)據(jù)已經(jīng)進(jìn)入了數(shù)據(jù)的總的處理階段,顯示完畢之后就會(huì)在顯示液面中顯示之前所采集到的數(shù)據(jù)了,在上一行顯示“H:(這里是顯示高度的數(shù)值)” “W2:(這里是顯示壓力傳感器采集回來的數(shù)值)”在第二行當(dāng)中顯示“WA:(這里是顯示之前通過按鍵輸入的腰圍數(shù)值)”“ZF:(這里是顯示通過計(jì)算之后得出的脂肪率的數(shù)值)”,當(dāng)程序執(zhí)行到這里的時(shí)候就表明程序已經(jīng)全部執(zhí)行完畢,蜂鳴器響兩聲,另外會(huì)通過語音系統(tǒng)通過對(duì)所得的結(jié)果進(jìn)行語音播放。
本次設(shè)計(jì)的功能包括壓力檢測(cè)功能,在壓力的檢測(cè)當(dāng)中主要就是模擬測(cè)量稱重者的一個(gè)體重,在軟件執(zhí)行到要去測(cè)量體重的時(shí)候,LCD1602會(huì)出現(xiàn)提示文字“weight start…”,然后就在壓力傳感器上施加壓力,模擬人體已經(jīng)站上去,然后就去測(cè)量體重,將數(shù)據(jù)返回給MCU。當(dāng)測(cè)量完畢之后,LCD1602就會(huì)顯示“weight end…”來提示用戶壓力傳感器模塊已經(jīng)采集數(shù)據(jù)完畢。
3 硬件設(shè)計(jì)
在本次設(shè)計(jì)當(dāng)中,硬件的設(shè)計(jì)上采用了以下幾個(gè)模塊來實(shí)現(xiàn)功能,首先電源模塊:主要的功能就是將市電220V電壓轉(zhuǎn)化為系統(tǒng)所需要的5V電壓,供中央控制芯片STC89C51單片機(jī)還有外部的功能模塊使用。壓力傳感器模塊的作用就是模擬重量的數(shù)據(jù)采集。本次設(shè)計(jì)中選用的是HX711芯片,我們把它作為傳感器與MCU之間的數(shù)據(jù)轉(zhuǎn)換芯片。在傳感器中采集到的模擬信號(hào),會(huì)在HX711中進(jìn)行數(shù)據(jù)轉(zhuǎn)換。轉(zhuǎn)換后的數(shù)據(jù)提供給中央控制芯片以作更好的處理。在高度的數(shù)據(jù)采集當(dāng)中,我們采用的是超聲波傳感器的模塊。在本次設(shè)計(jì)當(dāng)中采用超聲波傳感器作為高度的數(shù)據(jù)采集的主要原因就是測(cè)量時(shí)更方便,數(shù)據(jù)處理更精確,如果使用傳統(tǒng)的高度傳感器的話,它的原理就是利用氣壓的不同來作為判定高度不同的依據(jù),所以在測(cè)量比較高的地方時(shí),比如山,高塔,高樓時(shí),可以使用這個(gè)方法,但是在人的身高方面,本次設(shè)計(jì)不宜使用以氣壓作為判定高度不同的依據(jù)的高度傳感器,故現(xiàn)在采用超聲波傳感器模塊。而蜂鳴器模塊主要的作用就是在“確定”的時(shí)候,發(fā)出響聲給予用戶一個(gè)提示,只是一個(gè)提示性的作用。LCD1602顯示模塊主要就是在設(shè)計(jì)當(dāng)中充當(dāng)數(shù)據(jù)顯示的角色,顯示程序的執(zhí)行流程,具體執(zhí)行到什么位置還有什么地步,輸出提示性語句,通過按鍵按下顯示對(duì)應(yīng)的數(shù)值,還有最終顯示的最終數(shù)據(jù)。按鍵模塊主要就是通過按鍵來輸入按鍵的對(duì)應(yīng)的數(shù)值,比如腰圍的數(shù)值,按鍵輸入之后就進(jìn)入單片機(jī)里面執(zhí)行相應(yīng)的程序,本次的按鍵模塊當(dāng)中提供了0到9的數(shù)字按鍵,還有確定的按鍵,可以提供用戶進(jìn)行數(shù)字的輸入還有最終的確認(rèn)動(dòng)作。語音播放模塊主要就是對(duì)最終現(xiàn)實(shí)的結(jié)果通過這個(gè)模塊,經(jīng)過外接的播放器播放出來。
4 系統(tǒng)調(diào)試
系統(tǒng)的硬件調(diào)試時(shí),主要就是在單片機(jī)的外部器件的選擇上,LCD液晶顯示模塊也有較為詳細(xì)的外圍的配置電路。而超聲波測(cè)量模塊和質(zhì)量測(cè)量模塊主要都是采用一條線路為時(shí)鐘線的方式,一條線路為數(shù)據(jù)線,所以加上地線和電源端,一共有四條電路線,這種配置利于外圍功能器件的安裝。在電路的電源設(shè)計(jì)上是采用了比較傳統(tǒng)的電源方式,主要就是通過電源的穩(wěn)壓芯片和變壓器來為系統(tǒng)供電。這種電源設(shè)計(jì)模式具有很大好處,就是電源經(jīng)過了變壓器的隔離之后,由原來的220V的交流電變成了只有12V的交流電,如果發(fā)生觸電的時(shí)候就可以大大的降低發(fā)生事故的概率,也可以很好的保護(hù)功能模塊的芯片,以免遭到更大的電流的沖擊,燒壞其內(nèi)部的電路。
在軟件的調(diào)試過程也是比較清晰的,主要就是各個(gè)功能模塊當(dāng)中使用時(shí)序有了比較全面的了解之后,就可以在這個(gè)基礎(chǔ)上更好的控制還有處理功能模塊反饋回來的數(shù)據(jù)。在系統(tǒng)的調(diào)試時(shí),也出現(xiàn)了不少的問題,比如在使用按鍵模塊來輸入腰圍的數(shù)值的時(shí)候,在LCD液晶顯示模塊上一直顯示的都是亂碼,然后經(jīng)過反復(fù)的調(diào)試還有修改之后才發(fā)現(xiàn),原來在按鍵掃描程序的返回值當(dāng)中,一直都是返回一個(gè)整數(shù)型的數(shù)值。而對(duì)于液晶顯示模塊而言,整數(shù)型的數(shù)值是無法進(jìn)行顯示的。所以經(jīng)過修改,又定義一個(gè)字符型的數(shù)組,然后利用返回來的整數(shù)型數(shù)值再去字符型數(shù)組當(dāng)中去調(diào)取相應(yīng)的字符。而在超聲波測(cè)試模塊當(dāng)中,采用的邏輯就是初始化的時(shí)候測(cè)量一個(gè)數(shù)值,然后在正式測(cè)量的時(shí)候再去測(cè)量一個(gè)數(shù)值,然后再進(jìn)行減法運(yùn)算,所得到的值就是高度,然后出現(xiàn)的問題就是,高度差的顯示一直都是539,具體分析之后發(fā)現(xiàn),正式測(cè)量的數(shù)值比初始化測(cè)量的數(shù)值要大,所以進(jìn)行減法運(yùn)算之后就會(huì)產(chǎn)生一個(gè)負(fù)數(shù),負(fù)數(shù)分段取字符的時(shí)候就發(fā)現(xiàn)一直取到的字符就是539,所以我采取的方法就是在正式測(cè)量的時(shí)候,就加上了一個(gè)判斷條件,就是正式測(cè)量的數(shù)據(jù)一定要比初始化的數(shù)據(jù)小,才可以進(jìn)行減法的運(yùn)算,否則就是在原地等待,不斷取值,直到取到的數(shù)值比初始化的數(shù)值要小的時(shí)候,就可以進(jìn)行運(yùn)算了。
參考文獻(xiàn)
[1]李明明,耿玉琴,何云云.基于物聯(lián)網(wǎng)的體重秤的設(shè)計(jì)[J].測(cè)控技術(shù),2016,6.
[2]王翥,崔曉志,侯春雷.超聲波傳感器接收信號(hào)強(qiáng)度非對(duì)稱性分析及對(duì)策[J].傳感技術(shù)學(xué)報(bào),2015,1.
[3]孫玉昕.基于物聯(lián)網(wǎng)的脂肪檢測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2014,11.