打印
[RISC-V MCU 应用开发]

国产risc-v微控制器读取干簧管传感器

[复制链接]
52|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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),是一个通过所施加的磁场操作的电开关。当没有外部磁场时,两个金属片由于间隔仅几个微米而不接触,干簧管处于断开状态。当外部磁场(如永久磁铁或电磁线圈)靠近时,磁场在两个金属片端点位置附近产生不同极性,使得金属片磁化。随着磁力的增加,当磁力超过金属片本身的弹力时,两个金属片会吸合导通电路。当外部磁场远离时,金属片逐渐退磁,由于金属片自身的弹力,触点分开,电路断开。


2.2 干簧管传感器模块电路

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













使用特权

评论回复

相关帖子

沙发
dirtwillfly|  楼主 | 2025-6-22 09:57 | 只看该作者
本帖最后由 dirtwillfly 于 2025-6-22 13:15 编辑

3. 使用的hpm5361 硬件资源
在开发板上,使用GPIO29作为干簧管IO信号的采集引脚。

即PB11

使用特权

评论回复
板凳
dirtwillfly|  楼主 | 2025-6-22 09:57 | 只看该作者
本帖最后由 dirtwillfly 于 2025-6-22 13:46 编辑

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



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


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


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

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

void reed_switch_init(void);

#endif /* APPLICATIONS_APP_REED_SWITCH_H_ */

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


使用特权

评论回复
地板
dirtwillfly|  楼主 | 2025-6-22 13:25 | 只看该作者
5. 效果

当干簧管传感器模块靠近磁铁时,串口就会打印相应信息。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

1190

主题

35053

帖子

1122

粉丝