ADC(Analog-to-DigitalConverter)详细ADC是指模拟/数字转换器,它是用于将模拟信号转换为数字信号的器件。DAC是指数字/模拟转换器,它是用于将数字信号转换为模拟信号的器件。ESP32有两个ADC单元和两个DAC单元,它们可以用于测量或者输出模拟电压。特点:
分辨率:ESP32的ADC具有12位分辨率,这意味着它可以区分
2^{12}
即4096个不同的电压级别。这提供了相对较高的精度,适合于需要精细电压读取的应用。
通道数量:它支持多达18个模拟输入通道,这使得ESP32能够同时从多个传感器读取数据。
可编程衰减:ADC提供了可编程衰减功能,允许用户根据需要调整输入信号的衰减量,以适应不同的输入电压范围。这增加了ADC的灵活性,使其能够适应更广泛的应用场景。
使用示例:通过Arduino库中的analogRead(引脚名称)函数,可以轻松读取模拟信号的数字输出。例如,使用一个电位器作为输入,可以通过以下代码读取并打印ADC值
constintadcPin=14;//ADC引脚intadcValue=0;//存储ADC值voidsetup(){(115200);//初始化串口}voidloop(){adcValue=analogRead(adcPin);//读取ADC值(adcValue);//通过串口打印delay(100);//稍作延时}DAC(Digital-to-AnalogConverter)详细特点:分辨率:ESP32的DAC是8位的,这意味着它可以输出
2^8
即256个不同的模拟电压级别。虽然分辨率较ADC低,但对于许多应用来说已经足够。
通道数量:ESP32提供了两个独立的DAC通道,通常映射到GPIO25和GPIO26。这允许同时控制两个模拟输出。
输出范围:DAC通道能够将数字信号转换成连续的模拟电压输出,输出电压范围一般从0V到3.3V。使用示例:通过Arduino库中的dacWrite(io引脚,数值)函数,可以将数字值转换为模拟电压输出。以下代码示例展示了如何使用DAC输出一系列从0V到3.3V逐步变化的电压:
defineDAC_PIN25//DAC引脚voidsetup(){(115200);//初始化串口}voidloop(){for(intvoltage=0;voltage=255;voltage++){dacWrite(DAC_PIN,voltage);//输出电压floatactualVoltage=voltage*3.3/255.0;//计算电压值("DACOutputVoltage:");(actualVoltage,3);//打印电压值,保留三位小数("V");delay(1000);//延时,便于观察变化}}