a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于STM32的避障小車

基于STM32的避障小車

作者:MarsZ 時間:2025-04-18 來源:EEPW 收藏


本文引用地址:http://www.j9360.com/article/202504/469573.htm

1   概述

基于的遙控避障循跡小車,超聲波模塊實現(xiàn)避障功能,總體來說還是比較簡單的,對初學者很友好。

調(diào)整舵機方向:通過的GPIO引腳向舵機發(fā)送控制信號,逐步調(diào)整其轉(zhuǎn)動角度,以改變小車頭部的朝向。可以使用簡單的算法(如逐步掃描或根據(jù)超聲波傳感器數(shù)據(jù)直接調(diào)整)來確定舵機的最佳轉(zhuǎn)向角度。

檢測新方向上的障礙物:在舵機調(diào)整方向后,再次使用超聲波傳感器測量新方向上的障礙物距離。

選擇行駛路徑:根據(jù)新方向上的障礙物距離,決定小車是繼續(xù)在該方向上行駛、返回原方向、還是嘗試其他方向。

控制驅(qū)動電機:根據(jù)避障決策,控制小車的驅(qū)動電機以實現(xiàn)前進、后退或原地轉(zhuǎn)向等操作。

電機驅(qū)動模塊

1744985368266949.png

將GPIOA口的二號和三號引腳設置為復用推挽輸出,使其不僅具有高驅(qū)動能力還能使用引腳復用的功能,作為PWM輸出口。然后設置4、5、6、7分別為電機的方向控制引腳。

1744985426941920.png

開啟定時器二的時鐘(不開啟的話也是默認開啟的),配置實基單元為不分頻、向上計數(shù)、計數(shù)周期為100、預分頻為36分頻(計數(shù)周期100 是為了計算占空比的時候好計算,36分頻是為了配合計數(shù)周期讓輸出頻率達到20000Hz,從而解決電機受阻時發(fā)出噪聲)、重復計數(shù)器設置為0(只有高級定時器才有)。

輸出比較配置:設置默認配置、比較模式為PWM1、極性選擇無、使能、CCR 值為0。

使能定時器二。

1744985493835644.png

1744985525995483.png

通過控制方向控制引腳高低電平變化來實現(xiàn)控制正轉(zhuǎn)還是反轉(zhuǎn)。

當方向控制引腳被設置為高電平時,驅(qū)動電路內(nèi)部的邏輯電路會相應地調(diào)整電流的流向,使得電機內(nèi)部磁場的方向發(fā)生變化,從而驅(qū)動電機開始正轉(zhuǎn)。這一過程中,電能的轉(zhuǎn)換與傳輸效率至關(guān)重要,它決定了電機能否迅速、平穩(wěn)地響應控制指令。

相反地,當方向控制引腳被設置為低電平時,驅(qū)動電路會接收到另一個電平信號,并據(jù)此調(diào)整電流路徑,改變電機內(nèi)部磁場的方向,使電機開始反轉(zhuǎn)。這一切換過程迅速且精確,是實現(xiàn)電機雙向控制的關(guān)鍵。

image.png

直線行駛:當需要小車直線行駛時,同時給兩側(cè)電機發(fā)送相同的控制信號,使它們以相同的速度和方向旋轉(zhuǎn)。這樣,小車兩側(cè)的車輪就會以相同的速度和方向前進,從而保持直線行駛。

轉(zhuǎn)向行駛:

左轉(zhuǎn):為了實現(xiàn)左轉(zhuǎn),可以增加左側(cè)電機的速度或減小右側(cè)電機的速度(或使右側(cè)電機反轉(zhuǎn),但通常不推薦這種方式,因為它可能導致小車打滑或不穩(wěn)定)。這樣,左側(cè)車輪會比右側(cè)車輪轉(zhuǎn)得更快,從而使小車向左偏轉(zhuǎn)。

右轉(zhuǎn):與左轉(zhuǎn)相反,為了右轉(zhuǎn),可以增加右側(cè)電機的速度或減小左側(cè)電機的速度(或使左側(cè)電機反轉(zhuǎn))。

這樣,右側(cè)車輪會比左側(cè)車輪轉(zhuǎn)得更快,從而使小車向右偏轉(zhuǎn)。

超聲波測距:

1744985618447881.png

1745155665394002.png

的某個GPIO 引腳配置為推挽輸出模式,用于向HC-SR04發(fā)送觸發(fā)信號(Trig)。

將另一個GPIO 引腳配置為浮空輸入模式,用于接收HC-SR04的回波信號(Echo)。

2.發(fā)送超聲波

通過向Trig 引腳發(fā)送一個至少10 微秒的高電平信號來觸發(fā)HC-SR04發(fā)送超聲波。

發(fā)送完觸發(fā)信號后,將Trig引腳拉低,等待Echo引腳接收回波信號。

3.接收回波并計算距離

初始化一個定時器或計數(shù)器,用于測量Echo引腳從低電平變?yōu)楦唠娖剑ǔ暡òl(fā)出)到再次變?yōu)榈碗娖剑ǔ暡ǚ祷夭⒈唤邮眨┑臅r間差(T)。

定時器或計數(shù)器應配置為足夠高的頻率,以便精確測量微秒級的時間差。

使用公式距離=(T*聲速)/2來計算障礙物距離,其中聲速約為340m/s(或轉(zhuǎn)換為cm單位:距離(cm)=(T*100*聲速(cm/s)/2)。

超聲波避障:

1744986162238957.png

void obstacle_avoidance(void){

uint16_t Dis1 = 0;

uint16_t Dis2 = 0;

uint16_t Dis3 = 0;

uint16_t Dis4 = 0;

uint16_t Dis5 = 0;

Speed1 = Motor_Speed();

Car_ForWard(Speed1);

Dis1 = Test_Distance();

Serial_SnedNumber(Dis1,3);

OLED_ShowNum(4,11,Dis1/100%10,1);

OLED_ShowNum(4,12,Dis1/10%10,1);

OLED_ShowNum(4,13,Dis1%10,1);

if(Dis1 < 15){

Car_Stop();

Servo_SetPwm(20);

Servo_SetPwm4(30);

Delay_ms (1000);

Dis2 = Test_Distance();

Serial_SnedNumber(Dis2,3);

if(Dis2 < 15){

Car_Stop();

Servo_SetPwm(160);

Servo_SetPwm4(30);

Delay_ms (1000);

Dis3 = Test_Distance();

Serial_SnedNumber(Dis3,3);

if(Dis3 < 15){

Car_Stop();

Servo_SetPwm(90);

Servo_SetPwm4(0);

Car_Retret(Speed1);

Servo_SetPwm(160);

Servo_SetPwm4(90);

Delay_ms (1000);

Dis4 = Test_Distance();

Serial_SnedNumber(Dis4,3);

if(Dis4 > 15){

Servo_SetPwm(90);

Servo_SetPwm4(0);

Car_Left(Speed1);

Delay_ms (1000);

}else{

Servo_SetPwm(20);

Servo_SetPwm4(30);

Delay_ms (1000);

Dis5 = Test_Distance();

Serial_SnedNumber(Dis5,3);

if(Dis5 > 15){

Servo_SetPwm(90);

Servo_SetPwm4(0);

Car_Right(Speed1);

Delay_ms (1000);

}else{

Servo_SetPwm(90);

Servo_SetPwm4(0);

Car_Right(Speed1);

Delay_ms (4000);

}

}

}else{

Servo_SetPwm(90);

Servo_SetPwm4(0);

Delay_ms (1000);

Car_Left(Speed1);

Delay_ms (1000);

Car_ForWard(Speed1);

}

}else{

Servo_SetPwm(90);

Servo_SetPwm4(0);

Delay_ms (1000);

Car_Right(Speed1);

Delay_ms (1000);

Car_ForWard(Speed1);

}

}else{

Car_ForWard(Speed1);

}

}

調(diào)整舵機方向:通過STM32的GPIO引腳向舵機發(fā)送控制信號,逐步調(diào)整其轉(zhuǎn)動角度,以改變小車頭部的朝向。可以使用簡單的算法(如逐步掃描或根據(jù)超聲波傳感器數(shù)據(jù)直接調(diào)整)來確定舵機的最佳轉(zhuǎn)向角度。

檢測新方向上的障礙物:在舵機調(diào)整方向后,再次使用超聲波傳感器測量新方向上的障礙物距離。

選擇行駛路徑:根據(jù)新方向上的障礙物距離,決定小車是繼續(xù)在該方向上行駛、返回原方向、還是嘗試其他方向。

控制驅(qū)動電機:根據(jù)避障決策,控制小車的驅(qū)動電機以實現(xiàn)前進、后退或原地轉(zhuǎn)向等操作。

(本文來源于《EEPW》20504)



關(guān)鍵詞: 202504 STM32 避障小車

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉