电子说
步骤1:我们需要做的事情:
某些部分可以替换,并且必须对代码进行一些修改以适合您的硬件。
在此项目中,我们将使用:
-面包板
-微处理器,我使用了Arduinoboard
-电线
-跳线
-陀螺仪XV-8100
-Nunchuck Wii(用于加速度计)
-Nunchuck Arduino的Wii适配器
步骤2:构建。..
该电路由一个陀螺仪直接连接到您的arduino的端口0,并在I2C端口连接一个双节棍wii。
组装陀螺仪:
1。 -将陀螺仪插入面包板
2。 -导线连接:
-陀螺仪的Vo引脚连接到arduino的模拟端口0(浅橙色导线)
-陀螺仪的G引脚接地(白色导线)
-陀螺仪的V +引脚连接到Vdd (3.3V)(橙色线)
组装加速度计:
1。 -将适配器插入双节棍
2。 -使用适配器
3将双节棍插入arduino。 -将加速度传感器像上面的照片一样放置
步骤3:一些其他信息,然后再进行
我们可以使用两种不同的技术从两个传感器测量角度。
要使用陀螺仪测量角度,我们必须对信号进行积分。但是为什么我们必须这样做呢?
因为陀螺仪给了我们角速度,所以获取角度的一种简单方法是将角速度乘以时间[angle = angle + w * dt]
要使用加速度计来测量角度,为了检测加速度计各轴上的重力,这意味着重力加速度在传感器各个方向上的投影使我们对角度有了一个了解。 [angle_accel = arctg(Ay/sqrt(Ax ^ 2 + Az ^ 2))]
那么为什么我们要使用两个传感器而不是一个?
要充分利用两种传感器的特性。如果您查看图形,陀螺仪数据连续增加,这被称为漂移,并且加速度计数据在短时间内变化很大。
如何合并两个信号?
我们将使用一种称为互补滤波器的技术。我不知道其背后的确切理论,但可以正常工作。互联网上有一些信息,如果您需要更多信息,只需在Google上搜索即可。该链接包含很多信息,并且可能有用。
filtered_angle = HPF *(filtered_angle + w * dt)+ LPF *(angle_accel);其中HPF + LPF = 1
HPF和LPF的值可以在该链接上的filter.pdf文件中找到。谢谢来自“ DIY Segway”的人们。
出于测试目的,我们将像这样设置此值,HPF = 0.98,LPF = 0.02。
步骤4:代码:
该代码是对我在另一个项目中使用的代码的改编。可能有一些未使用的变量。
我使用一个库从http://todbot.com/blog/读取双节棍数据。谢谢Tod E. Kurt。
对代码的注释是葡萄牙语,只要有空闲时间,我就会翻译它。
代码通过串行线以这种模式输出一些数字:
dt:w:teta:间距:filter_teta $
angular_velocity:gyro_angle:accel_angle:filtered_angle $
因此您可以在串行终端上保存此值并绘制图形或将角度用于其他用途。 br》如果您需要有关代码的任何解释,请随时询问。
代码已压缩。只需解压缩,打开并将其上传到您的arduino。
步骤5:测试和结论
要测试系统,我使用一个名为Termite的程序保存了数据,然后将其导入excel并绘制图形以查看过滤器的性能。结果是惊人的。当然,您可以使用该信号来驱动电动机或其他东西。
责任编辑:wv
全部0条评论
快来发表一下你的评论吧 !