![]() |
#include "stm32f10x.h" #define MOTOR_A1_PIN GPIO_Pin_2 //電機A1引腳 #define MOTOR_A2_PIN GPIO_Pin_3 //電機A2引腳 #define MOTOR_B1_PIN GPIO_Pin_4 //電機B1引腳 #define MOTOR_B2_PIN GPIO_Pin_5 //電機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); //電機A正轉 GPIO_ResetBits(GPIOB, MOTOR_A2_PIN); GPIO_SetBits(GPIOB, MOTOR_B1_PIN); //電機B正轉 GPIO_ResetBits(GPIOB, MOTOR_B2_PIN); Delay(0xFFFFF); //延時一段時間,使智能車前進 } else //按鍵未按下 { GPIO_ResetBits(GPIOB, MOTOR_A1_PIN); //電機A停止 GPIO_ResetBits(GPIOB, MOTOR_A2_PIN); GPIO_ResetBits(GPIOB, MOTOR_B1_PIN); //電機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); //電機引腳配置 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--); } /* 這個代碼實現了一個簡單的按鍵控制智能車前進的功能。當按鍵按下時,電機A和電機B同時正轉,使智能車前進;當按鍵未按下時,電機A和電機B停止,智能車停止前進。 在代碼中,我們使用了兩個GPIO口控制電機的正反轉,其中MOTOR_A1_PIN和MOTOR_B1_PIN控制電機正轉,MOTOR_A2_PIN和MOTOR_B2_PIN控制電機反轉。在按鍵引腳(KEY_PIN)被按下時,我們設置了電機正轉的引腳,使智能車前進,同時使用了一個簡單的延時函數Delay來控制智能車前進的時間。當按鍵未被按下時,我們關閉了所有電機引腳,使智能車停止前進。 */ |
jhczy 發表于 2023-5-22 08:49 你的速度快一點,我才開始,用的有刷電機,干擾的單片機無法控制,現在正在改電路 |
13872888583 發表于 2023-5-22 00:37 我也在做無刷電機的驅動板,現在被卡在開環啟動轉閉環不能自動銜接上,顯示“速度反饋錯誤”啟動后達到設定速度就停轉了 ![]() ![]() |
wangshunda 發表于 2023-5-21 23:47 樓主的電機可能不是有刷電機 ![]() |
我也在研究這個東西,目前我的板子已經手工焊接好,正在研究程序。不過你首先把材料備齊。電機,單片機核心板,電機驅動板,電源或者電池 |
用單片機直接控制電機正反轉,需要四個IO口,控制四個繼電器,把這四個分成兩組對電機供電。兩組不能同時供電,不然會短路。 自己做的話,很麻煩,很多接線,不好看,不實用。 買一個電機驅動板, 按鍵控制一個GPIO引腳,不會出現短路問題。 |
這個板子在網上能買到的, 賣家店鋪里面有例程. 自己增加一個按鍵, 一個電機驅動板, 按鍵控制一個GPIO腳高低電平給到電機驅動板來實現正反轉. |