为视障人士设计水平仪
本文介绍了为视障人士设计的水平仪的完整设计。它使用ADXL312加速度计测量水平和垂直平面内的重力,并在加速度计完全水平或垂直时发出蜂鸣声。
它还可以用作倾斜传感器来调平,例如,汽车应用中的拖车,其中水平仪可能位于远离操纵轮的地方。它还可以用作汽车稳定系统或无人机的子电路。
简介
Amar Latif 出现在Celebrity MasterChef 之后,在英国烹饪界引起轰动 .然而,Amar 不仅是一位好厨师,他还经营着自己的旅游公司,是一位励志演说家,徒步穿越了南美洲的大部分地区,还是一位电视名人。这个男人的超能力没有尽头吗?
可悲的是,有。阿玛尔有 95% 的盲人。随着技术的进步和世界努力跟上它的步伐,对于视障人士来说,战斗更加艰难。大多数技术进步都要求我们在屏幕前花更多时间。对于视障人士来说,过多的屏幕时间仍然是“如果”。
如果技术可以用来丰富视力障碍者的生活,那只能是一件好事。只有 18% 的注册盲人完全失明(或“黑盲”),这使得绝大多数人即使无法分辨细节也至少有一些视力。于是,盲人水平仪的想法诞生了。
设计大纲
倾斜传感器设计基于 ADXL312,这是一款低电流加速度计,可测量高达 ±1.5 g 在 x、y 和 z 轴上,数据通过 SPI 总线读出。该器件采用 5 mm × 5 mm 封装,待机模式下的功耗为 0.1 μA。它测量到 10 位分辨率,因此 ADXL312 可以检测低至 ±2.9 mg 在每个轴上。 ADXL312 将每个轴的重力数据存储为高达 ±511 的二进制补码值,微控制器可以读取这些数据并将其显示在单行 16 字符 LCD 显示屏上。图1显示了ADXL312的传感轴。
点击查看全尺寸图片
图 1. ADXL312 的传感轴。 (来源:Analog Devices)
该部件的全刻度读数为 1.5 g ,所以重力为 1 g 给出阅读 2 / 3个。因此,如果ADXL312正好是水平的,z轴寄存器应该读 2 / 3 满刻度,而 x 和 y 轴应读数为零。同样,当 ADXL312 完全垂直时,x 轴读数应为 2 / 3 满刻度,而 y 和 z 轴应读数为零。如果 ADXL312 开始远离任何轴倾斜,根据倾斜角的正弦,最大读数开始减小,而其他轴上的读数开始增加。
ADXL312 内部
ADXL312 是一种微机电系统 (MEMS),由多晶硅表面微加工结构构成,该结构建在硅晶片的顶部。多晶硅弹簧将结构悬挂在晶圆表面上,并提供对加速力的阻力。
固定硅手指与移动质量块上的手指交错,以创建其特性可以测量的差分电容器。加速度使光束偏转并使差分电容器不平衡,从而产生幅度与加速度成正比的传感器输出。结构如图2所示。
点击查看全尺寸图片
图 2. ADXL312 的内部工作原理。 (来源:Analog Devices)
ADXL312 可以使用 I 2 寻址 C 或 SPI,x、y 和 z 数据存储在六个内部 8 位寄存器中。它还具有许多其他功能,包括 32 级 FIFO、两个多功能中断、偏移寄存器、机械自检和自动休眠模式。
灵位设计
倾斜传感器的完整电路图如图3所示。
ADXL312 的最大电源电压为 3.6 V,而 LCD 显示器和蜂鸣器需要 5 V,因此电路的主要输入为 5 V,并使用 3.3 V、150 mA 线性稳压器 (ADP121) 将其调低至为 ADXL312、微控制器和 E2 存储器供电。
微控制器上的端口 B,引脚 2(CAL 引脚)被一个 10 kΩ 电阻器拉高。它还有一个跳线,使其能够接地。启动时,微控制器询问 CAL 引脚的状态,如果该引脚被跳线拉低,它会读取 x、y 和 z 寄存器,将这些读数从零中减去,然后将结果加载到内部的偏移寄存器中ADXL312 并将它们存储在外部 E2 存储器 25AA040 中。 ADXL312 自动将偏移寄存器的读数添加到任何未来的测量中,无需处理器交互,从而消除校准偏移。
如果移除跳线,CAL 引脚会被拉高并绕过校准程序。偏移读数直接从 E2 存储器读取并加载到 ADXL312 的偏移寄存器中。因此,在制造过程中,可以将水平仪安装在校准夹具中,同时 CAL 引脚保持低电平,可以校准设备,并将偏移值存储在 E2 存储器中。校准后,跳线被移除,随后上电时,E2 存储器被询问,校准后的偏移读数加载到 ADXL312 的偏移寄存器中。
然后,软件对每个轴执行 8 次读数,结果取平均值,然后显示在 16 字符 LCD 显示屏上。显示每 100 ms 更新一次。
点击查看全尺寸图片
图 3. 视障人士水平仪的完整示意图。 (来源:Analog Devices)
图 4 显示当每个传感器接近其零读数时达到最大灵敏度。这是正弦波的斜率最陡峭的地方,因此对于倾斜的任何变化,重力读数的变化最大。
图 4. 显示了 g 力随角度的正弦变化。 (来源:Analog Devices)
幸运的是,水平仪只需要在每个传感器完全水平且传感器读数接近零时测量倾斜度。
编写该软件是为了能够同时校准 x 轴和 z 轴。很容易将零件放置在水平平台上并校准倾斜传感器的 x 轴。但是,此时 z 轴将受到 1 g 的力 ,因此需要进行 z 读数,与 1 g 处的满量程计数进行比较 ,以及加载到偏移寄存器中的任何错误。通过在水平和垂直平面上进行校准,可以实现对倾斜传感器各轴的更精确校准,但这需要两阶段校准和软件修改。
表 1 显示了二进制补码数据的示例。正数遵循传统的二进制表示法。负数使用最高有效位 (MSB) 作为符号位;因此,正数的 MSB 为 0,负数的 MSB 为 1。
表 1. 补码数据示例
十进制 二进制 +51101 1111 1111+100 0000 0001000 0000 0000-111 1111 1111-51110 0000 0001通过将所有位取反,然后加 1,可以找到正数的二进制补码。因此,当从计数 0 转换为计数 –1 时,代码从 00 0000 0000 变为 11 1111 1111。
软件读取 x 和 z 寄存器,如果任一寄存器的值为 0 或 1023 (11 1111 1111),它将端口 B 的位 5 设置为高电平,从而打开晶体管 Q1 并发出 5 V 蜂鸣器。当倾斜传感器完全水平时,x 轴的读数为 0 或 1023,当完全垂直时,z 轴的读数为 0 或 1023。仅当两个寄存器不等于 0 或 1023 时蜂鸣器停止鸣响。
准确性和进一步发展
仅考虑一个轴,最大读数为 1 g 当重力沿该轴作用时达到,并且该读数减少到 0 g 当零件倾斜 90° 时,如图 5 所示。
图 5. 使用重力读数计算倾斜角。 (来源:Analog Devices)
因此,施加的重力由方程决定
其中 Ø 是相对于水平面测量的倾斜角。如果零件可以测量到 2.9 mg 的分辨率 ,那么它可以分解为 0.17° 的角度。很难确定标准气泡水平仪的准确度数字,因为很难确定气泡的准确位置。然而,根据实验,在气泡看起来偏离中心之前,1.2 m 水平仪的末端可以移动大约 3.2 mm(两个未组装 PCB 的宽度!)。这相当于大约0.15°的角度,表明我们可以用电子倾斜传感器代替气泡水平仪,而分辨率损失很小。
如果需要更高的精度,ADXL313 可在 1 g 范围内提供 11 位分辨率。接口和寄存器组与ADXL312非常相似,因此软件不需要太多修改。 ADXL355 提供了相当低的噪声和更高的分辨率。
ADXL312 的噪声密度为 340 μg /√Hz,带宽越低噪声越好。该部件的带宽是可编程的(从 3.125 Hz 到 1600 Hz,默认设置为 50 Hz)。虽然降低带宽会改善噪声,但这也会降低显示器的更新率。对于此设计,带宽设置为 6.25 Hz,这意味着 rms 噪声为 850 μg .还可以通过获取更多读数并对其进行平均来降低噪音。
进一步的改进是让 LCD 读数显示度数。但是,如果要在软件中包含正弦和余弦,这需要使用 C 库中的数学函数。这些功能对于低端微控制器来说占用太多代码空间。使用泰勒级数展开可以实现对正弦函数的近似逼近,这应该占用更少的代码空间。
结论
ADXL312 提供低成本电子倾斜测量系统,可轻松连接到低端微控制器。前面描述的设计已经证明它可以与传统气泡水平仪的精度相媲美,但具有电子接口。这使其能够在需要测量倾斜度的大型设计中用作子系统,例如拖车调平系统、稳定性控制系统和无人机。
更重要的是,它可以用来增加视障人士的独立性,本文展示了一个完整的系统级设计,包括硬件、软件和非易失性存储器,以及音频和视频输出。
西蒙·布兰布尔 1991 年毕业于伦敦布鲁内尔大学,获得电气工程和电子学学位,专攻模拟电子学和电源。他的职业生涯是在模拟电子领域度过的,曾在凌力尔特公司(现为 ADI 公司的一部分)工作。可以通过 [email protected] 联系到他 .
相关内容:
- 优化高精度倾斜/角度感测:加速度计基础
- 优化高精度倾斜/角度感测:建立基线性能
- 优化高精度倾斜/角度感应:提高性能
- 使用硅温度传感器进行精确测量
- 在消费类便携式设备中实现准确的运动跟踪
有关 Embedded 的更多信息,请订阅 Embedded 的每周电子邮件通讯。
嵌入式