大家好,欢迎来到IT知识分享网。
目录
1、模拟信号
生活中,接触到的大多数信号都是模拟信号,如声音、温度的变化等。如图1所示,模拟信号是用连续变化的物理量表示的信息,信号随时间作连续变化。在模拟输入引脚是指带有ADC(Analog-to-Digital Converter,模数转换器)功能的引脚。非常常见的外设,用于将模拟信号(如电压)转换成数字信号。以便可以读取和处理。
Arduino自己的硬件Arduino Uno模拟输入功能有10位精度,即可以将0~3.3V的电压信号转换为0~1023的整数形式表示。ESP8266也是只有10位,而ESP32,默认12位分辨率,可以接受0~3.3V电压信号转换成0~4095的整数形式表示。
下图是ESP8266 min-D1开发板引脚定义,仅有A0引脚支持ADC输入,
Pin |
说明 |
ESP-8266 内部引脚 |
TX |
TXD |
TXD |
RX |
RXD |
RXD |
A0 |
Analog input, max 3.3V input |
A0 |
D0 |
IO |
GPIO16 |
D1 |
IO, SCL |
GPIO5 |
D2 |
IO, SDA |
GPIO4 |
D3 |
IO, 10k Pull-up |
GPIO0 |
D4 |
IO, 10k Pull-up, BUILTIN_LED |
GPIO2 |
D5 |
IO, SCK |
GPIO14 |
D6 |
IO, MISO |
GPIO12 |
D7 |
IO, MOSI |
GPIO13 |
D8 |
IO, 10k Pull-down, SS |
GPIO15 |
G |
Ground |
GND |
5V |
5V |
外部电源 |
3V3 |
3.3V |
3.3V |
RST |
Reset复位 |
RST |
ESP32-S3 集成了两个 12 位 SAR ADC,每个ADC有10个通道,共支持 20 个ADC输入
2、ADC输入
analogRead()函数
此函数用于用于获取给定引脚/ADC通道的ADC原始值
analogRead(pin)
pin: 读取的模拟输入引脚的名称,被指定的引脚必须是模拟输入引脚,该值未校准。
analogReadMillivolts
该函数用于获取给定引脚ADC通道的ADC原始值,并将其转换为mV校准结果。
uint32_t analogReadMilliVolts(uint8_t pin);
pin :读取的模拟输入引脚的名称。
analogReadResolution
此函数用于设置返回值的分辨率。默认值为 12 位(范围为 0 到 4095) 对于除 ESP32S3 之外的所有芯片,默认为 13 位(范围从 0 到 8191)。 当设置不同的分辨率时,读取的值将被移动以匹配给定的分辨率
范围是 1 – 16 。如果未使用此函数,则将使用默认值。
void analogReadResolution(uint8_t bits); //bits设置模拟读取分辨率 //注意:对于 ESP32,分辨率介于 9 到 12 之间,它会改变 ADC 硬件分辨率。否则值将被转移。
3、示例
模拟量接线注意:
测量模拟量引脚A0电压,通过analogRead()函数读取,关系:0-1023<—->0-3.3V
void setup() { //定义波特率 Serial.begin(); } void loop() { // 从A0针脚读取模拟量的数值 int sensorValue = analogRead(A0); //将模拟量转为电压,(模拟量0-1023,对应的电压是0-3.3V) float voltage =sensorValue*(3.3/1023.0) /发送到串口监视器输出 Serial.println(voltage); delay(1); }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/147521.html