前言
模数转换可以说是单片机最重要的功能了,应用场合也非常多。这篇文章主要是对其基本概念做个解释。
文中涉及的模数电概念我都链接了百科知识,不明白的可以直接跳转观看。
正文
首先这里的模数指的是模拟信号和数字信号,也就是analog和digital,模/数转换就是将连续变化的模拟信号转换为离散的数字信号。(反之亦然)
这里主要是说下模数转换,因为对于控制算法开发,比如智能车或者无人机,经常需要对外部电压进行测量。但是电压是不断变化的,并不是固定的数值。开发者如果想知道具体的电压大小,就需要通过代码进行运算,而运算的参数都得是数字量。这就涉及到怎么把电压转为数值。
这就用到了模数转换器,而模数转换简单的原理就是对电压高低进行量化,这里有个模拟量和数字量的概念。
原始的模拟量是连续的,每个点都有数据,经过AD转换之后变成了离散的数字量,相对于对原始的模拟信号进行了等间隔的抽样。
但是这个等间隔,因为是单片机运行也是有时钟周期的,所以再快也是有时间的。所以也就没办法做到真正的量化,因此,一般就认为只要采样的密度足够高,能表征原有信号的一些特点就好。
这里就引出了采样密度多大合适的问题?
理论上当然是越快越好,因为越快采样点就越密集,也就越接近原始的模拟信号。但是实际过快的采样频率会消耗处理时间,增加数据处理的工作量。因此,有一个最低采样密度的标准,也就是香农采样定理,也称奈奎斯特采样定理。
香农采样定理提出,为了不失真的恢复模拟信号,采样频率应该不小于模拟信号频谱中最高频率的两倍,就是最低采样密度标准。比如220V交流电最快频率为50Hz,那么理论上最低采样频率就是100Hz。但是实际使用过程中,采样频率至少应该是最低采样频率的5到10倍才行。
说回ADC模块,目前常见的ADC有以下几种:
具体解释可以参见文章:AD转换器的种类
目前在单片机应用比较多的,例如stm32主要是逐次逼近型ADC。
逐次逼近的过程其实就和天平秤东西的过程很像。先放最重的砝码,如果还轻,则砝码保留,否则移去。在加第二重砝码,以此类推,直到加到最轻的砝码。所有留下的砝码相加就是该物体的重量。
对应ADC的话,就是将输入的模拟信号与不同的参考电压做多次比较,使转换所得的数字量在数值上逐次逼近输入模拟量的对应值。
逐次比较型AD由一个比较器和DA转换器通过逐次比较逻辑构成,从MSB开始,顺序地对每一位将输入电压与内置DA转换器输出进行比较,经n次比较而输出数字值。其电路规模属于中等。其优点是速度较高、功耗低,在低分辩率(<12位)时价格便宜,但高精度(>12位)时价格很高。
关键字:单片机 模转换器
引用地址:
单片机数/模转换器的概念(A/D)
推荐阅读最新更新时间:2024-11-13 14:39
IAR Embedded Workbench已全面支持极海半导体APM32系列MCU
IAR Embedded Workbench for Arm 9.30已全面支持极海半导体APM32系列MCU芯片 ,广泛应用于智慧家庭、高端消费电子、汽车电子、工业控制、智慧能源等领域,为国产芯片保驾护航 中国上海—2022年7月13日——全球领先的嵌入式开发软件工具和服务提供商IAR Systems日前宣布: 其最新发布的IAR Embedded Workbench for Arm 9.30已全面支持极海半导体APM32系列MCU芯片。 极海高性能、高集成度、低功耗的APM32系列工业级/车规级MCU广泛应用于智慧家庭、高端消费电子、汽车电子、工业控制、智慧能源等安全与可靠性要求高的领域,且表现不俗。 该系列MC
[嵌入式]
单片机_rom_ram,程序容量之迷
引言 单片机的内存有大小之分,内存大的相对较贵,如何选择大小,是个头疼问题,此文是自己在编程过程中遇到和ram,rom大小有关的问题。 1.单片机中xdata 和data xdata是指片外的ram数据,data是指内部的ram数据。 而STC15中会有逻辑在外,实际在内的ram。如下图: 图1 上图摘自stc15的手册中,如果你的单片机ram只有128个字节,所以选择Memory Model时乖乖选择:Small。如下图: 图2 因为Large 模式,会选择外部ram存放和读取数据,你只有内部ram,所以程序会死(实践中我的串口通讯失效)。 所以官方建议: Memory Model : Speci
[单片机]
PIC单片机定时器0的应用
#include #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); void init(); uint intnum; void main() { init(); while(1) { if(intnum==5) { intnum=0; RD0=!RD0; } } } void init() { TRISD=0; PORTD=0; OPTION=0x07; INTCON=0xa0; TMR0=61; } void interrupt TIme0() { T0IF=0; TMR0=61; intnum++; }
[单片机]
单片机出租车计价器设计
出租车计价器的单片机源程序: #include reg51.h #include lcd1602.h #include ds1302.h unsigned char time_add ; void LcdDisplay(); void keyscan(); uint n=0,s=0; uint j=0,k=0; uint t=0; uint tx=0,ty=0,tz=0; uint s18=0,n18=0,t18=0,tx18=0,ty18=0,tz18=0,j18=0,k18=0; uint l=0; uint lx=0,ly=0; uint count; sbit SW=P2^1; sbit LED=P2^0;
[单片机]
通用型工业电源可采用高电压输入,并产生从8个1A到2个4A的输出
引言 当今的工业电子系统包含了许多与消费电子产品相同的组件,如微控制器、FPGA、片上系统 ASIC 及其他电子器件,因而在众多不同的负载电流条件下需要多个低电压轨。另外,工业应用还需要一个按钮接口、一个始终保持接通的电源以用于实时时钟 (RTC) 或存储器、以及从一个高电压电源获得输入功率的能力。其他所需的特性可能包括一个看门狗定时器 (WDT)、一个总停或复位按钮、软件可调的电压电平、以及低输入 / 输出电压和高芯片温度的错误报告功能。 LTC3375 是一款高度可配置的多输出降压型电源转换器,其拥有工业电子设备通常所需的特性,并可灵活地配置最大电流范围为 1A 至 4A 的各种输出。 可配置的最大输出电流
[电源管理]
判断arm立即数是否合法的小程序
今天老师布置了课后习题,有一题是判断立即数的,大家都知道,arm里的立即数并非都是合法的。 描述:如立即数记作 immediate ,8位常数记作immed_8,4位的循环右移值记作rotate_imm,有效的立即数是由一个8位的立即数循环左移偶数位得到,则有效立即数immediate可表示成: immediate = immed_8循环右移( 2 * rotate_imm ) 例:有效立即数 0x0000F200,0x00110000, 0x00012800 无效立即数 0x1010, 0x00102, 0xFF1000 显然,对于8位立即数都是有效的。 其实从定义上判断
[单片机]
怎样制作AVR单片机ISP下载线
下面介绍利用Protel99se电路绘图软件和热转印技术制作这种下载线的方法和步骤。 一、设计ISP下载线 PCB文件利用Protel99se绘带0《自带AVR单片机ISP下载线》一文中的原理图1(为方便制作,可省略该图中的VDl)。并将图中各元件按附表所述进行封装选择。 原理图绘制完毕后,依次点击原理图编辑器中的Tools(工具)/Up-date PCB(更新原理图)菜单,自动生成下载线PCB文件。在编辑下载线PCB文件时,可先按图1所示规划PCB板的大小和布局PCB板上的元件,然后让系统自动布线(为减小PCB尺寸,采用双面布线),最后对自动布线作适当调整,经过手动调整布线后的PCB板如图2所示。 二、分图层打印 P
[单片机]
【GD32 MCU 入门教程】二、GD32 MCU 烧录说明 (2)SWD/JTAG在线下载
GD32系列MCU支持SWD和JTAG(部分型号不支持)接口进行下载调试,这些功能通过ARM CoreSight组件的标准配置和链状连接的TAP控制器来实现的。调试和跟踪功能集成在ARM Cortex-M内核中。调试系统支持串行(SW)调试和跟踪功能,部分型号也支持JTAG调试。调试和跟踪功能具体请参考下列文档: Cortex-M4技术参考手册; ARM调试接口V5结构规范。 目前GD32 MCU主要支持的调试下载设备有:J-linkV8/V9、U-link、标准的CMSIS-DAP调试工具如GD-link。SWD/JTAG的优势在于及下载和调试功能一体,可直接在集成开发环境IDE(如MDK、IAR)中进行下载和在线仿真。同时
[单片机]