ESP8266-Arduino编程实例-PCF8591数据采集驱动

PCF8591数据采集驱动

1、PCF8591介绍

PCF8591 是一款单片集成、独立电源、低功耗、8 位 CMOS 数据采集设备。 PCF8591 具有四个模拟输入、一个模拟输出和一个串行 I2C 总线接口。

PCF8591 的三个地址引脚 A0、A1 和 A2 可用于硬件地址编程 8 PCF8591 器件允许访问相同的 I2C 总线,而不需要额外的硬件。 在 PCF8591 器件的地址输入和输出上,控制和数据信号通过两线双向 I2C 总线以串行方式传输。

PCF8591具有如下特性:

  • 单电源
  • PCF8591工作电压范围为2.5V-6V
  • 通过 I2C 总线串行输入/输出
  • PCF8591通过3个硬件地址引脚寻址
  • PCF8591 I2C总线速度采样率决定
  • 4 个模拟输入可编程单端或差分输入
  • 自动增量通道选择
  • PCF8591 模拟电压范围为 VSS 至 VDD
  • PCF8591内置采样保持电路
  • 8位逐次逼近A/D转换器
  • 1个模拟输出DAC增益

在这里插入图片描述

PCF8591模块功能如下:

控制 寄存器 功能 板载设备
0 channel 0 Read ADC 0 LDR
1 channel 1 Read ADC 1 NTC THERMISTOR
2 channel 2 Read ADC 2 NC
3 channel 3 Read ADC 3 POTENTIOMETER
+64 analog OE DAC output O/P LED

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • PCF8591传感器模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

ESP8266引脚 PCF8591引脚
3v3 VCC
GND GND
D2 SDA
D1 SCL

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

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

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

4、代码实现

1)导入依赖库头文件

1
2
3
4
#include "Wire.h"
#define PCF8591 (0x90 >> 1)
byte adcvalue0, adcvalue1, adcvalue2, adcvalue3;

2)设备初始化

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

3)数据采集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void loop()
{
Wire.beginTransmission(PCF8591);
Wire.write(0x04);
Wire.endTransmission();
Wire.requestFrom(PCF8591, 5);

adcvalue0=Wire.read();
adcvalue0=Wire.read();
adcvalue1=Wire.read();
adcvalue2=Wire.read();
adcvalue3=Wire.read();

Serial.print(adcvalue0);
Serial.print(" ,");
Serial.print(adcvalue1);
Serial.print(" ,");
Serial.print(adcvalue2);
Serial.print(" ,");
Serial.print(adcvalue3);
Serial.println();

delay(1000);
}

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