【做一个简易的STM32蓝牙麦克拉姆轮小车】

在此之前最好是学过一些STM32单片机知识。

本文内容针对于初学者,请大佬勿喷勿笑。

修改日志:

2022/8/28

修改文章结构,原计划的多篇文章介绍,改为一整篇介绍。
填充了一些内容。

本文目录

  • 前言
  • 材料准备
    • 一、硬件
    • 二、软件
  • 前期知识储备与试验
    • 一、用STM32让电机转起来(L298N或TB6612)
      • (一)、两种常用的电机驱动的简单了解
        • 1. L298N
        • 2.TB6612
      • (二)、驱动电机代码
        • 1.说明
        • 2.代码部分
        • 3.以上代码对应的接线
    • 二、手机通过蓝牙与小车通信
      • (一)、配置蓝牙模块
      • (二)、手机通过蓝牙与单片机通信
    • 三、麦科勒姆轮的运动分析
  • 开始上手
  • 完成 >v<
  • 总结


前言

制作一个小车。对于有的同学来说是一件轻轻松松的事情,但有的同学却一脸懵逼,不知道如何下手,这篇教程将会教会你如何制作一辆手机遥控的麦科勒姆轮小车。
由于麦科勒姆轮轮胎结构的特殊性,对于已经完整制作过普通小车的同学来说,制作一辆麦科勒姆轮小车的关键点就在对其的运动分析。

制作一个小车对于有的同学来说那简直是so easy!但是,我并不觉得它就是那种只动动手指就可以完成的事情,想要从无到有的完成一个完整的项目,除了需要具备一定的专业知识外,还需要知道如何将他们融会贯通,考虑周全又恰到好处。比如,有的同学画车板由于没有考虑一些细节导致模型改了一次又一次,又例如有的同学由于电路设计的不合理导致短路烧芯片的,等等一些都是需要我们去注意的。

材料准备

一、硬件

1.stm32c8t6单片机。片上资源完全够用
2.HC_05或者HC_06。建议05吧,感觉好配置一些,反正我配置06是奔溃了的>_<。
3.车板,电机,轮胎。去tb买吧,不到一百块钱,有的都是配好的配件。当然有条件的可以激光切割或者3D打印什么的>o<。
4.电机驱动。我用的是四路的L298N驱动模块,虽然有一点不小巧,但是功能多,是真的香。
5.电源。我用的是航模电池。
6.下载器。我用的是st_link。
7.杜邦线若干

二、软件

1.keil软件。这个应该是必备。

下面链接是一些可能用到的软件,有需要自取,代码可能后续添加。
链接:https://pan.baidu.com/s/1rdvt8SEETCotwg3Ba0DWEQ
提取码:a8jw



前期知识储备与试验

一、用STM32让电机转起来(L298N或TB6612)

本节学习驱动模块的使用方法,并且让小电机转动起来。

这里介绍两种常用的电机驱动模块,L298N和TB6612。下面会有对着两种驱动模块的简单介绍,另外也附上相关资料的链接,如果看完我的不明白可以点进去链接查看详情。


提示:这里介绍两个我常用的电机驱动(L298N和TB6612),用这两个常用的电机驱动来让小电机转起来。

(一)、两种常用的电机驱动的简单了解

1. L298N

L298N驱动的说明大概如下,可以对应自己的驱动看看。

【做一个简易的STM32蓝牙麦克拉姆轮小车】_第1张图片
【做一个简易的STM32蓝牙麦克拉姆轮小车】_第2张图片
【做一个简易的STM32蓝牙麦克拉姆轮小车】_第3张图片

IN1,IN2,IN3,IN4依次分别对应OUT1,OUT2,OUT3,OUT4
ENA对应IN1和IN2的使能。
ENB对应IN3和IN4的使能。

用一个电机接线说明: OUT1,OUT2接直流电机电机两根线,IN1,IN2接单片机的两个IO口,驱动供电方面看自己的电源电压而定。小于5V接5V和GND,大于5小于12V接12V和GND。

看不太明白进去链接看看
参考资料:
链接: L298N、电机、单片机的线路连接.
链接: L298N电机驱动模块详解
链接: stm32单片机驱动L298N模块

2.TB6612

这个模块还比较简单,使用也和L298N类似,网上资料挺多的,这里不介绍了,下面附上一个讲的还不错的文章链接。
链接: TB6612使用说明,使用方法,引脚图,实物图

【做一个简易的STM32蓝牙麦克拉姆轮小车】_第4张图片

总的来说两个驱动模块使用方式大同小异,会一个的使用其他基本触类旁通了。

(二)、驱动电机代码

1.说明

单片机我用的是stm32f103c8t6,用其他型号单片机同样适用。
实现逻辑为,使能两个IO口,使其分别输出高低电平,来使驱动输出高低电平,从而使电机转动。给驱动的供电电压大小决定了电机转速的快慢。但是不能超过其供电最大值,防止把自己中伤。

2.代码部分
#include "stm32f10x.h"                  // Device header

void Motor_Init(void)// 初始化两个IO口PB12,PB13
{
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
  GPIO_Init(GPIOB, &GPIO_InitStructure);		

  GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13);//保证两个IO口开始时为低电平
}
int main()
{
	Motor_Init();//初始化IO口
	while(1)
	{
		GPIO_ResetBits(GPIOB,GPIO_Pin_12);//将PB12置低电平
		GPIO_SetBits(GPIOB,GPIO_Pin_13);//将PB13置高电平
	}
}
3.以上代码对应的接线

将PB12,PB13分别接在IN1,IN2(或AIN1,AIN2)。
如果正常我们将会看见电机转动。

二、手机通过蓝牙与小车通信

(一)、配置蓝牙模块

拿出你的hc05,按照如图所示连接线路,注意要接5V要不然电压不够,用不了。

【做一个简易的STM32蓝牙麦克拉姆轮小车】_第5张图片

然后用at指令配置蓝牙模块。链接: 蓝牙模块HC05

配置完成后,看看手机发送字符蓝牙能不能接受到并且传到电脑上。

(二)、手机通过蓝牙与单片机通信

待填充

三、麦科勒姆轮的运动分析

如图所示的车头方向。

前进,四个轮胎均向前转,四个轮胎单独的运动分析如图,可见车轮在横向的运动全部相互抵消,即横向运动为0。而每个轮胎在纵向的运动均向前,故车整体向前。

后退,同理。

向左平移,只用让B和C轮胎向相反的方向转动,然后使车整体纵向的运动抵消,和运动向左即可。

向右平移,同理。

左右旋转,则应用差速法来旋转。

这里可能解释的不是很好,另外更加具体形象的介绍可以去B站看看,有那种讲解的视频。

【做一个简易的STM32蓝牙麦克拉姆轮小车】_第6张图片



开始上手

待填充



完成 >v<



总结

待填充

你可能感兴趣的:(stm32学习,c语言,stm32,经验分享)