0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用AVR微控制器集成的ADC从周围环境中获取模拟读数

454398 来源:工程师吴畏 2019-07-31 16:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

原理图

怎样用AVR微控制器集成的ADC从周围环境中获取模拟读数

ADC的快速回顾

大多数人认为模拟领域已经落后于他们,但事实是模拟领域从未如此强大!随着物联网的兴起和传感器的生产,全球每秒都在进行数十亿的模拟读数。这只是微控制器生产商将ADC外设直接集成到其器件中的众多原因之一。

ADC将模拟信号转换为数字信号

通常测量ADC

由于ADC是数字的,模拟信号被量化为离散的步骤

这意味着ADC只能准确无误地实现它们的位宽(即10位ADC)测量特定电压电平

最大数字值等于ADC 正参考电压(通常为VCC)

最小数字值等于ADC 负参考(通常为GND)

ADC需要时间来转换信号

在ATmega168中,ADC具有以下特性:

10位分辨率(+ Vref和-Vref之间的1024个离散电压电平)

精度为2LSB(高8位精度保证)

高达15,000个样本/秒

6个多路复用输入源

1.1V 带隙参考

配置ADC

我们可以使用之前ADC,需要配置用于ADC测量的外设和I/O引脚。

左对齐还是右对齐?

当ADC完成转换操作后,结果存储在一对中8位寄存器(10位结果不适合单个8位寄存器)。由于ATmega是原生的8位器件,因此使用8位ADC不如10位结果更有意义,但这会降低结果的分辨率。但是,必须正确读取10位数的8位结果,否则结果将不正确。为此,我们需要读取前8位(位9-2),而不是后8位。使用ADLAR位很容易实现,当设置为1时,将使ADC结果保持正确。这意味着我们不需要读取结果寄存器(ADCH和ADCL)并进行一些操作,而是直接读取ADCH并忘记ADCL。

配置I/O端口

现在我们可以直接读取ADCH以获得8位结果,而不必担心位操作(在分辨率的成本),我们现在需要配置我们的模拟引脚。默认情况下,ATmega168上的I/O引脚配置为数字引脚,这意味着它们只能处理1和0。因此,要将输入配置为模拟引脚,我们使用DIDR0寄存器,它代表数字输入禁用寄存器。不幸的是,并非每个引脚都具有模拟输入的能力,因此请务必注意带有标签ADCx的引脚。例如,引脚23至28是ATmega168上的模拟输入引脚。

配置ADC模块

配置ADC的最后阶段包括打开ADC,设置预缩放器时间以及确定ADC的参考值。

通过将ADCSRA寄存器中的ADEN位置1来打开ADC模块。

在大多数情况下,预缩放器不是太重要了,为了简单起见,我们将预缩放器设置为其最大值(设置ADCSRA寄存器中的所有ADPSx位)。

ATmega168上的ADC可以介于0V和某个参考电压之间,通常设置为VCC。由于大多数电路都是这种情况,我们需要将Aref引脚连接到也接地的电容,我们还需要将REFSx位设置为使用AVCC作为参考。

使用ADC

使用ADC非常简单。选择将从中取出模拟读数的通道,然后,为了开始转换,ADSC位(在ADCSRA中找到)将打开。转换完成后,ADC硬件会自动清零ADSC位。

通过设置ADMUX寄存器中的相应多路复用器位MUX3-MUX0来选择要读取的模拟引脚。

软件示例

此示例从ADC0(PC0,引脚23)读取模拟值并进行比较他们到一个特定的价值。如果模拟读数超出指定值(定义为TRIGPOINT),LED(连接到PD0,引脚2)将打开。一旦ADC读数低于指定值,LED就会关闭!

/*

* AVR IO.c

*

* Created: 03/01/2018 11:25:21

* Author : RobinLaptop

*/

#define F_CPU 1000000UL

#define TRIGPOINT 128

#include

#include

int main(void)

{

// Configure PORT D bit 0 to an output

DDRD = 0b00000001;

// Configure PORT C bit 0 to an input

DDRC = 0b00000000;

// Configure ADC to be left justified, use AVCC as reference, and select ADC0 as ADC input

ADMUX = 0b01100000;

// Enable the ADC and set the prescaler to max value (128)

ADCSRA = 0b10000111;

// Main program loop

while (1)

{

// Start an ADC conversion by setting ADSC bit (bit 6)

ADCSRA = ADCSRA | (1 《《 ADSC);

// Wait until the ADSC bit has been cleared

while(ADCSRA & (1 《《 ADSC));

if(ADCH 》 TRIGPOINT)

{

// Turn LED on

PORTD = PORTD | (1 《《 PD0);

}

else

{

// Turn LED off

PORTD = PORTD & ~(1 《《 PD0);

}

}

}

结论

本文仅介绍ADC背后的基础知识,但我们已经开始从现实世界中进行模拟测量。当然,您可以阅读数据表并了解其他更高级的功能,包括触发和其他电压参考。但就目前而言,这应该为您提供足够的知识,开始制作需要读取模拟值的AVR项目!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • AVR
    AVR
    +关注

    关注

    11

    文章

    1137

    浏览量

    81231
  • adc
    adc
    +关注

    关注

    100

    文章

    7401

    浏览量

    553805
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ATtiny3224/3226/3227:高性能低功耗的tinyAVR® 2系列微控制器

    Microchip Technology ATtiny3224、ATtiny3226与ATtiny3227 8位微控制器 (MCU) 采用带硬件乘法器的AVR® CPU,运行速率高达20MHz,具有
    的头像 发表于 10-14 16:26 344次阅读
    ATtiny3224/3226/3227:高性能低功耗的tinyAVR® 2系列<b class='flag-5'>微控制器</b>

    Microchip AVR32DD/AVR16DD微控制器:高性能与低功耗的完美结合

    Microchip Technology AVR32DD和AVR16DD 8位微控制器基于AVR® CPU(带硬件乘法器,在1.8V至5.5V整个电源电压范围内运行时钟速度高达24MH
    的头像 发表于 10-13 13:44 461次阅读

    Microchip AVR64DD14/20 微控制器:高集成度与低功耗的完美结合

    的运行时钟速度高达24MHz,具有64KB闪存、8KB SRAM和256字节EEPROM。微控制器提供14引脚或20引脚封装。avr DD系列采用Microchip Technology的技术,具有灵活和低功耗架构,包括事件系统、智能
    的头像 发表于 10-13 11:38 401次阅读
    Microchip <b class='flag-5'>AVR</b>64DD14/20 <b class='flag-5'>微控制器</b>:高<b class='flag-5'>集成</b>度与低功耗的完美结合

    AVR® DD微控制器系列技术解析:架构与功能特性

    Microchip Technology AVR16/32DD28/32 avr® DD微控制器采用avr CPU,硬件乘数运行时钟速度高达24MHz,具有高达32KB的闪存,以及高达
    的头像 发表于 10-11 15:54 420次阅读
    <b class='flag-5'>AVR</b>® DD<b class='flag-5'>微控制器</b>系列技术解析:架构与功能特性

    Microchip AVR64EA28/32/48微控制器:高性能与低功耗的完美融合

    和512字节EEPROM。该微控制器采用28、32和48引脚封装。AVR EA系列采用Microchip的现有技术,具有灵活的低功耗架构,包括Event System、智能模拟功能和高级数字外设。
    的头像 发表于 10-11 14:50 344次阅读
    Microchip <b class='flag-5'>AVR</b>64EA28/32/48<b class='flag-5'>微控制器</b>:高性能与低功耗的完美融合

    Microchip AVR32EA 系列微控制器:高性能与低功耗的完美融合

    Microchip Technology AVR32EA28/32/48微控制器AVR® EA系列的一部分,采用带硬件乘法器的AVR CPU,时钟运行速度达20MHz。
    的头像 发表于 10-10 15:16 402次阅读
    Microchip <b class='flag-5'>AVR</b>32EA 系列<b class='flag-5'>微控制器</b>:高性能与低功耗的完美融合

    Microchip Technology AVR32/16DD14/20微控制器 (MCU)数据手册

    Microchip Technology AVR32/16DD14/20微控制器 (MCU) 采用带硬件乘法器的AVR^®^ CPU,运行时钟速度高达24MHz,具有高达32KB闪存、高达4KB
    的头像 发表于 10-10 14:46 459次阅读
    Microchip Technology <b class='flag-5'>AVR</b>32/16DD14/20<b class='flag-5'>微控制器</b> (MCU)数据手册

    AVR64EA微控制器:高性能与灵活性的完美结合

    Microchip Technology AVR64EA28/32/48 AVR® EA微控制器AVR CPU配备了以高达20MHz的时钟速度运行的硬件乘法器。
    的头像 发表于 10-10 11:32 401次阅读
    <b class='flag-5'>AVR</b>64EA<b class='flag-5'>微控制器</b>:高性能与灵活性的完美结合

    Microchip Technology AVR® DU微控制器数据手册

    Microchip Technology AVR^®^ DU微控制器采用AVR^®^ CPU,其硬件乘法器运行时钟速度高达24MHz。这些MCU具有16KB/32KB/64KB闪存、2KB/4KB
    的头像 发表于 10-09 15:15 336次阅读
    Microchip Technology <b class='flag-5'>AVR</b>® DU<b class='flag-5'>微控制器</b>数据手册

    AVR32SD20/28/32微控制器技术解析与应用指南

    Microchip Technology AVR32SD20/28/32 AVR^®^ SD 8位微控制器 (MCU) 将AVR CPU与硬件乘法器相结合,时钟速度高达20MHz。该M
    的头像 发表于 09-29 09:58 509次阅读
    <b class='flag-5'>AVR</b>32SD20/28/32<b class='flag-5'>微控制器</b>技术解析与应用指南

    NuMicro®系列微控制器具有相同模块的ADC的每个通道是否可以同时采样?

    NuMicro®系列微控制器具有相同模块的ADC的每个通道是否可以同时采样?
    发表于 08-26 08:08

    ADuCM360/ADuCM361低功耗、精密模拟微控制器中文手册

    电子发烧友网站提供《ADuCM360/ADuCM361低功耗、精密模拟微控制器中文手册.pdf》资料免费下载
    发表于 04-09 17:14 0次下载

    ADC的DGND与控制器的DGND是什么关系?

    尊敬的TI专家,通常在高精度ADC,都会有AGND和DGND两个引脚,比如ADS1254的17脚和12脚。 在设计,基于控制器的数据采集系统会出现多地的处理疑问如下: 1.
    发表于 01-24 08:04

    汽车微控制器虚拟控制器的分类与实践

    虚拟控制器(V-ECU)是指通过软件在模拟环境运行,模仿实际硬件控制器功能的系统组件。它可用于开发、测试和验证嵌入式系统,而无需依赖实际的
    的头像 发表于 01-06 15:23 1942次阅读
    汽车<b class='flag-5'>微控制器</b>虚拟<b class='flag-5'>控制器</b>的分类与实践

    新唐科技推出专为高温度环境设计的微控制器

    高温高压环境微控制器的智慧之选 在当今科技飞速发展的时代,各行各业对于电子设备的性能要求日益提升,尤其是在极端环境下,微控制器的稳定性和可靠性更是成为了衡量产品品质的关键因素。面对高
    的头像 发表于 12-23 13:54 953次阅读