賀凱強(qiáng)
歐姆表或萬(wàn)用表(歐姆檔)是我們測(cè)量電阻的常用工具。平時(shí),我們只是把它作為一種消費(fèi)的工具而已。如果進(jìn)一步深究它的原理,并且將其中的電學(xué)知識(shí)與Arduino編程結(jié)合,就可以自己制作出一只能夠精確測(cè)量的歐姆表。這是一個(gè)將科學(xué)、技術(shù)、工程與數(shù)學(xué)融合的過(guò)程。拿著自制的歐姆表去測(cè)電阻,也將是一次非常有趣的體驗(yàn)。
● 制作:歐姆表的電路連接
自制的多量程歐姆表是根據(jù)串聯(lián)電路的歐姆定律制成。Arduino將電路中電壓分配規(guī)律,轉(zhuǎn)化為數(shù)字信號(hào)。通過(guò)數(shù)字的變化,反推出未知電阻的阻值。我們參照自制多量程歐姆表的電路圖(如圖1),來(lái)解析自制多量程歐姆表的原理。
5V為待測(cè)電阻Rx和已知電阻R1之間的總電壓,V為電壓表測(cè)得的阻值。因?yàn)榇?lián)電路的電流不變,所以根據(jù)公式可求得待測(cè)電阻的阻值為: 。
可見(jiàn),要求得待測(cè)電阻的阻值,我們需要已知兩個(gè)變量。一個(gè)是定值電阻,一個(gè)是A0端口電壓。理論測(cè)量范圍為0到無(wú)窮大。已知Arduino UNO可提供5V的電壓,選擇1KΩ定值電阻作為電路的已知電阻。Arduino UNO可以將電路中的0~5V電壓轉(zhuǎn)換成數(shù)字信號(hào)0~1023,且兩者呈線性關(guān)系。例如,輸入模擬信號(hào)管腳的電壓為0V,轉(zhuǎn)換之后的數(shù)字為0;模擬信號(hào)管腳電壓為5V,轉(zhuǎn)換之后的電壓為1023。利用Mixly圖形化編程軟件,可以實(shí)現(xiàn)兩者轉(zhuǎn)換以及結(jié)果顯示。圖2為實(shí)際電路示意圖。紅色導(dǎo)線一端接入Arduino UNO板5V管腳,另一端作為測(cè)量電阻的引腳;1KΩ電阻一端接地,另外一端連接黑色導(dǎo)線作為測(cè)量電阻的引腳,同時(shí)連接藍(lán)色導(dǎo)線接入A0管腳。
之前我們已經(jīng)了解到A0端口的測(cè)量值和A0和GND之間電壓V之間的換算關(guān)系為 ,將其代入到計(jì)算公式當(dāng)中,可得A0數(shù)值和Rx的計(jì)算關(guān)系為: 。
● 改裝:繪制歐姆表的表盤(pán)
上述的歐姆表只是一個(gè)最初的模型,測(cè)量的電阻值只能在電腦上顯示。這樣的歐姆表只是對(duì)其原理的一個(gè)展現(xiàn),還不能成為一個(gè)獨(dú)立的作品。為了使自制的歐姆表更貼近真實(shí)的歐姆表,我們可以對(duì)其做進(jìn)一步改進(jìn),在圖2連線的基礎(chǔ)上,加入舵機(jī)。利用舵機(jī)角度的變化表示阻值的大小,制成指針式歐姆表。要解決的首要問(wèn)題是,將測(cè)量到的電阻值轉(zhuǎn)換成為舵機(jī)的角度。選擇歐姆表的量程為0~10KΩ。已有舵機(jī)的旋轉(zhuǎn)范圍是0~180度,為了簡(jiǎn)化計(jì)算過(guò)程,我們?cè)O(shè)置舵機(jī)轉(zhuǎn)動(dòng)10度代表1KΩ,轉(zhuǎn)動(dòng)5度代表最小刻度0.5KΩ?,F(xiàn)設(shè)置歐姆表量程為0~10KΩ,因此舵機(jī)轉(zhuǎn)動(dòng)的最大角度為100度。
使用直尺、半圓與圓規(guī),在紙盒的表面畫(huà)出歐姆表的刻度盤(pán),用舵機(jī)在刻度盤(pán)上比對(duì)位置,使得舵機(jī)的轉(zhuǎn)動(dòng)軸和刻度盤(pán)的中心重合,以此來(lái)確定舵機(jī)的安裝位置,并用筆標(biāo)記。再按照舵機(jī)的尺寸,挖空紙盒表面,將舵機(jī)安裝上去。舵機(jī)的三根引腳分別接Arduino UNO電源管腳、接地端與A1管腳。這樣,一個(gè)獨(dú)立歐姆表的連線和組裝工作已經(jīng)完成。圖3為歐姆表刻度盤(pán),圖4為指針式歐姆表實(shí)際電路示意圖。
● 玩轉(zhuǎn):學(xué)習(xí)小數(shù)變量的使用
程序的編寫(xiě)大致分為三個(gè)部分:第一個(gè)部分是對(duì)變量的定義,第二個(gè)部分是各個(gè)小程序的編寫(xiě),第三個(gè)部分是用程序語(yǔ)句連接各個(gè)小程序,最終實(shí)現(xiàn)歐姆表的功能。
第一部分的程序是定義變量。變量分為整數(shù)、小數(shù)、布爾、字符和字符串。如果要給數(shù)字賦予一個(gè)變量,需要定義變量為整數(shù)變量或者小數(shù)變量。我們?cè)谶@一制作過(guò)程中,需要進(jìn)行比較精確的計(jì)算,計(jì)算的過(guò)程與結(jié)果必須以小數(shù)的形式呈現(xiàn)。因此,我們選擇各個(gè)變量為小數(shù)變量。定義analog變量為小數(shù)變量,初始值為0。模擬端口A0的數(shù)值會(huì)賦予這個(gè)變量。同理,經(jīng)過(guò)歐姆定律公式計(jì)算,得到的待測(cè)電阻數(shù)值用r來(lái)表示;r擴(kuò)大10倍得到的數(shù)值賦予a,a與舵機(jī)旋轉(zhuǎn)的角度有關(guān)系。圖5為第一部分程序。
第二部分是各個(gè)小程序的編寫(xiě)。首先根據(jù)歐姆定律,編寫(xiě)待測(cè)電阻的計(jì)算程序。將模擬端口的A0數(shù)值賦予analog變量,再代入計(jì)算公式中。這里的計(jì)算公式與上述歐姆定律的計(jì)算公式一致。不同的是,總電壓V原先是5V,現(xiàn)在是與5V對(duì)應(yīng)的1023,而電壓V1用變量analog表示。
名為“電阻”的程序被執(zhí)行后,會(huì)得到待測(cè)電阻的精確數(shù)值。如果用舵機(jī)表示電阻值,電阻值的數(shù)值過(guò)小,需要進(jìn)行放大。如待測(cè)電阻經(jīng)過(guò)測(cè)量為5KΩ,如果舵機(jī)相應(yīng)地轉(zhuǎn)動(dòng)5度,指針轉(zhuǎn)動(dòng)不明顯。但將電阻值放大十倍為50,舵機(jī)轉(zhuǎn)動(dòng)50度,舵機(jī)轉(zhuǎn)動(dòng)明顯,這樣歐姆表的指示將更加精確。
所以,需要執(zhí)行“舵機(jī)顯示電阻”程序,程序內(nèi)容為待測(cè)電阻數(shù)值擴(kuò)大十倍。選擇A1端口為舵機(jī)的信號(hào)輸入端口,之后a與舵機(jī)轉(zhuǎn)動(dòng)的角度進(jìn)行映射,建立對(duì)應(yīng)關(guān)系。0~10KΩ放大十倍為0~100,放大的數(shù)值和舵機(jī)轉(zhuǎn)動(dòng)角度一一對(duì)應(yīng)。圖6為第二部分程序。
第三部分程序是要連接第二部分的程序(如圖7)。
● 分享
自制的歐姆表與真正的歐姆表或者萬(wàn)用表相比,其精確性相差很多。但從制作者的角度出發(fā),在制作過(guò)程中享受不斷解決問(wèn)題的過(guò)程,享受縮小與真實(shí)產(chǎn)品差距的陶醉和愉悅,這其中的收獲遠(yuǎn)遠(yuǎn)大于僅僅用歐姆表去測(cè)一個(gè)電阻。這是一名創(chuàng)客對(duì)自我的挑戰(zhàn)與對(duì)創(chuàng)新的執(zhí)著。如果這名創(chuàng)客是一位小學(xué)生或者中學(xué)生,其教育意義與價(jià)值不言而喻。因此,在中小學(xué)創(chuàng)客空間建設(shè)過(guò)程中,不妨在工具區(qū)旁,專(zhuān)門(mén)為自制工具區(qū)留出位置。教師和學(xué)生可以將自制的歐姆表、電壓表等工具擺到自制工具區(qū),這是對(duì)學(xué)生與教師個(gè)人創(chuàng)作的鼓勵(lì)與肯定,是對(duì)創(chuàng)客文化與精神的踐行,也是建設(shè)個(gè)性化創(chuàng)客空間的點(diǎn)睛之筆。本案例是自制電壓表項(xiàng)目的延伸,其原理都是基于對(duì)模擬輸入端口的深入理解,但該歐姆表在測(cè)量小電阻時(shí)其結(jié)果還并不令人滿(mǎn)意,我們先將這個(gè)問(wèn)題分享出來(lái),看一看大家能否有自己的解決方案,是否可以做一個(gè)量程可以調(diào)整的歐姆表呢?當(dāng)然對(duì)于這一問(wèn)題我將會(huì)在接下來(lái)的時(shí)間里,繼續(xù)追蹤研究。
本案例的分享視頻將會(huì)在以下公眾號(hào)中陸續(xù)登載。