[RISC-V MCU 应用开发] 国产risc-v微控制器读取干簧管传感器

[复制链接]
1792|5
 楼主| dirtwillfly 发表于 2025-6-22 09:56 | 显示全部楼层 |阅读模式
本帖最后由 dirtwillfly 于 2025-6-22 13:46 编辑

1. 使用的软硬件
1.1 开发环境
1)RT-Thread Studio

1.2 硬件
1)干簧管传感器模块  1块
2)HPM5361EVK        1块

3)杜邦线                 若干


2. 干簧管传感器

2.1 原理介绍
干簧管是一个电子开关,也叫磁簧开关(Reed Switch),是一个通过所施加的磁场操作的电开关。当没有外部磁场时,两个金属片由于间隔仅几个微米而不接触,干簧管处于断开状态。当外部磁场(如永久磁铁或电磁线圈)靠近时,磁场在两个金属片端点位置附近产生不同极性,使得金属片磁化。随着磁力的增加,当磁力超过金属片本身的弹力时,两个金属片会吸合导通电路。当外部磁场远离时,金属片逐渐退磁,由于金属片自身的弹力,触点分开,电路断开。

9579685760c74e792.png 74289685760d1d1c0c.png
2.2 干簧管传感器模块电路

从电路图可以了解到,模块的信号输出为IO输出,且有上拉电阻,平时干簧管无触发时为高电平,有触发时为低电平。
65790685762ca02aca.jpg












 楼主| dirtwillfly 发表于 2025-6-22 09:57 | 显示全部楼层
本帖最后由 dirtwillfly 于 2025-6-22 13:15 编辑

3. 使用的hpm5361 硬件资源
在开发板上,使用GPIO29作为干簧管IO信号的采集引脚。
2819168579103201c5.png
即PB11
598036857913ecd837.png
 楼主| dirtwillfly 发表于 2025-6-22 09:57 | 显示全部楼层
本帖最后由 dirtwillfly 于 2025-6-22 13:46 编辑

4. hpm5361软件部分
在app_reed_switch.c文件内:
使用#include包含相关的头文件
  1. #include <rtthread.h>
  2. #include <rtdevice.h>
  3. #include "app_reed_switch.h"
  4. #include <drv_gpio.h>
  5. #include <hpm_soc.h>



使用宏定义获取PB11对应的pin:
  1. #define REED_SWITCH_PIN  GET_PIN(B, 11)


初始化gpio,这里配置io为输入模式,配置了中断为下降沿触发,以及触发时的回调函数为reed_switch_irq() ,并使能了中断。
  1. //reed_switch GPIO初始化
  2. void reed_switch_init(void)
  3. {
  4.     rt_pin_mode(REED_SWITCH_PIN, PIN_MODE_INPUT);
  5.     rt_pin_attach_irq(REED_SWITCH_PIN, PIN_IRQ_MODE_FALLING, reed_switch_irq, RT_NULL);
  6.     rt_pin_irq_enable(REED_SWITCH_PIN, PIN_IRQ_ENABLE);
  7. }


中断回调函数:
  1. //中断回调函数
  2. void reed_switch_irq(void *parameter)
  3. {
  4.     rt_kprintf("reed switch is triggered\n");
  5. }

在在app_reed_switch.h文件内:
  1. #ifndef APPLICATIONS_APP_REED_SWITCH_H_
  2. #define APPLICATIONS_APP_REED_SWITCH_H_

  3. void reed_switch_init(void);

  4. #endif /* APPLICATIONS_APP_REED_SWITCH_H_ */

最后,在main函数,先添加上包含app_reed_switch.h头文件:
  1. #include "app_reed_switch.h"
然后在main函数中调用reed_switch_init()
79559685798a1cd9e9.png

 楼主| dirtwillfly 发表于 2025-6-22 13:25 | 显示全部楼层
5. 效果

当干簧管传感器模块靠近磁铁时,串口就会打印相应信息。
45956685793b28fef5.png
幻境之眼 发表于 2025-7-8 13:23 | 显示全部楼层
干簧管传感器,貌似很少见啊,具体作用是啥?
蚊子的噩梦 发表于 2025-7-16 09:10 | 显示全部楼层
这个项目看起来挺有趣的,使用RT-Thread Studio进行开发环境搭建是个不错的选择。你已经成功读取干簧管传感器的数据了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:欢迎进入TI MCU论坛      21ic TI技术交流1群:61549143(已满),  21ic TI技术交流2群:311421422 我的博客:http://blog.timcu.com/

1199

主题

35121

帖子

1122

粉丝
快速回复 在线客服 返回列表 返回顶部