|
|
#include "stm32f10x.h" #define MOTOR_A1_PIN GPIO_Pin_2 //電機(jī)A1引腳 #define MOTOR_A2_PIN GPIO_Pin_3 //電機(jī)A2引腳 #define MOTOR_B1_PIN GPIO_Pin_4 //電機(jī)B1引腳 #define MOTOR_B2_PIN GPIO_Pin_5 //電機(jī)B2引腳 #define KEY_PIN GPIO_Pin_0 //按鍵引腳 void GPIO_Configuration(void); void Delay(__IO uint32_t nCount); int main(void) { GPIO_Configuration(); while(1) { if(GPIO_ReadInputDataBit(GPIOA,KEY_PIN) == 0) //按鍵按下 { GPIO_SetBits(GPIOB, MOTOR_A1_PIN); //電機(jī)A正轉(zhuǎn) GPIO_ResetBits(GPIOB, MOTOR_A2_PIN); GPIO_SetBits(GPIOB, MOTOR_B1_PIN); //電機(jī)B正轉(zhuǎn) GPIO_ResetBits(GPIOB, MOTOR_B2_PIN); Delay(0xFFFFF); //延時一段時間,使智能車前進(jìn) } else //按鍵未按下 { GPIO_ResetBits(GPIOB, MOTOR_A1_PIN); //電機(jī)A停止 GPIO_ResetBits(GPIOB, MOTOR_A2_PIN); GPIO_ResetBits(GPIOB, MOTOR_B1_PIN); //電機(jī)B停止 GPIO_ResetBits(GPIOB, MOTOR_B2_PIN); } } } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOA和GPIOB時鐘 //按鍵引腳配置 GPIO_InitStructure.GPIO_Pin = KEY_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉輸入 GPIO_Init(GPIOA, &GPIO_InitStructure); //電機(jī)引腳配置 GPIO_InitStructure.GPIO_Pin = MOTOR_A1_PIN | MOTOR_A2_PIN | MOTOR_B1_PIN | MOTOR_B2_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); } void Delay(__IO uint32_t nCount) { for(; nCount != 0; nCount--); } /* 這個代碼實現(xiàn)了一個簡單的按鍵控制智能車前進(jìn)的功能。當(dāng)按鍵按下時,電機(jī)A和電機(jī)B同時正轉(zhuǎn),使智能車前進(jìn);當(dāng)按鍵未按下時,電機(jī)A和電機(jī)B停止,智能車停止前進(jìn)。 在代碼中,我們使用了兩個GPIO口控制電機(jī)的正反轉(zhuǎn),其中MOTOR_A1_PIN和MOTOR_B1_PIN控制電機(jī)正轉(zhuǎn),MOTOR_A2_PIN和MOTOR_B2_PIN控制電機(jī)反轉(zhuǎn)。在按鍵引腳(KEY_PIN)被按下時,我們設(shè)置了電機(jī)正轉(zhuǎn)的引腳,使智能車前進(jìn),同時使用了一個簡單的延時函數(shù)Delay來控制智能車前進(jìn)的時間。當(dāng)按鍵未被按下時,我們關(guān)閉了所有電機(jī)引腳,使智能車停止前進(jìn)。 */ |
jhczy 發(fā)表于 2023-5-22 08:49 你的速度快一點,我才開始,用的有刷電機(jī),干擾的單片機(jī)無法控制,現(xiàn)在正在改電路 |
13872888583 發(fā)表于 2023-5-22 00:37 我也在做無刷電機(jī)的驅(qū)動板,現(xiàn)在被卡在開環(huán)啟動轉(zhuǎn)閉環(huán)不能自動銜接上,顯示“速度反饋錯誤”啟動后達(dá)到設(shè)定速度就停轉(zhuǎn)了 ![]() ![]() |
wangshunda 發(fā)表于 2023-5-21 23:47 樓主的電機(jī)可能不是有刷電機(jī) ![]() |
| 我也在研究這個東西,目前我的板子已經(jīng)手工焊接好,正在研究程序。不過你首先把材料備齊。電機(jī),單片機(jī)核心板,電機(jī)驅(qū)動板,電源或者電池 |
|
用單片機(jī)直接控制電機(jī)正反轉(zhuǎn),需要四個IO口,控制四個繼電器,把這四個分成兩組對電機(jī)供電。兩組不能同時供電,不然會短路。 自己做的話,很麻煩,很多接線,不好看,不實用。 買一個電機(jī)驅(qū)動板, 按鍵控制一個GPIO引腳,不會出現(xiàn)短路問題。 |
| 這個板子在網(wǎng)上能買到的, 賣家店鋪里面有例程. 自己增加一個按鍵, 一個電機(jī)驅(qū)動板, 按鍵控制一個GPIO腳高低電平給到電機(jī)驅(qū)動板來實現(xiàn)正反轉(zhuǎn). |
Powered by 單片機(jī)教程網(wǎng)