找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1066|回复: 7
收起左侧

STM32F103RCT6单片机按键控制智能车正反转的代码怎么做?

[复制链接]
ID:1072718 发表于 2023-5-18 22:57 来自手机 | 显示全部楼层 |阅读模式
有大佬知道这种核心板按键控制智能车正反转的代码怎么做吗
tb_image_share_1684421598433.jpg
回复

使用道具 举报

ID:517951 发表于 2023-5-20 11:53 | 显示全部楼层
这个板子在网上能买到的, 卖家店铺里面有例程.  自己增加一个按键, 一个电机驱动板, 按键控制一个GPIO脚高低电平给到电机驱动板来实现正反转.
回复

使用道具 举报

ID:820444 发表于 2023-5-21 23:47 | 显示全部楼层
用单片机直接控制电机正反转,需要四个IO口,控制四个继电器,把这四个分成两组对电机供电。两组不能同时供电,不然会短路。
自己做的话,很麻烦,很多接线,不好看,不实用。
买一个电机驱动板, 按键控制一个GPIO引脚,不会出现短路问题。
回复

使用道具 举报

ID:731755 发表于 2023-5-22 00:37 来自手机 | 显示全部楼层
我也在研究这个东西,目前我的板子已经手工焊接好,正在研究程序。不过你首先把材料备齐。电机,单片机核心板,电机驱动板,电源或者电池
回复

使用道具 举报

ID:170318 发表于 2023-5-22 08:46 | 显示全部楼层
wangshunda 发表于 2023-5-21 23:47
用单片机直接控制电机正反转,需要四个IO口,控制四个继电器,把这四个分成两组对电机供电。两组不能同时供 ...

楼主的电机可能不是有刷电机
回复

使用道具 举报

ID:170318 发表于 2023-5-22 08:49 | 显示全部楼层
13872888583 发表于 2023-5-22 00:37
我也在研究这个东西,目前我的板子已经手工焊接好,正在研究程序。不过你首先把材料备齐。电机,单片机核心 ...

我也在做无刷电机的驱动板,现在被卡在开环启动转闭环不能自动衔接上,显示“速度反馈错误”启动后达到设定速度就停转了
回复

使用道具 举报

ID:731755 发表于 2023-5-22 19:19 | 显示全部楼层
jhczy 发表于 2023-5-22 08:49
我也在做无刷电机的驱动板,现在被卡在开环启动转闭环不能自动衔接上,显示“速度反馈错误”启动后达到设 ...

你的速度快一点,我才开始,用的有刷电机,干扰的单片机无法控制,现在正在改电路
回复

使用道具 举报

ID:1073399 发表于 2023-5-22 22:47 | 显示全部楼层
#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来控制智能车前进的时间。当按键未被按下时,我们关闭了所有电机引脚,使智能车停止前进。
*/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表