景蕾


摘? ?要:隨著無(wú)線電遙控技術(shù)的迅猛發(fā)展,日常生活已經(jīng)越來(lái)越離不開(kāi)無(wú)線電遙控,如遙控監(jiān)視、報(bào)警、航模等。在實(shí)際應(yīng)用時(shí),航模遙控器將操作者的指令以脈位調(diào)制信號(hào)的形式發(fā)出,而后解析成對(duì)應(yīng)通道的脈寬調(diào)制信號(hào)來(lái)實(shí)現(xiàn)舵機(jī)的控制,從而完成航模基本功能控制。因此,脈寬調(diào)制信號(hào)中高電平的幅度和占空比的測(cè)量精度直接影響了航模的控制精度。文章通過(guò)研究給出了Arduino內(nèi)置pulseIn()函數(shù)的測(cè)試方法,并借助示波器得到了各通道脈寬調(diào)制信號(hào)實(shí)測(cè)結(jié)果,通過(guò)算法測(cè)量與實(shí)測(cè)結(jié)果對(duì)比,驗(yàn)證了pulseIn()函數(shù)測(cè)試算法,對(duì)后續(xù)應(yīng)用有一定的指導(dǎo)意義。
關(guān)鍵詞:Arduino;占空比;pulseIn函數(shù)
1? ? Adruino開(kāi)發(fā)平臺(tái)
1.1? Arduino開(kāi)發(fā)板和Arduino? IDE
Arduino[1-2]是一款便捷、靈活、入門簡(jiǎn)單的開(kāi)源電子開(kāi)發(fā)平臺(tái)。它包含硬件(各種型號(hào)的微處理器、Arduino控制板)和軟件(編程接口、Arduino IDE)兩部分。通過(guò)搭載各種類型傳感器,例如溫濕度傳感器、超聲波傳感器、霍爾傳感器等,Arduino可以方便地獲取各類環(huán)境信息,并通過(guò)使用各類開(kāi)源庫(kù)函數(shù),輕松實(shí)現(xiàn)數(shù)據(jù)的讀取、融合、處理和輸出,最終滿足設(shè)計(jì)者的需要。Arduino安裝目錄下自帶了很多標(biāo)準(zhǔn)庫(kù),通過(guò)使用這些標(biāo)準(zhǔn)庫(kù),函數(shù)經(jīng)過(guò)系統(tǒng)科學(xué)的封裝,使得用戶只要通過(guò)操作頂層簡(jiǎn)單的函數(shù),就可以直接實(shí)現(xiàn)某種功能。
1.2? Arduino? UNO
Arduino UNO是Arduino系列開(kāi)發(fā)平臺(tái)中的一個(gè)重要版本,也是從事Arduino開(kāi)發(fā)的一個(gè)標(biāo)準(zhǔn)參考模板。UNO使用ATmega328單片機(jī)作為主控芯片,具有20路輸入/輸出端口,端口最大驅(qū)動(dòng)能力40 mA,包含14路(0~13引腳)數(shù)字輸入/輸出端口,6路(3,5,6,9,10,11引腳)可直接作為脈寬調(diào)制(Pulse-Width modulationtion,PWM)輸出,6路(A0~A5)10位模擬輸入/輸出端口,同時(shí)還包含一個(gè)ICSP header、一個(gè)復(fù)位按鈕、一個(gè)SPI接口、一個(gè)兼容串口和IIC接口。
2? ? 航模遙控器信號(hào)
操作者通過(guò)遙控器發(fā)射控制信號(hào),經(jīng)過(guò)接收機(jī)接受處理后,送給Arduino控制板進(jìn)行處理,可以完成電機(jī)控制、燈光控制、液晶顯示等諸多功能。因此,掌握Arduino對(duì)遙控接收機(jī)信號(hào)的捕獲和處理顯得尤為重要。
部分航模遙控器是通過(guò)將遙控的控制桿信號(hào)或撥動(dòng)開(kāi)關(guān)信號(hào),經(jīng)過(guò)處理后形成周期為20 ms的脈位調(diào)制(Pulse Position Modulation,PPM)[3]信號(hào),并使用2.4 GHz頻率的載波調(diào)制后發(fā)送給接收機(jī),接收機(jī)將接收到的信號(hào)進(jìn)行濾波、解調(diào),形成占空比可變的、周期為20 ms的各控制通道的脈沖寬度調(diào)制(Pulse Width Modulation,PWM)[4]信號(hào)。PWM信號(hào)的高電平時(shí)間(以ms為單位)對(duì)應(yīng)著遙控器控制桿的行程,其值范圍1 000~2 000不等,實(shí)際操作時(shí),當(dāng)遙控器控制桿在最低端,接收機(jī)輸出值為1 000/20 000左右,即占空比為5%左右的PWM信號(hào);當(dāng)控制桿在最高端,其輸出值為2 000/20 000,即占空比為10%左右的PWM信號(hào),控制桿中間的值對(duì)應(yīng)的PWM信號(hào)占空比在最低和最高占空比之間。
接收機(jī)將遙控的各通道控制信號(hào)解析后,送到Arduino開(kāi)發(fā)板的模擬信號(hào)接收引腳進(jìn)行后續(xù)的處理。
本文以Arduino UNO控制板為例,對(duì)遙控器接收機(jī)信號(hào)進(jìn)行實(shí)際解析。
遙控器接收機(jī)各通道連接在UNO的模擬端口上。軟件設(shè)計(jì)時(shí),通過(guò)Arduino的pinMode()內(nèi)置函數(shù)實(shí)現(xiàn)對(duì)某個(gè)模擬引腳的輸入設(shè)置。void pinMode(uint8 pin, WiringPinMode mode)函數(shù)有兩個(gè)參數(shù):pin為引腳編號(hào)。mode為引腳的輸入輸出模式,即INPUT和OUTPUT。
遙控器各通道的控制信號(hào),最終以PWM信號(hào)的形式被UNO的主控芯片讀取,其控制量的大小取決于PWM信號(hào)中高電平的幅度和占空比。因此,在對(duì)模擬的模式進(jìn)行設(shè)置后,需要進(jìn)一步獲取PWM信號(hào)的高電平持續(xù)時(shí)間,以便計(jì)算出輸出端的控制信號(hào)大小。假設(shè)一個(gè)標(biāo)準(zhǔn)的PWM信號(hào)幅值為A,其信號(hào)周期為T,高電平時(shí)間為t。將其轉(zhuǎn)化為模擬×信號(hào)的有效值A(chǔ)V=A×,AV值的大小將直接決定輸入端口的驅(qū)動(dòng)能力大小。
Arduino內(nèi)置函數(shù)pulseIn(pin, value, timeout),pin為想要讀取的引腳的標(biāo)號(hào),value為想要讀取的是高電平時(shí)間還是低電平時(shí)間,timeout表示一次脈沖所持續(xù)的微秒數(shù),如果在timeout時(shí)間內(nèi)脈沖沒(méi)有結(jié)束,則函數(shù)返回0,正常情況返回高低電平持續(xù)時(shí)間,單位為ms(10 ms~3 min)。因此,利用pulseIn()函數(shù),用戶可以很輕松地獲取到某個(gè)引腳的高低電平時(shí)間。
3? ? pulseIn()函數(shù)測(cè)試
本文對(duì)該函數(shù)的輸出結(jié)果進(jìn)行了實(shí)際測(cè)試,測(cè)試平臺(tái)的搭建包括:某型遙控(含接收機(jī))一部,500 MHz示波器一臺(tái)。
將接收機(jī)和Arduino UNO連接好后,用pulseIn()函數(shù)測(cè)試遙控器3通道搖桿最低點(diǎn)、中點(diǎn)、最高點(diǎn)的輸出值,通過(guò)IDE自帶的串口監(jiān)視器觀察其輸出值。
將3通道搖桿拉至最低,使用pulseIn()函數(shù)得到高電平時(shí)間為992 μs;使3通道搖桿自回中,pulseIn()函數(shù)得到高電平時(shí)間為1 505 μs;將3通道搖桿拉至最高,pulseIn()函數(shù)的到高電平時(shí)間為2 008 μs。使用pulseIn()函數(shù)測(cè)量的同時(shí),將3通道的輸出信號(hào)連接到示波器,得到上述3種情況的波形圖。從圖1可以看到,搖桿最低時(shí),值為1.00 ms;從圖2可以看到,自回中時(shí),值為1.51 ms;從圖3可以看到,搖桿最高時(shí),值為2.02 ms。由3次結(jié)果可以看出,PWM波形存在27 μs的上升時(shí)間和30 μs的下降時(shí)間,其誤差范圍在10-3 ms級(jí)上。
通過(guò)上述測(cè)試結(jié)果可知,如果用pulseIn()函數(shù)進(jìn)行較高頻率周期信號(hào)測(cè)量,在進(jìn)行信號(hào)上升沿和下降沿的處理時(shí),會(huì)存在一定誤差。
4? ? 結(jié)語(yǔ)
本文對(duì)基于Arduino平臺(tái)的常見(jiàn)遙控器信號(hào)進(jìn)行了解析,給出了函數(shù)pulseIn()的測(cè)量方法,并對(duì)Arduino內(nèi)置函數(shù)pulseIn()進(jìn)行了實(shí)際測(cè)量,結(jié)合500 MHz示波器數(shù)值得到了測(cè)量值,對(duì)后續(xù)Arduino平臺(tái)的pulseIn()函數(shù)應(yīng)用有一定的指導(dǎo)意義。
[參考文獻(xiàn)]
[1]蔡睿妍.Arduino的原理及應(yīng)用[J].電子設(shè)計(jì)工程,2012(16):155-157.
[2]楊繼志,郭敬.Arduino的互動(dòng)產(chǎn)品平臺(tái)創(chuàng)新設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012(4):39-41.
[3]向勁松,肖剛.PPM與LDPC光通信系統(tǒng)中脈沖展寬效應(yīng)補(bǔ)償辦法[J].光通信研究,2016(4):60-62,71.
[4]李彩俠,李屹坤.一種無(wú)刷直流電機(jī)四象限PWM調(diào)制方式的分析和設(shè)計(jì)[J].集成電路應(yīng)用,2019(6):122-124.