这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 试用MCP4725数模转换模块生成三角波

共1条 1/1 1 跳转至

试用MCP4725数模转换模块生成三角波

专家
2025-10-11 12:17:31     打赏

Mcp4725是I2C接口的12位DAC芯片。

图片1.png

因为采用I2C接口,所以管脚很少。

图片2.png

其中A0是用来设置地址的。我买到的是模块,

图片3.png

原理图:

图片4.png

对于DAC转换用集成电路,以前只用过DAC0832,DAC0832使用的是并口,8位的,因此管脚比较多。而MCP4725使用的是I2C,因此不需要那么多管脚了。实际上像这种使用I2C接口,我觉得制造转换位数更高的也应该更容易吧,通过协议解决位数,不用担心管脚增多的问题。以下是使用MCP4725模块在Arduino下开发的生成三角波的程序。程序逻辑很简单,按照指定频率将三角波采样点的数据转换位模拟值,这样就在模拟输出口输出了三角波。


/**************************************************************************/
/*! 
    ESP8266   --------  MCP4725
    ===========================
    D1(SCL)             SCL
    D2(SDA)             SDA    
*/
/**************************************************************************/
#include <Wire.h>
#include <Adafruit_MCP4725.h>
Adafruit_MCP4725 dac;
void setup(void) {
  Serial.begin(9600);
  Serial.println("Hello!");
  // For Adafruit MCP4725A1 the address is 0x62 (default) or 0x63 (ADDR pin tied to VCC)
  // For MCP4725A0 the address is 0x60 or 0x61
  // For MCP4725A2 the address is 0x64 or 0x65
  dac.begin(0x60);
    
  Serial.println("Generating a triangle wave");
}
void loop(void) {
    uint32_t counter;
    // Run through the full 12-bit scale for a triangle wave
    for (counter = 0; counter < 4095; counter++)
    {
      dac.setVoltage(counter, false, 500000);
    }
    for (counter = 4095; counter > 0; counter--)
    {
      dac.setVoltage(counter, false, 500000);
    }
}


这里需要说明的是MCP4725的I2C访问地址问题。I2C地址与芯片的型号有关系,如果无法确定具体地址,可以使用I2C的扫描程序确认。我就是用I2CScan程序确定的。在原例程中使用的是0x62,而我买到的使用0x60。另外还需要安装Adafruit的MCP4725支持库。

利用示波器采集到的输出波形:

图片5.png





关键词: 大懒猫的试用笔记     MCP4725     三角波    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]