一、概念介绍:

1.数字信号和模拟信号:

在显示生活中,我们经常遇到的如温度、压力、图像等都是模拟量,电子线路中的模拟电压和模拟电流等也都是模拟信号,它是一种连续变化的信号。而数字信号,通常我们无法看到,它通常存储在芯片内,如单片机、计算机、硬盘等。数字信号是离散的信号。

特点 幅度变化 信号传输方式 保密性 抗干扰能力 处理和存储信号难易
模拟信号 在时间上和数值上都是连续变化的信号 幅度的取值是连续的 用模拟量的电压或电流来表示 保密性差,通信信号很容易被窃听 弱,很容易受到干扰
数字信号 在时间上和数值上不连续变化的信号 幅度的取值是离散的 通过0和1的数字串所构成的数字流 数字信号保密性较强,可加密-传输-解密再变换还原成模拟信号 抗干扰能力强 简单

2.数字信号和模拟信号相互转换的示例

上图是一个打电话的过程,首先,我们通过手机内部的ADC将声音信号(模拟信号)转化为数字信号,然后通过天线将数字信号转换出去,对方手机接收到我们的数字信号之后,通过DAC转换为模拟信号(声音),双方就可以通话了。

下图为AD/DA相互转换的示意:

3. 模拟信号转数字信号:

  • 最低有效位(Least Significant Bit)LSB : 表示ADC芯片最小的一位所代表的模拟量的数值。

 步骤:

  1. 采样:在时间轴上对信号数字化。按照固定的时间间隔抽取模拟信号的值,采样后就可以使一个时间连续的信号波变为在时间上取值数目有限的离散信号。
  2. 保持
  3. 量化
  4. 编码

奈奎斯特采样定理:采样频率fs.max大于或等于有效信号最高频率fmax的两倍,采样值就可以包含原始信号的所有信号,被采样信号就可以不失真的还原成原始信号。

混叠效应:不同的信号频率在相同的采样频率下,可以得到相同的采样波形。

上图1为原始信号,但是,在混叠效应之下,根据采样点还原原始信号,可以有多种不同频率的信号(如图2)。因此AD转换时需要添加一个抗混叠滤波器,将一些高频谐波干扰杂波过滤掉。只采样需要的波形。

3.1 采样

采样过程示例

3.2 量化

        上图为一个三位的ADC,即其所能能表示的分辨率位2的3次方,从000~111

  • 分辨率:ADC的分辨率指的是对于允许范围内的模拟信号,它能输出离散数字信号值的个数。例如,12位的ADC分辨率即为12位,或者说分辨率为满刻度的1/(2^12)。一个10V满刻度的12位ADC能分辨输入电压变化最小值为:

10V  X  1/(2^12) = 2.4mV

  • 转换误差:转换误差通常是以输出误差的最大值形式给出。表示A/D转换器实际输出的数字量和理论上输出的数字量之间的差别。
  •  转换速率:ADC的转换指的是每秒转换的次数

4 ADC转换方式

4.1 逐次逼近:

4.2 双积分式ADC

二、ESP32 模数转换

ESP32集成了两个12位SAR(逐次逼近寄存器)的ADC,并支持18通道(支持模拟的引脚)的测量。

ADC驱动器API支持ADC1(8个通道,连接到GPIO 32-39)和ADC2(10个通道,连接到GPIO 0、2、4、12-15和25-27)。但是,ADC2的使用对应用程序有一些限制:

  • Wi-Fi驱动程序使用了ADC2。因此,应用程序只能在未启动Wi-Fi驱动程序时使用ADC2。
  • 在一些开发板中ADC2引脚用作捆绑引脚(GPIO 0、2、15),因此不能自由使用。例如GPIO0:用于选择运行方式

 ADC配置:

  1. 精度设置:

    typedef enum {ADC_WIDTH_BIT_9  = 0, /*!< ADC capture width is 9Bit*/ADC_WIDTH_BIT_10 = 1, /*!< ADC capture width is 10Bit*/ADC_WIDTH_BIT_11 = 2, /*!< ADC capture width is 11Bit*/ADC_WIDTH_BIT_12 = 3, /*!< ADC capture width is 12Bit*/ADC_WIDTH_MAX,
    } adc_bits_width_t;

    ESP32内置12位ADC,可以在9位到12位的精度之间调整。

  2. 衰减倍数:
    typedef enum {ADC_ATTEN_DB_0   = 0,  /*!<The input voltage of ADC will be reduced to about 1/1 */ADC_ATTEN_DB_2_5 = 1,  /*!<The input voltage of ADC will be reduced to about 1/1.34 */ADC_ATTEN_DB_6   = 2,  /*!<The input voltage of ADC will be reduced to about 1/2 */ADC_ATTEN_DB_11  = 3,  /*!<The input voltage of ADC will be reduced to about 1/3.6*/ADC_ATTEN_MAX,
    } adc_atten_t;
    

    不同的衰减倍数对应不同的检测电压范围

三、程序编写

void adc_Init(){adc1_config_width(ADC_WIDTH_12Bit); //设置为12位的ADC 2^12=4096//设置ADC1通道6,参考电压为1.1Vadc1_config_channel_atten(ADC1_CHANNEL_6 ,ADC_ATTEN_11db);
}void app_main(void){adc_Init();int read_raw; //ADC值while(1){read_raw=adc1_get_raw(ADC1_CHANNEL_6); //采集ADC1 6通道的ADC值printf("adc=%d,%dmv\r\n",read_raw, (read_raw*1100)/4096); //ADC值以及mV计算vTaskDelay(1000/portTICK_PERIOD_MS);}
}

四、结束

本文介绍了ADC模数转换的一些基本内容,并编写程序实现ESP32模数转换功能。

ESP32学习:AD/DA数模转换相关推荐

  1. 52单片机 (十七)AD DA 数模转换

    ADC 简介 ADC(analog to digital converter)也称为模数转换器,是指一个将模拟 信号转变为数字信号.单片机在采集模拟信号时,通常都需要在前端加上 A/D 芯 片.下面我 ...

  2. AD模数转换DA数模转换

    模数转换 模拟信号只有通过A/D转化为数字信号后才能用软件进行处理,这一切都是通过A/D转换器(ADC)来实现的.与模数转换相对应的是数模转换,数模转换是模数转换的逆过程,在一般的工业应用系统中传感器 ...

  3. AutoLeaders控制组——51单片机学习笔记(AD/DA、红外遥控)

    本篇内容是观看B站江科大自化协UP主的教学视频所做的笔记,对其中内容有所引用,并结合自己的单片机板块进行了更改调整. 以下笔记内容以一个视频为一个片段(内容较多,可能不适合速食,望见谅) 一些内容涉及 ...

  4. 51单片机学习笔记AD/DA

    AD/DA AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号.比如单片机只能识别0与5V数字信号,当输入为2.5V--模拟信号时,就需要转化为单片机所 ...

  5. MCU-51:单片机之AD模数转换与DA数模转换

    目录 一.AD/DA介绍 二.硬件电路模型 2.1 模型 2.2 硬件电路 三.运算放大器 3.1 运算放大器介绍 3.2 运放电路 四.DA原理 4.1 T型电阻网络DA转换器: 4.2 PWM型D ...

  6. 单片机C语言DA转换,51单片机PCF8591的DA转换程序详解[含HL-1与HJ-c52 DA代码AD/DA原理图](可直接复......

    以下是补充(能想到的范围有限有没想到的还请谅解) DA工作原理 基于PCF8591芯片 DA是什么? n DA指数模转换(Digital to Analog),顾名思义,就是把数字信号转换成模拟信号. ...

  7. ZYNQ之高速AD/DA验证实验

    文章目录 前言 一.ADDA模块介绍 二.添加ROM IP核 三.添加ILA IP核 四.编写测试程序 五.管脚分配 六.连接开发板测试 总结 前言 本实验是高速AD/DA验证实验,将使用高速DA芯片 ...

  8. 【正点原子FPGA连载】第三十五章高速AD/DA实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

  9. PCF8591 ---AD\DA转换器的使用(IIC通信的软件模拟与应用) (by 51单片机)

    依旧是借着蓝桥杯的机会,来学习一些模块,和软件模拟一些通信方式. 今天学习的模块是PCF8591,一款AD\DA转换器,使用IIC通信方式. 芯片的内部框图如下所示: 各引脚作用如下表所示: 仍旧和之 ...

最新文章

  1. x264_sps_init
  2. JAVA程序(阶乘10以内)
  3. r语言折线图_R语言做多变量可视化分析?
  4. 前序表达式 中序表达式 后序表达式
  5. [UVALive 3983] Robotruck
  6. 域名扫描linux,ksubdomain 无状态域名爆破工具
  7. Haar特征计算过程【DataWhale学习记录】
  8. GAMES101-现代计算机图形学入门-闫令琪——Lecture 22 Animation Cont 学习笔记【完结】
  9. matlab程序阻尼牛顿法,matlab阻尼牛顿法
  10. Windows下pig-0.17启动时遇到的问题及解决
  11. PTA实验4-1-2 求奇数和 (15分) 本题要求计算给定的一系列正整数中奇数的和。
  12. 手把手教你搭建 RabbitMQ 集群
  13. 如何学习单片机——从51过渡到STM32
  14. Android DEX安全攻防战
  15. ASEMI场效应管7N60的极限和静态参数详解
  16. ActionScript 3.0 杂乱笔记3
  17. python学习笔记之pyinstaller failed to execute script问题
  18. 从val_loss,train_loss,test_loss中产生的问题
  19. 中学-综合素质【8】
  20. 基于原子势函数及人工蜂群算法进行形状匹配优化(Matlab代码实现)

热门文章

  1. 延锋安道拓:简化工作流程 实现研发数据外发安全可控
  2. 2021安道拓企业研究数据报告_爱普搜汽车
  3. c语言报名入口,考试报名入口
  4. 国家推行电子货币见解
  5. 图片极致压缩,不失真
  6. 重学React基础知识整理(二)
  7. 消息中间件架构面面观
  8. 好气色“吃”出来 7条守则缔造美肌—多喝水、喝对水
  9. 多个label,可变长情况下使用Masonry
  10. 邮票问题---动态规划