betway88必威体育
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 想跟着我一起做两轮平衡小车吗?制作过程,持续更新,请关注

共7条 1/1 1 跳转至

想跟着我一起做两轮平衡小车吗?制作过程,持续更新,请关注

工程师
2013-12-08 20:14:13     打赏

                                      两轮平衡小车制作过程(持续更新~~)

 

 

第一步:确定小车硬件 

第二步:搭建小车硬件

小插曲航模表演的图片

第三步:准确读取MPU6050数据



下面这一段可以忽略~~

大家好,早一段时间看朋友买了台独轮车(可以站人的那种)觉得这个东西很新奇,在网上百度了一下,发现这个东西不好做,不过两轮的平衡小车好像相对会容易些,而且两种车的基本原理差不多。

在网上看了一些关于两轮平衡小车的资料,资料还算比较多,又在淘宝上搜了一下需要的元器件,元器件的价格也不贵,所以最近准备做一台两轮的平衡小车(我这个是很小的那种,不是用来载人的)。

当然,还有一个最重要因素是,我一直想做一块飞控(有人可能没有听过,简单的说他就是无人机的大脑),开始很天真,现在知道这个很难很难(具体的难题包括:硬件电路的设计,和软件算法的设计,特别是软件算法,四元数,欧拉角,互补滤波,卡尔曼滤波,IIR滤波,捷联惯导,MPU6050 DMPFreeRTOS等等~~~看那些公式就头大了~~~硬件设计要设计的很小,又要很稳定,所以要考虑的东西也不少~~还有那些英文资料也挺头疼的~~~),所以把他当做自己的一个梦想去慢慢完成,平衡小车正好要用到MPU6050还要用到互补滤波或者是卡尔曼滤波,还有PID的参数整定等等~~~都和我要做的飞控有共同之处~~这样离梦想又可以进一步了~~~~

我可能是做一点东西就发一点东西(我也不知道可不可以做出来,不过我会尽力而为~~),但是进度可能会比较慢(因为每天要上课,还有要学习STM32,玩航模等等),如果我说的不对的或者错误的地方还望各位高手指正,我一定及时修正错误。

~~~我还只是个小白,所以欢迎各位大侠拍砖~~~

 

下面是重点部分~~~


确定小车硬件(包括电机,电机驱动板,主控,传感器等等)

第一部分,小车的用来走路的小脚~~~

1>     电机:带减速齿轮和码盘的大功率,大扭矩的电机两个(直接在淘宝上搜索平衡小车就有)

   电机电机



2>   L298N模块(淘宝上搜一大把)~~~

  电机驱动板



第二部分,小车的用来思考的大脑~~~

3> 主控STC12C5A60S2 (看个人喜好,选一款自己用的比较熟悉的单片机都可以,比如AVRSTM32等等)

主控基本要求:PWM接口,最少2(控制两个电机转速)

            :定时器,最少2(采集两个电机转速)


            :I2C,最少1(用来采集MPU6050的数据)

            :UART,最少1(用来下载程序,调试程序,还可以通过蓝牙将数据传到电脑或者手机上面进行分析,以后还可以通过蓝牙来控制小车~~)

            :IO口若干~~至少6个吧(一般型号的单片机都够用了)

       还有就是单片机速度要跑的快一些(晶振频率选大些~~)


stc12c5a60s2



    第三部分,小车的感知~眼睛鼻子耳朵(其实应该是小脑吧,生物学的不好 >~< !!!)~~


              4> 传感器:1> MPU6050(其实单轴陀螺仪(EN-03)和(MMA7260)加速度传感器也可以,不过这种都是模拟输出的,所以单片机还要带AD功能,     MPU6050输出的是数字信号,而且集成了三轴加速度和三轴陀螺仪如果做小四轴或者飞控也可以用到它哦~~这样可以为后面做小四轴和飞控打下基础哦~~

                                  2>  码盘:用来测量小车的速度(其实可以直接买带码盘的电机,用起来会简单些,如果喜欢折腾的,也可以自己买两个码盘装上)

mpu6050        


mpu6050 



       第四部分(补充)差点忘了两个个很重要的东西~~~一个是小车的能源电池~~~关于电池选择:镍氢电池,航模上用锂电,18650锂电(四节以上串联),电压在7.4V到12V的可以,容量最好大点~~


   还有个一个就是汽车底盘,就将两个电机固定起来的东西~~~当然还有轮子~~







 

最后附上拼好底盘和底盘细节图~~~



OK差不多今天就这些了~~说的有点啰嗦了还望大家理解~~~后面一定改正这个毛病~ ~~

 附上一些收集来的资料~~~

1.       L298N

L298N模块资料.rar


2 .  MPU6050(英文和中文等等,这个芯片的中文的寄存器手册还真不好找~~)


MPU6050.rar

3. 其他的资料可以直接百度得到~~~

                                          2013.12.07




 硬件基本搭建好了~~~~






关键词: 小车     平衡    

工程师
2013-12-10 10:01:01     打赏
2楼
好~

工程师
2013-12-10 17:06:35     打赏
3楼

2. 搭建小车硬件
     小车底盘

开始盖楼咯~~~
第一层的楼板~~特地跑的实验室去打的~~打得有点水了。。。机械白学了~~

 

盖上第一层楼板了~~~

 

接下来装电机驱动板(L298N)

 

第二层楼的梁柱子(铜柱)~~~

 

放上L298N~~~

加上第三层的梁柱子~~~

装上车之前来张细节照~~

装上小车了~~~

放上电池看效果~~~

主控就用洞洞板焊算了~~制作比较简单~~

焊接的一个7805稳压模块~~

开工焊板子~~

焊完了的最小系统板~~~

 

 

加上LCD1602后的效果~~

加上了MPU6050~~

 

MPU6050细节图~~

盖楼完毕~~

 

 

 

Ok盖楼完毕~~~~今天就这样了~~~

 


工程师
2013-12-10 17:20:51     打赏
4楼

最后~~来点最近学校举办的一场航模表演的图片~~~
 
正在航拍的四轴~~  (我是打酱油的云台手~~~)
飞控:大疆哪吒~~
相机:GoPro Hero 3+ 黑色标准版~~


等等~~再这里就不多说了~~毕竟是电子论坛~~

 

 

蓄势待发的火箭(可以飞100米高,降落的时候还有降落伞~~~~~

 

偷拍礼仪小姐,听说是空乘班的~~~呵呵~~~看上去像雕塑一样~~~~失望~~~

 

骚气的~~小机机们~~~

 

 

 

上单拉烟~~

 

四轴拉烟~~~

 

 

多轴编队~~~大概有8~9架的样子~~不过感觉不是编队,是一顿乱飞~~

 

NBP-40象真机,这个大家伙,需要两个飞手同时控制~~~

 

空头糖果~~这架飞机是全手工制作的哦~~做的非常精细~~~可以在两个不同的地方投两次糖果~~设计了两个投弹仓~~

 

最后一个节目,群魔乱舞~~~意思就是想飞的都可以上去飞。。。那天目测最多的时候有1520架飞机上天~~~整个天空乱的一B~~~这个节目的亮点是灰机互相对撞~~那天死了不少飞机~~

 

结束后的合影~~~

 

~~~好多骚气的~~FUTABA~~~都是土豪~~我这种只能用的起,天七都不好意思把控摆出来的说~~

 

再来一张~~

 

最后多轴合影,可惜没有全部都摆上,有始有终(多轴开始多轴结束~~~~~里面有一架是我的,猜猜了哪个~~呵呵~~

 

发的图有些多(发图太多真的很蛋疼~!发了一个多小时)~~发了不少和电子无关的,阿弥托福,罪过罪过~~下次不发这么多非重点的东西了~~~

~~~~W ~~~END

2013.12.10

 


工程师
2013-12-10 21:42:43     打赏
5楼
确实感觉很像~~

工程师
2013-12-23 13:05:16     打赏
6楼

软件设计部分

第一步读取MPU6050的数据

最近因为乱七八糟的事情特别多,天气又特别冷都不想把手拿出了~~所以更新特别特别慢,对不起各位了~~~

说正题,学会读取和分析MPU6050的数据也是比较重要的一步,读取的数据是否准确直接影响到后面算法,是否可以正确的判断出小车的实时状态

首先了解它的通信协议,MPU6050I2C通信协议,然后了解它的数据结构,然后再仔细阅读并了解它的寄存器和寄存器相关的配置,这里我把写的初始化话函数加进来~~

void MPU6050_Init(void)                                 //MPU6050初始化函数

{

       I2C_WriteByteData(DEVICE_COM0,PWR_MGMT_1, 0x00);    //解除休眠状态(电源管理模块) 

       I2C_WriteByteData(DEVICE_COM0,SMPLRT_DIV, 0x07);       //陀螺仪&加速度计采样率,典型值:0x07(125Hz)

    I2C_WriteByteData(DEVICE_COM0,CONFIG, 0x06);               //低通滤波频率,典型值:0x06(5Hz)

       I2C_WriteByteData(DEVICE_COM0,GYRO_CONFIG, 0x18);    //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)(寄存器手册P14)

       I2C_WriteByteData(DEVICE_COM0,ACCEL_CONFIG, 0x01);  //加速计自检、测量范围及高通滤波频率(这个在寄存器上面没有看到详细介绍),

                                                           //典型值:0x01(不自检,2G5Hz)

}

下面我会附上我程序,程序重点难点部分,基本上都有注释~~包括每一段是干什么用的。而且MPU6050的所有寄存器的映射都写出来了,而且基本上每一个都有相应的注释,所以那个MPU6050.H可以直接拿去用了。。。

因为不会写上位机(最近在学LabVIEW,准备用它来编上位机),所以读出的数据只能

LCD1602来进行显示,所以只能看到读出的加速度和角速度的数据,不能看到数据具体的变化趋势,还有就是,在用程序对加速度计和陀螺仪数据融合后的效果是看不出的,如果用上位机就可以很清楚看到数据融合过程的效果~~

关于MPU6050的更多用法可以参加它的数据手册~~~比如直接以数字输出6 轴或9 轴的旋转矩阵、四元数(quaternion)、欧拉角格式(Euler Angle forma)的融合演算数据,这些就要使用到他的DMP功能了~数字运动处理(DMP: Digital Motion Processing)引擎可减少复杂的融合演算数据、感测器同步化、姿势感应等的负荷。。等等~~MPU6050的功能还是非常强大的~~

下面来两张图~~我用MPU6050里面的温度计,来采集温度值和某一个轴的加速度或者角速度值显示在LCD1602上面~~

 

以前做的一个日历采集的温度值:


MPU6050采集的温度值和一个轴的数据:

开发板~~~


附件资料~~~

MPU6050测试程序~~

MPU6050_4.rar


下一次就是对算法进行分析和选取合适的算法~

对于角度数据的融合现在我所知道的一共有三种

 第一种,互补滤波

第二种,飞思卡尔滤波(不知道它叫什么滤波,因为是在飞思卡尔小车程序里面看到的,暂时先这么叫吧~~

第三种,卡尔曼滤波~~

我现在正在仔细看他们的理论~~~

如果有人还有更好的算法,或者有对这些算法特别了解的大神们,还望不吝赐教~~

 


工程师
2013-12-23 17:37:45     打赏
7楼
恩,最近事情多,所以进度慢~~

共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]