[]()功能介紹放開(kāi)頭, 使用便捷無(wú)需愁。
這是全網(wǎng)最詳細(xì)、性價(jià)比最高的STM32實(shí)戰(zhàn)項(xiàng)目入門教程,通過(guò)合理的硬件設(shè)計(jì)和詳細(xì)的視頻筆記介紹,硬件使用STM32F103主控資料多方便學(xué)習(xí),通過(guò)3萬(wàn)字筆記、12多個(gè)小時(shí)視頻、20多章節(jié)代碼手把手教會(huì)你如何開(kāi)發(fā)和調(diào)試。讓你更快掌握嵌入式系統(tǒng)開(kāi)發(fā)。
V3.3.0-STM32智能小車
視頻:
https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click
V3:HAL庫(kù)開(kāi)發(fā)、功能:PID速度控制、PID循跡、PID跟隨、遙控、避障、PID角度控制、視覺(jué)控制、電磁循跡、RTOS等功能。
第六章-電機(jī)驅(qū)動(dòng)和PWM
6.1-認(rèn)識(shí)電機(jī)驅(qū)動(dòng)
項(xiàng)目使用電機(jī)驅(qū)動(dòng)芯片為A4950、下面是電機(jī)驅(qū)動(dòng)的相關(guān)介紹
我們按照這種使用方法
這我們使用一個(gè)圖介紹
6.2-使用電機(jī)驅(qū)動(dòng)(獨(dú)立工程)
分析和編寫代碼
綜合電機(jī)使用方法、C8T6單片機(jī)硬件資源、小車原理圖我們要進(jìn)行如下配置
PA11-TIM1_CH4 定時(shí)器PWM輸出-PWMA 前面已經(jīng)完成
PB13-GPIO輸出-AIN1
PA8-TIM1_CH1 定時(shí)器PWM輸出-PWMB 前面已經(jīng)完成
PB3-GPIO輸出-BIN1還有兩個(gè)管腳沒(méi)有初始化**
**
生成代碼
開(kāi)始添加控制電機(jī)正反轉(zhuǎn)與速度的代碼,進(jìn)行仿真和電機(jī)測(cè)試,示波器測(cè)量
添加AIN1、BIN1控制代碼
HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_RESET);//設(shè)置AIN1 PB13為 低電平
HAL_GPIO_WritePin(BIN1_GPIO_Port,BIN1_Pin,GPIO_PIN_SET); //設(shè)置BIN1 PB3為高電平
HAL_Delay(1000);
//兩次會(huì)使得電機(jī)反向。
HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_SET);//設(shè)置AIN1 PB13為 高電平
HAL_GPIO_WritePin(BIN1_GPIO_Port,BIN1_Pin,GPIO_PIN_RESET); //設(shè)置BIN1 PB3為低電平
仿真測(cè)試代碼
使用軟件仿真
檢測(cè)是否軟件仿真設(shè)置正確
開(kāi)啟仿真-添加PB13和PB3到邏輯分析儀
全速仿真運(yùn)行
實(shí)物測(cè)試代碼
如何讓電機(jī)90%電壓轉(zhuǎn)速 旋轉(zhuǎn)
燒錄代碼
6.3-編寫電機(jī)轉(zhuǎn)速開(kāi)環(huán)控制函數(shù)(另外復(fù)制工程)
新建motor文件
包含文件并添加編譯
為了方便移植和使用,我們GPIO電平控制寫成宏
#define AIN1_RESET HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_RESET)//設(shè)置AIN1 PB13為 低電平
#define AIN1_SET HAL_GPIO_WritePin(AIN1_GPIO_Port,AIN1_Pin,GPIO_PIN_SET)//設(shè)置AIN1 PB13為 高電平
?
#define BIN1_RESET HAL_GPIO_WritePin(BIN1_GPIO_Port,BIN1_Pin,GPIO_PIN_RESET) //設(shè)置BIN1 PB3為低電平
#define BIN1_SET HAL_GPIO_WritePin(BIN1_GPIO_Port,BIN1_Pin,GPIO_PIN_SET)//設(shè)置AIN1 PB13為 高電平
?
下面我們編寫小車電機(jī)方向和速度控制
/*******************
* @brief 設(shè)置兩個(gè)電機(jī)轉(zhuǎn)速和方向
* @param motor1:電機(jī)B設(shè)置參數(shù)、motor2:設(shè)置參數(shù)
* @param motor1: 輸入1~100 對(duì)應(yīng)控制B電機(jī)正方向速度在1%-100%、輸入-1~-100 對(duì)應(yīng)控制B電機(jī)反方向速度在1%-100%、motor2同理
* @return 無(wú)
*
*******************/
void Motor_Set (int motor1,int motor2)
{
//根據(jù)參數(shù)正負(fù) 設(shè)置選擇方向
if(motor1 < 0) BIN1_SET;
else BIN1_RESET;
if(motor2 < 0) AIN1_SET;
else AIN1_RESET;
//motor1 設(shè)置電機(jī)B的轉(zhuǎn)速
if(motor1 < 0)
{
if(motor1 < -99) motor1 = -99;//超過(guò)PWM幅值
//負(fù)的時(shí)候絕對(duì)值越小 PWM占空比越大
//現(xiàn)在的motor1 -1 -99
//給寄存器或者函數(shù) 99 1
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, (100+motor1));//修改定時(shí)器1 通道1 PA8 Pulse改變占空比
}
else{
if(motor1 > 99) motor1 = 99;
//現(xiàn)在是 0 1 99
//我們賦值 0 1 99
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, motor1);//修改定時(shí)器1 通道1 PA8 Pulse改變占空比
}
//motor2 設(shè)置電機(jī)A的轉(zhuǎn)速
if(motor2 < 0)
{
if(motor2 < -99) motor2 = -99;//超過(guò)PWM幅值
//負(fù)的時(shí)候絕對(duì)值越小 PWM占空比越大
//現(xiàn)在的motor2 -1 -99
//給寄存器或者函數(shù) 99 1
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_4, (100+motor2));//修改定時(shí)器1 通道4 PA11 Pulse改變占空比
}
else{
if(motor2 > 99) motor2 = 99;
//現(xiàn)在是 0 1 99
//我們賦值 0 1 99
__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_4, motor2);//修改定時(shí)器1 通道4 PA11 Pulse改變占空比
?
}
?
}
然后我們連接電機(jī)主函數(shù)進(jìn)行測(cè)試
HAL_Delay(500);
Motor_Set(0,0);
本章結(jié)束兄弟們
下章繼續(xù)-編碼器測(cè)速部分
審核編輯 黃宇
-
PWM
+關(guān)注
關(guān)注
116文章
5417瀏覽量
218327 -
STM32
+關(guān)注
關(guān)注
2290文章
11018瀏覽量
362775 -
電機(jī)驅(qū)動(dòng)
+關(guān)注
關(guān)注
60文章
1298瀏覽量
87593
發(fā)布評(píng)論請(qǐng)先 登錄
【ALIENTEK 戰(zhàn)艦STM32開(kāi)發(fā)板】STM32開(kāi)發(fā)指南--第六章 跑馬燈實(shí)驗(yàn)
求王慶利《單片機(jī)設(shè)計(jì)標(biāo)準(zhǔn)教程》第六章的一個(gè)函數(shù)?。?/a>
脈沖波形發(fā)生器與整形電路 第六章
三相電路(第六章)
PCB布線設(shè)計(jì)經(jīng)驗(yàn)談附原理圖(第六章)

評(píng)論