打印
[应用相关]

基于STM32的二轮自平衡小车

[复制链接]
楼主: 初级工程渣
手机看帖
扫描二维码
随时随地手机跟帖
21
初级工程渣|  楼主 | 2022-6-30 21:02 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
假定计数器已经启动(TIMx_CR1寄存器中的CEN=’1’),计数器由每次在TI1FP1或TI2FP2上的有效跳变驱动。 TI1FP1和TI2FP2是TI1和TI2在通过输入滤波器和极性控制后的信号;如果没有滤波和变相,则TI1FP1=TI1,TI2FP2=TI2。根据两个输入信号的跳变顺序,产生了计数脉冲和方向信号。依据两个输入信号的跳变顺序,计数器向上或向下计数,同时硬件对TIMx_CR1寄存器的DIR位进行相应的设置。不管计数器是依靠TI1计数、依靠TI2计数或者同时依靠TI1和TI2计数。在任一输入端(TI1或者TI2)的跳变都会重新计算DIR位。

使用特权

评论回复
22
初级工程渣|  楼主 | 2022-6-30 21:03 | 只看该作者
编码器接口模式基本上相当于使用了一个带有方向选择的外部时钟。这意味着计数器只在0到TIMx_ARR寄存器的自动装载值之间连续计数(根据方向,或是0到ARR计数,或是ARR到0计数)。所以在开始计数之前必须配置TIMx_ARR;同样,捕获器、比较器、预分频器、触发输出特性等仍工作如常。在这个模式下,计数器依照增量编码器的速度和方向被自动的修改,因此计数器的内容始终指示着编码器的位置。计数方向与相连的传感器旋转的方向对应。

使用特权

评论回复
23
初级工程渣|  楼主 | 2022-6-30 21:05 | 只看该作者

使用特权

评论回复
24
初级工程渣|  楼主 | 2022-6-30 21:06 | 只看该作者
当定时器配置成编码器接口模式时,提供传感器当前位置的信息。使用第二个配置在捕获模式的定时器,可以测量两个编码器事件的间隔,获得动态的信息(速度,加速度,减速度)。指示机械零点的编码器输出可被用做此目的。根据两个事件间的间隔,可以按照固定的时间读出计数器。如果可能的话,你可以把计数器的值锁存到第三个输入捕获寄存器(捕获信号必须是周期的并且可以由另一个定时器产生);也可以通过一个由实时时钟产生的DMA请求来读取它的值。

使用特权

评论回复
25
初级工程渣|  楼主 | 2022-6-30 21:07 | 只看该作者
MPU-6050姿态解算

    六轴传感器读取角度
    想要小车直立起来由上文可知我们需要读取y轴的倾斜角度以及y轴的加速度,当然如果用到转向环还要读取z轴的角度。MPU-6050可读取3轴的角度以及3轴的加速度和芯片的温度。其中角度是直立环重要参数,角速度是速度环以及转向环的重要参数。

使用特权

评论回复
26
初级工程渣|  楼主 | 2022-6-30 21:08 | 只看该作者

使用特权

评论回复
27
初级工程渣|  楼主 | 2022-6-30 21:08 | 只看该作者
获得6050的数据我们可以通过移植官方的DMP库,通过DMP,就可以使用InvenSense公司提供的运动处理资料库,非常方便地实现姿态解算,也可以获得原始数据后使用卡尔曼滤波解算姿态。
需要注意的是AD0接口如果接地,则6050的IIC地址为0x68,如果接vcc,则6050的IIC地址0x69

参考资料 MPU-6050

使用特权

评论回复
28
初级工程渣|  楼主 | 2022-6-30 21:09 | 只看该作者
PID

    PID算法

    上边运动分析中已经提及小车的运动需要直立环速度环以及转向环。PID的学习包括理论知识以及调参的经验等。

使用特权

评论回复
29
初级工程渣|  楼主 | 2022-6-30 21:10 | 只看该作者
模块选型
主控模块

主控模块我们使用STM32f103c8t6 ,这款模块有3个通用定时器,一个高级定时器,3路串口,2路IIC,72Mhz,对于我们的需求是绰绰有余的。

使用特权

评论回复
30
初级工程渣|  楼主 | 2022-6-30 21:13 | 只看该作者

使用特权

评论回复
31
初级工程渣|  楼主 | 2022-6-30 21:15 | 只看该作者
编码器

使用特权

评论回复
32
初级工程渣|  楼主 | 2022-6-30 21:16 | 只看该作者
编码器电机我们使用的是平衡之家的一款mini电机,由于打出的板子体型较小,所以没有选择体积大的电机。

额定电压7.4V,当然也可以工作在12V环境下,编码器供电5v。

使用特权

评论回复
33
初级工程渣|  楼主 | 2022-6-30 21:17 | 只看该作者
价格差不了多少,还是体积大一点的搭建出来的小车看起来大气

使用特权

评论回复
34
初级工程渣|  楼主 | 2022-6-30 21:17 | 只看该作者

电机线1/6接在电机模块的A/BOUT处,电机线2/5接5v以及接地,编码器AB相接在预留出来的定时器接口只有通道1/2支持

使用特权

评论回复
35
初级工程渣|  楼主 | 2022-6-30 21:18 | 只看该作者
电机驱动模块

电机驱动模块选择的是TB6612模块,VM需要12v供电,SYBT需要5v供电否则电机不会转动, 同时输出两路PWM,同时控制两个电机。

使用特权

评论回复
36
初级工程渣|  楼主 | 2022-6-30 21:19 | 只看该作者
这里其实一开始选择是功能更强大的A4950,但是因为摔了一下电机模块就直接**(太便宜),所以在购置硬件时千万不要图便宜,买好的不买便宜的

使用特权

评论回复
37
初级工程渣|  楼主 | 2022-6-30 21:19 | 只看该作者
降压模块

降压模块选择一块带数显的,方便观察电池电量,不多叙述。

使用特权

评论回复
38
初级工程渣|  楼主 | 2022-6-30 21:20 | 只看该作者
MPU-6050模块

不多赘述,同样6050也不要图便宜(这一块可能就是因为质量问题,导致程序无法进入6050的外部中断,最后没办法放入主程序运行)

使用特权

评论回复
39
初级工程渣|  楼主 | 2022-6-30 21:21 | 只看该作者

蓝牙通讯模块

使用特权

评论回复
40
初级工程渣|  楼主 | 2022-6-30 21:22 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则