功能介紹放開頭, 使用便捷無需愁
這是全網最詳細、性價比最高的STM32實戰項目入門教程,通過合理的硬件設計和詳細的視頻筆記介紹,硬件使用STM32F103主控資料多方便學習,通過3萬字筆記、12多個小時視頻、20多章節代碼手把手教會你如何開發和調試。讓你更快掌握嵌入式系統開發。
V3.3.0-STM32智能小車
視頻: https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click
V3:HAL庫開發、功能:PID速度控制、PID循跡、PID跟隨、遙控、避障、PID角度控制、視覺控制、電磁循跡、RTOS等功能。
第10章-小車跑一跑
如何實現小車的前、后、左、右、停
控制電機速度就可以控制小車運動
如何控制電機速度?
改變小車速度PID的目標值,然后定時器里面的PID控制函數就會計算輸占空比然后控制小車。
代碼如下:
定時器里面有電機控制,我們這里還增加Motor_Set(PID_realize(&pidMotor1Speed,Motor1Speed),PID_realize(&pidMotor2Speed,Motor2Speed));
是為了提高實時性。
/*******************
* @brief 通過PID控制電機轉速
* @param Motor1Speed:電機1 目標速度、Motor2Speed:電機2 目標速度
* @return 無
*
*******************/
void motorPidSetSpeed(float Motor1SetSpeed,float Motor2SetSpeed)
{
//改變電機PID參數的目標速度
pidMotor1Speed.target_val = Motor1SetSpeed;
pidMotor2Speed.target_val = Motor2SetSpeed;
//根據PID計算 輸出作用于電機
Motor_Set(PID_realize(&pidMotor1Speed,Motor1Speed),PID_realize(&pidMotor2Speed,Motor2Speed));
}
很容易得到一下控制方式
// motorPidSetSpeed(1,2);//向右轉彎
// motorPidSetSpeed(2,1);//向左轉彎
// motorPidSetSpeed(1,1);//前進
// motorPidSetSpeed(-1,-1);//后退
// motorPidSetSpeed(0,0);//停止
向左原地轉彎、向原地轉彎
// motorPidSetSpeed(-1,1);//右原地旋轉
// motorPidSetSpeed(1,-1);//左原地旋轉
加速減速函數
//向前加速函數
void motorSpeedUp(void)
{
static float MotorSetSpeedUp=0.5;//靜態變量 函數結束 變量不會銷毀
if(MotorSetSpeedUp <= MAX_SPEED_UP) MotorSetSpeedUp +=0.5 ; //如果沒有超過最大值就增加0.5
motorPidSetSpeed(MotorSetSpeedUp,MotorSetSpeedUp);//設置到電機
}
//向前減速函數
void motorSpeedCut(void)
{
static float MotorSetSpeedCut=3;//靜態變量 函數結束 變量不會銷毀
if(MotorSetSpeedCut >=0.5) MotorSetSpeedCut-=0.5;//判斷是否速度太小
motorPidSetSpeed(MotorSetSpeedCut,MotorSetSpeedCut);//設置到電機
}
上面第10章我們學會如何控制小車的運動
后面我們講解如何具體控制速度等。
審核編輯 黃宇
-
Vcc
+關注
關注
2文章
305瀏覽量
35860 -
最小系統板
+關注
關注
0文章
12瀏覽量
7882 -
STM32F103C8T6
+關注
關注
107文章
160瀏覽量
83280 -
電機驅動電路
+關注
關注
1文章
17瀏覽量
7020
發布評論請先 登錄
相關推薦
評論