电子说
这里演示了在应用程序中如何在不需要外部电平移位器的情况下使用具有内置多电压输入/输出外围设备的MCU。
这个由两篇文章组成的系列的第一篇文章讨论了一种称为多电压 I/O (MVIO) 的新外设,该外设可用于AVR DB系列微控制器。简而言之,MVIO 是微控制器芯片上的内部电平转换器,它允许一个 I/O 端口在与设备其余部分不同的电压域中工作。这减少了物料清单 (BOM) 和设计区域,同时提供了比外部解决方案更大的灵活性。
本文将介绍在应用程序中使用的 MVIO。它基于一个使用 3D 磁力计作为窗户安全传感器来检测窗户是打开还是关闭的演示。
检测窗户是否打开的最简单方法之一是使用磁簧开关。簧片开关是一种带有电触点的简单装置,可通过磁场的存在打开或关闭。通过将磁铁安装到窗户并将开关固定在固定位置,可以通过触点的连续性来确定窗户的状态。但是,簧片开关有两个限制。
首先,它无法区分破裂的窗户和打开的窗户。如果使用了报警器,那么在不关闭报警器的情况下是无法破解窗户的。其次,通过在附近放置第二块磁铁,可以很容易地篡改簧片开关。当窗户打开时,次级磁铁将开关的触点固定到位。
为了提高防篡改和可用性,使用磁力计开发了一种替代解决方案。与打开或关闭的簧片开关不同,磁力计测量和数字化磁场分量。通过监测场分量,传感器可以区分破裂的窗户和打开的窗户,并且对放置在传感器附近的磁铁具有更强的防篡改能力。
为了展示基于磁力计的解决方案的优势,我们与基于半导体的传感解决方案供应商 Melexis 共同开发了一种智能窗户安全传感器。它基于 AVR DB 系列的微控制器,这是第一款具有 MVIO 外设的微控制器。在这里,MLX90392 3D 磁力计已用于监测磁场强度。磁力计由 1.8 V 供电,并通过 I 2 C进行通信。
该演示还使用MLX90632远红外线 (FIR) 传感器来监测房间的温度。选择的 FIR 传感器比本地温度传感器更好,因为节点会遇到气流和阳光直射,这可能会导致测量误差。虽然 MLX90632 采用 3.3 V 供电,但还有一种器件型号专为 1.8 VI 2 C 通信而设计。
对于无线连接,为简单起见,使用了RN4870蓝牙模块。这允许用户通过智能手机与演示进行交互,而不是定制开发的通信桥。但是,在生产应用中,我们建议为每个传感器节点切换到更简单、功耗更低的无线电解决方案,例如Sub-GHz无线电。源代码和文档链接在文末。
原型设计和开发设置
对于开发,我们使用了Curiosity Nano Base for Click Boards (AC164162)和AVR DB Curiosity Nano 开发板 (EV35L43A)。MikroElektronika 的 Click 板上提供 RN4870 蓝牙模块和 MLX90632 温度传感器(RN4870 Click和IrThermo 3 Click)。MLX90392 磁力计由 Melexis 在 MLX90392 的预组装评估板上提供。
在最初的传感器通信测试之后,我们很快意识到需要一个测试夹具来控制磁铁和传感器的位置。利用我们潜在的手工艺能力,我们用纸板和热胶组装了一个简单的测试夹具,如下所示。
图 1 在此原型测试夹具和设置中,连接到夹具的小白盒来自现成的门开关。随附的磁铁用作测试目的的标准安全磁铁的示例。资料来源:微芯片
磁力计
从概念上讲,这个系统的窗口警报方面似乎是最容易实现的,但它比我们最初想象的要复杂得多。增加复杂性有几个原因。
首先,磁力计非常灵敏。磁铁或磁力计位置的微小差异会使数字显着下降。下图来自未经校准或标准化的磁力计的原始值(图 2)。在数据收集过程中,滑动机构来回滑动。
图 2 该图显示了原始磁力计场分量强度。资料来源:微芯片
我们没有直接监测每个组件的最大值和最小值,这将根据传感器的安装位置而变化,而是使用总磁场强度 (R = √(X 2 + Y 2 + Z 2 )。出于软件优化的原因,应用程序使用磁场强度的平方。下图显示了相同测试期间的磁场大小。在应用程序中,大小是根据归一化的 16 位值计算的,如图 3 所示。
图 3 该图显示了测试期间磁场强度的大小。资料来源:微芯片
为了使系统整体更灵敏,每个轴的磁场值都进行了归一化。从显示的样本数据来看,Y 轴的幅度最大,其次是 Z,然后是 X。每个轴以不同的速率增加。这在直觉上是有道理的,因为磁通量在垂直方向上最高,在平行方向上最弱。为了标准化每个轴,微控制器通过将结果右移以适合有符号的 8 位值来缩放每个轴。在用户校准序列期间计算比例因子,以使系统整体更加灵敏。
最初,该应用程序还打算计算 X/Y、X/Z 和 Y/Z 的角度比,以获得额外的防篡改功能。但在测试中,由于场强的巨大差异,这种计算被发现非常不可靠。这些角度增加了演示的内存使用和活动时间。我们发现应用程序在没有它们的情况下运行良好,并通过宏禁用了它们。从早期数据计算的角度比如下所示(图 4)。
图 4 磁力计的 X/Y、X/Z 和 Y/Z 角比是根据早期数据计算得出的。资料来源:微芯片
为了可靠地利用磁力计,我们开发了一个四步校准过程。此过程必须在初始设置期间执行,但如果需要,用户可以稍后重新触发它。校准应用程序的四个步骤是:
归零
正常化
设置阈值
确认
在归零时,窗口完全打开,使磁铁尽可能远离传感器。每个轴记录的平均值定义为偏移值。接下来,关闭窗口,使磁铁非常靠近传感器。每个轴的场强在这个位置被平均。在设定的样本数之后,微控制器计算每个轴的归一化因子。
接下来,用户将窗口打开到所需的打开/关闭阈值。当用户打开窗口时,应用程序正在监控记录的最大场强 (R 2 )。根据定位,最大场强应出现在或接近关闭窗口的位置。
在这一步之后,用户将关闭窗口。此时,系统正在检查窗口关闭时是否会触发警报。如果警报确实跳闸,则校准失败并应重新进行。另一方面,当校准成功时,将值写入内部 EEPROM 以供以后使用。
实现温度传感器
为了与 MLX90632 传感器接口,我们开发了一种新的轻量级 API,旨在利用微控制器特定的功能来提高性能。对于 MLX90632 温度传感器,我们实施了一个校准常数缓存系统,将传感器的出厂常数存储到微控制器的 EEPROM 中。这是由微控制器自动执行的。启动时,微控制器检查其 EEPROM 以确定来自传感器的常数是否已被编程到内存中。为了验证常数,微控制器:
将存储的序列号与传感器的序列号匹配
验证内存段末尾序列号的异或
如果任一检查失败,微控制器将重新获取传感器的常数,计算浮点等效值,然后将它们重新写入 EEPROM。如果内存被认为是有效的,微控制器只需读取存储的常量,而不是重新获取和重新计算它们。
可以通过取消定义宏在软件中禁用此功能。或者,如果在应用程序启动时按住校准按钮,应用程序将以安全模式启动,该模式认为 EEPROM 中的所有设置和值无效,并将重新获取/重新编程(如果启用)。
使用 1.8 V
在 1.8 V 时,必须比更常见的 3.3 V 或 5 V 类型更仔细地处理串行通信。例如,微控制器中的内部上拉电阻对于总线来说可能太弱而无法满足时序要求。为了解决这个问题,我们在总线上添加了外部上拉电阻。
在早期测试中,我们尝试使用精密数字万用表直接测量外部 1.8V 电源的电流消耗。然而,万用表的负载电压刚好足以使总线在串行通信期间断电。我们在原型中解决了这个问题,方法是在电源中添加一个大型槽路电容器,以确保在仪表测量电流消耗时总线保持在掉电阈值以上。这在整个应用中都不是问题,因为可以从电源输入测量电流,并且电源在板上进行调节,而不是在外部进行调节。
最终结果
一旦系统正常运行,我们就开始开发专用 PCB。下图是已显影的电路板(在没有塑料外壳的情况下拍摄)。该原型系统将于 6 月 27 日至 29 日在Sensors Converge 2022的 Microchip 展位 #218 上展示。
图 5 原型板没有塑料外壳的照片。资料来源:微芯片
连接混合电压域是许多设计的关键要素。在大多数情况下,必须使用外部电平转换器在电压域之间进行转换。MVIO 消除了这个组件并将其集成到微控制器中,这使得开发人员几乎看不到它。有许多可能的设计和应用将受益于在系统中添加 MVIO 外设。
上述应用程序的源代码和文档可在以下位置获得:
https://github.com/microchip-pic-avr-examples/avr128db28-smart-security-sensor-mplab
作者特别感谢 Melexis 协助开发此应用程序。
—Robert Perkel 是 Microchip Technology 的 8 位 MCU 业务部门的应用工程师。
审核编辑 黄昊宇
全部0条评论
快来发表一下你的评论吧 !