資料介紹
描述
對于這個項目,我開始使用 MPU-9250 中包含的磁力計來定位一輛小型 3 輪汽車,以便讓它沿著 12 英尺乘 12 英尺見方的設定路徑行駛,并使用 IR距離傳感器,以防止汽車撞墻。完成此任務所需的技能包括:
簡介和硬件連接
我解釋了汽車的設置和使項目工作的組件。
項目車使用德州儀器 F28379D Launchpad XL 來處理處理。還使用了 MPU-9250、直流電機和幾個IR 距離傳感器。下面顯示了它們如何連接的進一步說明。附在綠板上的蜂鳴器也在項目期間使用。
上面看到的綠線將來自 IR 距離傳感器的信號帶到 ADC。紅線和黃線允許與 TI Launchpad 進行通信。IR 傳感器使用 ADCD 中斷程序運行,設置為每 4 毫秒采樣一次。
綠線來自連接在綠板另一側的 1x3 插頭引腳。每個接頭上的中間引腳是電源,底部引腳是接地。電源和接地連接焊接在電路板的背面,如下所示。
短的黑線是紅外距離傳感器的地線,穿過電路板的紅線是紅外傳感器的電源,焊接在電路板邊緣 2x5 孔區域的三個大孔上方.
MPU-9250 使用 GPIO 引腳 63、64、65 和 66 連接到 Launchpad。GPIO 63 連接到 SPI 串行數據輸入(MPYU-9250 上的 SDA),GPIO 64 連接到 SPI 串行數據輸出( AD0),GPIO 65 連接到串行時鐘(SCL),GPIO 66 連接到片選(NCS)。MPU-9250 還可以使用 I2C 進行通信,其中 GPIO63/SDA 為 I2C 串行數據端口,GPIO64/AD0 為 I2C 從地址最低有效位,GPIO65/SCL 為 I2C 串行時鐘。就本項目而言,SPI 將是 MPU-9250 唯一感興趣的通信方法,但如果需要也可以使用 I2C。
電機從 QEP A 和 B 接頭連接到 Launchpad,其中 QEP A 對應于左側電機,QEP B 對應于右側。左側電機的 PWM 或占空比連接到 GPIO 3,右側電機連接到 GPIO 2。蜂鳴器連接到 GPIO16。
下圖顯示了磁力計的軸。為了了解磁力計的工作原理,我不得不在通過 SPI 與芯片通信的程序運行時用手小心地轉動整輛汽車。我將汽車在?? 3 個軸上分別旋轉至少 360 度,以查看不同的 X、Y 和 Z 值如何隨汽車的位置而變化。感謝 Evan Hall 創建的代碼,我在下面和這個項目的團隊部分承認了他,我能夠將磁力計的 X 和 Y 測量值轉換為 0 到 360 度之間的方位角。這部分代碼在第 727 到 738 行。
本項目磁力計與SPI通信,SPI的傳輸命令位于ADCD中斷函數中,設置為每4ms超時一次。因此,在 SPIB 中斷功能中,磁力計每 4ms 以及通過 SPI 采樣一次。
MPU-9250 磁力計的問題是,當靠近金屬或電氣設備時,會有很多噪音可以甩掉羅盤角的方位。即使是靜止不動,角度也有10度左右的急速波動。在地圖上應該是北方的地方和磁力計確定的北方之間似乎也有大約 20 度的偏移。為了解決這個問題,我為羅盤角度創建了一個 20 點的平均值。它顯著減少了角度的波動,但由于磁力計的靈敏度,干擾仍然存在。
平均濾波器的結果使汽車的定位更加準確,但由于干擾仍然存在誤差。過濾器的 0/360 度點也會導致問題,因為對接近 360 度以下和接近 0 度以上的角度進行平均也會導致平均角度被拋出。因此,我盡量避免在汽車旋轉過程中靠近這個點。
項目說明
我希望這輛車完成的目標是從某個 12x12 平方英尺的正方形開始,并開始面向東方。汽車將播放一首包含單個音符的歌曲,然后使用磁力計控制其方向向西旋轉,然后沿負 X 方向向最西面的墻壁行駛。從那里,使用面向汽車前部的電機編碼器或紅外傳感器,它會停下來然后轉向南方,并沿著墻壁沿負 Y 方向行駛,轉向避開它并試圖保持前進。電機編碼器跟蹤車輪的旋轉,以根據提供的初始條件識別汽車的位置。
到達廣場的左下角,它會在一個音階上演奏一個單音的第二首歌曲,然后轉向東方,沿著底墻,然后到達廣場的右下角,在那里它會播放第三首歌曲/音符,然后轉向廣場的中間。一旦它靠近,它會在前進和后退時自行轉動,以到達正方形中的點 (6,6),如果左下角是 (0,0)。比例控制將用于控制轉彎的速度,以在行駛狀態下到達每個方向并保持在目標上。
為了讓汽車執行所需的操作,我在 SPI 中斷函數中創建了一個狀態機。在計算羅盤角度并對其進行平均后,狀態機確定汽車正在行駛的路徑的哪一部分。在第一個狀態,用變量“state”標識,變量設置為 10,汽車將播放一個音符的第一首歌,表明它正在啟動,并旋轉到對應于向西行駛的角度朝向墻壁。一旦正確定向,汽車就會進入狀態 20 并向墻壁移動。
一旦它檢測到墻壁或電機編碼器確定它已經接近墻壁,它將進入狀態 30 并轉向南方。轉向南后,車子進入40狀態,向廣場的南墻方向行駛。朝向汽車右側的紅外傳感器將防止汽車撞到墻上。前 IR 傳感器將確定汽車是否足夠靠近南墻,或者一直在計算汽車在正方形中的位置的編碼器將確定是否已達到指定的 Y 坐標,狀態將變為 50。
在狀態 50 時,將播放另一個音符的第二首??歌曲,根據磁力計的測量結果,汽車將轉向東方。然后它將進入狀態 60 并沿著南墻行駛,使用右側的 IR 傳感器防止它再次撞到墻上。到達第三個拐角時,由前面的紅外傳感器達到足夠高的電壓或編碼器確定 X 坐標,汽車將進入狀態 70。在這里,它播放第三個音符/歌曲,并使用磁力計將自己指向廣場的中心。
狀態 80 是汽車向廣場中心行駛的地方,一旦接近,將左右轉向并向后移動,使汽車前部朝北并定位在坐標 (6,6) 處。到達這一點后,汽車進入狀態 90,播放第四首也是最后一首歌曲的最高音,表示程序結束。
項目最終結果
上面的視頻顯示了使用下面的代碼運行的項目。它能夠根據 MPU-9250 磁力計的讀數轉動,但由于它旋轉得如此之快,車輪打滑,編碼器無法準確判斷汽車轉動了多遠。因此,汽車跟蹤的 X 和 Y 坐標也不準確,這會干擾狀態機從旋轉狀態到行駛狀態的正確進程。在轉彎狀態下對轉彎速度的比例控制似乎確實提高了轉彎的準確性,但嘗試使用類似的方法使汽車在行駛狀態下保持在軌道上,使得汽車在狀態 70 之后無法運行。
下一步
嘗試使用 MPU-9250 磁力計作為控制汽車方向的一種手段,這表明它可能不是最好的方向控制形式,因為我進行了測試的機電一體化實驗室中金屬和電子設備的干擾量很大雖然我確實使用比例控制來控制轉動速度,但可以實施 PID 控制器的更多方面,以進一步提高每次轉動的精度,并防止在電機編碼器跟蹤全局坐標的方式中產生錯誤的打滑。狀態機在確定行駛狀態在哪里結束時也可能是幼稚的,并且改進如何確定部分路徑的終點也將提高汽車行駛的準確性。
我歡迎任何人嘗試改進這個項目的狀態機部分,如果你有代碼可以告訴我,我可以嘗試看看它是如何工作的!
致謝
我要感謝伊利諾伊大學厄巴納-香檳分校的 Dan Block 教授在整個學期中的所有幫助,盡管大流行持續存在困難,但他制作了這門 SE 423 - 機電一體化課程,這對每個人來說都是一次很棒的經歷。盡管我的最終項目沒有像我希望的那樣工作,但嘗試朝著我的項目目標努力并解決出現的問題仍然很有趣。他提供了用于該項目的大部分代碼,包括初始化和幾個函數。他為該項目開發了綠板,并提供了該項目中使用的許多傳感器和設備。
我還要感謝 Evan Hall 根據磁力計讀數計算和角度的代碼。他的代碼對于理解如何有效地使用磁力計非常有幫助。
- IIS2MDC 3D數字磁力計應用筆記
- LSM303AH 3D數字磁力計和3D數字加速度計應用筆記
- LIS2MDL 3D數字磁力計應用筆記
- ISM303DAC:高性能、低功耗、緊湊型3D加速度計和3D磁力計模塊
- MPU 9250型產品規格 2次下載
- QFN封裝的復合芯片MPU9250數據手冊 1次下載
- MPU9250資料包分享 39次下載
- QMC5883L磁力計介紹(硬件+軟件)(附STM32程序~~~)
- 電子產品MPU-9250規格書英文版下載 0次下載
- ADIS16400:帶磁力計的三軸慣性傳感器數據表
- ADIS16405:帶磁力計的三軸慣性傳感器數據表
- MPU9250的中文數據手冊免費下載 208次下載
- MPU9250陀螺儀QFN封裝的復合芯片中文說明書免費下載 66次下載
- MPU-9250-寄存器手冊 0次下載
- GY9250 MPU9250資料 182次下載
- mpu6500和mpu6000哪個好 3078次閱讀
- mpu6050和mpu6500哪個性能好 6359次閱讀
- TC3xx芯片的MPU功能詳解 1792次閱讀
- 基于雙壓電懸臂梁的交變梯度磁力計設計 490次閱讀
- 如何利用HMC5883L實現三軸磁力計的設計 5456次閱讀
- 九軸傳感器之加速度計是怎么回事 2786次閱讀
- digilent三軸數字羅盤介紹 2937次閱讀
- digilent9軸慣性測量單元及氣壓計簡介 1373次閱讀
- 微雪電子樹莓派傳感器擴展板 | Sense HAT (B)介紹 3339次閱讀
- 針對樹莓派設計的Sense HAT 8774次閱讀
- 教你i.MX RT1052的開源AutoQuad飛控 1.9w次閱讀
- 縮短設計周期的方案 快速的傳感器設計 快速的MCU設計 1638次閱讀
- 簡單講解汽車四輪定位儀中的傾角傳感器 7127次閱讀
- TDK與AKM共同開發高精度3軸TMR磁力計的關鍵數據、主要特點與優勢解析 8323次閱讀
- mpu6050和mpu3050有什么不同和相同(基礎介紹和區別分析) 3.6w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多