熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
#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); //延時(shí)一段時(shí)間,使智能車(chē)前進(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時(shí)鐘 //按鍵引腳配置 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--); } /* 這個(gè)代碼實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的按鍵控制智能車(chē)前進(jìn)的功能。當(dāng)按鍵按下時(shí),電機(jī)A和電機(jī)B同時(shí)正轉(zhuǎn),使智能車(chē)前進(jìn);當(dāng)按鍵未按下時(shí),電機(jī)A和電機(jī)B停止,智能車(chē)停止前進(jìn)。 在代碼中,我們使用了兩個(gè)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í),我們?cè)O(shè)置了電機(jī)正轉(zhuǎn)的引腳,使智能車(chē)前進(jìn),同時(shí)使用了一個(gè)簡(jiǎn)單的延時(shí)函數(shù)Delay來(lái)控制智能車(chē)前進(jìn)的時(shí)間。當(dāng)按鍵未被按下時(shí),我們關(guān)閉了所有電機(jī)引腳,使智能車(chē)停止前進(jìn)。 */ |
jhczy 發(fā)表于 2023-5-22 08:49 你的速度快一點(diǎn),我才開(kāi)始,用的有刷電機(jī),干擾的單片機(jī)無(wú)法控制,現(xiàn)在正在改電路 |
13872888583 發(fā)表于 2023-5-22 00:37 我也在做無(wú)刷電機(jī)的驅(qū)動(dòng)板,現(xiàn)在被卡在開(kāi)環(huán)啟動(dòng)轉(zhuǎn)閉環(huán)不能自動(dòng)銜接上,顯示“速度反饋錯(cuò)誤”啟動(dòng)后達(dá)到設(shè)定速度就停轉(zhuǎn)了 ![]() ![]() |
wangshunda 發(fā)表于 2023-5-21 23:47 樓主的電機(jī)可能不是有刷電機(jī) ![]() |
我也在研究這個(gè)東西,目前我的板子已經(jīng)手工焊接好,正在研究程序。不過(guò)你首先把材料備齊。電機(jī),單片機(jī)核心板,電機(jī)驅(qū)動(dòng)板,電源或者電池 |
用單片機(jī)直接控制電機(jī)正反轉(zhuǎn),需要四個(gè)IO口,控制四個(gè)繼電器,把這四個(gè)分成兩組對(duì)電機(jī)供電。兩組不能同時(shí)供電,不然會(huì)短路。 自己做的話(huà),很麻煩,很多接線(xiàn),不好看,不實(shí)用。 買(mǎi)一個(gè)電機(jī)驅(qū)動(dòng)板, 按鍵控制一個(gè)GPIO引腳,不會(huì)出現(xiàn)短路問(wèn)題。 |
這個(gè)板子在網(wǎng)上能買(mǎi)到的, 賣(mài)家店鋪里面有例程. 自己增加一個(gè)按鍵, 一個(gè)電機(jī)驅(qū)動(dòng)板, 按鍵控制一個(gè)GPIO腳高低電平給到電機(jī)驅(qū)動(dòng)板來(lái)實(shí)現(xiàn)正反轉(zhuǎn). |
Powered by 單片機(jī)教程網(wǎng)