電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>在機(jī)器人汽車上實現(xiàn)超聲波傳感器

在機(jī)器人汽車上實現(xiàn)超聲波傳感器

2023-06-28 | zip | 0.12 MB | 次下載 | 免費(fèi)

資料介紹

描述

介紹

我的最終項目的主要目標(biāo)是在機(jī)器人汽車上實現(xiàn)超聲波傳感器,并使用羅盤和 MPU-9250 寄存器。此外,我還將使用來自機(jī)器人汽車的陀螺儀寄存器數(shù)據(jù)來輸出機(jī)器人汽車在地板上的當(dāng)前位置(x,y 坐標(biāo))。

pYYBAGN20AaAKuqLABdIDJEEg_Q70.jpeg
?

對于最后的演示,我希望我的機(jī)器人汽車能夠避開障礙物,并且 teraterm 將打印機(jī)器人汽車的當(dāng)前 x 和 y 坐標(biāo)。首先,要正確實現(xiàn)超聲波傳感器,我們首先需要將其連接到我們使用的發(fā)射臺,即 F28379D 發(fā)射臺。超聲波傳感器的工作電壓為 5 V。我們可以連接到發(fā)射臺上的 5 V 電源引腳,也可以連接到綠板上的任何 5 V 電源。在這個項目中,我將綠板的電源焊接到超聲波傳感器上。超聲波傳感器有四個引腳,分別是 vcc、觸發(fā)引腳、回波引腳和接地引腳。只要選擇不干擾其他傳感器和芯片,我們可以將觸發(fā)引腳和回波連接到 F28379D 發(fā)射臺的任何 GPIO 寄存器。在這個項目中,觸發(fā)引腳連接到 GPIO 15,回聲引腳連接到 GPIO 14。根據(jù)超聲波傳感器的數(shù)據(jù)表,觸發(fā)引腳需要低電平至少 2ms,然后變?yōu)楦唠娖?10ms,超聲波傳感器才能工作。根據(jù)我的測試,將初始低態(tài)時間設(shè)置更長可能有助于超聲波傳感器精確檢測更長的距離。在這個項目中,觸發(fā)引腳被命令保持低電平 3ms,然后保持高電平 10ms。最后,我使用 F28379D 發(fā)射臺的 ecap 外設(shè)來捕捉回波引腳接收信號所花費(fèi)的時間。回波距離是根據(jù)回波持續(xù)時間和 340 m/s 的速度計算得出的。下面的代碼片段顯示了觸發(fā)超聲波傳感器的方法,我們將超聲波傳感器的狀態(tài)存儲在參數(shù) trigger_state 中,當(dāng)觸發(fā)狀態(tài)為 0 時,我們將參數(shù)設(shè)置為 1,即低電平狀態(tài)持續(xù) 3ms。

void hc_sr04_trigger(void) { 
if (trigger_count < 3) {
if (trigger_state == 0) {
// last for 3ms
GpioDataRegs.GPACLEAR.bit.GPIO15 = 1;
trigger_state = 1;
}
trigger_count++;
} else if ( (trigger_count >= 3) && (trigger_count < 12) ) {
// last for 10ms
if (trigger_state == 1) {
GpioDataRegs.GPASET.bit.GPIO15 = 1;
trigger_state = 2;
}
trigger_count++;
} else {
if (trigger_state == 2) {
trigger_count = 0;
trigger_state = 0;
}
}
}

為了計算機(jī)器人汽車的 x 和 y 坐標(biāo),我應(yīng)用了 Yorihisa Yamamoto 在“NXTway-GS Model-Based Design - Control of self-balancing two-wheel robot built with LEGO Mindstorms NXT”中撰寫的論文中的方程式。可以使用以下鏈接找到該項目:

https://www.mathworks.com/matlabcentral/fileexchange/19147-nxtway-gs-self-balancing-two-wheeled-robot-controller-design

具體來說,用于計算 x 和 y 坐標(biāo)的方程是論文中的方程 3.1 和 3.2。

poYBAGN20AiAOxsKAABHlXeb-3Y550.jpg
等式 3.1 和 3,2
?

x 方向和 y 方向的速度通過使用車輪的半徑乘以車輪的角速度,然后乘以電機(jī)的角度變化來計算。在計算 x 和 y 的速度后,我們可以直接根據(jù)我們設(shè)置的時間步長對速度進(jìn)行積分以獲得 x 和 y 坐標(biāo)。在這個項目中,可以使用 teraterm 查看 x 和 y 坐標(biāo)。下面的代碼就是這個公式和計算的實現(xiàn)。

LeftWheel = readEncLeft();
RightWheel = -readEncRight();
VLeft = (LeftWheel - LeftWheeli)/0.004;
VRight = (RightWheel - RightWheeli)/0.004;
dtheta = (VLeft + VRight)*0.5;
thetaabs = (0.108/0.679)*(RightWheel - LeftWheel);
x_dot = (0.108*dtheta)*cos(thetaabs);
y_dot = (0.108*dtheta)*sin(thetaabs);
x_pos = x_posi + (0.004*((x_dot + x_doti)/2));
y_pos = y_posi + (0.004*((y_dot + y_doti)/2));

x_posi、y_posi、x_doti 和 y_doti 是過去狀態(tài)(上一個時間步)的參數(shù),我們使用這些參數(shù)進(jìn)行時間積分。

MPU 9250 寄存器中的陀螺儀讀數(shù)也可用于計算電機(jī)角度的變化。使用的公式是根據(jù)本項目中 0.004s 的時間步長對陀螺儀讀數(shù)進(jìn)行積分。

蜂鳴器連接到 F28379D 發(fā)射臺的 GPIO 16,應(yīng)用 EPWM 9A 控制蜂鳴器。當(dāng)需要蜂鳴器時,我們需要將 pinmux 設(shè)置為 5,對應(yīng) EPWM 9A。當(dāng)我們不需要使用蜂鳴器時,我們可以將 pinmux 設(shè)置為 0 以阻止它發(fā)出噪音。在這個項目中,蜂鳴器被用作通知障礙物的信號。每當(dāng)超聲波傳感器檢測到某物時,蜂鳴器就會發(fā)出聲音通知它。

對于 MPU 9250 寄存器,SPI(串行外設(shè)接口)用于發(fā)送和接收來自 MPU 9250 寄存器所需的位和數(shù)據(jù)。我們設(shè)置 SPI 以接收來自加速度計的數(shù)據(jù)和來自 MPU 9250 寄存器的陀螺儀讀數(shù)。MPU 9250 連接到 F28379D 啟動板的 GPIO 63、GPIO 64、GPIO 65 和 GPIO 66。

項目基本邏輯

本項目中機(jī)器人小車的邏輯是在cpu timer 0中傳輸MPU 9250相關(guān)寄存器,在cpu timer 0中觸發(fā)超聲波傳感器,在cpu timer 1中計算電機(jī)相關(guān)參數(shù)。我們使用 if 語句來決定是否轉(zhuǎn)向。如果超聲波傳感器返回的回波距離小于 30cm,則轉(zhuǎn)彎參數(shù)將增加到 1。汽車將開始向左轉(zhuǎn)彎。連接蜂鳴器的GPIO 16的pinmux將設(shè)置為通道5,即EPWM 9A,用于蜂鳴器發(fā)出聲音。當(dāng)超聲波傳感器沒有檢測到任何東西時,GPIO 16 的 pinmux 為 0。

結(jié)論

根據(jù)測試和觀察,機(jī)器人小車可以在超聲波傳感器的實施下正常工作。機(jī)器人檢測到障礙物后向左轉(zhuǎn),同時蜂鳴器發(fā)出提示音。teraterm 將輸出機(jī)器人汽車的方向和 x 和 y 坐標(biāo)。

?

電路原理圖和電路板由伊利諾伊大學(xué)厄巴納香檳分校的布洛克教授(Dan Block)設(shè)計。電子郵件:d-block@illinois.edu


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)