ADC是什么信号
扫描二维码
随时随地手机看文章
ADC是什么?
ADC将模拟信号转变为数字信号的电子元件,通常是将一个输入电压信号转换为一个输出的数字信号。
模拟信号:某一个区间内连续的物理信号,比如电压会每时每刻都存在且不停的变化;
数字信号:某一个区间内有限个数的抽象数值记录,比如每隔1秒钟一个电压数值;
采样率和分辨率
采样:在模拟信号上间隔某个固定的时间采集瞬时值,得到一系列的离散值。采样越密集,得到的离散数据集越贴近实际信号。采样率表示采样的频率;
分辨率:输入电压对应分辨率的位数,分辨率=测量电压范围/(2^resolution-1)。 比如逐次逼近型的ADC,8位分辨率下,能够将刻度逐次等分8次,每次将精确度提高一倍。假设最大输入电压为3.3V,那么能够分辨的最小电压变化为3.3V/255= 12.94mV.
采样方式
单通道:单个端口采集对GND的电压,受到输入电压的干扰,如果输入电压波动很剧烈,误差会很大(蜂鸟Pro等);
差分方式:使用两个端口采集,可以一定程度上排除干扰(需要电路上做支持);
采样原理
ADC有多种不同的设计原理和构造方式,一般嵌入式芯片集成的都是逐次逼近型ADC。
逐次逼近:类似于软件上的二分,通过N个并联的比较电路逐次比较大小,来确定输入电压的范围,每次将数值范围在当前分辨率内减小二分之一,比较电路的数量决定了分辨率(2^N-1)。
基础电路知识
分压:
通过串联电阻进行分压,串联的电阻分得的电压和阻值成正比。
通过串联电容进行分压,串联的电容分得的电压和容值成反比;
不论是电阻还是电容,接通的时候都会导致整个电路电流增大,从而出现压降;
选择合适的参数
判断是否存在差分电路,如没有则是单端采集模式;
判断ADC采集端口的输入范围,比如3.3V;
基于参考电压的增益:比如DA14585内部基准是1.2V,则需要至少3倍增益才能达到3.3V以上的量程;
理解电路逻辑:产品A
v_BAT=(1M+220K)/220K*v_AD;
理解电路逻辑:产品B
v_BAT=vref_adc_value∗3000/4095;
v_BAT =v_BAT*2;
理解电路逻辑:产品C
R_NTC=adc_ntc∗R_REF/(2∗adc_30k-adc_ntc);
结合实际需求:产品D
超低功耗,长时间持续运行
电压一定的时间内变化较小,每隔5分钟测量一次,并取6次的均值;
结合实际需求:产品C
高精度
采集:每隔100ms执行一次测量,每次测量重复64次;
过滤:数据排序后,抛掉前后各30个,取4个中位数的均值,得到这次采集的结果;
去抖动:每秒钟会得到10个处理过后的数值,经过平均后显示到屏幕上(相当于每秒钟执行了6400*2次才得到一个数值);
进一步提高精度的思考
修改电路,同步修改算法,将单端采集改为差分的模式,NTC一路,30K一路。由于差分是直接计算P、N端口的压差的,会直接消除电压波动带来的误差;
低电量阈值设定方法 (硬件同学贡献)
列出电路中各个元器件的最低工作电压,和最大工作电流。保证最大工作电流的情况下,电池电压不能低于元器件的最低工作电压
电子表:以2.3V作为设备的最低截至电压,5mA作为电池放电电流。
eink屏幕-2.3V <1mA
蓝牙-2.0V 5mA
FLASH-1.8V 5mA
MCU ADC测量 1mA
…
将放电曲线根据放电时间,分成10等份,每一份代表10%的电量
将一颗新电池依次放电到100%、90%、80%.... 10%, 使用MCU的ADC测量不同阶段时的电压,作为不同电量阶段的电压阈值
附:逐次逼近型ADC内部工作原理