硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1828|回复: 1
收起左侧

【安富莱】发布隔离I2C接口ADC模块MCP3421, 18位分辨率 ,3.3V和5V,小体积

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106437
QQ
发表于 2021-11-8 00:44:00 | 显示全部楼层 |阅读模式
该隔离模块的ADC芯片为MCP3421芯片,内带DC-DC隔离电源模块。

淘宝:https://item.taobao.com/item.htm ... MZ3&id=660440179329


安富莱_I2C隔离ADC模块_规格书(V1.0).pdf (501.12 KB, 下载次数: 37)

特别注意:
1、任何时候,输入端电压范围必须在 -0.3V 到 3.3V之间,超过该范围可能造成芯片损坏。
2、模拟输入端未做任何处理,测电压需要客户外接采样电阻,测高压需要加分压电阻。


产品特点:
1、隔离I2C接口,用法简单。
2、供电3.3V 或 5V,  可用于3.3V或5V单片机
3、内置低温飘基准,基准电压 2.048V
4、分辨率可设置
    240 SPS (12 bits),
    60 SPS (14 bits),
    15 SPS (16 bits),
     3.75 SPS (18 bits)
5、带PGA, X1, X2, X4, X8可设置。(模块模拟输入负端已固定接GND)
    X1 时:量程 -300mV ~ 2048mV,  输入阻抗 2.25M
    X2 时:量程 -300mV ~ 1024mV,  输入阻抗 2.25M / 2
    X4 时:量程 -300mV ~ 512mV,  输入阻抗 2.25M / 4
    X8 时:量程 正负256mV,  输入阻抗 2.25M / 8

硬件说明:
1、I2C总线已内置上拉电阻,阻值1KΩ
2、因为所有模块的I2C地址一样,不支持多个模块并联到1个总线应用

多路模块使用方法:
1、简单用法是每个模块占用2个GPIO,软件模拟I2C操作即可。
2、省管脚用法是所有模块的I2C_SCL共用一个GPIO控制,I2C_SDA分多个。
     这种用法需要注意模块内置1K电阻的影响,8个模块并联等效上拉电阻为 125欧姆(3.3V时 26mA电流)
     如果有特殊需求,可定制无上拉电阻的模块。
3、推荐所有的SCL用同一组GPIO,所有的SDA用同一组GPIO。这样软件上非常方便多路同时操作。


适合场合:
    采集4-20mA电流、采集0-10V\正负10V 信号、大电流悬浮测量


应用1:正负20mA电流测量
    模拟输入引脚AIN和AGND之间接低温飘 10欧采样电阻,可采集正负20mA电流。
    PGA选择X8 , 输入量程为正负25.6mA。

应用2:正负10A电流测量
    电流的采集一般选择PGA X8,这样采样电阻的功率最小,对测量电路的影响也最小。
    大电流测量只需要选择合适的电流采样电阻即可,将压降控制  256mV内。
    10A测量,可选择采样电阻为 20mΩ,  功率2W。实际量程 正负12.8A

应用3:正负10V电压测量
    输入端AIN前增加2个电阻将正负10V信号降压到0.2V左右, PGA选择X8,可识别正负电压。
    分压电阻取值:   10K 和 249.    PGA = 8
    实际量程为正负 10.54V

应用4:0-10V电压测量
    高压正电压测量可以直接使用PGA X1 档位获得最佳的信噪比。
    将输入电压直接分压到 2.048V以内即可。
    分压电阻取值 10K和 2.49K, 实际量程 0 - 10.273V

I2C_ADC模块接线图.png


关键代码:


  1. /* ADC芯片配置字 16bit, 增益8 */
  2. #define  MCP3421_CFG_BYTE  ((1 << 4) (2 << 2) (3 << 0))

  3. void MCP3421_Init(void)
  4. {
  5.     uint8_t cfg;
  6.    
  7.     i2c_MCP_Start();
  8.    
  9.     i2c_MCP_SendByte(0xD0 I2C_WR);  /* 此处是写指令 */
  10.    
  11.     i2c_MCP_WaitAck();

  12.     i2c_MCP_SendByte(MCP3421_CFG_BYTE);
  13.    
  14.     i2c_MCP_WaitAck();
  15.    
  16.     i2c_MCP_Stop();
  17. }  

  18. void MCP3421_ReadAdc16(int16_t *_buf)
  19. {
  20.     uint8_t buf0[8];
  21.     uint8_t buf1[8];
  22.     uint8_t cfg[8];
  23.     uint8_t i;
  24.     uint16_t temp;
  25.     uint8_t err = 0;
  26.    
  27.     i2c_MCP_Start();   
  28.     i2c_MCP_SendByte(0xD0 I2C_RD);  /* 此处是读指令 */   
  29.     i2c_MCP_Ack();         
  30.     i2c_MCP_ReadByte(buf0);
  31.     i2c_MCP_Ack();
  32.     i2c_MCP_ReadByte(buf1);
  33.     i2c_MCP_Ack();
  34.     i2c_MCP_ReadByte(cfg);      
  35.     i2c_MCP_NAck();
  36.     i2c_MCP_Stop();
  37.    
  38.     for (i = 0; i < 8; i++)
  39.     {
  40.         temp = (buf0[i] << 8) + buf1[i];
  41.         
  42.         if (cfg[i] == MCP3421_CFG_BYTE)
  43.         {
  44.             _buf[i] = (int16_t)temp;
  45.         }
  46.         else
  47.         {
  48.             err = 1;            
  49.         }
  50.         
  51.     }   
  52.    
  53.     if (err == 1)
  54.     {
  55.         MCP3421_Init();
  56.     }
  57. }
复制代码







回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106437
QQ
 楼主| 发表于 2021-11-8 01:02:23 | 显示全部楼层
H7-TOOL的I2C控制器驱动隔离I2C接口ADC模块MCP3421,18位分辨
MCP3421模块测试(V1.1) .lua





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-20 23:18 , Processed in 0.222859 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表