MCP3421高精度ADC转换器应用

一个项目的需求,使用的单片机型号为stm32f030f4,虽然单片机自带了12位ADC转换器,分辨率可以达到805.66uV(此型号没有内部参考电压,所以使用工作电压作为参考电压,所以精度值计算:3.3V除以2的12次方)。但这个项目需要检测很小的电流,最起码要能检测到1mA电流,最大电流可以达到3A,所以检测电阻不能太大。大就会超出量程,也会产生大的功耗。这个电阻选择了2512封装0.012欧,1mA电流产生的电压为12uV,这个电压单片机无法检测到,所以必须重新找个分辨率高的ADC转换器。

美国Microchip微芯有一颗SOT-23-6封装的高精度ADC转换芯片,下面我们看看它的概述:MCP3421 为单通道低噪声、高精度、差分输入A/D转换器,分辨率高达18 位,提供微型SOT-23-6 封装。片上精密2.048V 参考电压使得差分输入电压范围为±2.048V (电压 = 4.096V)。该器件使用2 线I2C兼容串行接口,并采用2.7V 至5.5V 单电源供电。用户通过2 线I2C 串行接口对控制配置位进行设定,从而MCP3421 器件可按3.75、15、60 或240 采样/ 秒(SPS)速率进行转换。该器件具有片内可编程增益放大器(PGA),用户可在转换开始之前选择PGA 增益为x1、x2、x4 或x8。因此MCP3421 在转换很小的输入信号时仍可保持高分辨率。该器件提供两种转换模式:a) 连续转换模式; b) 单次转换模式。在单次转换模式下,器件在完成一次转换后自动进入低电流待机模式,这样可显著降低空闲期间的电流消耗。

MCP3421 器件特别适合需要设计简单、低功耗和节省空间的各种高精度模/ 数转换应用。

引脚定义

1 VIN+ 正差分模拟输入引脚

2 VSS 接地引脚

3 SCL IIC 接口的串行时钟输入引脚

4 SDA IIC 接口双向串行数据引脚

5 VDD 正电源引脚

6 VIN- 负差分模拟输入引脚

SCL 和SDA 上拉电阻的典型值范围在标准模式(100 kHz)和快速模式(400 kHz)下为5 k 至10 k ;在高速模式(3.4 MHz)下小于1 k。在VDD 小于2.7V时,不建议使用高速模式。

芯片特点

1、体积小:SOT-23-6

2、转换分辨率可以选择:12、14、16 或18 位

3、PGA增益选项:x1、x2、x4 或x8

4、连续转换或单次转换

5、通讯方式使用二线制IIC总线

6、具有内部稳定参考电压2.048V

分辨率设置表:

从表中可以看出,最大分辨率为15.625uV,这样一来还是识别不到最小测试的12uV。别急,刚好这个芯片具有4档PGA增益,也就是说可以把输入信号进行放大,然后再进行转换,那么这里我们PGA增益选项选择x2就可以了,输入12uV电压,经过x2增益后就相当于输入了24uV,这样就可以检测到这个电压了。

在这个芯片中有个8位配置字节,用于选择输入通道、转换模式、转换速率和PGA 增益。该寄存器允许用户改变器件的工作条件和检查器件的工作状态。

bit 7 RDY:就绪标志位

此位为数据就绪标志。在读模式,此位表示输出寄存器是否被最新的转换数据更新。在单次转换模式下,向此位 写入1 将启动一次新的转换。
使用读命令读取RDY 位:
1 = 输出寄存器未更新
0 = 输出寄存器被最新转换结果更新
使用写命令写RDY 位:
连续转换模式:无影响
单次转换模式:
1 = 开始一次新的转换
0 = 无影响
bit 6-5 C1-C0:MCP3421 器件未使用这些位。
bit 4 O/C:转换模式位
1 = 连续转换模式(默认)。器件进行连续数据转换。
0 = 单次转换模式。器件进行单次转换并进入低功耗待机模式,直至收到新的读或写命令。
bit 3-2 S1-S0:采样率选择位
00 = 240 sps (12 位)(默认)
01 = 60 sps (14 位)
10 = 15 sps (16 位)
11 = 3.75 sps (18 位)
bit 1-0 G1-G0:PGA 增益选择位
00 = x1 (默认)
01 = x2
10 = x4
11 = x8

典型应用

          

最简单的使用就是单端输入,输出代码计算电压公式:

公式中LSB为分辨率,PGA为增益倍数。

硬件介绍就这么多,剩下的就是编程问题。由于这个芯片的通讯方式使用了二线制IIC总线,所以第一个要解决的就是编写出IIC总线驱动代码,这个可以选择硬件IIC也可以选择用IO口模拟,时钟速度在400KHz以下。学过编程的童鞋都应该写过EEPROM驱动,如果写过那个学过IIC总线。

由于MCP3421为6脚芯片,没有多余的IO口来做地址位选择,一般出厂时默认000,如果要使用多个MCP3421芯片,需要购买不同地址位,在一条总线上可以挂8颗MCP3421。

写 MCP3421 的时序图

程序代码如下

18 模式下读MCP3421 的时序图

18位模式下,一共接收4个字节,最后一位是配置字节,这个字节可以不读取,代码如下

使用的是单次转换方式。到此已经完成MCP3421的应用,如果不清楚请参考MCP3421数据手册。

MCP3421高精度ADC转换器相关推荐

  1. A7799之STM32程序——STM32测试高精度ADC篇(二)

    1.  AD7799概述 AD7799是ADI公司早期推出一款高精度低速率的ADC,性能参数如下 •均方根(RMS)噪声:  27 nV(4.17 Hz.AD7799)  65 nV(16.7 Hz. ...

  2. AD7190之STM32程序——STM32测试高精度ADC篇(三)

    1.  AD7190概述 AD7190是一款适合高精密测量应用的低噪声完整模拟前端.它集成一个低噪声.24位Σ-Δ型模数转换(ADC).片内低噪声增益级意味着可直接输入小信号. 这款器件可配置为两路差 ...

  3. STM32 ADS8365 高精度 ADC 采集方案

    开源一个 ADS8365 高精度 ADC 检测方案,转载请联系博主,翻版必究. 1.硬件原理图(最多 6 路输入) 2.数据手册 数据手册在这里下载 https://www.alldatasheetc ...

  4. 热电偶温度采集pid加热控制,高精度adc数据采集继电器输出

    热电偶温度采集pid加热控制,高精度adc数据采集继电器输出 整套系统包括: 2路adc数据采集系统,采用24位高精度adc(美国adi公司产品ad7732),分辨率达到0.0002mv,可做高精度数 ...

  5. 桥式压力传感器输出mV用仪表运放还是选高精度ADC的问题

    桥式压力传感器输出mV用仪表运放还是选高精度ADC的问题 这几天博采众长  吸收了很多大师的意见  都不建议用仪表运放去做这种信号的放大采集,直接用高精度的ADC芯片,带MCU那种.(仪表放大器非常难 ...

  6. 高精度ADC采集电量显示(MCP3421)

    文章目录 Linux 一.简介 二.前序 三.MCP3421 1.官方资料下载 2.芯片讲解 四.电压转电量思路 五.程序 1.C程序 2.测试结果 六.总结 Linux 一.简介 最近在做一个嵌入式 ...

  7. 国产的高精度ADC HX711 CS1237 TM7707等如何选型

    目录 名词解释 数据输出速率 建立时间 ADC转换周期 CS1237转换速度与有效位数的关系 TM7707测试代码 最近小伙伴们咨询我,国产很多高精度的ADC,如何选型使用呢?这里我们主要讨论几款24 ...

  8. 08 在ATmega8中真实可用的ADC转换器写法

    有些时候我们喜欢用ATmega8中的代码生成编辑器去编辑一个完成的软件架构,但是博主在进行ADC代码测试编写的时候发现,ADC的编辑器是比较坑的,在ATmega8单片机的手册中我们可以发现有左对齐和右 ...

  9. STM32F030 12位高精度ADC用法

    STM32F030C8有一个12位ADC接口,现用库函数编写ADC驱动代码 1.初始化接口,配置ADC参数通道 void bsp_adc_init(void) {     ADC_InitTypeDe ...

  10. ADS1220 24位高精度ADC芯片驱动

    芯片引脚及功能描述: 驱动代码: 头文件:ads1220.h #ifndef __ADS1220_H #define __ADS1220_H#include "em_device.h&quo ...

最新文章

  1. 网络电视视频服务器所放位置,pptv网络电视中多屏互动服务器删除的具体操作步骤...
  2. html表格编辑器退出编辑状态,html编辑器的使用方法
  3. 挨踢项目求生法则-战略篇
  4. python【蓝桥杯vip练习题库】ADV-147学霸的迷宫(广搜 bfs经典问题)
  5. HDU 4323 Magic Number(编辑距离DP)
  6. 香帅的北大金融学课笔记 -- 金融学专题
  7. 【HDU - 5489】Removed Interval(离散化,权值线段树,思维,最长上升子序列)
  8. android+动画完成后不可点击,动画后,TranslateAnimated ImageView无法点击[Android]
  9. 15个示例让你搞懂Linux中的cd命令
  10. [开发笔记]-使用jquery获取url及url参数的方法
  11. 黑客获取数据信息的目的和进攻手段及应对之策
  12. 视频直播技术详解之延迟优化
  13. python 方差_python+方差_python 方差_python 方差齐性检验 - 云+社区 - 腾讯云
  14. 下一个冷链独角兽:C轮融资后,九曳供应链如何撬动生鲜市场?
  15. IP-SAN存储技术
  16. JavaSE基础知识
  17. 微信开发40163 40029错误总结
  18. 超详细的Charles抓包工具的使用
  19. java代码重构工具_代码重构什么意思 Java代码重构的几种模式
  20. 该如何选择IT培训机构?

热门文章

  1. 可视化磁盘文件查看工具
  2. CS231n——机器学习算法——线性分类(上: 线性分类器)
  3. 【堆排序的递归和非递归实现】Java实现
  4. idea 安装 jclasslib 插件
  5. matlab方差分析加代码和结果分析
  6. 利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图
  7. 关于KERNEL_SECURITY_CHECK_FAILURE蓝屏(BSOD)0x00000139错误解决思路
  8. 智能家居 (9) ——人脸识别摄像头安装实现监控功能
  9. Python小工具之GUI倒计时提醒
  10. 在html5网页中录音解决方案