×

基于ATtiny1627 MCU的运动感应器

消耗积分:0 | 格式:rar | 大小:0.57 MB | 2022-12-21

香香技术员

分享资料个

我有一位管理系内电子实验室的实验室工程师朋友。他解决的问题之一是计算房间内的学生人数,以便量化实验室的使用情况。有很多方法可以解决这个问题——视觉摄像头、雷达传感器、门开关等……但是,该解决方案还必须符合有关隐私的法律,并且可以在不损坏实验室空间的情况下进行安装——这意味着一些解决方案,例如视觉相机,几乎立即离开了桌子。

虽然他已经退休,但这个问题仍然是一个有趣的练习。解决此问题的一种可能方法是使用无源红外 (PIR) 传感器。PIR 传感器被动地吸收传感器视场中的红外辐射。当环境中的红外线量发生变化时,传感器的输出也会发生变化。这表现为大直流偏置上的小交流信号。通过监测抵消直流偏移的差分电压,可以检测到环境的变化。

所述微控制器ATtiny1627家族包含带有可编程增益放大器(PGA)差动模拟数字转换器(ADC) ,其可提供此传感器敏感的模拟接口。ATtiny1627 系列中的 ADC 通过过采样可以达到 17 位的最大分辨率,但它通常用于 12 位分辨率。

模拟传感器调节和接口
标准单端 ADC 无法直接可靠地测量 PIR 传感器。交流信号(当存在时)非常小,直流偏置非常大。对此的一种解决方案是将 PIR 传感器输出视为差分信号,而不是相对于地面测量的信号。

在信号进入ATtiny1627进行差分放大和测量之前,两个 RC 低通滤波器(以不同的滚降频率)用于创建差分信号的“正”和“负”分量。

正侧 RC 滤波器由一个 470kΩ 欧姆电阻器和一个 100nF 电容器构成,截止频率为 3.38Hz。该滤波器让来自 PIR 传感器的交流信号和直流偏置一起通过,同时阻止高频噪声。

负侧 RC 滤波器由一个 470kΩ 电阻器和一个 2.2μF 电容器构成,截止频率为 0.154Hz。该滤波器旨在通过直流偏置,同时拒绝来自被动红外传感器的交流信号。

两个低通滤波器创建了一个有效的带通滤波器——低于两个滤波器截止频率的频率出现在两个输入端(减去滤波器的任何损耗)。由于 ADC 是差分的,因此这些信号被减去。高于两个截止频率的信号会被 RC 滤波器严重衰减,从而最大限度地减少它们的影响。最后,被一个滤波器衰减并被另一个滤波器通过的信号将是最强的输入信号。下图显示了MPLAB® Mindi™ 模拟仿真器中滤波器响应的仿真。

软件操作
启动时,ATtiny1627 会初始化正在使用的外设:

  • 带 PGA 的差分 ADC
  • 周期性中断定时器 (PIT)
  • 事件系统 (EVSYS)
  • USART(用于串行通信,如果启用)

然后微控制器进入预热阶段,在该阶段初始化设备上的 2 个数字滤波器——一个短期平均滤波器和一个长期平均滤波器。这些过滤器用于检测随时间的运动。在预热期间,LED 以 1Hz 的频率闪烁。

初始化外围设备和数字滤波器后,微控制器进入睡眠状态。在睡眠状态下,微控制器的功耗非常低,从而延长了电池寿命(有关各种设置下功耗的更多信息,请参阅应用说明)。通过事件系统中连接的 PIT 信号定期触发 ADC,而不会唤醒微控制器。

执行转换后,ADC 通过触发中断唤醒微控制器。微控制器使用来自 ADC 的值更新数字滤波器。为了确定是否发生了运动,微控制器会比较长期和短期滤波器之间的差异,以查看是否超过了阈值。如果超过阈值,则检测到运动,并且 LED I/O 线连接到来自 PIT 的 4 Hz 信号。

修改 PIR 传感器板
为了演示此应用,使用 MikroE 的 PIR Click Board™ 作为起点。该板对 PIR 传感器的输出进行过滤、放大和测量(通过内置的 ADC)。但是,ATtiny1627 不需要这些部件中的大部分——2 个运算放大器、6 个电阻器和 4 个电容器可以通过使用带有 PGA 的内部差分 ADC 从该板的部件列表中删除。(注意:这些说明还删除了包含的 12 位 ADC 和相关组件。)

警告:修改开发板风险自负!

首先,从点击板上移除以下部件:

  • R2、R3、R4、R5、R7、R8、R9、R10、R11 和 R12 - (可选)也可以移除 R1 以节省电量
  • U2和U3
  • C1、C2、C3、C6 和 C7

然后,将以下部分添加到封装中:

  • R5 = 470kΩ 电阻
  • R8 = 100nF 电容
  • R11 = 470kΩ 电阻
  • C1 = 2.2µF 电容

安装完所有部件后,添加以下跳线和短裤(有关视觉指南,请参见下图):

  • J1:将 R11 的右侧连接到 C4 的顶部焊盘
  • J2:将 R4 的顶部焊盘连接到接头的右上方引脚(标记为 NC)
  • J3:短接U3右侧底部两个焊盘
  • J4:短接U3左侧中间两个焊盘
  • J5:将 C1 的顶部焊盘连接到接头的左上方引脚(标记为 AN)

设置演示
关闭电源,插入修改后的板子和 ATtiny1627 Curiosity Nano,如图:

接下来,使用 USB 电缆将 Curiosity Nano 连接到您的 PC。

好奇心纳米编程
首先,从 Github 获取代码示例的副本,然后解压缩下载的文件夹。启动 Microchip Studio(以前称为 Atmel Studio)并打开项目。编译和编程 ATtiny1627。如果一切顺利,在传感器前挥手或走动应该会导致板上 LED 闪烁。

程序选项
在此程序中,可以启用或调整一些设置以进行调试或与其他 PIR 传感器连接:

  • PIR_OVERSAMPLE_RATE – 设置唤醒前 ADC 收集的样本数量。影响 ADC 的分辨率和噪声抑制。
  • PIR_SAMPLE_RATE_PER_SECOND – 设置唤醒 ADC 以收集样本的次数。影响应用程序的延迟。
  • PIR_PGA_GAIN – 设置 ADC 内部 PGA 的增益。更改此值将影响信号的比例。
  • PIR_DETECTION_THRESHOLD – 设置检测运动的阈值。如果传感器检测不到运动,或检测到运动时没有运动,则应调整此值。
  • PIR_WARMUP_TIME_MS – 如果需要,设置 PIR 传感器预热的延迟时间。
  • PIR_LONG_TERM_FILTER_RANGE – 设置长期滤波器平均使用的样本数。
  • PIR_SHORT_TERM_FILTER_RANGE – 设置短期滤波器平均使用的样本数。
  • PIR_DEBUG_MESSAGES – 取消注释时,此宏启用到 PC 的 UART 调试消息。MPLAB Data Visualizer 可用于查看该数据(见下节)。
  • 使用 MPLAB Data Visualizer 进行调试
  • MPLAB Data Visualizer 是一个免费插件,可在终端窗口或图形中显示来自虚拟 COM 端口的数据。在此应用中,启用 PIR_DEBUG_MESSAGES 将导致 ATtiny1627 微控制器通过板载编程器向 PC 发送数据。

使用 MPLAB Data Visualizer 进行调试
MPLAB Data Visualizer 是一个免费插件,可在终端窗口或图形中显示来自虚拟 COM 端口的数据。在此应用中,启用 PIR_DEBUG_MESSAGES 将导致 ATtiny1627 微控制器通过板载编程器向 PC 发送数据。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !