在消费电子行业,难免有时为了省成本而出现需要用到DAC而单片机没有DAC外设的情况,那么遇到这种情况怎么办呢?
PWM+滤波器:使用单片机IO口输出占空比可调的PWM,通过RC滤波器滤除其谐波分量,保留直流分量,便可实现DAC输出(根据傅里叶变化,任何波形均可分解为无数频率的正弦波的叠加)。比如幅值为3.3V占空比为50%的方波中含有1.65V的直流分量和谐波分量;如果将幅值3.3V占空比50%的方波过RC滤波后(对方波的谐波分量进行衰减),输出的电压会是1.65V,如下仿真图所示,红色为输入信号,蓝色为过了二阶RC滤波器后的取出来的直流分量。公式为:
Vout=Vin*D(D为PWM波的占空比)
R/2R型DAC:使用多个IO加上电阻组合为DAC(分辨率一般较低,N个IO可以生成2Nbit位的DAC),比如用三个IO和电阻可以组合为一个8bit的DAC。如下图所示,使用开关代替IO输出高电平或者低电平,S3接到VCC(三个开关分别为0 0 1),则输出电压为VCC/8,S2接到VCC(三个开关分别为0 1 0),则输出电压为VCC/4,以此类推,最大输出电压为7*VCC/8(三个开关分别为1 1 1时);若拓展分辨率可按照R/2R型类推。
那么,除此之外,有没有更好的方案呢?欢迎评论区留言!!