一起玩儿物联网人工智能小车(ESP32)——65 模数转换器DAC的使用方法

摘要:本文介绍模数转换器DAC的使用方法

之前已经了解过ESP32芯片ADC功能的使用,它可以把模拟的电压信号转换成数字量。今天来看一下DAC(Digital to analog converter)功能是如何使用的,这个功能的作用是将数字量转换为模拟量。在控制电机的时候也需要将模拟量转换为数字量,那和这个有什么区别呢?这个DAC是真正的将数字量转换成模拟电压量,我可以真正的得到某个稳定的电压值。而PWM是用了一种能量等效的办法,通过占空比控制输出的能量来达到控制电机转速的目的,并不是真正的电压调节来调整电机的转速。

ESP32有两个8位数模转换器(DAC)通道,分别连接到GPIO25(通道1)和GPIO26(通道2)。在这里需要注意的是,由于模拟量输出的特殊性,DAC所使用的引脚是固定的,不能像其它功能一样任意选择所使用的GPIO引脚。ESP32的每个DAC通道可以将数字值0~255转换成模拟电压0~Vref(此处的Vref为VDD3P3_RTC引脚输入的参考电压,一般来说其输入的电压值应等于电源电压VDD)。输出电压可按以下方式计算:

out_voltage = Vref * digi_val / 255

由于DAC只支持8位数模转换,因此可以看到DAC的精度是远低于ADC的最高精度的。

在ESP32中,DAC转换器支持以下列方式输出模拟信号:

  1. 直接输出电压。DAC通道持续输出某一指定电压。
  2. 通过DMA输出连续模拟信号。DAC以某一特定频率转换缓冲器中的数据。
  3. 通过余弦波发生器输出余弦波。DAC通道可以输出特定频率和振幅的余弦波。

今天将介绍一下如何使用DAC通道直接输出电压。在Arduino中,乐鑫科技为大家提供了dacWrite()方法来方便的使用DAC输出电压功能。该方法的定义如下:

void dacWrite(uint8_t pin, uint8_t value)

其中,第一个参数为所用的引脚,这个参数的值只能是25或者26,否则程序会报错。value是8位表示输出电压的值。前面有计算公式了。

先来做一个呼吸灯的例子。找出之前使用的RGB LED模块,如下图所示:

具体接线方法如下表所示:

RGB LED模块

ESP32扩展板

-

GND

R

P25

G

P26

这个程序所要实现的功能是红绿LED交替亮起、熄灭。具体程序代码如下所示:

#define LED_R_PIN 25

#define LED_G_PIN 26

void setup() {

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起玩儿科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值