相關(guān)商品
![迷你USB藍(lán)牙4.0適配器 無(wú)線接收器 CSR穩(wěn)定芯片 支持Win7 樹莓派](images/202106/thumb_img/580_thumb_G_1622658597583.jpg)
![AS-2WD 鋁合金小車移動(dòng)平臺(tái) 移動(dòng)機(jī)器人 【1:48電機(jī)版】 電子大賽](images/201612/thumb_img/595_thumb_G_1482172615872.jpg)
![AS-2WD 鋁合金小車移動(dòng)平臺(tái) 移動(dòng)機(jī)器人 【1:120電機(jī)版】 電子大賽](images/202103/thumb_img/597_thumb_G_1617053075775.jpg)
![AS-2WD 鋁合金小車移動(dòng)平臺(tái) 移動(dòng)機(jī)器人【舵機(jī)版】電子大賽](images/202103/thumb_img/596_thumb_G_1617053035261.jpg)
【新奇特】智能全向移動(dòng)平臺(tái)——藍(lán)牙遙控版
編輯:Jack-Bei2013-12-31 390378261@qq.com 瀏覽次數(shù):1313
時(shí)隔幾個(gè)月,我對(duì)原來(lái)的設(shè)計(jì)智能全向移動(dòng)平臺(tái)V1.0版本做了個(gè)升級(jí),新版本的智能全向移動(dòng)平臺(tái),將原來(lái)的圓孔注塑算盤珠式全向輪改成了內(nèi)六角孔,便于聯(lián)軸器盤安裝同軸,更換了高性能的、大扭矩、大功率360°金屬齒輪舵機(jī),對(duì)原有的控制平臺(tái)進(jìn)行更換,設(shè)計(jì)了以Freescale 自由設(shè)計(jì)平臺(tái)系列Kinetis KL25Z為主控的第一款控制擴(kuò)展板(兼容Arduino UN3),對(duì)整個(gè)平臺(tái)的硬件和軟件算法做了較大的改動(dòng),下面請(qǐng)聽我娓娓道來(lái)。
躬行“硬”功夫
FRDM-KL25Z平臺(tái)是飛思卡爾公司最新推出的一款入門級(jí)的單片機(jī)開發(fā)板,以其低成本高性能在單片機(jī)林立今天,開始顯現(xiàn)其優(yōu)勢(shì),在開始硬件設(shè)計(jì)之前還是簡(jiǎn)單的介紹一下該平臺(tái),這是基于業(yè)內(nèi)首款采用 ARM® Cortex™-M0+ 處理器的 Kinetis L系列MCU,是一套體積小、功耗低、性價(jià)比高的評(píng)估和開發(fā)系統(tǒng),適用于快速應(yīng)用原型開發(fā)和演示。
擴(kuò)展板結(jié)構(gòu)總共分為4個(gè)版塊,分別是電源模塊、控制器、藍(lán)牙通信模塊以及電子羅盤傳感器(由于電機(jī)等因素干擾,最終沒有應(yīng)用于設(shè)計(jì))。電源模塊作為整個(gè)供電的系統(tǒng)的核心,主要目的是為舵機(jī)供電和傳感器供電,由于在這個(gè)版本中將原有的塑膠齒舵機(jī)改為了大扭矩的金屬齒輪舵機(jī),所以相應(yīng)的消費(fèi)電流也提高了,經(jīng)過(guò)實(shí)際測(cè)試可知,在舵機(jī)輕載條件下,每個(gè)舵機(jī)的在5V額定電壓下,其電流達(dá)370mA,由于在此選擇的電池為7.4V的鋰電池,所以需要降壓穩(wěn)壓電路來(lái)實(shí)現(xiàn)5V電源供給舵機(jī)和其他的傳感器,所以需要選擇電流在1.5A以上的穩(wěn)壓電源,傳統(tǒng)的LDO顯然無(wú)法滿足此輸出功率,在此選擇了DC-DC的電源芯片LM2596-5.0,電流輸出能力達(dá)3A,滿足我們的設(shè)計(jì)需求,電路參考其官方的Datasheet,值得注意的是選擇濾波電感時(shí)必須選擇功率型大電感(以前設(shè)計(jì)含MCU供電電源時(shí),由于電感功率選取不當(dāng),還因此燒掉過(guò)幾個(gè)單片機(jī))。控制器部分其引腳以及功能完全兼容Arduino UN3(如圖1),藍(lán)牙模塊選用了透明傳輸?shù)乃{(lán)牙模塊BC-04B,對(duì)于硬件具體原理這塊并不復(fù)雜,所以不再贅述,詳見(圖2)。
圖1 FRDM-KL25Z引腳
圖2 電路原理圖
躬行“軟”功夫
在開始敲擊代碼前,首先來(lái)說(shuō)說(shuō)開發(fā)環(huán)境吧,對(duì)于開發(fā)選用的IDE可以是IAR6.4、MDK4.54亦或是CW10.3,在這里還是沿用以前老工具IAR,其次是調(diào)試器,從一開始吸引我的眼球的是OpenSDA,他有MSD和DEBUG兩種模式,當(dāng)然在這是選用的調(diào)試模式,可以利用SWD接口下載調(diào)試程序,同時(shí)可以利用內(nèi)置的USB轉(zhuǎn)UART對(duì)單片機(jī)進(jìn)行調(diào)試,其具體使用步驟可以上飛思卡爾的官網(wǎng)查看學(xué)習(xí)使用,所以不在本文討論了,本設(shè)計(jì)的程序框架主要包含以下3大塊,分別是單片機(jī)模塊初始化、藍(lán)牙串口編程、運(yùn)動(dòng)控制,下面從這3個(gè)方面為您闡述。
——單片機(jī)功能模塊設(shè)置篇
單片機(jī)模塊初始化,在本設(shè)計(jì)中使用了單片機(jī)的TPM(用于產(chǎn)生PWM,控制舵機(jī)的轉(zhuǎn)速以及轉(zhuǎn)向)、UART(建立于透明藍(lán)牙模塊的通信,實(shí)現(xiàn)藍(lán)牙遙控)、AD(采集電源電壓,實(shí)現(xiàn)電池電量預(yù)警)、GPIO(利用IO電平狀態(tài)控制板載LED,顯示運(yùn)動(dòng)狀態(tài))、PIT(實(shí)現(xiàn)周期定時(shí)),綜上,對(duì)其功能參數(shù)如下列表1所示,由于是涉及一款新型號(hào)的單片機(jī),對(duì)于各位DIY一族而言會(huì)比較陌生,在此我將所有的源碼公布在我的個(gè)人網(wǎng)站上(www.ruilongmaker.cc),望大家下載學(xué)習(xí)使用。
表1 單片機(jī)模塊設(shè)置參數(shù)要求
——藍(lán)牙模塊以及手機(jī)端的使用篇
作為一個(gè)遙控的平臺(tái),就需要在終端和下位機(jī)進(jìn)行通信,在這里選用了藍(lán)牙2.0這種通信接口,對(duì)于透明藍(lán)牙模塊的使用,想必各位電子愛好者已經(jīng)很熟悉了,我選擇了一個(gè)主從一體的藍(lán)牙串口模塊BC04-B(以便于適應(yīng)各種條件),在實(shí)際測(cè)試調(diào)試時(shí)使用的是從機(jī)模式;對(duì)于手機(jī)端的軟件,在這里向大家介紹一款在“安智市場(chǎng)”搜索到的較為好用的藍(lán)牙串口BlueCommPRO4(如圖3),其類似于我們?cè)赑C端調(diào)試時(shí)使用的串口小精靈亦或是串口獵人這樣的工具,其默認(rèn)參數(shù)是波特率9600,無(wú)校驗(yàn),8位UART。
下面就實(shí)際教大家使用該軟件吧,打開軟件后,通過(guò)“模式切換”按鍵選擇模式二,在模式二里面擁有12個(gè)可以自定義的按鍵(如圖4),在這里我自定義其按鍵功能按鍵用于控制我的全向移動(dòng)平臺(tái),按鍵的功能(如圖5)所示,通過(guò)點(diǎn)擊“設(shè)置”,選擇“更多”,然后選擇對(duì)“地面站”設(shè)置,進(jìn)入(如圖6)所示的界面,選擇相應(yīng)的按鍵定義按鍵的“功能名稱”、“數(shù)據(jù)幀”,通過(guò)查閱軟件幫助說(shuō)明的定義的數(shù)據(jù)幀,可以得出該按鍵動(dòng)作的數(shù)據(jù)幀協(xié)議如下表2所示。
圖3軟件啟動(dòng)頁(yè)面 圖4自定義的按鍵 圖5按鍵定義分劃 圖6按鍵頁(yè)面設(shè)置
表2 數(shù)據(jù)幀協(xié)議
圖7串口接收狀態(tài)的轉(zhuǎn)移圖
手機(jī)端通過(guò)點(diǎn)擊“連接設(shè)備”選擇對(duì)應(yīng)的藍(lán)牙模塊進(jìn)行連接后,當(dāng)在手機(jī)端觸發(fā)按鍵后,隨即會(huì)通過(guò)藍(lán)牙發(fā)送一幀上述協(xié)議的數(shù)據(jù),單片機(jī)通過(guò)中斷去接收該幀數(shù)據(jù),然后解析這一幀數(shù)據(jù),為了高效無(wú)誤的解析出數(shù)據(jù)的有用信息,在此引入了基于有限狀態(tài)機(jī)的幀同步方法,先看看串口接收狀態(tài)的轉(zhuǎn)移圖(如圖7)吧,該方法是將數(shù)據(jù)幀的接收過(guò)程分為若干個(gè)狀態(tài),分別是幀頭1、幀頭2、幀長(zhǎng)度、功能碼、校驗(yàn)值、幀尾。假如接收到的數(shù)據(jù)串為“...0XAA,0XA5,0X5A,0X04,0XB1,0XB5,0XAA...”,系統(tǒng)的初始狀態(tài)為幀頭1,則系統(tǒng)的接收狀態(tài)依次為“...HEAD1,HEAD1,HEAD,LEN,DATA,CHECK,END...”,由此可見整個(gè)數(shù)據(jù)接收的同步狀態(tài),要注意一點(diǎn),再接收完事一個(gè)數(shù)據(jù)幀或者在其他異常幀時(shí)需要將狀態(tài)機(jī)設(shè)置為HEAD1,否則將會(huì)影響下一幀的數(shù)據(jù)接收。通過(guò)解析數(shù)據(jù)幀,得到的功能碼,通過(guò)校驗(yàn)成功后,更新主程序中的控制碼作為遙控的依據(jù),供下述運(yùn)動(dòng)控制使用。
——運(yùn)動(dòng)控制篇
當(dāng)我們?cè)诘氖謾C(jī)控制端點(diǎn)擊觸控方向按鍵時(shí),通過(guò)藍(lán)牙接收到了控制的功能碼,對(duì)于控制程序而言需要對(duì)控制碼所對(duì)應(yīng)的動(dòng)作進(jìn)行響應(yīng),改變每個(gè)電機(jī)輸出的速度大小。由上述關(guān)系式中可以得出相應(yīng)指令的速度當(dāng)量值(暫設(shè)無(wú)量綱速度500)如下列表3所示(注意:在此參數(shù)條件下,1.5ms停止時(shí)的值為2250,2ms正轉(zhuǎn)最大時(shí)的值為3000,1ms反轉(zhuǎn)最大時(shí)的值為1500,實(shí)際速度可調(diào)整的當(dāng)量范圍為±0~750)。
表3 對(duì)應(yīng)動(dòng)作的當(dāng)量速度關(guān)系表
下面說(shuō)明一下遙控控制邏輯,當(dāng)智能全向移動(dòng)平臺(tái)上電后,默認(rèn)是處于“停止”狀態(tài)(即關(guān)閉PWM輸出),所以只有觸控點(diǎn)擊“開始\停止”按鍵,讓其進(jìn)入遙控受控狀態(tài)后,那些運(yùn)動(dòng)操作才能起到作用,在此需要設(shè)置一個(gè)操控的標(biāo)志位start_flag,上電默認(rèn)狀態(tài)為start_flag=0,當(dāng)進(jìn)入遙控受控狀態(tài)后,更改狀態(tài)為start_flag=1,隨后可以根據(jù)對(duì)應(yīng)的控制碼,使4個(gè)電機(jī)輸出如上表3的速度當(dāng)量值,具體控制代碼如下文所示。
結(jié)束語(yǔ)
通過(guò)努力,終于智能全向移動(dòng)平臺(tái)可以掌控在我的手中,靈活自如在地上的運(yùn)動(dòng)了,當(dāng)然由于考慮不周,設(shè)計(jì)初期的電子羅盤由于電機(jī)的干擾,想要用它來(lái)實(shí)現(xiàn)姿態(tài)檢測(cè)的愿望成為明日黃花,同時(shí)由于360°舵機(jī)的控制精度的原因,平臺(tái)的控制精度也有待提高,推動(dòng)我來(lái)制作更加高性能的下一版的智能全向移動(dòng)平臺(tái)。
本文已刊登在《無(wú)線電》雜志2013年12月刊
用戶評(píng)價(jià)
暫時(shí)還沒有任何用戶評(píng)論