Windows IoT借助树莓派C#做接近开关传感器试验
【摘要】 接近传感器,是代替限位开关等接触式检测方式,以无需接触检测对象进行检测为目的的传感器的总称。能检测对象的移动信息和存在信息转换为电气信号。在换为电气信号的检测方式中,包括利用电磁感应引起的检测对象的金属体中产生的涡电流的方式、捕测体的接近引起的电气信号的容量变化的方式、利石和引导开关的方式。感应型接近传感器的检测原理:通过外部磁场影响,检测在导体表面产生的涡电流引起的磁性损耗。在检测线圈内使...
接近传感器,是代替限位开关等接触式检测方式,以无需接触检测对象进行检测为目的的传感器的总称。能检测对象的移动信息和存在信息转换为电气信号。在换为电气信号的检测方式中,包括利用电磁感应引起的检测对象的金属体中产生的涡电流的方式、捕测体的接近引起的电气信号的容量变化的方式、利石和引导开关的方式。
感应型接近传感器的检测原理:
通过外部磁场影响,检测在导体表面产生的涡电流引起的磁性损耗。在检测线圈内使其产生交流磁场,并检测体的金属体产生的涡电流引起的阻抗变化进行检测的方式。
此外,作为另外一种方式,还包括检测频率相位成分的铝检测传感器,和通过工作线圈仅检测阻抗变化成分的金属传感器。
在检测体一侧和传感器一侧的表面上,发生编译器的状态。
试验准备:
1、树莓派3B,接近开关一个,发光三极管一个。
2、安装了Windows IoT 系统,Windows 10 + Visual Studio 2022开发环境
接线图
试验要完成的任务:
当接近开关靠近金属物体时,主动通知,亮起三极管的灯。
当接近开关远离金属物,随即三极管熄灭。
1、创建一个类ProximitySwitch,用来实现对接近开关引脚监听,引脚电平变化时做出反应,这里用一个回调方法实现。定义一个GpioPin的控制监听对象。一个回调方法。
/// <summary>
/// 监听控制
/// </summary>
private GpioPin _ListenPin;
/// <summary>
/// 监听结果回调
/// </summary>
private Action<GpioPinValue> _PinValueChanged;
初始化接近开关的引脚对象,并设定回调方法
/// <summary>
/// 初始化引脚
/// </summary>
/// <param name="pin">引脚编号</param>
/// <param name="mode">工作模式</param>
/// <param name="value">初始值</param>
void Init(int pin, GpioPinDriveMode mode, GpioPinValue value)
{
var gpio = GpioController.GetDefault();
_ListenPin = gpio.OpenPin(pin);
_ListenPin.SetDriveMode(mode);
_ListenPin.Write(value);
_ListenPin.ValueChanged += Pin_ValueChanged;
}
private void Pin_ValueChanged(GpioPin sender, GpioPinValueChangedEventArgs args)
{
_PinValueChanged(sender.Read());
}
2、再创建一个控制引脚输出的类PinSetting,类负责初始化一个引脚,并提供写入高低电平
public class PinSetting
{
GpioPin _Pin;
public PinSetting(int pin)
{
var gpio = GpioController.GetDefault();
_Pin = gpio.OpenPin(pin);
_Pin.SetDriveMode(GpioPinDriveMode.Output);
}
/// <summary>
/// 执行写入
/// </summary>
/// <param name="value"></param>
public void WritePin(GpioPinValue value)
{
_Pin.Write(value);
}
}
3、测试一下,这里是通过一个uwp点page上button出发
PinSetting pin;
ProximitySwitch proximity;
private async void Button_Click(object sender, RoutedEventArgs e)
{
pin = new PinSetting(27);
proximity = new ProximitySwitch(6);
proximity.StartListen(v => {
pin.WritePin(v);//通过监听结果回调触发
});
}
最终效果
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)