01 DAC梯形电阻
一、前言
昨天测试了这款STM32G431的开发工具链。今天准备再尝试做些有趣的实验。看到朋友在B站分享他们制作的 R2R 梯形电阻 DAC 的方案,自己也比较感兴趣,因此,就用手中普通的1k,2k 电阻,测试一下 梯形电阻 DAC 方案的性能如何。
二、电路设计
在昨天电路的基础上,设计测试电路。将原来的六芯调试端口中的 RST 去掉,只保留下 SWD 两根线以及 串口通讯线。仍然使用 1117进行3.3V的稳压。右边是10路电阻,组成 10 bit 的DAC 输出。因为手边并没高精度电阻,因此先测试 10 比特的DAC的效果。等有了一定的测试数据之后,等高精度的电阻到货之后再提高DAC的精度。通过单面布板,使用一分钟制板方法制作测试电路板。
ADTest2024MarchR2RDACG431.SchDoc
▲ 图1.2.1 测试电路原理图
▲ 图1.2.2 测试电路板
一分钟之后,获得了测试电路板。非常完美。下面对其进行焊接。将昨天的芯片从电路板上拆下来,焊接在这次电路板上。下面上电进行测试。
三、电路测试
给电路板施加 5V 工作电源。由于是拆卸的旧芯片,所以现在电路已经开始工作了。下面通过探针夹子给单片机下载软件。通过测试,证明了,在 SWD 下载程序的时候,G431不需要 RESET 管脚。这样就可以在设计调试端口的时候更加的简洁。
根据输出电阻对应的端口,在CubeMX中,设置这些端口为输出端口。编写子程序,根据设定的DAC数值,改变输出端口的高低电平。
下面对输出DAC的数值进行递增,可以在梯形电阻输出端测量到锯齿波信号。整体上,输出的锯齿波非常漂亮,说明了DAC工作正常。不过,电压上升过程出现了细微的波动,这也说明输出电压信号具有较大的误差。
▲ 图1.3.1 输出斜边的电压信号
输出正弦波形。观察过程中,也会注意到,输出波形中会出现一些毛刺。比如在这里就是一个小的毛刺,实际上还会有更大的毛刺。这应该是在修改输出DAC 管脚的时候,毕竟不是同时进行修改。所以这出现了上面的毛刺。后面应该可以通过算法改进这种情况。
下面控制输出DAC的数据,从 0 变化到 1023,测量输出电压的变化。记录100个数据点,现在看看具体的测量结果吧。这个结果令人感到诧异。虽然整体上是线性上升的。但可以看到距离线性之间还是存在着较大的误差。这是测量数据与线性拟合电压之间的误差。最大误差达到了 28mV。
▲ 图1.3.2 输出DAC与电压之间的关系
▲ 图1.3.3 误差范围
※ 总 结 ※
本文测试了 R2R 梯形电阻 DAC的方案。由于使用了普通的电阻,没有使用高精度电阻,所以输出电压的误差达到了28mV。输出整体线性还算可以,输出电压范围是0V 到3.3V。