ADC

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(General Call)
(Atmega328)
第71行: 第71行:
  
 
<br><br>
 
<br><br>
 +
 +
== MAX1348 ==
 +
 +
* https://www.maximintegrated.com/cn/products/analog/data-converters/analog-to-digital-converters/MAX1348.html
 +
 +
<br>
  
 
== Atmega328 ==
 
== Atmega328 ==

2019年11月29日 (五) 09:51的版本

目录

1 Overview

AD/DA 芯片几乎被模拟巨头 ADI 垄断了。当年因为Wassenaar Arrangement,美国要求最高端的技术要禁售给中国。

ADI 有好几百款芯片在禁售单上。其10bit 100MSPS以上的 ADC 芯片都是禁售的,甚至连 AD/DA 研发部门都罕有华人


2 MCP3421

  • 18 bit ADC in a SOT-23-6 package, I²C interface
  • Self calibration of internal offset and Gain per each Conversion
  • On-board Voltage Reference: 2.048V +-0.05%, 5ppm/C
  • On-board PGA (Programmable Gain Amplifier): x1, x2, x4, x8
  • Programmable Data Rate Options:
    • 3.75 SPS (18bit)
    • 15 SPS (16bits)
    • 60 SPS (14bits)
    • 240 SPS (12bits)
  • Low current consumption: 145 uA (Continuous Conversion) or 39 uA (One-Shot Conversion with 1 SPS)
  • 2.7V to 5.5V power supply
  • -40 - 125 C


Mcp3421-app.png

2.1 General Call

Datasheet 之 5.4 General Call 。参考 I2C 总线精要

广播方式,当发出 0x00 的地址信 息后,所有 I2C 上的 Slave 设备都要对此作出反应,此机制适合用在 Master 要对所有的 Slave 进行广播性讯息更新与沟通上,是一种总体、批次的运作方式。


MCP3421 Datasheet



2.2 PGA

可编程运放, 支持 x1, x2, x4, x8 信号放大


3 CS53L30

System Features
  • Native (no PLL required) support for 6-/12-MHz, 6.144-/12.288-MHz, 5.6448-/11.2896-MHz, or 19.2-MHz master clock rates and 8- to 48-kHz audio sample rates
  • Master or Slave Mode. Clock dividers can be used to generate common audio clocks from single-master clock input.
  • Low power consumption
  • Less than 4.5-mW stereo (16 kHz) analog mic record
  • Less than 2.5-mW mono (8 kHz) analog mic record
  • Selectable mic bias and digital interface logic voltages
  • High-speed (400-kHz) I²C control port

https://www.cirrus.com/en/pubs/proDatasheet/CS53L30_F2.pdf



4 ADAS1000



4.1 ADS7844

ADS7688.png



4.2 ADS7688



5 MAX1348


6 Atmega328

8-channel 10-bit ADC in TQFP and QFN/MLF package

6.1 检测电池电压

用内部 1.1V 基准电压源:

analogReference(INTERNAL);use internal 1.1V as Avref 
//analogReference(DEFAULT);  use AVcc as AVref

VBAT 接 0.1% 300K - 100K - GND,ADC 脚接两个电阻之间,测量 100K 电阻两端电压。。。


或者选择内部 1.1V 作为 Vref,AREF 脚作为 Vin,反推 Vin:

 ADC = Vin/Vref * 2^n, n = 10 in 328p
#include "Arduino.h"

#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define ADMUX_VCCWRT1V1 (_BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1))
#elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
#define ADMUX_VCCWRT1V1 (_BV(MUX5) | _BV(MUX0))
#elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
#define ADMUX_VCCWRT1V1 (_BV(MUX3) | _BV(MUX2))
#else
#define ADMUX_VCCWRT1V1 (_BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1))
#endif
float Read_Volts(void)
{
  // Read 1.1V reference against AVcc
  // set the reference to Vcc and the measurement to the internal 1.1V reference
  if (ADMUX != ADMUX_VCCWRT1V1)
  {
    ADMUX = ADMUX_VCCWRT1V1;

    // Bandgap reference start-up time: max 70us
    // Wait for Vref to settle.
    delayMicroseconds(350); 
  }
  
  // Start conversion and wait for it to finish.
  ADCSRA |= _BV(ADSC);
  while (bit_is_set(ADCSRA,ADSC)) {};
    
  // Result is now stored in ADC.
  
  // Calculate Vcc (in V)
  float vcc = 1.1*1024.0 / ADC;

  return vcc;
}

328p-admux.png

328p-admux2.png

其中REFS1和REFS0用于设置Vref,这里应该配置为01对应Vcc口


328p-admux3.png

MUX3…0用于选择ADC的输入Vin,这里应配置为内部1.1v对应的1110



7 参考


































个人工具
名字空间

变换
操作
导航
工具箱