这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【fyaocn的智能车DIY的进程贴】

共20条 1/2 1 2 跳转至

【fyaocn的智能车DIY的进程贴】

助工
2015-10-21 11:14:11     打赏
目 录


一、概http://forum.eepw.com.cn/thread/277164/1/#3

二、开箱和组装http://forum.eepw.com.cn/thread/277164/1/#4

三、完成展示http://forum.eepw.com.cn/thread/277164/1/#5

四、基础实验

4.1 电机驱动实验http://forum.eepw.com.cn/thread/277164/1/#6

4.2 编码器数据采集实验 http://forum.eepw.com.cn/thread/277164/1/#7

4.3.无线通讯实验http://forum.eepw.com.cn/thread/277164/1/#8

4.4 传感器驱动实验 http://forum.eepw.com.cn/thread/277164/1/#9


5.高级实验

5.1.多传感器数据融合http://forum.eepw.com.cn/thread/277164/1/#10

5.2 PID调试http://forum.eepw.com.cn/thread/277164/2/#11

5.2 PID调节补充试验和分http://forum.eepw.com.cn/thread/277164/2/#12

5.3.实现平衡小车直立时处于静止状态 http://forum.eepw.com.cn/thread/277164/2/#13

5.4.实现平衡小车绕八字行走http://forum.eepw.com.cn/thread/277164/2/#14

5.5.实现小车自主避障http://forum.eepw.com.cn/thread/277164/2/#16

5.6 实现小车利用线性CCD巡线 以及实现体感控制(利用KINECT或者姿态传感器)分析http://forum.eepw.com.cn/thread/277164/2/#18

6 小结http://forum.eepw.com.cn/thread/277164/2/#19

7 手机APP之蓝牙通信开发http://forum.eepw.com.cn/thread/277164/2/#20

 

 





助工
2015-10-21 11:22:15     打赏
2楼
加油哦!时间不多了

助工
2015-10-21 11:40:05     打赏
3楼

一、概述

    二轮平衡车DIY是一款高大上的东东,不过组织者给的资料太丰富。门槛大大降低,小盆友都可以参加的玩的。

    这个DIY主要测试的是MCU通过外设采集信号实现多种控制,STM32F103是核心,外设有运动传感器,超声波传感器,通讯端口有蓝牙通信,输出伺服电机控制。内置的算法是二轮平衡算法,其实这套装置吗,换成齿轮抓手可以去爬树,换成吸尘器口可以去打扫卫生,一机多用。

    所以,主要测试分为以下几个部分:

1.1 组装

1.2 基本功能测试

1.3 高级功能测试

1.4 硬件分析和评估改进

1.5 软件分析和评估改进

1.6 组合性能评测

1.7 开发平台适用性分析和移植分析

1.8 总结和拓展


助工
2015-10-21 11:55:58     打赏
4楼

二、开箱和组装

   首先开申请帖,迅速被批准了,然后在T宝店下单,后来用智能车做关键词一查,宝店上的产品够多,不过如果没有eepw,我们也不晓得哪个是哪个,总之长相和宣传是一样的,这里要给eepw打个广告,甚善。兵贵神速,迅速到货;但是架不住人懒,验完货后一直在库房沉睡了很久(因为主要是希望和小盆友一起玩的,要主力有空时才可以组装的)

    然后,才是然后,一起组装起来。因为其他网友上了好多写真照,就不再逐个展示了。总之,按照QQ群下的说明资料一步步组装,很顺利地成功了。主要支架式3D打印的,但是精度还是很好的,安装电池很稳,唯一不足的是螺丝好像略短,不能拧太紧,再拧紧就容易脱扣,这个拼起来还是有些分量的,如电池就是大头。

    组装过程有个小插曲,电池给装反了,结果插头插不上,只好再拆下来。还有,电池最好是先插插头在装进架子。这个结构设计够细致,电池引出线正好够折弯的,余量不大,最后插电池太费劲了。

当然最后还是要给个完工照。



助工
2015-10-23 09:48:35     打赏
5楼

三、完成展示

这个小车设计得挺精致,一上电就OK了。当然先直接躺下了。不过不用着急,按下初始化按钮,就稳稳立起来了。见视频。



视频地址:http://www.tudou.com/v/dOrYxXycqWU/&bid=05&rpid=328261405&resourceId=328261405_05_05_99/v.swf


http://www.tudou.com/programs/view/dOrYxXycqWU/

然后安装了安卓APP,可以很方便地前后左右,就地旋转。

当然,和小盆友一起玩得很开心。

--还试了负重,可以抗着3本书从客厅一端跑到另一端;

--还可以爬小斜坡,不过如果有些陡的话,在上坡的角上直接摔倒。

--如果重心高也没关系,非常稳定。

不过随后要刷机了,如果没搞好就跑不起来了。呵呵。


助工
2015-10-26 13:00:38     打赏
6楼

四、基础实验

4.1 电机驱动实验

直接下载参考程序,然后刷机。用MCUISP非常好使,先用MDK调试,然后build成Hex文件刷机,我看比用ST-link还要直观些,当然,调试的回合多时不如st-link方便。不过,已经很好了。

当然要先装好USB-TTL的驱动,见图。

然后下载程序

搭建OK后逐个分析:

从主程序main入口初始化外设和端口,分析程序,主要的是main.c

控制的核心就是minibanlance.c,在这里用中断调用来执行自平衡的功能。对于电机控制,主要是以下4个参数进行测试:

4.1.1. 重心调节控制

因为机械组装总有误差,因此重心在每个小车上都小有差别,因此需要调试使小车平衡。源程序是设为误差角度为0,我的小车到货很均衡,用0就测试很好,不过也可以设为5,即5度的意思。结果发现本小车变歪歪车了,但是还很稳定。逐次增大,到15时,小车一启动就自己跑起来了,撞上墙才停下,看了是在努力调平衡。注意加红圈的-5就是修改后的重心调整角度。重心调节测试——OK。

4.1.2 速度调节

范例选择速度参数为700,前进后退可以选择不同数值。修改为200后,本车变成牛车,动作慢不少,但是平衡能力不变,因为仅仅变化的是运动的速度,姿态采样的周期仍然没有变,由定时器来设置,因此仍然能很好保持平衡。速度测试OK。


4.1.3 方向调节

对于运动调节在Set_Pwm()中实现,对于方向是用形如

AIN2=1, AIN1=0;BIN1=1, BIN2=0;来分别设定左右点击的调节方向,如果moto1,moto2为1,则设为0调节,反之设为0.


4.1.4 运动量调节

Set_Pwm()中用设定

PWMA=myabs(moto1);
PWMB=myabs(moto2); 

来设定调节的幅度,myabs是取绝对值的自定义函数。

对于自动平衡的实现就是通过方向和调节量的实时调节保持平衡的,电机控制测试OK。

至于实现运行,无论是自动还人为控制,仍然是在平衡自动调节的情况下,设置电机旋转方向,按一定的速度单向或反向连续运动的结果,具体控制方法是一样的。





助工
2015-10-26 15:10:19     打赏
7楼

4.2 编码器数据采集实验

在编码器的数据采集中,实现编码器采集的是readEncoder()过程,分别读取两个电动机的编码脉冲计数。该编码经过变换,和读取的运动传感器换算出的角度,然后启动PID控制来控制平衡。本实验仅读取编码器的数值并用uart1端口发送,用printf命令发送到端口。程序中可以自定义命令,不过有现成的就好了。在计算机端启动putty,设置为com6,速录11520,可以显示编码器的数据。因为大部分数据时0,所以增加了一个判断,只传送非0数据,


显示如下:


助工
2015-10-26 16:16:27     打赏
8楼

4.3.无线通讯实验

    本小车采用无线通讯实验有2种选择,用板载蓝牙SPP-C蓝牙模块和NRF2401模块。不同的是SPP-C通过Uart3端口用串行通讯控制和联络,而NRF2401用SPI端口连接。从性能上看SPI更好,不过本控制只是采用简单得数据传输,从客户端可以看到,仅仅取样Uart_receive一个参数,对其小于10的数值进行分析,判断为前后左右4个方向的运动情况,并进行相应的控制。

对SPP-C的控制用AT+命令来实现,简单明了。不过需要在没有配对之前,可以启动,查询,配对之后就进入数据透传的阶段,不能用AT+命令了。

关于对SPP-C的控制均在Uart3.c中实现,在初始化后,用uart3的中断实现控制。把控制回传的数据显示在计算机如下:

发现0过多,这是因为实时采集的结果,

我们过滤一下,只有控制时才显示,程序如下:

显示为

不过发现,手机端采样的数据不是很精确,即使控制是上下不同的动作,都显示为前进。比较费解,不过测试结果说明蓝牙通讯可以连接,而且控制可以实现。这个方向可以用于控制伺服电机的转动。测试OK。

不过再高级实验中,需要检查APP端的程序,看为什么会有这样的情况。



助工
2015-10-27 14:16:36     打赏
9楼

4.4 传感器驱动实验

本小车采用的是MPU6050六轴运动传感器,可以采样xyz加速度,xyz角速度数据。内置DMP处理器,可以进行数据处理,提高处理速度和效率。同系列的MPU6000采用的是SPI高速接口,而6050采用I2C400kHz速度,用在小车上是足够了。

不过在二轮小车上,其实只需要4个数据就好了,因为x轴没有自由度。其中平衡控制只需要yz角速度和xz加速度,其中z轴角速度在平衡控制是不需要的,只是在旋转时取样。见程序,


取样的传感器数据是以矩阵的形式给出的,需要进行矩阵变换,量化取模才得出适合PID算法的数据。根据PID算法,结合编码器的采样数据,算出控制量,写入寄存器,可以控制电动机的转动。对于电动机的控制是通过PID算法的计算实现的。

增加语句把计算传感器数据输出到计算机,

 

再增补变量名,这下好看了。

 

这是电机没进入自平衡状态的,因为小车在睡觉,所以其他数据是0,

这个是小车转起来的时候取样的。


不过这个时候小车不停地转,平衡不了。这是因为增加的这个串口输出命令影响了自平衡算法的时序。删掉这句后,执行程序就又可以平衡了。

助工
2015-10-27 16:20:26     打赏
10楼

5.高级实验

5.1.多传感器数据融合

本小车设计的传感器种类比较多,有ADC模数转换电压传感器,MPU6050内置通过I2C接口访问的温度传感器,以及MPU6050运动传感器。本实验把有关数据采集并发送到串口接收器,采集到的有温度,电压,运动姿态补偿量等,经分布测试,均采集正常,反馈良好。

温度显示:

电压温度显示:

运动传感器采集:

经调试,在不启动自平衡模式下,DATAscope可以采集三通道的运动传感器数据,如下表。采用DataScope采集的图形化运动传感器数据:

 

不过发现采集的数据都是原始数据,还没有经过取模,所以温度显示240,电压显示1227386等,均是采样值。

综合测试OK


共20条 1/2 1 2 跳转至

回复

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