nanoFramework.Iot.Device.Mcp3xxx 1.2.590

前缀已预留
dotnet add package nanoFramework.Iot.Device.Mcp3xxx --version 1.2.590                
NuGet\Install-Package nanoFramework.Iot.Device.Mcp3xxx -Version 1.2.590                
此命令旨在在 Visual Studio 的包管理器控制台中运行,因为它使用了 NuGet 模块的 Install-Package 版本。
<PackageReference Include="nanoFramework.Iot.Device.Mcp3xxx" Version="1.2.590" />                
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用包。
paket add nanoFramework.Iot.Device.Mcp3xxx --version 1.2.590                
#r "nuget: nanoFramework.Iot.Device.Mcp3xxx, 1.2.590"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将此内容复制到交互式工具或脚本源代码中以引用包。
// Install nanoFramework.Iot.Device.Mcp3xxx as a Cake Addin
#addin nuget:?package=nanoFramework.Iot.Device.Mcp3xxx&version=1.2.590

// Install nanoFramework.Iot.Device.Mcp3xxx as a Cake Tool
#tool nuget:?package=nanoFramework.Iot.Device.Mcp3xxx&version=1.2.590                

MCP3001/MCP3002/MCP3004/MCP3008/MCP3201/MCP3202/MCP3204/MCP3208/MCP3301/MCP3302/MCP3304 系列 A/D 转换器

有些设备(例如 Raspberry Pi)不能直接读取模拟值,因此依赖于类似于 Microchip 在 Mcp3000、Mcp3200 和 Mcp3300 系列中提供的 模拟到数字转换器。这些芯片可以通过 SPI 设备 或手动通过原始 GPIO 引脚访问。通常,所有 MCU 都有模拟能力,但引脚数量可能有限。这通常在你希望 MCU 拥有比可用的 ADC 数目更多的数字时非常有用。另一种情况是你需要不同的分辨率或电压参考。

您可以在项目中使用这些转换器来访问模拟设备。

以下 Fritzing 图示例示了连接 Mcp3008、ESP32 和电位器的一种方式。

ESP32 Breadboard diagram

文档

示例基于以下资源

特别感谢Adafruit提供了Python实现,这些实现已经被移植到C#以便于本示例使用。

使用方法

重要:在创建SpiDevice之前,确保您已正确设置SPI引脚,特别是对于ESP32。请确保您已安装nanoFramework.Hardware.ESP32 nuget

//////////////////////////////////////////////////////////////////////
// when connecting to an ESP32 device, need to configure the SPI GPIOs
// used for the bus
Configuration.SetPinFunction(21, DeviceFunction.SPI1_MOSI);
Configuration.SetPinFunction(22, DeviceFunction.SPI1_MISO);
Configuration.SetPinFunction(23, DeviceFunction.SPI1_CLOCK);
// Make sure as well you are using the right chip select

对于STM32等其他设备,请确保您正在使用您想要使用的SPI总线的预设置引脚。选择芯片也可以预先设置。

硬件元素

以下是在本示例中使用的元素

通过SPI访问MCP3008

MCU支持SPI。

您可以使用以下代码通过硬件SPI访问MCP3008

var hardwareSpiSettings = new SpiConnectionSettings(1, 42)
{
    ClockFrequency = 1000000
};

using (SpiDevice spi = SpiDevice.Create(hardwareSpiSettings))
using (Mcp3008 mcp = new Mcp3008(spi))
{
    while (true)
    {
        double value = mcp.Read(0);
        value = value / 10.24;
        value = Math.Round(value);
        Debug.WriteLine($"{value}%");
        Thread.Sleep(500);
    }
}

以下引脚布局可以被使用

  • MCP3008 VDD到MCU 3.3V
  • MCP3008 VREF到MCU 3.3V
  • MCP3008 AGND到MCU GND
  • MCP3008 DGND到MCU GND
  • MCP3008 CLK到MCU SCLK
  • MCP3008 DOUT到MCU MISO
  • MCP3008 DIN到MCU MOSI
  • MCP3008 CS/SHDN到MCU CE0

ESP32 Breadboard diagram

通过GPIO访问MCP3008

您也可以通过GPIO引脚访问MCP3008,手动实现SPI。这种方法被称为位打桩

您可以使用以下代码通过GPIO访问MCP3008

using (SpiDevice spi = new SoftwareSpi(clk: 18, miso: 23, mosi: 24, cs: 25))
using (Mcp3008 mcp = new Mcp3008(spi))
{
    while (true)
    {
        double value = mcp.Read(0);
        value = value / 10.24;
        value = Math.Round(value);
        Debug.WriteLine($"{value}%");
        Thread.Sleep(500);
    }
}

以下引脚布局可以被使用

  • MCP3008 VDD到MCU 3.3V
  • MCP3008 VREF到MCU 3.3V
  • MCP3008 AGND到MCU GND
  • MCP3008 DGND到MCU GND
  • MCP3008 CLK到MCU的任何有效GPIO
  • MCP3008 DOUT到MCU的任何有效GPIO
  • MCP3008 DIN到MCU的任何有效GPIO
  • MCP3008 CS/SHDN到MCU的任何有效GPIO

ESP32 Breadboard diagram

数据处理

无论您通过何种方式访问MCP3008芯片,处理其结果的代码是相同的,如下所示。

while (true)
{
    double value = mcp.Read(0);
    value = value / 10.24;
    value = Math.Round(value);
    Debug.WriteLine(value);
    Thread.Sleep(500);
}

该芯片是10位的,这意味着它将生成0-1023(回忆一下,2^10是1024)的值。我们可以通过除以10.24将10位值转换为更熟悉的0-100刻度。

备注

以下绑定支持以下ADC

  • Mcp3001 10位分辨率,具有单个伪差分输入。

  • Mcp3002 10位分辨率,具有两个单端输入或单个伪差分输入。

  • Mcp3004 10位分辨率,具有四个单端输入或两个单伪差分输入。

  • Mcp3008 10位分辨率,具有八个单端输入或四个单伪差分输入。

  • Mcp3201 12位分辨率,具有单个伪差分输入。

  • Mcp3202 12位分辨率,具有两个单端输入或单个伪差分输入。

  • Mcp3204 12位分辨率,具有四个单端输入或两个单伪差分输入。

  • Mcp3208 12位分辨率,具有八个单端输入或四个单伪差分输入。

  • Mcp3301 13位有符号分辨率,具有单个真差分输入。

  • Mcp3202 12位分辨率,具有四个单端输入或具有两个真差分输入的13位有符号分辨率。

  • Mcp3304 12位分辨率,具有8个单端输入,或13位有符号分辨率,具有4个真实差分输入。

注意:目前尚未在Mcp33xx系列上测试。

产品 兼容和额外的计算目标框架版本。
.NET Framework net是兼容的。
兼容的目标框架
包含的目标框架(在包中)
了解有关目标框架.NET Standard的更多信息。

NuGet包

此包未用于任何NuGet包。

GitHub存储库

此包未用于任何流行的GitHub存储库。

版本 下载 上次更新
1.2.590 73 7/17/2024
1.2.570 79 6/14/2024
1.2.560 81 5/29/2024
1.2.548 82 5/15/2024
1.2.436 220 11/10/2023
1.2.416 83 11/8/2023
1.2.329 145 5/26/2023
1.2.316 135 5/16/2023
1.2.313 138 5/12/2023
1.2.297 117 5/3/2023
1.2.212 300 1/5/2023
1.2.203 318 12/28/2022
1.2.159 377 11/14/2022
1.2.153 366 11/5/2022
1.2.141 382 10/25/2022
1.2.122 425 10/12/2022
1.2.114 388 10/8/2022
1.2.95 451 9/22/2022
1.2.87 516 9/15/2022
1.2.73 420 9/8/2022
1.2.5 432 7/13/2022
1.1.141.41205 432 7/6/2022
1.1.116.8772 445 6/24/2022
1.1.113.2032 442 6/23/2022
1.1.97.17326 437 6/13/2022
1.1.92.53000 421 6/8/2022
1.1.58.10097 428 5/23/2022
1.1.27 445 4/26/2022
1.1.20 443 4/21/2022
1.1.3 460 4/15/2022
1.1.1 428 4/14/2022
1.0.300 454 3/31/2022
1.0.277-preview.126 119 3/25/2022
1.0.277-preview.125 111 3/25/2022
1.0.277-preview.116 101 3/22/2022
1.0.277-preview.115 99 3/21/2022
1.0.277-preview.112 111 3/19/2022
1.0.277-preview.111 109 3/18/2022
1.0.277-preview.110 104 3/18/2022
1.0.277-preview.106 119 3/15/2022
1.0.277-preview.105 108 3/15/2022
1.0.277-preview.99 108 3/10/2022
1.0.277-preview.98 116 3/8/2022
1.0.277-preview.89 112 2/27/2022
1.0.277-preview.87 101 2/26/2022
1.0.277-preview.85 108 2/25/2022
1.0.277-preview.77 106 2/18/2022
1.0.277-preview.75 105 2/16/2022
1.0.277-preview.73 112 2/12/2022
1.0.277-preview.70 111 2/10/2022
1.0.277-preview.65 105 2/9/2022
1.0.277-preview.60 126 2/4/2022
1.0.277-preview.53 127 1/31/2022
1.0.277-preview.41 124 1/28/2022
1.0.277-preview.32 127 1/27/2022
1.0.277-preview.30 124 1/27/2022
1.0.277-preview.17 126 1/24/2022
1.0.277-preview.13 121 1/21/2022
1.0.277-preview.1 123 1/11/2022
1.0.272 470 1/10/2022
1.0.259 334 12/9/2021
1.0.258 303 12/7/2021
1.0.221 151 10/19/2021
1.0.219 161 10/19/2021
1.0.218 179 10/18/2021
1.0.157 155 9/4/2021
1.0.155 156 8/31/2021
1.0.153 150 8/14/2021
1.0.151 167 8/6/2021
1.0.146 156 7/22/2021
1.0.136 224 7/17/2021
1.0.135 154 7/16/2021
1.0.134 163 7/15/2021
1.0.133 184 7/14/2021
1.0.131 160 7/8/2021
1.0.129 152 7/6/2021
1.0.127 169 7/5/2021
1.0.125 189 7/5/2021
1.0.122 207 6/30/2021
1.0.121 193 6/29/2021
1.0.119 217 6/28/2021
1.0.105 275 5/29/2021
1.0.97 162 5/28/2021
1.0.63 163 5/26/2021
1.0.47 180 5/24/2021