I2C转2路0~10V电压模块

1. 产品简介

这一个I2C通讯,两路0-10V模拟电压DAC模块。在工业场景下,0-10V电压是一个标准的驱动方式。被广泛用于灯光调节、变频器、阀门调节、水泵调节等场合。本产品可通过Arduino编程为0-10V控制器驱动器提供控制信号。如灯光调节器、变频器、阀门、水泵等。 板载的拨码开关可对产品的I2C地址进行修改,支持8个不同的I2C地址,可级联控制16路设备。

2. 产品特性

3. 应用场景

4. 尺寸图

DFR0971尺寸图

5. 产品功能指示图

DFR0971功能说明图

功能说明表格

功能名称 功能说明 备注
I2C接线端 I2C信号端口
I2C地址切换开关 切换A0、A1、A2的拨码开关值可以修改模块的I2C地址 I2C地址与拨码开关的对应关系见I2C地址表
模拟电压输出端 VOUT0和VOUT1可以独立输出0-10V或0-5V电压

I2C地址对应表

A2 A1 A0 I2C地址
0 0 0 0x58
0 0 1 0x59
0 1 0 0x5A
0 1 1 0x5B
1 0 0 0x5C
1 0 1 0x5D
1 1 0 0x5E
1 1 1 0x5F

6. 规格参数

7. 使用教程

7.1 软件准备

7.2 硬件准备

7.3 控制LED灯带亮度

7.3.1 硬件连接

DFR0971连线图1

连线说明

FireBeetle 2 : 3V3 引脚 (连接)电压模块:+ 引脚

FireBeetle 2 : GND 引脚 (连接)电压模块:- 引脚

FireBeetle 2 : SCL 引脚 (连接)电压模块:SCL 引脚

FireBeetle 2 : SDA 引脚 (连接)电压模块:SDA 引脚


电压模块:VOUT0 端口 (连接) LED调光模块(0-10V):V+ 端口

电压模块:GND 端口 (连接) LED调光模块(0-10V):V- 端口


LED调光模块(LOAD):V+ 端口 (连接)5V灯带:+

LED调光模块(LOAD):V- 端口 (连接)5V灯带:-


LED调光模块(POWER):V+ 端口 (连接)5V-24V电源输入:5V +

LED调光模块(POWER):V- 端口 (连接)5V-24V电源输入:5V -

7.3.2 代码编写

在下方程序中将演示在OUT0口输出3.5V电压信号为灯带控制器提供信号电压,用于调节驱动器上连接的灯带亮度。在本示例程序中用到了两个API:

API名称:setDACOutRange(eOutPutRange range)

API功能:设置输出的电压范围。5V或10V;

例:dac.setDACOutRange(dac.eOutputRange10V)

API名称:setDACOutVoltage(uint16_t data,uint8_t channel);

API功能:设置输出电压对应的DAC值。data 输出电压的值 :5V范围为0~5000;10V范围为0-10000。channel通道选择,范围:0:通道0; 1:通道1; 2:全部通道。

例:dac.setDACOutVoltage(3500,0) //在通道0输出3.5V的电压。

#include "DFRobot_GP8403.h"
DFRobot_GP8403 dac(&Wire,0x58);

void setup() {
  Serial.begin(115200);
  while(dac.begin()!=0){
    Serial.println("init error");
    delay(1000);
   }
  Serial.println("init succeed");
  dac.setDACOutRange(dac.eOutputRange10V);//设置输出范围为0-10V
  dac.setDACOutVoltage(3500,0);//在OUT0通道输出3.5V电压的DAC值
  delay(1000);
  dac.store(); //将设置的3.5V电压保存在芯片内
}

void loop(){

}

7.3.3 程序执行结果

下载程序后,灯带被微弱点亮,此时,使用万用表实测通道0的输出电压为3.5V。

7.4 输出正弦波

在本例中,将展示如何输出频率10Hz、幅值±2.5V的正弦波。需要注意的是,该波形使用的是代码模拟生成,所以,有较大误差,可作为学习之用。在输出端连接示波器,将可看到生成的正弦波形。

7.4.1 硬件连接

DFR0971连线图2

连线说明

FireBeetle 2 : 3V3 引脚 (连接)电压模块:+ 引脚

FireBeetle 2 : GND 引脚 (连接)电压模块:- 引脚

FireBeetle 2 : SCL 引脚 (连接)电压模块:SCL 引脚

FireBeetle 2 : SDA 引脚 (连接)电压模块:SDA 引脚

7.4.2 代码编写

本示例程序演示了一个最大幅值为5.12V,频率为10Hz的正弦波波形。在代码中使用到了dac.outputSin()这个API ,通过设置API的不同参数,可以得到不同电压幅值和频率的正弦波,电压最大为±5V,频率0-100Hz。

API名称:outputSin(amp, freq, offset,channel)

API功能:设置正弦波参数

API参数:

amp 正弦波幅度,范围:0-5000表示0-5V(10V范围内)0-2500表示0-2.5V(5V范围内)

freq正弦波频率,范围:0-100Hz

offset正弦波的直流偏置,范围:0-5000表示0-5V(10V范围内)0-2500表示0-2.5V(5V范围内)

channel通道选择,范围:0:通道0,1:通道1,2:全部通道

#include "DFRobot_GP8403.h"
DFRobot_GP8403 dac(&Wire,0x58);

void setup() {
  Serial.begin(115200);
  while(dac.begin()!=0){
    Serial.println("init error");
    delay(1000);
   }
  Serial.println("init succeed");
  //Set DAC output range
  dac.setDACOutRange(dac.eOutputRange5V);
}

void loop(){
 dac.outputSin(2500, 10, 2500, 0);//(电压值,频率(0~100Hz),电压值,通道号)
}

7.4.3 代码执行结果

下载程序后可以在示波器显示界面观察到一个频率为9.804Hz,幅度为±2.5V的正弦波波形。

示波器演示图

8. API函数库

   /**
   * @fn begin
   * @brief 初始化该模块。
   */
  uint8_t begin(void);

  /**
   * @fn setDACOutRange
   * @brief 设置DAC输出范围
   * @param range DAC输出范围,5V或10V
   * @return NONE
   */
  void setDACOutRange(eOutPutRange range);

  /**
   * @fn setDACOutVoltage
   * @brief 设置不同通道输出DAC值
   * @param data 需要输出的电压对应的DAC值
   * @param channel 输出通道设置, 0:通道0; 1:通道1; 2:全部通道
   * @return NONE
   */
  void setDACOutVoltage(uint16_t data,uint8_t channel);
  /**
   * @brief 将设置的电压保存在芯片内部
   */
    void store(void);
  /**
   * @brief 调用函数输出正弦波
   * @param amp 设点正弦波幅度Vp
   * @param freq 设置正弦波频率f
   * @param offset 设置正弦波直流偏置Voffset
   * @param channel 输出通道: 0:通道0; 1:通道1; 2:全部通道
   */
    void outputSin(uint16_t amp, uint16_t freq, uint16_t offset,uint8_t channel);
  /**
   * @brief 调用函数输出三角波
   * @param amp 设点三角波幅度Vp
   * @param freq 设置三角波频率f
   * @param offset 设置三角波直流偏置Voffset
   * @param dutyCycle 设定三角(锯齿)波占空比
   * @param channel 输出通道: 0:通道0; 1:通道1; 2:全部通道
   */
    void outputTriangle(uint16_t amp, uint16_t freq, uint16_t offset, int8_t dutyCycle, uint8_t channel);
  /**
   * @brief 调用函数输出方波
   * @param amp 设点方波幅度Vp
   * @param freq 设置方波频率f
   * @param offset 设置方波直流偏置Voffset
   * @param dutyCycle 设定方波占空比
   * @param channel 输出通道: 0:通道0; 1:通道1; 2:全部通道
   */
    void outputSquare(uint16_t amp, uint16_t freq, uint16_t offset, int8_t dutyCycle, uint8_t channel);

9. 更多资料下载

DFR0971-原理图.pdf

DFR0971_尺寸图.pdf

DFR0971_3D文件.rar

DFR0971_2D_CAD文件.rar

DFR0971_GP8403芯片手册.pdf

10. 常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

DFshopping_car1.png DFRobot商城购买链接

修改历史

文档修改历史

版本号 修改时间 修改人 修改内容
V1.0 2022.05.23 张腾鸺 第一版发布

产品修改历史

版本号 修改时间 修改人 修改内容
V1.0 2022.05.23 刘礼华 第一版发布