基于AD5272多组变阻器电路设计
简介
本文记录了基于D5272三组电子变阻器电路模块的设计。该模块可以用于基于面包板搭建的各种实验电路的测试功能。相比于“机械变阻器”,该模块更加小巧,通道多,设计比较方便。可以直接精确设置各通道的电阻值。
确定是,电子变阻器的频率响应比起机械变阻器要小。这部分详细参见“AD5272数字变阻器”中的内容。
电路设计
工程文件:
D:\zhuoqing\AltiumDesigner\Tools\2020\DigitRheostat\DigitRheostat.PcbDoc
1. 原理图设计
▲ 电路原理图
2. PCB 设计
设计电路板,使其适合快速制版。获得快速制版后的电路板,经过焊接形成测试电路板圆形。
▲ PCB设计
下面是安装有蓝牙通信模块后的测试电路:
▲ 安装有蓝牙通信模块后的电路板及其外部接口
三个电子变阻器的量程分别为:
通道号 | 变阻器的量程 |
---|---|
1 | 20kΩ |
2 | 20kΩ |
3 | 50kΩ |
软件设计
D:\zhuoqing\window\C51\STC\Tools\DigitRheostat\DigitRheostat.uvproj
//==============================================================================
// PROCESS THE DEBUG BUFFER
//------------------------------------------------------------------------------
void SerialDebugProcessBuffer(void) {
unsigned int nNumber;
unsigned int nAddress;
SerialDebugBuffer2Argument();
if(g_ucSDANumber == 0) return;
if(strcmp("hello", (char *)STD_ARG[0]) == 0)
printf("%s is ready !\r\n", VERSION_STRING);
else IFARG0("ad5272set") {
sscanf(SDA(1), "%d", &nNumber);
sscanf(SDA(2), "%d", &nAddress);
AD5272SetAddress(nAddress);
AD5272WriteRDAC(nNumber);
}
else printf("Error command : %s !\r\n", STD_ARG[0]);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
控制软件说明:
发送命令的格式为:
ad5272 number address
number:0~1023 : 设置电阻从最小增加到最大量程。
address: 0,1,2 : 分别对应着三个变阻器。从左到右分别是 CH0,CH2,CH1
特性测试
1. 电子变阻器应用电压范围
使用一个 1 k Ω 1k\Omega 1kΩ电阻与AD5272串联,接入测试交流信号,测量分压在AD5272上的输出电压波形。具体实验电路如下图所示:
▲ 实验电路
通过分压输出的波形可以看到AD5272的端口电压大体上不能够小于0V,不能够大于其工作电压(5V)。如果超出了这个范围,信号就被钳位在0~5V之间。
因此在实际应用中,一方面需要避免电子变阻器工作电压超出这个范围,另外在电子变阻器上需要加上保护串联电阻,以免超出电压范围之后出现过大的输入电流或者输出电压。
▲ 分压电阻实验波形
下图显示了AD5272电阻变化过程中,其上的分压信号开始饱和过程。
▲ 逐步增加电子变阻器的值,输出波形变化情况
绘制上述动图的PYTHON程序为:
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY -- by Dr. ZhuoQing 2020-04-25
#
# Note:
#============================================================
from headm import *
from tsmodule.tshardware import *
from tsmodule.tsdraw import *
gifid = 5
tsgifff()
for i in range(17):
data = int(1024 / 16 * i / 10)
if data >= 1024: data = 1023
zbcmd(b'ad5272set %d 1'%data)
time.sleep(.2)
tsgifaa()
dop2gif(gifid = gifid)
printf('\a')
#------------------------------------------------------------
# END OF FILE : TEST2.PY
#============================================================
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
参考文献:
文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。
原文链接:zhuoqing.blog.csdn.net/article/details/105646047
- 点赞
- 收藏
- 关注作者
评论(0)