ADC硬件电路

ADC采样的硬件电路比较简单,经过调整之后的电路通过R、C滤波接到ADC采样端口。

如果对精度有要求,可以在单片机的AD基准电压的输入脚Vref接入高精度的稳压电源。

可以采用TL431提供Vref电压。

需要注意输入采样电压的瞬时值不能操作ADC端口允许的输入电压范围。

ADC端口的输入电阻不能过大,否则在多路ADC转换时,ADC模块的采样电容可能没有足够的时间采样到电压就开始转换,影响ADC的精度。

一般来说,单片机只有有限几个ADC模块,而为了支持尽可能多的ADC通道,在单片机内部通过查模拟开关进行通道的切换。

比如STM32F103的单片机,其内部有3个ADC模块,支持10几个ADC通道。

因此单片机在做ADC转换时,有如下三个步骤:

切换通道,通过单片机的通道选择寄存器控制内部的模拟开关切换ADC通道。

电压采样,通过一定ADC时钟的延时,使得ADC端口电压被采集到ADC模块的采样电容上。

数值转换,通过逐次逼近的原理,对采样到采样电容上的电压与参考电压Vref进行比较,得到AD数值。

这几个步骤都需要编写单片机的程序实现。

ADC一次采样率的计算,

一次ADC采样的时间包括:

采样电容采样的时间+转换时间,

采样电容采样的时间通过寄存器进行设置。

逐次逼近的ADC,采用二分法进行逐次逼近,其转换时间一般为ADC的位数+1个ADC时钟。

比如14位的ADC,其转换时间为15个ADC时钟。

对于周期性的自动触发转换,其单次采样的时间必须要小于ADC的转换周期。

比如:

采样时间为10us,ADC时钟为1us,14位的ADC,单次转换时间约为10us+15us=25us,采样率必须

单片机的ADC程序,主要包括以个方面:

ADC模块的初始化,包括:

输入端口的初始化配置,需要把端口配置成模拟输入口。

参考电压初始化,选择参考电压。

ADC时钟初始化,设置ADC时钟的分频等,使得ADC的时钟既能满足ADC模块的规格要求,又能满足ADC采样速率的要求。

设置采样时间,以及转换的启动触发源。

如果需要进行周期性等间隔采样,比如采样市电电压、电流计算真有效值,可以利用定时器作为ADC的启动触发源。

否则可以通过软件控制ADC的启动位进行触发转换。

ADC转换的状态机

大部分工程师编写的ADC代码,将ADC配置->采样->转换->读结果一次性操作完成。在代码中,通过延时进行采样,再while等待转换完成标志之后读取数值。

这样的代码执行效率低,在ADC转换时,无法处理其它逻辑,响应的实时性差。

软件控制触发的ADC,其状态机如下:

单片机adc采样原理

以下是本人使用的ADC转换程序,用来检测温度、湿度、电压等模拟量。

单片机adc采样原理

如果是周期性的自动触发转换,需要配置转换完成中断,在该中断程序中读取结果进行处理。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查