文章目录[隐藏]
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 绘制原理图
- 创建Arduino UNO实验板原理图
- 添加电位器(滑动变阻器、可调电阻),在元器件搜索栏中输入“POT-HG”,如图所示。
- 在原来的Arduino UNO实验板上添加"POT-HG",并将中间接线端接至A0口,添加“LED”灯,将它正极连接到IO9,负极连接到10Ω电阻,修改后的原理图如图所示。
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.00488V,约为0.005V。
可知,可测量的最小变量由分辨率和参考电压决定。Arduino的片内ADC均为10位,当我们需要测量更小的最小变量时,可以通过更改AREF管脚的电压来改变参考电压。
3.2.2 原理图
硬件方面,和第四节一样,我们在Arduino UNO实验板上添加"POT-HG"电位器,并将其中间端接至A0口,AREF需要接至+5V,在”POT-HG”两端接了一个virtual instrument(虚拟仪器)“DC Voltmeter,可以直观观察电压变化。
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); // 一秒刷新一次
}
编译好了之后,下面我们进行仿真。调节电位器的阻值,观察串口输出的数据,并与虚拟电压表进行比较。不同阻值下,串口输出的电压值不同
版权声明:本文为CSDN博主「acktomas」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/acktomas/article/details/105168719
暂无评论