系統(tǒng)基于Android開(kāi)放配件協(xié)議,通過(guò)操作Android手機(jī)界面控制PWM 信號(hào)的周期和占空比。首先介紹了系統(tǒng)構(gòu)成,然后給出了Android終端軟件的具體實(shí)現(xiàn),最后以驅(qū)動(dòng)舵機(jī)為例進(jìn)行系統(tǒng)測(cè)試。系統(tǒng)實(shí)現(xiàn)了Android手機(jī)產(chǎn)生參數(shù)可控的PWM信號(hào)。
PWM(Pulse width Modulation,脈沖寬度調(diào)制)是一種調(diào)壓技術(shù)也是一種變頻技術(shù),由于其具有經(jīng)濟(jì)、節(jié)約空間、抗噪性能強(qiáng)等優(yōu)點(diǎn) ,已廣泛應(yīng)用于測(cè)量、通信、功率控制與變換等領(lǐng)域中。目前,嵌入式PWM 控制應(yīng)用廣泛采用單片機(jī),如簡(jiǎn)單應(yīng)用可選用PIC、AVR等系列單片機(jī),比較復(fù)雜的應(yīng)用可選用DSP,要求更高的可以選用ARM等。但是,PWM 控制應(yīng)用中選用Android智能手機(jī)還未見(jiàn)相關(guān)實(shí)例。
Android是一種全新的開(kāi)源手機(jī)操作系統(tǒng),具有強(qiáng)大的應(yīng)用層API和傳感器功能,廣泛應(yīng)用于手機(jī)、平板電腦等移動(dòng)設(shè)備中。Android智能手機(jī)具有優(yōu)越的用戶交互性、接口資源開(kāi)放性、移動(dòng)性以及便攜性等特點(diǎn),隨著其處理速度、存儲(chǔ)容量、穩(wěn)定性、網(wǎng)絡(luò)訪問(wèn)能力等性能的逐漸提高,Android智能終端與工業(yè)應(yīng)用的結(jié)合將會(huì)得到很大發(fā)展。2011年Google推出Android開(kāi)放配件協(xié)議(Android Open Accessory Protocol,AOA,Protoco1)及配件開(kāi)發(fā)工具包(Accessory Development Kit,ADK),提供了Android設(shè)備與Android配件通過(guò)USB或藍(lán)牙進(jìn)行通信的API,進(jìn)一步拓寬了Android終端的應(yīng)用范圍?;谝陨蠗l件,本文介紹了一種基于AOA協(xié)議,通過(guò)Android手機(jī)USB控制Android配件生成PWM信號(hào)的系統(tǒng)。
1 AOA協(xié)議
AOA協(xié)議用于Android配件通過(guò)USB或藍(lán)牙與Android終端進(jìn)行通信?;贏OA協(xié)議實(shí)現(xiàn)Android終端USB通信方式稱為配件模式。此模式下,與Android終端通信的另一端設(shè)備稱為Android配件,兩者都必須支持AOA協(xié)議。在USB通信過(guò)程中,Android終端充當(dāng)USB從機(jī),Android配件充當(dāng)USB 主機(jī)并為總線供電。Android配件需具有USB主控制器功能并移植有AOA 協(xié)議。ADK開(kāi)發(fā)板是常見(jiàn)的Android配件。采用ADK 開(kāi)發(fā)板的Android配件模式示意如圖1所示.
AOA協(xié)議基于USB協(xié)議,它規(guī)定了配件如何檢測(cè)、枚舉Android設(shè)備,并與設(shè)備建立通信的方法。AOA協(xié)議的工作流程如圖2所示。
2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
2.1 系統(tǒng)設(shè)計(jì)
系統(tǒng)以Android手機(jī)控制Android配件(ADK 開(kāi)發(fā)板)產(chǎn)生等脈寬PWM,并控制一舵機(jī)為例,采用的Android配件為英國(guó)飛特蒂亞公司(FTDI)公司生產(chǎn)的Android平臺(tái)USB主控模塊UMFT311EV。在該模塊的核心芯片內(nèi)集成了USB協(xié)議和AOA協(xié)議,并支持4路PWM。系統(tǒng)框圖如圖3所示。
2.2 軟件開(kāi)發(fā)
本系統(tǒng)采用的UMFT311EV 開(kāi)發(fā)板由于集成了AOA 協(xié)議,因此無(wú)需開(kāi)發(fā)Android配件端的程序。此外,F(xiàn)TDI公司針對(duì)UMFT311EV 為Android終端程序開(kāi)發(fā)提供了底層API?;赨MFT311EV 的Android手機(jī)端PWM 控制程序結(jié)構(gòu)如圖4所示。
① 配置Android Mainfest文件,設(shè)置Android USB配件模式。設(shè)定 元素及android.hardware.usb.a(chǎn)ccessory屬性值,聲明使用USB配件API;設(shè)置最小SDK版本為12(Android從該版本后支持USB配件模式);增加元素,并指定android.hardware.Usb.action.USB_ACCESSORY_ATTACHED意圖,用于當(dāng)USB配件連接后向用戶發(fā)出提示。增加元素并使其指向一個(gè)外部的XML資源文件accessory_filter.xml,該文件用于聲明希望Android設(shè)備檢測(cè)的USB配件的描述信息。
② 配置accessory_filter.xml文件。增加元素,并指定manufacturer、model、version三個(gè)屬性。在Android配件的固件程序中,同樣包含以上三個(gè)屬性值。根據(jù)AOA協(xié)議,當(dāng)Android配件連接到Android設(shè)備上時(shí),配件會(huì)發(fā)送該屬性值到Android設(shè)備。Android程序?qū)⑽ㄒ豁憫?yīng)與其accessory_filter.xml中指定的屬性值匹配的Android配件。
本系統(tǒng)的accessory_filter.xml的配置如下:
< usb—accessory model=”FTDIPWMDemo”
Manufacturer=”FTDI”
version= ”1.0”/>
Android手機(jī)端程序流程如圖5所示。
3 系統(tǒng)測(cè)試及結(jié)果
本系統(tǒng)的測(cè)試場(chǎng)景如圖6所示。
將ADK開(kāi)發(fā)板通過(guò)USB數(shù)據(jù)線連接至Android手機(jī)上,此時(shí),手機(jī)界面將彈出授權(quán)對(duì)話框,提示打開(kāi)系統(tǒng)軟件。軟件界面如圖7所示。
點(diǎn)擊“輸出”按鈕,輸出PWM 信號(hào)。在輸出信號(hào)的過(guò)程中,可以通過(guò)滑動(dòng)條動(dòng)態(tài)調(diào)整PWM 信號(hào)的周期和占空比。經(jīng)過(guò)測(cè)試,本系統(tǒng)能夠?qū)崿F(xiàn)Android手機(jī)通過(guò)USB接口控制產(chǎn)生PWM 信號(hào)。由于實(shí)驗(yàn)設(shè)備(Android手機(jī)和ADK開(kāi)發(fā)板)的性能限制,本系統(tǒng)能夠?qū)崿F(xiàn)PWM 信號(hào)的參數(shù)調(diào)節(jié)范圍如表3所列。
相關(guān)閱讀:
有PWM占空比,分分鐘搞定LED亮度線性變化
新手進(jìn)階:幾種由占空比與PWM結(jié)合的簡(jiǎn)單電路
學(xué)習(xí):5種開(kāi)關(guān)電源PWM的反饋控制設(shè)計(jì)