景蕾


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