查看: 781|回复: 4

[入门教程] 掌控板制作水平仪【三轴加速度传感器系列1】

[复制链接]
123.jpg       
      水平仪的水准管是由玻璃制成,水准管内壁是一个具有一定曲率半径的曲面,管内装有液体,当水平仪发生倾斜时,水准管中气泡就向水平仪升高的一端移动,从而确定水平面的位置。水准管内壁曲率半径越大,分辨率就越高,曲率半径越小,分辨率越低,因此水准管曲率半径决定了水平仪的精度。
      这是传统水平仪的原理。作为一名创客怎么能没有自己的水平仪呢?于是乎就自己制作一个。
      掌控板自带3轴加速传感器。我们可以直接利用它来制作一个水平仪。我们先看看效果吧。
1. 认识掌控板的3轴
202002208652..png

掌控板平放在桌面上,正面朝上,屏幕沿金手指方向为X轴正方向,屏幕沿左边光线传感器方向为Y轴正方向,屏幕沿上方为Z轴正方向。
三轴加速度的测量范围为 -2g 到 +2g 之间。

2. 在屏幕中心位置(64,32)画出一个空心圆,半径为5
202002204378..png
202002202247..png

3. 在空心圆内部画出一个实心圆,当作一个实心小球,半径3
202002205165..png
202002206155..png
也就是说,当实心小球所处的位置是x=64,y=32的时候,刚好处于屏幕正中间,处于空心圆内。

4. 增加两个变量xx、yy,表示当前小球的位置,把x轴加速度映射到OLED显示屏的y方向(0-63),把y轴加速度映射到OLED显示屏的x方向(0-127),与x轴和y轴加速传感器联系起来。
202002206788..png
由于三轴加速传感器的范围是0-1,是小数,映射后依然可能会出现小数。因此,需要对映射的结果取整。
202002201180..png
再把取整后的结果依次和显示屏实心小球的x轴坐标和y轴坐标对应起来
202002207077..png
这里特别解释一下,为什么小球的X轴坐标为何对应Y轴加速度,而小球的Y轴坐标对应X轴坐标?如下图所示,X轴加速度正方向,而这个方向是屏幕的y方向;Y轴加速度正方向,而这个方向是屏幕的x方向。
202002208026..png
5. 当小球的xx坐标为64,yy坐标为32时,小球刚好在屏幕正中间,此时掌控板处于平衡状态,3颗RGB灯亮起红色光,并且蜂鸣器报警提示。
202002205252..png

6. 最后一直循环整个过程,使小球随着掌控板倾斜角度而滚动起来。

202002207254..png
初步效果视频。
额,等等,你以为这样子就完了吗?
NO。不是的。
还有几个问题:
1. 只有一个空心圆,一个小球(实心圆),界面不是很美观哈,也简单了点。
2. 你会发现小球移动到边界的时候会只见半边脸。哈哈哈。
3. 你会发现小球移动过程中,哪边低就移向哪边,而真正的水平仪是哪边高就移向哪边!
4. 映射在屏幕的范围,应该是0-63和0-127,上面我忘了修改过来。

因此,今天继续改进。
1. 增加水平、竖直方向的两根辅助直线。
202002207507..png
2. 改变映射范围,防止小球出边界。
    修改映射方向,改变小球随倾斜角度移动的方向。
202002204270..png
3. 再把比较完善的代码一起贴出来,大家一起交流。
202002208154..png







水平仪.zip

2.49 KB, 下载次数: 20

水平仪改进.zip

2.93 KB, 下载次数: 20

风悠扬0539  中级技师

发表于 2020-2-20 01:08:39

非常好非常牛啊
回复

使用道具 举报

常州-杨华  见习技师

发表于 2020-2-20 13:33:21

学习一下
回复

使用道具 举报

gada888  版主

发表于 2020-2-23 11:55:06

挺实用的
回复

使用道具 举报

想成为蟑螂恶霸  见习技师

发表于 2020-3-3 11:44:13

来学习一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail