1. 产品简介
这一个I2C通讯,两路0-10V模拟电压DAC模块。在工业场景下,0-10V电压是一个标准的驱动方式。被广泛用于灯光调节、变频器、阀门调节、水泵调节等场合。本产品可通过Arduino编程为0-10V控制器驱动器提供控制信号。如灯光调节器、变频器、阀门、水泵等。
板载的拨码开关可对产品的I2C地址进行修改,支持8个不同的I2C地址,可级联控制16路设备。
2. 产品特性
- 支持3.3V-5V电源供电。
- 输出电压误差小于0.5% 。
- 输出短路保护,输出脚与地短路时芯片进入保护模式停止输出。
- 两路0-10V或者0-5V电压输出,可连接和控制标准模拟电压设备。
- Gravity接口,I2C通讯,Arduino控制,可用于程序自动化控制。
- 8路I2C地址可调,最多可同时控制16路设备。
3. 应用场景
- 智能函数信号发生器。
- 灯光或者喷泉自动控制器。
- 小型设备的自动化快速改造。
- 机电设备自动调试器。
- 小型测试设备的改造。
4. 尺寸图
5. 产品功能指示图
功能说明表格
功能名称 | 功能说明 | 备注 |
---|---|---|
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. 规格参数
- 供电电压:3.3V-5V
- I2C接口:PH2.0-4P(Gravity线序)
- 芯片型号:GP8403
- 输入信号范围:12Bit(0x000 - 0xFFF)
- 输入I2C信号高电平:2.7V - 5V
- VOUT0输出电压:0 - 10V 或 0-5V
- VOUT1输出电压:0 - 10V 或 0-5V
- 输出电压误差:< 0.5%
- 输出电压线性度误差:0.1%
- 功耗:< 4mA
- 输出短路保护
- 电压变化频率:0~100Hz
7. 使用教程
7.1 软件准备
-
下载Arduino IDE: 点击下载Arduino IDE
-
安装SDK:点击进入FireBeetle 2 ESP32-E WIKI页面 查找SDK安装教程
-
下载Arduino库:点击下载DFRobo_GP8403-main库 点击链接查看:如何安装库?
7.2 硬件准备
- FireBeetle 2 ESP32-E(SKU: DFR0654)×1
- DFR0971 I2C转0-10V模拟电压模块 × 1
- LED调光模块 × 1
- 5V灯带(SKU:FIT0841)× 1
- 杜邦线 若干
- 示波器 ×1
7.3 控制LED灯带亮度
7.3.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 硬件连接
连线说明
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. 更多资料下载
10. 常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。
修改历史
文档修改历史
版本号 | 修改时间 | 修改人 | 修改内容 |
---|---|---|---|
V1.0 | 2022.05.23 | 张腾鸺 | 第一版发布 |
产品修改历史
版本号 | 修改时间 | 修改人 | 修改内容 |
---|---|---|---|
V1.0 | 2022.05.23 | 刘礼华 | 第一版发布 |