一、電機(jī)正轉(zhuǎn)
電機(jī)驅(qū)動芯片RZ7899
RZ7899是一種高性能電機(jī)驅(qū)動芯片,廣泛應(yīng)用于各種電機(jī)控制場合,特別是在步進(jìn)電機(jī)和直流電機(jī)的驅(qū)動中。以下是該芯片的一些關(guān)鍵特性和應(yīng)用:
主要特性:
高驅(qū)動能力:RZ7899能夠驅(qū)動高電流的電機(jī),適合需要大功率輸出的應(yīng)用。
雙通道設(shè)計:具備雙通道輸出,能夠同時驅(qū)動兩個電機(jī),提升設(shè)計靈活性。
PWM控制:支持脈寬調(diào)制(PWM)控制,使得電機(jī)的運行更加平滑和高效。
過流保護(hù):內(nèi)置過流保護(hù)功能,確保芯片和電機(jī)在異常情況下的安全運行。
熱保護(hù)功能:能夠監(jiān)測溫度并在過熱時自動停止工作,防止損壞。
低靜態(tài)功耗:在靜態(tài)模式下功耗較低,適合需要長時間待機(jī)的應(yīng)用場合。
多種控制模式:支持多種控制模式,包括全橋、半橋等,滿足不同電機(jī)控制需求。
該模塊在開發(fā)板上位置如下:

2.原理圖

在開發(fā)板上左右兩個電機(jī)分別接到了兩塊RZ7899上,左電機(jī)使用CW32的PB3和PB4控制,右電機(jī)使用CW32的PB12和PB5控制。
3.查看資料
翻閱手冊我們可以發(fā)現(xiàn),其實驅(qū)動電機(jī)只需要輸入端接到MCU的兩個引腳,輸出端分別接到電機(jī)的兩個引腳,即可通過改變輸入端電平實現(xiàn)正反轉(zhuǎn)。
注意:輸出端5腳和6腳,7腳和8腳為一組

4.代碼編寫
根據(jù)上述從手冊中查到的信息,我們知道了驅(qū)動方法之后就可以開始驅(qū)動代碼的編寫了。在工程中新建一個電機(jī)的.c和.h文件,名字自己確定,然后在.c中編寫如下代碼:
void Motor_Init(void)
{
__RCC_GPIOB_CLK_ENABLE();//開啟GPIOB時鐘
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.IT=GPIO_IT_NONE;
GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;//配置為推挽輸出
GPIO_InitStruct.Pins=GPIO_PIN_3 | GPIO_PIN_4;//選擇GPIO口
GPIO_InitStruct.Speed=GPIO_SPEED_HIGH;
GPIO_Init(CW_GPIOB, &GPIO_InitStruct);
}
隨后在main函數(shù)中編寫如下代碼
int main(void)
{
OLED_Init();//初始化
Motor_Init();//初始化電機(jī)
while(1)
{
PB03_SETHIGH();//PB3置高電平
PB04_SETLOW();//PB4置低電平
}
}
我們給PB3置為高電平,PB4置低電平,滿足手冊驅(qū)動真值表中驅(qū)動電機(jī)要求,即可實現(xiàn)正轉(zhuǎn)。
5.運行現(xiàn)象
將本次項目代碼燒錄進(jìn)開發(fā)板之后,可以觀察到左電機(jī)開始正轉(zhuǎn)。

二、電機(jī)正反轉(zhuǎn)控制
根據(jù)上面的實驗,我們已經(jīng)完成了單個電機(jī)的正轉(zhuǎn),那么憑各位工程師的聰明才智應(yīng)該很快就能想到如何控制兩個電機(jī)同時正轉(zhuǎn)以及反轉(zhuǎn)了。復(fù)制上一次工程,我們稍加修改即可。
1.代碼如下:
void Motor_Init(void)
{
__RCC_GPIOB_CLK_ENABLE();//開啟GPIOB時鐘
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.IT=GPIO_IT_NONE;
GPIO_InitStruct.Mode=GPIO_MODE_OUTPUT_PP;//配置為推挽輸出
GPIO_InitStruct.Pins=GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_12 | GPIO_PIN_5;//選擇GPIO口
GPIO_InitStruct.Speed=GPIO_SPEED_HIGH;
GPIO_Init(CW_GPIOB, &GPIO_InitStruct);
Right_Motor_stop();//
Left_Motor_stop();//
}
將右邊電機(jī)的控制GPIO也初始化,然后將電機(jī)運動稍微封裝一下
void Left_Motor_foreward(void)
{
PB03_SETHIGH();//PB3置高電平
PB04_SETLOW();//PB4置低電平
}
void Left_Motor_reversal(void)
{
PB04_SETHIGH();//PB4置高電平
PB03_SETLOW();//PB3置低電平
}
void Left_Motor_stop(void)
{
PB04_SETLOW();//PB4置低電平
PB03_SETLOW();//PB3置低電平
}
void Right_Motor_foreward(void)
{
PB05_SETLOW();//PB12置低電平
PB12_SETHIGH();//PB5置高電平
}
void Right_Motor_reversal(void)
{
PB12_SETLOW();//PB12置低電平
PB05_SETHIGH();//PB5置高電平
}
void Right_Motor_stop(void)
{
PB12_SETLOW();//PB12置低電平
PB05_SETLOW();//PB5置低電平
}
這樣就可以靈活地驅(qū)動電機(jī)正反轉(zhuǎn)了,然后在主函數(shù)中加入以下代碼
uint8_t keynum,Left_state,Right_state;
int main(void)
{
OLED_Init();//初始化
LED_Init();//LED初始化
Key_Init();//按鍵初始化
Motor_Init();//初始化電機(jī)
while(1)
{
keynum=Key();//獲取鍵碼,
if(keynum==1){Left_state++;Left_state%=4;}//按鍵1按下一次,變量+1,加到4歸零
if(keynum==2){Right_state++;Right_state%=4;}
if(Left_state==0 || Left_state==2)//條件判斷變量為1或者2停下
{
Left_Motor_stop();//左電機(jī)停
}
else if(Left_state==1)
{
Left_Motor_foreward();//左電機(jī)正轉(zhuǎn)
}
else if(Left_state==3)
{
Left_Motor_reversal();//左電機(jī)反轉(zhuǎn)
PC13_SETHIGH();
}
if(Right_state==0 || Right_state==2)
{
Right_Motor_stop();//右電機(jī)停
}
else if(Right_state==1)
{
Right_Motor_foreward();//右電機(jī)正轉(zhuǎn)
}
else if(Right_state==3)
{
Right_Motor_reversal();//右電機(jī)正轉(zhuǎn)
}
if((Right_state==0 || Right_state==2 ) && (Left_state==0 || Left_state==2 ))
{
PC13_SETLOW();//LED點亮
}
else{
PC13_SETHIGH(); //LED熄滅
}
OLED_ShowNum(1,1,Left_state,2);//屏幕顯示變量
OLED_ShowNum(2,1,Right_state,2);
}
}
2.運行現(xiàn)象
將本次項目代碼燒錄進(jìn)開發(fā)板之后,我們可以觀察到以下現(xiàn)象:
上電之后電機(jī)停止
OLED屏幕第一行顯示00,第二行也顯示00,記錄按鍵按下次數(shù),到四歸零
LED點亮
按下按鍵一,左電機(jī)正轉(zhuǎn),再按下停止,再按下反轉(zhuǎn),再按下停止
按下按鍵二,右電機(jī)正轉(zhuǎn),再按下停止,再按下反轉(zhuǎn),再按下停止
電機(jī)停止時LED點亮,反之則熄滅

-
智能小車
+關(guān)注
關(guān)注
87文章
565瀏覽量
83495 -
正反轉(zhuǎn)控制
+關(guān)注
關(guān)注
3文章
34瀏覽量
11400 -
CW32
+關(guān)注
關(guān)注
1文章
323瀏覽量
1924
發(fā)布評論請先 登錄
CW32L012/F030靈眸X1智能小車——板載WS2812驅(qū)動示例
CW32L012/F030靈眸X1智能小車——超聲波模塊配置
CW32L012/F030靈眸X1智能小車——使用藍(lán)牙模塊通訊
堅持繼續(xù)布局32位MCU,進(jìn)一步完善產(chǎn)品陣容,96Mhz主頻CW32L012新品發(fā)布!
**CW32L012****開發(fā)評估板的第一個程序**
CW32L012小型機(jī)器人控制評估板活動 四足機(jī)器人+智能小車 開箱評測
pwm控制電機(jī)正反轉(zhuǎn),PWM直流電機(jī)調(diào)速程序
電機(jī)正反轉(zhuǎn) 如何確定電機(jī)正反轉(zhuǎn)
【STM32小案例01】用STM32F103ZET6使用L298N電機(jī)驅(qū)動模塊 控制電機(jī)(電動推桿)正反轉(zhuǎn)
簡單介紹plc如何控制電機(jī)正反轉(zhuǎn)
CW32L012小機(jī)器人的電機(jī)控制
CW32L012與STM32F103的三角運算性能對比
CW32L012與STM32G431的CORDIC三角函數(shù)運算性能對比
CW32L012/F030靈眸X1智能小車--電機(jī)調(diào)速控制
CW32L012/F030靈眸X1智能小車--電機(jī)正反轉(zhuǎn)控制
評論