点击链接下载设计资料:https://download.csdn.net/download/m0_51061483/92081541
2、系统功能介绍
数控电压源是一种将数字信号转换为可调模拟电压输出的电子装置,可应用于电源调节、仪器校准、实验教学等场景。本设计采用“加/减计数器 + 双DAC数模转换 + 运算放大器加法器”的结构,实现稳定可靠、范围可调的输出电压控制。本系统的核心思想是通过两个DAC分别控制电压的“十位”和“个位”精度,利用双DA输出经放大器处理后再在加法器中叠加,实现高分辨率且调节方式灵活的电压源输出。
本系统的功能设计包括:
(1)使用加减计数器设置电压值
计数器作为本系统的数字调节单元,通过按键可实现电压的逐步加大或减小。计数器输出的是一个数字量,代表当前待转换的电压幅度。
(2)双DAC数模转换(个位 + 十位)
由于常规DAC芯片精度或数量不足,本设计采用两个DAC分别负责个位与十位电压转换,使得整体输出电压分辨率更高、可控范围更大。
(3)运放放大器与加法器进行信号整合
从两个DAC输出的电压信号经运算放大器进行比例调整,再通过加法器将两个模拟信号叠加,实现最终需要的输出电压数值。
(4)输出电压范围可调
根据运放增益与DAC参考电压设定,使输出可在 05V、010V 或其他范围内变化。
(5)原理仿真采用Proteus环境
由于Multisim中的DAC芯片较少,本设计采用Proteus进行电路仿真,实现对DAC输出、电压调节与运放放大器的可视化验证。
此设计不仅技术结构清晰,同时在电子课程、数模混合系统设计、电压源校准电路开发中具有很高参考价值。
3、系统电路设计
系统电路由多个功能模块构成,每个模块在整体数控电压输出过程中承担着关键角色。本部分将从计数器、DAC模块、运算放大器模块、加法器模块、电源与参考电压模块等方面展开详细介绍。
3.1 加减计数器模块
计数器模块是数控电压源的数字输入接口,主要功能是:
(1)用户通过按键或拨码开关进行“加1”或“减1”的操作;
(2)计数器的当前数值用作DAC的输入;
(3)可以配置为 0~9 或 0~99 的计数范围;
(4)内部可加入锁存器,使电压设置稳定不跳变。
计数器的设计关键点包括:
- 加法与减法同步处理:确保计数时钟一致,避免出现跳数或误触发。
- 防抖逻辑:实际电路中按键容易因机械抖动引起误触发,可采用RC硬件防抖或软件延时防抖。
- 数值溢出处理:如超过最大值 99 需限制不继续增长,低于 00 时不再下降,保持数控电压的可靠性。
计数器输出通常为一个 8 位或 4+4 位组合电路,分别传递给十位DAC与个位DAC,使得整个系统分辨率得以提升。
3.2 双DAC数模转换模块
本设计的核心亮点在于采用两个数模转换器(DAC),分别用于控制电压的不同有效位。
(1)十位DAC用于粗调(高幅度控制)
十位 DAC 输入为计数器输出的高位数字(如十位 0~9),输出电压范围可在 0~5V 或 0~10V,根据参考电压设定。
(2)个位DAC用于细调(低幅度控制)
个位 DAC 处理的是低位数值(0~9),用于小步进的电压微调。
适当设置放大倍数,使个位 DAC 的变化在整体输出电压中占十倍关系,实现精准调节。
(3)DAC典型选择
在Proteus中常用 MC1408、DAC0808 等芯片。
若需更高精度,可考虑 AD7303 之类的双通道DAC芯片。
(4)DAC输出特性
- 输出电流需经运放转换成电压;
- 输出与参考电压线性相关;
- 分辨率越高,输出电压精确度越高。
双DAC结构使得系统在 DAC 芯片数量有限的情况下,也能通过模块组合实现更大的输出范围、更多的可控分辨率与更灵活的系统扩展。
3.3 运算放大器放大电路
DAC输出的电压或电流通常较小,需要通过运放放大才能达到可用的数控输出范围。
放大器模块主要采用反相或同相比例放大,功能包括:
(1)设置输出电压比例系数;
(2)将个位与十位DAC输出进行幅度调节;
(3)提供低输出阻抗,使输出能够直接驱动负载;
(4)可通过调整运放电阻配比设置 010V、020V 或其他输出范围。
例如:
- 十位 DAC 输出可能为 0~1V,经放大器放大 10 倍后变为 0~10V。
- 个位 DAC 输出 0~0.1V,经放大 10 倍也变为 0~1V,用于精细调节。
运放选型建议使用 LM358、OP07、TL081 等常用型号,根据负载特性选择合适带载能力的运放芯片。
3.4 运算放大器加法器电路
加法器是将两个 DAC 模拟信号合成为一个最终输出信号的关键。
加法器设计原则如下:
(1)输入来自十位与个位 DAC 两路模拟信号;
(2)采用同相加法器结构,可避免反相导致的信号倒置;
(3)将两个电压按设定比例叠加;
(4)由电阻比决定信号加权关系;
例如:
- 十位信号占主要份额(加权系数 10);
- 个位信号占次要份额(加权系数 1)。
加法器输出电压公式如下:
Vout = (R2/R1)*V10 + (R4/R3)*V1
其中
- V10 为十位DAC输出电压
- V1 为个位DAC输出电压
- R比决定最终电压比例关系
通过设计合理的阻值,整个系统可以实现精度高、稳定输出的数控电压源。
3.5 电源与参考电压设计
DAC与运放对电压稳定度要求很高,因此电源部分必须进行精心设计:
(1)DAC参考电压直接决定输出电压精度;
(2)运放必须采用低纹波电源;
(3)若输出电压为正负双极性,需提供 ±12V 或 ±15V 电源;
(4)若输出电压为 0~5V 或 0~10V,单电源即可;
(5)加入大容量电解电容和小容量瓷片电容组成 RC 滤波网络;
电源的稳定性直接影响整个数控电压源的可用性与精度。
4、程序设计
程序部分负责对计数器数字量进行处理、控制DAC输入数据以及实现数控逻辑。虽然DAC本身为模拟电路,但数控部分由数字逻辑驱动,可以通过单片机或数字逻辑电路实现计数与控制。
下面以单片机控制的结构为例说明程序设计。
4.1 主程序结构
主程序主要处理按键输入、计数逻辑、DAC输出数据更新:
void main() {
init_all();
while(1) {
read_keys();
update_counter();
output_to_dac();
}
}
程序结构清晰地体现功能模块化设计。
4.2 按键处理与计数器逻辑
void read_keys() {
if(key_add == 0) {
delay_ms(20);
if(key_add == 0) {
counter++;
if(counter > 99) counter = 99;
}
}
if(key_sub == 0) {
delay_ms(20);
if(key_sub == 0) {
counter--;
if(counter < 0) counter = 0;
}
}
}
该段代码实现按键防抖与计数器加减功能,确保系统设置的电压值不会跳动。
4.3 DAC输出更新程序
void output_to_dac() {
unsigned char tens = counter / 10;
unsigned char ones = counter % 10;
dac_write(0, tens); // 十位输出
dac_write(1, ones); // 个位输出
}
通过拆分十位与个位分别送入 DAC0 与 DAC1,实现双DAC配合输出。
4.4 DAC写入函数模板
void dac_write(unsigned char channel, unsigned char value) {
// 示例:SPI写入DAC
spi_start();
spi_send(channel);
spi_send(value);
spi_stop();
}
实际 DAC 驱动方法取决于型号与接口方式。
5、总结
本设计通过数字计数器配合双DAC,再由运算放大器与加法器实现高分辨率、可调范围广的数控电压源输出。整个系统结构清晰,模块分工明确,适用于中高精度电压控制场景。通过十位与个位 DAC 协同工作,不仅解决了单DAC精度不足的问题,还可根据系统配置灵活扩展更多位数,使数控电压范围更大、精度更高。同时运放放大器与加法器的组合,使得输出电压不仅数值精准,同时电路具备高稳定度和低输出阻抗,能直接驱动外部测试或控制设备。
本方案在 Proteus 仿真环境中易于实现,可为教学、实验或工程实践提供可靠的参考模型。在实际硬件应用中,只需根据 DAC 分辨率、运放特性与电源需求进行适当调整,即可构建出高性能的数控电压输出系统。
142