【解析新特性】300W单路输出工业电源>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【更新至自制模块化平衡小车第二版】hlwhlw的两轮自平衡小车DIY进程帖​​

共45条 3/5 1 2 3 4 5 跳转至
助工
2015-10-11 20:21:17    评分
21楼

助工
2015-10-12 13:07:14    评分
22楼

实验12.平衡小车跟踪移动物体

一、实验目的:通过平衡小车跟踪移动物体实验,学习如何利用超声波模块来实现小车跟踪移动物体的功能。

二.实验过程及分析:本实验主要是根据上一个实验实现小车自主避障,修改关键代码使小车能够跟踪移动的物体。

平衡小车跟踪移动物体代码分析:当超声波模块检测到平衡小车距离前面的物体小于 0.5 米时会自动跟踪物体

#if MODE_BIZHANG==1


if(Distance<500)

{

Movement-=250 ;

if(1==Flag_Hou)

Movement=-250;

}


#endif


三.实验现象:平衡小车实现了跟踪移动物体的功能。

四.实验总结:通过本次实验学习了如何利用超声波模块来实现小车跟踪移动物体的功能,同时也避免了蓝牙控制和超声波避障的冲突。


助工
2015-10-12 13:13:45    评分
23楼

助工
2015-10-14 14:02:37    评分
24楼

实验13.实现体感控制平衡小车

一、实验目的:通过体感控制平衡小车实验,学习如何利用mpu6050姿态传感器和NRF24L01无线模块进行无线发送、接收与mpu6050姿态相关的指令,实现体感控制平衡小车。


二、实验过程及分析:本实验首先学习与姿态信息相关的一些准备知识,接着利用mpu6050姿态传感器获取mpu6050的姿态信息,根据姿态信息制定相应的指令,然后利用NRF24L01无线模块进行无线发送指令,小车接收到指令执行相应操作,最终实现体感控制平衡小车。

学习要点:与姿态信息相关的一些准备知识;获取mpu6050的姿态信息;根据姿态信息制定相应的指令,NRF24L01无线模块发送指令;小车接收到指令执行相应操作。

与姿态信息相关的一些准备知识:主要就是要知道与姿态相关的三个角度的具体含义,直接看下面几张生动形象的图就可以了,一目了然


俯仰角(Pitch

横滚角(Roll

航向角( Yaw

姿态图

获取mpu6050的姿态信息:关于利用mpu6050读取姿态信息的详细介绍可看我前面的贴子 实验5.传感器驱动实验(读取mpu6050原始数据)实验6.多传感器数据融合实验。这里只介绍本次实验所要用到的关键代码。


读取MPU6050内置DMP的姿态信息关键代码:

Stm32控制板程序

float  DirF_DirB(void)

{

unsigned long sensor_timestamp;

unsigned char more;

long quat[4];

dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more);

if (sensors & INV_WXYZ_QUAT )

{

q0=quat[0] / q30;

q1=quat[1] / q30;

q2=quat[2] / q30;

q3=quat[3] / q30;

Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; //俯仰角

printf("%f,%f,\r\n",Pitch,Yaw);

return Pitch;//得到俯仰角

}

}

根据姿态信息制定相应的指令,RF24L01无线模块发送指令:

关键代码:

Stm32控制板程序

while(1)

{

DirF_DirB();

if(NRF24L01_TxPacket(tmp_buf)==TX_OK)

{


if(DirF_DirB()>20)  tmp_buf[1]=F;

else if(DirF_DirB()<-20) tmp_buf[1]=B;

else  tmp_buf[1]=S;

}

小车接收到相应指令执行相应操作:

关键代码:

小车程序

void NRF24L01(void)

{ unsigned char S,F,B;

u8 mode=0,count;

u8 tmp_buf[33];

if(mode==0)//RX模式

{

RX_Mode();

while(1)

{

if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.

{

// printf("%d\r\n",tmp_buf[1]);


if(tmp_buf[1]==S) {Flag_Qian=0,Flag_Hou=0;}


if(tmp_buf[1]==F){Flag_Qian=1,Flag_Hou=0;}

if(tmp_buf[1]==B){Flag_Qian=0,Flag_Hou=1;}


}else delay_us(100);

};

}

}

三.实验现象:实现了体感控制平衡小车

四.实验总结:通过本次实验学习了与姿态信息相关的知识,然后利用mpu6050和nrf24l01制定和发送相应指令,最后实现了体感控制平衡小车。


助工
2015-10-15 14:38:21    评分
25楼

助工
2015-10-18 12:15:14    评分
26楼

实验14.平衡小车在桌面静止

在前面的实验8. 实现平衡小车直立时处于静止状态 已经调试过小车直立,不过效果还不是很好;所以我又重新调试了一下,效果比之前好了一些。

具体调试方法可以看看我前面的实验7.PID调试实验 实验8. 实现平衡小车直立时处于静止状态


下面是视频:平衡小车在桌面静止



视频地址:http://player.youku.com/player.php/sid/XMTM2MjczNTI0OA==/v.swf






助工
2015-10-21 13:23:45    评分
27楼

自制模块化平衡小车搞起


模块化平衡小车硬件篇

用到的硬件材料如下:

stm32nucleo板



正面



反面



平衡小车底盘



锂电池



电机驱动模块tb6612和6轴传感器mpu6050模块



模块反面



电源模块



电源模块反面



再加上用于安装电机驱动模块和mpu6050模块等模块的扩展板,一些杜邦线、几个螺丝螺母和捆绑线,小车组装搞起

上电


助工
2015-10-22 10:08:14    评分
28楼
加精

高工
2015-10-22 16:12:10    评分
29楼
楼主帖子挺好,照片再拍清晰点就更好了

助工
2015-10-23 23:58:08    评分
30楼
模块化平衡小车相关硬件说明及资料


模块化平衡小车的原理图主要参考了平衡小车套件的原理图。

模块化平衡小车硬件篇主要展示了模块化平衡小车用到的东西,缺少一些必要的说明,这里介绍一下并上传相关的硬件资料。

首先是stm32nucleo板,芯片的型号是STM32F103RBt6,板子板载了ST-LINK,只需一根USB线即可下载和调试程序。


stm32 nucleo是ST官方推出的开源硬件,下面是这个板子的硬件原理图和PCB资料。

nucleo_64pins_sch.zip


然后是电机驱动模块tb6612和6轴传感器mpu6050模块(三轴陀螺仪+三轴加速度计)

电机驱动模块tb6612的说明及资料





注意:输入电压(VM 一定要低于12V,不然模块上的钽电容可能会爆炸,我就炸过

更具体的使用方法上淘宝搜和参考下面的资料

电机驱动模块tb6612的资料

TB6612FNG中文使用笔记.pdf

TB6612FNG英文原版资料.pdf



6轴传感器mpu6050模块的说明及资料

这个模块和我用的模块有一点小区别,我的模块电源输入分为3.3V和5V两个引脚,下面这个模块的电源输入为一个引脚VCC(3-5v(内部低压差稳压)



mpu6050模块的资料

GY521mpu-6050资料.rar


接下来是电源部分,主要是LM2596降压模块,具体在平衡小车的应用是把锂电池提供的电压转化为5V输出的电压,可以通过模块的电位器调节输出电压,然后把5V电源提供给stm32nucleo作为电源。LM2596降压模块的详细说明可以上淘宝搜。





共45条 3/5 1 2 3 4 5 跳转至

回复

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