【用Proteus仿真Arduino】 03 -ADC模数转换器

3.1 可以调节明亮度的LED灯

3.1.1 关于模数转换

ADC是Analog-to-Digital Converter的缩写,即模拟/数字转换器,可以实现将模拟量转换为数字量的电子器件。

ADC是模拟量与数字量的桥梁,因为计算机等只能处理数字量。

Arduino UNO拥有6路模拟输入:标号A0至A5,每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0到5V,可以通过AREF调整输入上限。AREF:模拟输入信号的参考电压。

3.1.2 绘制原理图

  1. 创建Arduino UNO实验板原理图
  2. 添加电位器(滑动变阻器、可调电阻),在元器件搜索栏中输入“POT-HG”,如图所示。
    【用Proteus仿真Arduino】 03 -ADC模数转换器_第1张图片
  3. 在原来的Arduino UNO实验板上添加"POT-HG",并将中间接线端接至A0口,添加“LED”灯,将它正极连接到IO9,负极连接到10Ω电阻,修改后的原理图如图所示。
    【用Proteus仿真Arduino】 03 -ADC模数转换器_第2张图片

3.1.3 编写代码

int sensorPin = A0;    // select the input pin for the potentiometer
int ledPin = 9;      // select the pin for the LED
int sensorValue = 0;  // variable to store the value coming from the sensor 
void setup() {
  // declare the ledPin as an OUTPUT:
  pinMode(ledPin, OUTPUT);  
}
 
void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);    
  analogWrite(ledPin, sensorValue/4);          
}

3.1.4 仿真

由于Arduino的ADC为10位,数字量的变化范围为0至1023,而Arduino的PWM的输出变化范围为0至255,所以将获得ADC除以4,就转换至PWM输出。
开始仿真,并调节电位器,电阻越大,LED灯较暗;电阻较小时,LED灯较亮

3.1.5 演示:

3.1.6 参考文献

模仿地址

3.2 电压表

3.2.1 分辨率

分辨率是ADC的一个重要指标,假如它的分辨率为N位,就是将参考电压分成2的N次方份,每一份即为可以测量的最小变化量。Arduino UNO的ADC为10位,默认参考电压为5V,则可分辨的最小变化量为:
A R E F 2 10 = 5 1024 = 0.00488 V , 约 为 0.005 V 。 \frac{AREF}{2^{10}}=\frac{5}{1024}=0.00488V,约为0.005V。 210AREF=10245=0.00488V0.005V

可知,可测量的最小变量由分辨率和参考电压决定。Arduino的片内ADC均为10位,当我们需要测量更小的最小变量时,可以通过更改AREF管脚的电压来改变参考电压。

3.2.2 原理图

硬件方面,和第四节一样,我们在Arduino UNO实验板上添加"POT-HG"电位器,并将其中间端接至A0口,AREF需要接至+5V,在”POT-HG”两端接了一个virtual instrument(虚拟仪器)“DC Voltmeter,可以直观观察电压变化。
【用Proteus仿真Arduino】 03 -ADC模数转换器_第3张图片

3.2.3 程序代码

int sensorValue=0;//AD转换后的数字量
float float_sensorValue;//把10位数字量换算成浮点电压量
void setup() {
  	Serial.begin(9600);  //定义串口波特率为9600
}
void loop() {
  	sensorValue = analogRead(A0);  //读取A0口电压值
   	float_sensorValue=(float)sensorValue/1023*5.00;  //换算为浮点电压值
  	Serial.println(float_sensorValue,2);  //保留两位小数发送数据
  	delay(1000);        // 一秒刷新一次
}

编译好了之后,下面我们进行仿真。调节电位器的阻值,观察串口输出的数据,并与虚拟电压表进行比较。不同阻值下,串口输出的电压值不同

你可能感兴趣的:(protues仿真)