亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

MCP3008 上的高灵敏度水传感器

使用 Phantom YoYo 高灵敏度带有 SPI 接口的 MCP3008 8 通道 10 位 ADC 上的水传感器。

简介

背景

在即将开展的项目中,我使用 MCP3008 来监控多个传感器。在这个项目中,我想详细介绍在带有 SPI 接口的 MCP3008 8 通道 10 位 ADC 上使用 Phantom YoYo 高灵敏度水传感器与 Raspberry Pi 2、Windows 10 IoT Core 和 C#。

使用 MCP3008

ADC 是一种模数转换器。模拟信号被转换为数字并读入您的应用程序。 MCP3008 是一个 10 位 ADC,这意味着它使用 10 位来表示通道上的值。该值将表示为 0 到 1023 之间的数字(总共 1024 个可能值)。然后将该数字转换为有意义的值。例如,假设我想测量其中一个通道上的电压,从通道读取的值为 523。我知道最大电压为 3.3V。通道上的电压使用公式计算

值/最大值 * Vref

求解我得到的电压

523 / 1023 * 3.3

其值为 1.687V .我通过首先对读数进行归一化,然后将归一化的读数值乘以已知最大值 3.3V 来计算该值。

当获得准确的电压测量很重要时,我强烈建议测量 Raspberry Pi 的实际电压,并在计算中使用该值以从 ADC 获得更准确的转换。当我测量我的时,我发现输出为 3.301V(在源代码中找到的值)。与实际相差不远,但其他类型的板子可能差异更大。

当然,当我想计算电压时这是有道理的,但每个传感器都有不同的含义。对于连接到 MCP3008 通道的每个传感器,我需要了解具体细节并适当解释读数。

MCP3008 的接线很简单。芯片本身在一端标有一个凹口,代表引脚 1 和 16(请参阅此处的数据表)。

引脚 1 到 8 是八个输入引脚,称为通道 0 到 7。通道 0 是引脚 1。引脚 16 是 Vdd 并连接到电压源(3.3V 或 5V on树莓派)。引脚 9 连接到 Raspberry Pi 上的接地引脚。引脚 15 和 14 用于参考模拟电路。引脚 15 是 Vref,MCP3008 使用它来确定其中一个通道上的最大电压。在我的示例中,我将此引脚连接到 Raspberry Pi 上的 3.3V 电源。当向其中一个通道施加电压时,MCP 会调整读数,使 1023 代表 3.3V,而 0 代表 0V。这允许我上面使用的计算工作。引脚 14 是模拟接地引脚。在我的示例中,我将它连接到 Raspberry Pi 上的接地引脚。如果需要将模拟电路与数字电路隔离,则该引脚将连接到模拟电路上的地。其余四个引脚,10 到 13,是用于与 Raspberry Pi 通信的 SPI 串行接口引脚。我在这个项目中包含的接线图显示了如何将这些引脚连接到 Raspberry Pi。

在这个项目中,我包含了一个简单的电压测量来演示这个概念。水传感器读数将展示对从通道读取的值的另一种解释。

项目概览

传感器

在这个项目中,我将两个电路合二为一。第一个是一个简单的电位器,它允许改变 MCP3008 引脚(通道 0)上的电压。这只是为了演示 MCP3008 的工作原理。第二个电路是连接到 MCP3008 上第二个通道(通道 1)的水传感器。

幻影悠悠球水传感器具有三个引脚。第一个引脚接地(在设备上标记为“-”),它将连接到 Raspberry Pi 上的接地引脚。下一个引脚是电源(设备上标记为“+”),它将连接到 Raspberry Pi 上的 3.3V 引脚(设备也可以连接到 5V)。第三个也是最后一个引脚是信号(在设备上标有“s”。该引脚的电压信号会根据设备上的水量而变化。请注意,该设备不是水位传感器。它只是感应变化与设备接触的水量。源引脚将连接到 MCP3008 上的输入之一。

赛道

支持传感器的电路非常简单。该设备直接连接到电路板 Raspberry Pi,无需任何其他组件。


项目软件

应用程序

我为此项目创建的应用程序是一个通用 Windows 应用程序 并在主视图中显示两米。第一个仪表显示在电位计电路上测量的当前电压。第二个显示来自水传感器的读数,该读数标准化为 0 到 100 的值。该软件还允许校准水传感器。可以在页面底部附近找到源代码的链接。

MCP3008 库

该软件项目还包含一个单独的项目,用于与 MCP3008 交互。此代码可用于您的应用程序,以轻松将 MCP3008 芯片集成到您的项目中。

要使用它,首先声明一个类对象如下:

私有 Mcp3008 _mcp3008 =null;

OnNavigatedTo 事件添加如下代码:

_mcp3008 =new Mcp3008(0);

await_mcp3008.Initialize();

要从通道 0 读取电压,请使用以下代码行:

浮动电压 =_mcp3008.Read(Mcp3008.Channels.Single0).AsScaledValue(3.3f);

注意 Channel.Single0 的使用,表示从一个通道读取值。可以指定设备读取两个引脚之间的差异。这可以指定为 Mcp3008.Channels.Differential0,这表示测量应视为通道 0 和通道 1 之间的差异,其中通道 0 为正,通道 1 为负。源代码是文档,将提供解释每个值的工具提示。

当您使用完对象后,通常在您的 OnNavigatedFrom 对象的事件处理。

_mcp3008.Dispose();

_mcp3008 =null;

开始使用

组装电路

使用本指南组装电路,同时使用位于页面底部附近的图表作为指南(请注意,电线的颜色是可选的,并且已被选择以帮助使电路易于理解构建时)。

注意: 该项目使用可选的万用表来测量电位器两端的电压。这样做是为了将值与 MCP3008 读取的值进行比较。请注意,这是可选的。如果您没有万用表,则您将无法比较此电压。这样做是为了表明 MCP3008 读取的值与万用表读取的值相同。将万用表设置为测量直流电压,如下图所示(您的万用表可能看起来不同)。

Fluke 87 万用表


启动应用程序

选择调试 , ARM 配置和远程机器 .现在右键单击该项目,然后选择 Property,然后选择 点击调试 标签。接下来在远程机器字段中输入 Raspberry Pi 2 IP 地址,并取消选中使用身份验证 .

F5 .应用程序将部署到设备上,第一次可能需要几分钟时间。

以下视频是该应用程序的演示:

注意: 该应用程序使用线性 360° 仪表来显示水量。我必须注意,该传感器在水量与传感器读数之间没有任何线性相关性或我所知道的任何其他相关性。当有几滴水时,它确实会产生较小的值,而当存在更多水时,它会产生更高的值。我更多地使用线性规来帮助理解 ADC 的概念。可以像连接光隔离交流电压传感器那样连接水传感器,以产生可由 GPIO 引脚拾取的高或低信号。该设备可以接线以提供湿信号或干信号。话虽如此,我将这个水传感器连接到 ADC 是因为我想检测少量水和大量水之间的差异,而本项目中概述的方法实现了这一目标。

来源: MCP3008上的高灵敏度水传感器


制造工艺

  1. 草坪洒水器
  2. 擀面杖
  3. 洗碗机
  4. 水枪
  5. 图像传感器具有低功耗、高帧率的特点
  6. Raspberry Pi 1-Wire 数字温度计传感器 (DS18B20)
  7. 使用 MCP3008 的模拟传感器输入树莓派:接线/安装/基本程序
  8. MCP3008 上的高灵敏度水传感器
  9. 软传感器提高机器人的指尖灵敏度
  10. ToughMet® 3TS 管 TS105 (C72900)
  11. 灌溉用高压水泵
  12. 什么是自动水泵?