最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

当前位置: 主页 > 科技DIY > 机器人/模型 >

Arduino的自平衡机器人

时间:2017-05-17 20:29来源:未知 作者:admin 点击:
你好,每个人都! 在下面,我会告诉你如何建立一个小型的自平衡机器人,可以左右移动避开障碍物。 这是一个小机器人测量4英寸宽,4英寸高,是基于Arduino Pro Mini开发板和MPU6050加速度计陀螺仪模块。 在接下来的步骤中,我们将看到如何用Arduino MPU6050的
Arduino的自平衡机器人

你好,每个人都!

在下面,我会告诉你如何建立一个小型的自平衡机器人,可以左右移动避开障碍物。这是一个小机器人测量4英寸宽,4英寸高,是基于Arduino Pro Mini开发板和MPU6050加速度计陀螺仪模块。

在接下来的步骤中,我们将看到如何用Arduino MPU6050的界面,如何测量机器人的倾斜角度,如何使用PID控制使机器人保持平衡。超声波测距仪也加入到机器人,防止撞到障碍,流连。

零件清单

我买的这些部分来自速卖通但你可以在任何电子商店以及找到他们。

1。Arduino Pro Mini

2。随着gy-521 MPU-6050模块

三.drv8833 pololu电机驱动器

4。2,5v升压转换器

5。us-020超声波距离传感器

6。NCR18650电池持有人

7。微型减速电机(N20,6V,200转)托架

8。42x19mm轮

9。三,双面PCB原型(4cm×6cm)

10。8,25cm尼龙垫片和4,尼龙螺母

除了上面提到的,你将需要一些电缆,伯格连接器和一个开关。

步骤1:一点理论

让我们先让我们的手脏一些基本面开始。

自平衡机器人类似于倒立摆。与普通的钟摆一直在摆动一次给出一个轻推,这个倒立摆不能保持平衡,对自己的。它只会摔倒。那么我们如何平衡呢?考虑平衡我们的食指是一种平衡倒立摆的经典例子,一把扫帚。我们将我们的手指在棒的方向落下。用自平衡机器人的情况类似,只有机器人会向前或向后。就像我们如何平衡我们的手指一根棍子,我们平衡机器人的驱动车轮的方向,它会。我们要做的就是保持<em>重心</em>的机器人正上方的支点。

驱动我们需要在机器人的状态信息的汽车。我们需要知道,机器人是下降方向,机器人已经倾斜,它的速度是下降多少。所有这些信息可以从MPU6050读数得到了。我们把所有的这些输入并产生信号驱动电机,使机器人保持平衡。

步骤2:让我们开始建设

Arduino的自平衡机器人

我们将首先完成对机器人的电路结构。机器人是建立在三层perfboards相隔25mm分开使用尼龙垫片。底层包含两个电机和电机驱动器。中间层的控制器,IMU,和5V升压稳压器模块。最上面的层的电池,一个开关和超声波距离传感器(我们将安装这最后我们一旦得到机器人的平衡)。

在我们开始原型试验电路板上我们应该有一个清晰的画面,每个部分应放置。使成型容易,它始终是更好地绘制各部件的物理布局,以此为参考来放置元件和路线的试验电路板上的跳线。当所有的部分放置和焊接,连接三板采用尼龙垫片。

你可能已经注意到,我使用了两个独立的电压调节模块驱动电机和控制器,即使他们都需要一个5V电源。这是非常重要的。在我的第一个设计,我用单5V升压稳压器电源控制器以及电机。当我打开机器人程序冻结间歇。这是由于从作用于控制器和IMU的电机电路产生的噪声。这是有效地将电压调节器的控制器和电机,增加一个10uF电容在电机电源端子的消除。

步骤3:利用加速度计测量倾斜角度

Arduino的自平衡机器人

有一个的MPU6050三轴加速度计和三轴陀螺仪。加速度传感器测量加速度沿三轴陀螺仪和三轴角速度的措施。衡量我们需要沿着Y轴和Z轴加速度值的机器人倾斜角度。这个(Y,Z)函数给出了在平面的坐标点的z轴正方向之间的角弧度(Z,Y)上飞机,以逆时针的角度积极的迹象(右半平面,y > 0),并顺时针角度负号(左半平面,y<0)。我们使用这个图书馆Jeff Rowberg写的从MPU6050读取数据。上传下面给出的代码看看倾角变化。


		

#包括“丝。” #包括“i2cdev。H” #包括“MPU6050。H” #包括“数学。”

MPU6050微处理器;

int16_t配件,accz; 浮;

无效setup() { 微处理器。initialize(); 系列。开始(9600);

无效loop() { accz =微处理器。getaccelerationz(); 配件=微处理器。getaccelerationy(); accangle = atan2(配件,accz)* rad_to_deg; 如果(isnan(accangle)); 别的 系列。

尝试移动机器人的前进和后退的同时保持在一定的角度倾斜。你会发现在你的串口监视器显示角度的突然变化。这是由于加速度干扰与Y和Z轴的加速度的水平分量。

步骤4:测量倾斜角度使用陀螺仪

MPU6050措施的3轴陀螺仪角速度(转速)沿三个轴的。我们的自平衡机器人,独自沿着X轴的角速度是足够的测量机器人的下降率。

在下面的代码中,我们读到的关于X轴陀螺的价值,将其转换为度每秒然后乘以它的循环时间获得角的变化。我们把这一角获得当前角。


		

#包括“丝。” #包括“i2cdev。H” #包括“MPU6050。”

MPU6050微处理器;

int16_t捷瑞士,gyrorate; 浮gyroangle = 0; unsigned long currtime,prevtime = 0;

无效setup() { 微处理器。initialize(); 系列。开始(9600);

无效loop() { currtime = millis(); looptime = currtime - prevtime; prevtime = currtime; 捷瑞士=微处理器。getrotationx(); gyrorate =地图(捷瑞士,32768,32767,250,250); gyroangle = gyroangle +(浮动)gyrorate * looptime/1000;

位置的MPU6050程序开始运行时是零倾斜点。倾斜角度将尊重这一点测量。

让机器人稳定在一个固定的角度,你会观察到的角度将逐渐增加或减少。它不会保持稳定。这是由于漂移是陀螺固有。

在上述代码中,循环时间使用millis()功能是内置的Arduino IDE计算。在后面的步骤中,我们将使用定时器中断来创建精确的采样间隔。本采样周期也将使用一个PID控制器产生的输出。

步骤5:结果与互补滤波相结合

Arduino的自平衡机器人

谷歌定义为“互补<em>结合在这样一种方式来加强或强调素质对方或另一个</em>R”。

我们从两个不同来源的两个测量的角。从加速度计测量得到的突然的水平运动和陀螺的测量逐渐偏离实际值的影响。换句话说,加速度计的读数被短时间信号的影响和持续时间长的陀螺信号阅读。这些读数,在某种程度上,相辅相成。把它们都使用互补滤波器我们得到一个稳定的角度,准确测量。互补滤波实质上是一个高通滤波器对陀螺和一个低通滤波器的作用在加速度计的测量的漂移和噪声的滤除。

currentangle = 0.9934 *(previousangle + gyroangle)+ 0.0066 *(accangle)

0.9934和0.0066是一个常数时间0.75s滤波器的滤波器系数,低通滤波器允许任何信号比这更长时间的通过和高通滤波器允许任何信号比这更短的时间通过。该滤波器的响应可以通过选择正确的时间常数调整。降低时间常数将允许更多的横向加速度,通过。

消除加速度计和陀螺仪偏置误差 下载并运行了代码网页校准MPU6050的偏移。由于偏移误差可以通过定义的偏移值在setup()程序如下图所示消除。


		

(1593)setyacceloffset微处理器; 微处理器。setzacceloffset(963); 微处理器。setxgyrooffset(40;

步骤6:生成输出PID控制

Arduino的自平衡机器人

PID是比例、积分和微分。这些条款提供了我们的自平衡机器人独特的反应。

的<strong>比例</strong>来看,正如它的名字所暗示的,生成的响应与误差。我们的系统中,错误的是机器人的倾斜角度。

生成响应的<strong>积分</strong>项基于累积误差。这基本上是所有错误的总和乘以采样周期。 (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容