基本信息
文件名称:Arduino 系列:Arduino Gemma (基于 ATtiny85)_(15).高级功能:ADC使用.docx
文件大小:22.62 KB
总页数:16 页
更新时间:2025-06-24
总字数:约7.7千字
文档摘要

PAGE1

PAGE1

高级功能:ADC使用

模拟到数字转换器(ADC)概述

ArduinoGemma基于ATtiny85微控制器,该微控制器内置了一个10位的模拟到数字转换器(ADC)。ADC的作用是将模拟信号转换为数字信号,使微控制器能够处理和分析模拟数据。在许多嵌入式系统中,ADC是一个非常重要的功能,因为它允许我们读取传感器(如温度传感器、光敏电阻等)的模拟输出并将其转换为可以处理的数字值。

ATtiny85的ADC有8个通道,但ArduinoGemma只暴露了3个通道供用户使用,分别对应于引脚A0、A1和A2。这些引脚可以用于读取0到5V的模拟电压,并将其转换为0到1023的数字值。

ADC的工作原理

ADC的工作原理是通过采样输入的模拟信号,将其量化为离散的数字值。量化的过程是将模拟信号的电压范围(例如0到5V)分成1024个等分,每个等分对应一个数字值。具体来说,0V对应数字值0,5V对应数字值1023,中间的电压值则按比例分配。

ATtiny85的ADC配置可以通过寄存器进行,但Arduino提供了更简便的函数来使用ADC,这些函数封装了底层的寄存器操作,使得开发者可以更方便地使用ADC功能。

使用ADC读取模拟信号

在ArduinoGemma上使用ADC读取模拟信号非常简单。Arduino提供了analogRead函数,该函数可以直接读取指定引脚上的模拟电压值并返回对应的数字值。

函数原型

intanalogRead(intpin);

pin:指定要读取的模拟引脚编号(A0、A1、A2)。

返回值:0到1023之间的整数,表示读取到的模拟电压值。

示例代码:读取光敏电阻的模拟值

假设我们使用光敏电阻连接到A0引脚,下面的代码示例将读取光敏电阻的模拟值并打印到串行监视器。

//读取光敏电阻的模拟值示例

//定义光敏电阻连接的引脚

constintphotocellPin=A0;

voidsetup(){

//初始化串行通信

Serial.begin(9600);

}

voidloop(){

//读取光敏电阻的模拟值

intphotocellValue=analogRead(photocellPin);

//打印读取到的值到串行监视器

Serial.print(光敏电阻值:);

Serial.println(photocellValue);

//延时1000毫秒

delay(1000);

}

在这个示例中,我们首先定义了光敏电阻连接的引脚photocellPin。在setup函数中,我们初始化了串行通信,以便将读取到的值打印到串行监视器。在loop函数中,我们使用analogRead函数读取光敏电阻的模拟值,并将其打印到串行监视器。最后,我们通过delay函数延时1000毫秒,以便每秒钟读取一次值。

ADC的分辨率和参考电压

ATtiny85的ADC可以配置为不同的分辨率,但ArduinoGemma默认使用10位分辨率。此外,ADC的参考电压也可以进行配置,以适应不同的应用场景。参考电压决定了ADC量化时的最大电压值。

设置参考电压

ArduinoGemma提供了analogReference函数来设置ADC的参考电压。参考电压可以设置为以下几种模式:

DEFAULT:默认参考电压,通常是5V。

INTERNAL:内部参考电压,通常是1.1V。

EXTERNAL:外部参考电压,通过AREF引脚提供。

函数原型

voidanalogReference(inttype);

type:参考电压的类型,可以是DEFAULT、INTERNAL或EXTERNAL。

示例代码:使用内部参考电压读取温度传感器

假设我们使用一个温度传感器连接到A1引脚,并且该传感器的输出电压范围是0到1.1V。我们可以使用内部参考电压来提高读取精度。

//使用内部参考电压读取温度传感器的模拟值示例

//定义温度传感器连接的引脚

constinttemperaturePin=A1;

voidsetup(){

//初始化串行通信

Serial.begin(9600);

//设置ADC的参考电压为内部参考电压1.1V

analogReference(INTERNAL);

}

voidloop(){