ESP8266-Arduino编程实例-MCP4725数模转换器驱动

MCP4725数模转换器驱动

1、MCP4725介绍

MCP4725 是一款单通道、12 位、电压输出数模转换器,具有集成 EEPROM 和 I2C 兼容串行接口。MCP4725有如下特性:

  • 12 位分辨率
  • 板载非易失性存储器 (EEPROM)
  • ±0.2 LSB DNL(典型值)
  • 外部 A0 地址引脚
  • 正常或掉电模式
  • 6µs(典型值)的快速建立时间
  • 外部参考电压 (VDD)
  • 满摆幅(Rail-to-Rail)输出
  • 低功耗
  • 单电源操作:2.7V 至 5.5V
  • I2CTM 接口:
  • 八个可用地址
  • 标准 (100 kbps)、快速 (400 kbps) 和高速 (3.4 Mbps) 模式
  • 小型 6 引脚 SOT-23 封装
  • 扩展温度范围:-40°C 至 +125°C

因为这是一个 12 位 DAC 转换器。 这意味着它将接受多达 4096 个可能的输入以提供模拟输出,其中零输出值为零,输出值 4095 为满量程。满量程由提供给 VCC 引脚的参考电压决定。 还可以从上面看到,电源电压可以在 2.7 伏到 5.5 伏之间。 我们将使用 5v,或者与通过 USB 输入的电压一样接近。这可能需要测量此电压以获得准确的读数。要计算出最低有效位 (LSB) 的值如下:

1


 


L


S


B

V

C

C

4096

1 \space LSB = \frac {VCC}{4096}

1 LSB=4096VCC​

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • MCP4725FVI模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

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

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

4、代码实现

本次使用的MCP4725驱动库如下:

1)导入依赖库头文件

1
2
3
4
5
6
7
#include <Wire.h>
#include <Adafruit\_MCP4725.h>

#define MCP4725In A0

Adafruit_MCP4725 MCP4725;

2)设备初始化

1
2
3
4
5
6
void setup(void) 
{
Serial.begin(9600);
MCP4725.begin(0x60);
}

3)数据转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void loop(void) 
{
uint32\_t MCP4725_value;
int adcInput = 0;
float voltageIn = 0;
float MCP4725_reading;

for (MCP4725_value = 0; MCP4725_value < 4096; MCP4725_value = MCP4725_value + 128)
{
MCP4725_reading = (3.3/4096.0) \* MCP4725_value; //输入电压为3.3V
MCP4725.setVoltage(MCP4725_value, false);
delay(250);
adcInput = analogRead(MCP4725In); //模块输出连接到A0引脚
voltageIn = (adcInput \* 3.3 )/ 1024.0;

Serial.print("\tExpected Voltage: ");
Serial.print(MCP4725_reading,3);

Serial.print("\tArduino Voltage: ");
Serial.println(voltageIn,3);
}
}

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