#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脚高低电平给到电机驱动板来实现正反转. |