楊曉多,劉述喜,李 山
(重慶理工大學電子信息與自動化學院,重慶 400054)
重力感應是對地球重力加速度的感測。當前,重力感應已廣泛應用于手機、平板電腦、可穿戴設備等大量消費類電子產品中,并在導航、工業(yè)控制、震動檢測、建筑儀器等領域有大量應用[1-4]。采用重力感應控制技術對被控對象進行控制是近年來新興的一種控制技術,有著廣闊的前景和市場。相比傳統(tǒng)的人機控制,它使用方便、控制簡單,且沒有機械磨損等因素制約控制穩(wěn)定性,因而使用壽命更長,控制可靠性更好[5-6]。
本設計使用ADXL345數(shù)字式加速度傳感器作為重力感應控制的傳感器,結合MSP430單片機以及nRF24L01無線收發(fā)芯片,實現(xiàn)了使用重力感應無線控制小車的目的。通過遙控模塊的前傾、后傾、左傾和右傾動作,實現(xiàn)了對小車的前進、停止、左轉和右轉的無線控制。實際測試結果表明:遙控模塊和小車符合重力感應控制要求,且反應靈敏,動作可靠。
本設計不同于以往采用模擬式加速度傳感器作為重力感應控制傳感器的設計,采用數(shù)字式加速度傳感器時,不需要對傳感器輸出的模擬量進行A/D模數(shù)轉換,可直接讀取數(shù)字式傳感器內部寄存器的數(shù)據,從而減少控制器內部ADC模塊的使用或省去外部添加A/D模數(shù)轉換的電路設計步驟。
本系統(tǒng)由遙控模塊和小車模塊兩部分構成。
遙控模塊以MSP430g2553單片機為控制器,采用ADXL345數(shù)字式超低功耗三軸加速度傳感器對遙控板姿態(tài)進行檢測,以nRF24L01 2.4 GHz無線通信芯片作為無線發(fā)送裝置。使用5 V鋰電池,通過AMS1117穩(wěn)壓器降至3.3 V對遙控模塊供電。ADXL345數(shù)字式加速度傳感器將遙控模塊的三軸加速度數(shù)據通過I2C通信協(xié)議傳輸至單片機。單片機通過對加速度信號的處理計算出需要的控制信號,最后通過nRF24L01無線模塊將控制信號發(fā)送給接收端設備。
小車模塊以MSP430f149單片機作為控制器,采用L298N電機驅動芯片電路作為電機驅動電路,同樣以nRF24L01 2.4GHz無線通信芯片作為無線接收裝置,使用NOKIA5110液晶作為監(jiān)視設備顯示小車運行狀態(tài)。使用5 V鋰電池對電機驅動電路供電,并通過 AMS1117穩(wěn)壓器降壓至3.3 V對單片機和無線芯片供電。nRF24L01接收端接收到來自遙控模塊的控制信號后,通過輸出不同占空比的方波PWM信號對小車的2個電機進行調速,從而實現(xiàn)電機轉速轉差以控制小車行進。
遙控模塊結構框圖如圖1所示,小車模塊結構框圖如圖2所示。
圖1 遙控模塊結構框圖
圖2 小車模塊結構框圖
重力感應是指對物體重力加速度的感知和測量,通過判斷物體的重力方向從而獲取物體的姿態(tài)[6]。以本設計采用的 ADXL345加速度傳感器為例,以其芯片重心構建笛卡爾右手坐標系[1]。在加速度傳感器重心平面平行于水平面且靜止時(如圖3所示),加速度傳感器僅受重力作用,此時測得加速度為Z軸方向,值為-g m/s2,傳感器輸出加速度值為Zout=+g m/s2。
圖3 傳感器底面平行于水平面且靜止時的受力示意圖
在空間系中對物體重心的重力向X軸、Y軸和Z軸進行投影,如圖4所示。
圖4 加速度的空間力系分解
根據力學理論,力在軸上的投影等于力矢量與該軸單位矢量的數(shù)量積。在三維空間力系中,設力F與X軸、Y軸和Z軸的夾角分別為α,β和γ,則可直接得到力F在X軸、Y軸和Z軸上的投影[4],見式(1)。
根據力學理論,力與加速度的矢量方程為
代入式(1),得到加速度在空間力系中的三維投影表達式:
當計算測量傳感器姿態(tài)角度時,對加速度傳感器進行姿態(tài)改變。傳感器穩(wěn)定時,不考慮姿態(tài)變換對總加速度的影響,此時傳感器僅受到重力作用,加速度a=g。通過數(shù)學變換,得到判斷傳感器姿態(tài)的角度方程式,即式(4)。
其中:加速度aX,ay和aZ分別為三軸加速度傳感器測得的各軸加速度。
以本設計中遙控模塊沿X軸前傾為例。當遙控模塊左傾α角度時,傳感器受力如圖5所示。
圖5 遙控模塊左傾時的受力分析
由圖5可知:將重力加速度分解在Z軸和Y軸方向上,則分解得到的Z軸和Y軸上的重力加速度分別為gcosα和gsinα。此時,角度α即為加速度傳感器傾角。從ADXL345加速度傳感器中讀出Z軸和Y軸上的加速度值,通過式(5)即可算出傾角α的度數(shù)。
由于ADXL345加速度傳感器三軸輸出的加速度值有正、負方向之分,故在計算傾角時需要加絕對值[7-8]。通過Y軸、Z軸的加速度正負判斷傾斜方向。
遙控模塊和小車模塊的控制器均采用MSP430單片機。該單片機是一款TI公司出品的16位超低功耗單片機,具有片內資源豐富、功耗低、運算速度較快以及具有精簡指令集等特點[9]。遙控部分選用MSP430g2553型號單片機,該單片機體積小且I/O口數(shù)目可以滿足遙控部分需求;小車部分采用MSP430f149型號單片機,該單片機內部16位定時器Timer_B可以發(fā)出7路獨立PWM波,并能通過選擇不同的時鐘源得到頻率可調的PWM波。
數(shù)字式三軸加速度傳感器ADXL345是由美國亞德諾半導體技術有限公司開發(fā)的一款小而薄的加速度傳感器,具有13位分辨率、測量范圍±16 g、功耗低等特點[8-10]。它可以直接將測得的加速度值以16位二進制補碼輸出,單片機可通過SPI或I2C通信方式進行訪問[11]。為節(jié)省遙控模塊單片機的I/O口占用,本設計采用兩線制的I2C總線協(xié)議。ADXL345加速度傳感器電路原理如圖6所示。
圖6 ADXL345加速度傳感器電路原理
ADXL345數(shù)字加速度傳感器自帶偏移寄存器,可以通過設置該寄存器來進行三軸加速度的調零。單片機可從 ADXL345內部的 DATAX0、DATAX1、DATAY0、DATAY1、DATAZ0、DATAZ1 6個寄存器中讀出加速度數(shù)據。ADXL345每一軸的加速度數(shù)據為16位,需要對上述6個寄存器的數(shù)據進行組合得出X,Y和Z三軸的加速度數(shù)據,加速度值與輸出的二進制補碼呈線性關系[5]。無線收發(fā)模塊采用nRF24L01芯片組成的2.4 GHz無線通信電路。該無線通訊模塊最大發(fā)射功率可達0 dBm,最大傳輸速率為2 000 kbps,有效傳輸距離為80~100 m。對nRF24L01芯片內部寄存器進行初始化設置,設置為頻道0通訊、自動應答、收發(fā)數(shù)據長度為32 字節(jié)[12-13]。2.4 GHz無線通信電路原理如圖7所示。
圖7 2.4 GHz無線通信電路原理
電機驅動電路選擇以L298N高電壓、大電流電機驅動芯片構建的電路。L298N是一種雙全橋電機驅動芯片,擁有2個H橋大功率雙全橋驅動模塊,可直接由單片機的I/O接口提供時序信號控制電機[9,14]。該電機驅動芯片控制端為ENA、ENB、IN1、IN2、IN3、IN4。其中,ENA 和 ENB 控制端接收來自單片機的占空比可調PWM波,從而實現(xiàn)對電機轉速的控制,IN1、IN2、IN3、IN4 4個控制端以2個為一組分別控制電機A和電機B的正傳、反轉、制動、自由停止工作狀態(tài)。H橋可逆L298N控制電路需在電機電樞加裝4個二極管,以起到續(xù)流作用,從而避免產生電流沖擊損壞電機。L298N電機驅動芯片電路原理如圖8所示。
圖8 L298N電機驅動芯片電路原理
本系統(tǒng)分別采用MSP430g2553單片機和MSP430f149單片機作為遙控模塊和小車模塊的控制器,兩者同屬于MSP430系列單片機。它們在編程方式、代碼編譯和代碼燒錄方式上相似。使用IAR Embedded Workbench編程軟件對系統(tǒng)的2個子模塊進行程序編寫,軟件全部采用C語言編寫。由于整體程序復雜且冗長,故采用編寫頭文件的方式對每個模塊內部的子程序進行打包,以增強程序的可讀性和簡潔性。
通過ADXL345數(shù)字式三軸加速度傳感器只能得出三軸加速度的值,如果需要判斷遙控板的姿態(tài),則需要通過軟件進行數(shù)學處理,將三軸的加速度值轉換為各軸與受力方向的傾角。
遙控模塊的程序包括單片機初始化子程序、ADXL345加速度傳感器初始化子程序、nRF24L01芯片初始化子程序、加速度數(shù)據處理子程序、無線發(fā)送子程序。小車模塊的程序包括單片機初始化子程序、nRF24L01芯片初始化子程序、PWM波輸出子程序、液晶芯片初始化子程序、無線接收子程序。圖9為小車模塊和遙控模塊程序流程。
由于ADXL加速度傳感器是一款數(shù)字式傳感器,故在使用前需對內部寄存器設置相應的參數(shù)。通過內部寄存器 DATA_FORMAT、BW_RATE、POWER_CTL、INT_ENABLE 等進行參數(shù)設置[8],系統(tǒng)上電后,單片機只需從 ADXL345內部的DATAX0、DATAX1、DATAY0、DATAY1、DATAZ0、DATAZ1 6個寄存器中讀出加速度數(shù)據并合成處理,即可得到傾角度數(shù)和傾角方向。
在ADXL345加速度傳感器中,X,Y,Z軸的數(shù)據分 別 寄 存 在 DATAX0、DATAX1、DATAY0、DATAY1、DATAZ0、DATAZ1中。以 X軸為例,寄存器DATAX0是X軸加速度的低字節(jié)存儲器,寄存器DATAX1是X軸加速度的高字節(jié)存儲器。此時,需要對這2個高低字節(jié)存儲器的數(shù)據進行組合才能得到16位的X軸的加速度數(shù)據。由于設置為13位分辨率模式,故在該模式下組合后的高4 位數(shù)據是符號位[8]。
圖9 小車模塊和遙控模塊程序流程
在得到各軸的加速度值后,不能直接判斷遙控模塊的姿態(tài),需要通過數(shù)學處理將各軸的加速度值轉化為傾斜方向和傾角,從而判斷出遙控模塊的姿態(tài),進而控制小車的運行。在系統(tǒng)遙控模塊中,當單片機讀取到三軸加速度值后,使用C語言math.h頭文件中的atan2正切函數(shù)處理三軸加速度得到傾角方向和大小。當?shù)玫絻A角大小和方向后得出的具體控制信號發(fā)出情況如表1所示。
表1 遙控模塊控制信號發(fā)出表
得到遙控模塊的傾角和傾斜方向后,使用判斷語句,由nRF24L01無線芯片發(fā)出小車運行的控制信號。
小車模塊在收到由遙控模塊發(fā)出的控制信號之后,需要對L298N電機驅動芯片輸入控制信號從而實現(xiàn)小車的前進、左轉、右轉和停止。當需要進行左轉、右轉控制時,通過兩電機的不同轉速形成兩輪轉速差來實現(xiàn)小車的左轉、右轉操作。
通過對MSP430單片機內部定時器Timer_B進行設置,實現(xiàn)兩路占空比不同且可變的PWM波輸出[9,15],分別輸入 L298N 的 ENA、ENB 控制端,實現(xiàn)小車兩輪的轉速差調節(jié)。將MSP430內部定時器Timer_B的TBCTL控制寄存器設置為16位計數(shù)長度,時鐘選擇為輔助時鐘ACLK,上升計數(shù)模式計數(shù)到CCR0,清除原有Timer_B內部計數(shù)制,具體的語句為:
TBCTL=CNTL_0+TBSSEL_1+MC_1+TBCLR;
例如,當單片機接收到遙控模塊發(fā)來的左轉信號時,定時器輸出占空比為30%和90%的兩路PWM波,使得L298N輸出兩路電壓為1.5 V和4.5 V的直流電壓向減速電機供電,從而達到轉向目的。
設計了一臺小車模型,如圖10所示。左側為以MSP430g2553單片機為控制器的遙控模塊,通過ADXL345數(shù)字加速度傳感器檢測出遙控板的傾斜狀態(tài),并通過nRF24L01發(fā)出控制信號;右側為以 MSP430f149為控制器的小車模塊,通過nRF24L01接收端接收遙控模塊發(fā)出的控制信號后,由單片機控制L298N電機驅動電路實現(xiàn)對2個車輪的減速電機控制,使小車做出符合設計需求的前進、左轉、右轉和停止動作。
以圖10為例,圖中所示為遙控板右傾時對小車控制的操作。當遙控板右傾時,遙控模塊控制器發(fā)出右轉信號,小車模塊同時接收到右轉信號,之后,由MSP430f149單片機發(fā)出PWM波和電機控制信號,使得小車右轉,液晶顯示模塊顯示當前為右轉狀態(tài)——“Right turn”。
實驗結果表明:遙控模塊和小車模塊工作正常,能滿足設計要求的重力感應無線控制小車的前進、左轉、右轉和停止操作。整個實驗過程靈敏度高、系統(tǒng)響應快且穩(wěn)定性好。
圖10 小車模型實物
本設計實現(xiàn)了基于ADXL345數(shù)字加速度傳感器的重力感應無線小車。通過硬件電路設計、軟件程序編寫、實物模型制作和系統(tǒng)反復調試,最終實現(xiàn)了通過遙控模塊前傾、后傾、左傾和右傾動作控制小車的前進、左轉、右轉和停止操作,達到了重力感應無線控制小車的目的。在重力感應技術日益發(fā)展的今天,這種技術還可以應用到其他工業(yè)控制對象中。
[1]李超.重力感應技術在智能手機及平板電腦中的應用分析[J].無線互聯(lián)科技,2012(1):46-52.
[2]方躍春,馬勇贊.基于電磁控制的周期運動裝置設計[J].電子世界,2013(18):142-143.
[3]劉均,鄒彥艷.鉆井工具偏角測量與控制系統(tǒng)設計與實現(xiàn)[J].科學技術與工程,2012,12(13):3111-3115.
[4]袁西,陳棟,田湘,等.三軸數(shù)字加速度計在捷聯(lián)慣導ADXL345及其中的應用[J].電子設計工程,2010,18(3):138-140.
[5]楊苗軍,胡佳文,金華園,等.基于自由擺的平板控制系統(tǒng)設計[J].微型機與應用,2012,31(18):72-74.
[6]陳偉.智能手機的重力感應體驗[J].科技與生活,2011(21):175-176.
[7]王愛勤.理論力學[M].西安:西北工業(yè)大學出版社,2009.
[8]Analog Devices.Inc.Three-axis,±2/4/8/16g digital accelerometer ADXL345 datasheet[EB/OL].[2008-10-11].http://www.analog.com/static/imported-files/zh/data_sheets/ADXL345_cn.pdf.
[9]劉迪,陸檑,朱曉非,等.基于MSP430控制的智能小車設計[J].新型工業(yè)化,2014,4(3):70-73.
[10]張兢,王猛,李成勇,等.基于紅外光電傳感器和語音識別技術的智能循跡小車設計[J].重慶理工大學學報:自然科學版,2012,26(7):38-41.
[11]黃曉東,黃曉華.微電子機械系統(tǒng)ADXL345的應用研究[J].企業(yè)技術開發(fā),2012,31(16):28-30.
[12]陳暉,張軍國,李默涵,等.基于STC89C52和nRF24L01的智能小車設計[J].現(xiàn)代電子技術,2012,35(17):12-15.
[13]楊會成,費琛,王筱薇倩,等.小波包變換在智能循跡小車系統(tǒng)中的應用[J].重慶理工大學學報:自然科學版,2012,26(10):6-10.
[14]趙曉鳳,張順,周璨瑜,等.基于藍牙小車的控制系統(tǒng)[J].電子科技,2014,27(7):155-158.
[15]Texas Instruments.Inc.MSP430x1xx Family User’s Guide[EB/OL].[2006-04-01].http://www.ti.com.cn/cn/lit/ug/slau049f/slau049f.pdf.