ESP8266-Arduino编程实例-MCP3008-ADC转换器驱动

MCP3008-ADC转换器驱动

1、MCP3008介绍

MCP3008 10 位模数转换器 (ADC) 在小型封装中结合了高性能和低功耗,非常适合嵌入式控制应用。 MCP3008 具有逐次逼近寄存器 (SAR) 架构和行业标准 SPI 串行接口,允许将 10 位 ADC 功能添加到任何 PIC® 微控制器。 MCP3008 具有 200k 样本/秒、8 个输入通道、低功耗(典型待机 5nA,典型活动 425µA),并采用 16 引脚 PDIP 和 SOIC 封装。 MCP3008 的应用包括数据采集、仪器仪表和测量、多通道数据记录器、工业 PC、电机控制、机器人、工业自动化、智能传感器、便携式仪器仪表和家用医疗设备。

在这里插入图片描述

MCP3008的引脚说明如下

引脚编号 引脚名称 描述
1,2,3,4,5,6,7,8 模拟输入通道 8 个输入引脚,提供要测量的模拟电压
9 数字地 连接到电路的地线
10 片选/关断(CS`/SHDN) 此引脚连接到 GPIO 引脚或 MCU,用于打开或关闭 IC
11 串行数据输入 (DIN) 用于 SPI 通信
12 串行数据输出 (DOUT) 用于 SPI 通信
13 串行时钟 (CLK) 用于为 SPI 通信提供时钟信号
14 模拟地 连接到参考电压的地线
15 参考电压 (VREF) 连接到 ADC 转换的参考电压

MCP3008的主要特性如下:

  • 8通道10位ADC IC
  • 通讯协议:串行SPI接口
  • 工作电压 2.7V 至 5V
  • ADC 方法:逐次逼近 (SAR)
  • 采样率:5V 和 2.7V 分别为 200ksps 和 75ksps。
  • 提供 16 引脚 PDIP 和 SOIC 封装

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • MCP3008模块一个
  • 10K电位计一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线图如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

1)导入依赖库头文件

1
2
#include <Adafruit\_MCP3008.h>

本次使用MCP3008驱动库如下:

2)定义MCP3008引脚

1
2
3
4
5
#define CS\_PIN D8
#define CLOCK\_PIN D5
#define MOSI\_PIN D7
#define MISO\_PIN D6

3)创建MCP3008

1
2
3
Adafruit_MCP3008 adc;
int count = 0;

4)初始化MCP3008

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void setup() {
Serial.begin(115200);
while (!Serial);

Serial.println("MCP3008 simple test.");

// Hardware SPI (specify CS, use any available digital)
// Can use defaults if available, ex: UNO (SS=10) or Huzzah (SS=15)
//adc.begin();
// Feather 32u4 (SS=17) or M0 (SS=16), defaults SS not broken out, must specify
//adc.begin(10);

// 这里使用软件SPI,也可以使用硬件SPI
//(sck, mosi, miso, cs)
adc.begin(CLOCK_PIN, MOSI_PIN, MISO_PIN, CS_PIN);
}

5)读取采样数据

1
2
3
4
5
6
void loop() {
// 读取通道0采样数据
Serial.println(adc.readADC(0));
delay(1000);
}

文章来源: https://iotsmart.blog.csdn.net/article/details/126131813