想要单片机输出模拟信号,属于数字信号转化为模拟信号,简称数模转换;而单片机内部的ADC模块属于模拟信号转化为数字信号,简称模数转换,比如电压电流采样、温度测量、湿度测量、压力测量等都属于模数转换。
由于带DA转换接口的单片机很少,可以使用DA芯片进行外围扩展,单片机只是核心处理器,所有功能并不能做得面面俱到,想要精通掌握单片机,各种外围电路扩展是必不可少的。如下图,使用DA专用芯片DAC0832进行外扩,DAC0832是8位的电流型输出D/A转换芯片,接口简单,较容易控制。
D/A接口扩展电路
其中D0~D7为8位数据输入线,与单片机普通IO口相连即可;CS为片选信号,低电平有效,与单片机IO口相连接;ILE为数据锁存控制允许输入线,高电平有效,可直接接5V即可;Vref为基准电压输入,范围-10V~10V;Rfb为反馈信号输入线,内部有相应的反馈电阻;Iout1、Iout2为电流输出端,将电流转化为电压可实现单极性输出及双极型输出。
单极性输出:VO = - VREF ×D/256,输出电压范围:(0 ~ - VREF ×255/256)之间,当VREF = -5V, VOUT =0~5×(255/256)V;当VREF = +5V, VOUT = 0 ~ -5×(255/256)V。上图原理为单极性输出接法。
双极性输出:双极性输出在单极性输出的基础上再加一级运放进行转换,基本原理如下图所示。
选择R2=R3=2R1,则输出电压VOUT= 2×VREF×D/256 -VREF= (2D/256-1)VREF,从公式也可以看出,当数据D=0(8个数据输入线全为0)时, VOUT= -VREF;当数据D=128(8个数据输入线为10000000)时, VOUT= 0;当数据D=255(8个数据输入线全为1)时, VOUT= (2×255/256-1)×VREF= (127/128)VREF,所以当数字量输入D在0~255时,输出电压在- VREF ~+ VREF之间变化