才开始写帖子,大家多多包涵。
Balance.7z
(393.91 KB, 下载次数: 25)
STM32F407平衡车.zip
(7.24 MB, 下载次数: 48)
本帖子采用以STM32F407为控制器的平衡小车。我是因为想学32,然后F4比较强大,所以就没采用F1或者stm8之类的单片机。
先从硬件准备开始:
1.编码电机两个,电机驱动器l298n一块(我用了他上面的5v电,所以没加稳压模块,正规的话应该加上)
2.MPU6050模块一个
3.蓝牙模块
4.IIC协议的oled屏幕一块(32当然也可以用其他协议的,换一下相应文件就好)
5.stm32f407最小系统板一块
6.无源蜂鸣器来一个用来放音乐不错
7.导线、洞洞板、排针、接头自己备一些,我是自己焊的拓展板 ,也可以直接画pcb
8.3s的18650电池和充电器
9.支架的话我为了省事买了电机加底板支架,看视频里大家要是有钻,螺丝,铜柱的话整两个电机支架一块亚克力可轻松搞定,而且整洁美观,布局也方便
再就到了硬件连接,我这里就不详细说那个了 l298n上面有in1~4四个引脚,分别接到单片机对应的引脚, 1,2一组,控制motor1方向;3,4一组,控制motor2方向。同时电机驱动模块上还有两根enable和5v引脚,刚买的一般是通过两根跳线帽将两个enable与两个5v分别短接,我们需要将两根短接帽拔掉,给每个enable接一路pwm,才能够实现我们所需要的直流电机速度控制。编码电机连接时注意区分动力线和编码器信号线,动力线两条不做区分,接上后续如果电机方向不正确可以改in1,2的高低电平即可;编码器有其电源线5v和gnd,不可接反,另外两根即编码器信号输出,用来记脉冲就好。本小车中各引脚定义及相应定时器在文末统一描述。到这,电机及其驱动均已连接完成。
接下来是mpu6050,我对这个模块的认识其实也只存在于使用阶段,我采用的直接是原子哥开发板例程里的.c文件和.h文件,我们在使用时只需要注意两个文件中关于引脚的定义即可,其余均不用改动,包括iic地址,其默认就为0x68,除非一组IIC上挂载多个设备,才存在不同地址访问问题,正常使用可不关心。我在这里提一个我自己的认识,揭开了iic的面纱,其本身在了解了其通信协议之后,根本就不会在意其是不是单片机上标的特定的某个或某对引脚,尤其是使用开发板的朋友,一定注意这个问题,这么说,单片机上任何两个可以控制高低电平切换的引脚都可以被你用来进行iic通信,当你的iic设备用了别人的程序后没反应,首先第一步先把你的iic设备断开,在不该动现有iic配置的前提下,通过对scl和sda两个引脚单独置高和置低用以检测你的配置是否有问题以及你的引脚本身是否有问题,排除这两个问题后你的设备要是还没反应你再考虑换程序试,记住先硬件后软件的原则。本帖中设计的oled和mpu6050两款iic设备我使用了两对scl,sda,这样做的一个巨大好处就是移植性非常强,很方便使用者修改。oled驱动时注意一下这个模块仅接上vcc和gnd是毫无反应的,这不用慌,只有写上相应代码才能有所显示,本帖中的oled程序是我找了好久且试了没问题的,其中对于iic引脚配置的过程很有思想,只需要在.h文件里面修改,其余均可不用改变。大家若在其他32设备上使用时可参考,其避免了很多问题。
蓝牙模块的话,我个人建议大家还是采用usb转ttl模块将蓝牙模块与电脑相连进行设置,切记,接法就是rx与tx相接,与正常使用时一样,连接好后按住蓝牙模块上的按键再插到电脑上上电,这样就会进入初始化模式,此时串口波特率应调到38400,停止位为1,校验位为无,随后按照hc-05的AT指令集进行设置即可。设置完成后先不急着装在设备上,而是直接拔掉电源,此次不按小按键,直接上电,用串口助手,将波特率、停止位、校验位等调至你的设定值,打开串口,并用手机蓝牙串口app进行测试,试着互发数据,测试无误后再上设备,这样在使用时仅需将单片机的串口设置好即可直接使用蓝牙。熟悉之后,加上对于AT指令的理解,可以在程序中加上蓝牙模块的初始化程序,这样会更加正规一些。
OLED在说陀螺仪的时候就说过了,对于本帖发的工程中的相关文件具有很好地移植性,仅修改scl,sda引脚,其余不动即可。大家可能会有疑问,为什么不用改iic地址,这其实也是我对oled的IIC地址的一个知识误区,尤其是32当中。我买的oled屏幕官方给的地址是0x3c,但在程序中我楞是没找到相关的语句与设置,大家要是有深刻理解了这部分的朋友麻烦回我一些,谢谢。我在arduino上使用这款oled时他会有很明确的iic地址设置。而在32中,大家买到的oled应该是和我的头文件是匹配的,所以就使用而言可忽略地址设置。
引脚定义:
in1(AIN1)》PA3
in2(AIN2)》PA2
in3(BIN1)》PA1
in3(BIN1)》PA0
PWMA TIM13->CCR1 PF8
PWMB TIM14->CCR1 PF9
编码器1 PA6 PA7 TIM3
编码器2 PB6 PB7 TIM4
MPU6050 IIC
SCL PD5
SDA PD6
OLED IIC
SCL PD1
SDA PD2
uart1 连接电脑的串口
RX PA10
TX PA9
uart3 连接蓝牙模块的串口
RX PB11
TX PB10
1.https://wenku.baidu.com/view/b46da6ee26d3240c844769eae009581b6bd9bdf5?ivk_sa=1023194j这是个stm32各个定时器通道与引脚的关系,很重要,在这个基础上引脚可以按需要自己随意设置
2.有任何本帖相关内容可联系1562231483,大家相互交流学习,尤其是没黑币的新朋友,我可以直接把文件发你们 |