一、前言
很多单片机都不具备DAC输出,但会有多路PWM输出,下面测试利用PCA芯片,GP8500,将PWM信号转换成模拟电压信号。测试一下这个方案,以备之后应用积累经验。
设计基于STC32G单片机的测试电路。选择 PWMB中的第四个通道,也就是PWM8 的信号发送给 GP8500,由它将 PWM信号转换成模拟电压。铺设单面PCB,适合一分钟制板方法制作测试电路板。
一分钟之后得到测试电路板,焊接清洗之后 进行测试。现在电路板工作电源为 5V。
下载STC32G程序的时候, 选择内部时钟为35MHz, 基于此,在PWM初始化的时候,设置时钟为单片机内部时钟7分频,周期为1000。这样,输出PWM信号为5kHz,现在设置的占空比为四分之一。
▲ 图1.3.1 频率5kHz,占空比为四分之一的PWM波形
此时,测量GP8500模拟电压输出,会发现,它上面出现了高频寄生震荡波形。平均电压为 1.25V,符合在占空比为四分之一情况下对应5V的四分之一的电压。为什么 会出现这个高频震荡呢。想起了在焊接电路的时候,GP8500输出端口的滤波电容,我想当然的使用了手边的 0.1微法的电容进行滤波。但是,在GP8500器件手册中,要求 GP8500输出端口的滤波电容只能在 0 到 100pf之间。是否就是因为这个原因造成了 GP8500输出震荡呢? 为了证实这个怨言,将这个电容去掉,在电路板上不焊接任何电容。重新测量,可以看到,GP8500输出信号中就不再出现高频震荡了。
▲ 图1.3.2 输出电压波形中带有高频震荡
▲ 图1.3.3 去掉GP8500输出滤波电容之后,输出电压不再震荡了
下面,每隔一毫秒,更新一次PWM输出占空比,让占空比按照正弦规律进行变化,此时可以看到PCA输出了正弦波信号。中间的断续显然应该是因为更新的时间间隔比较大。不过,其中还包含有令人不安的波形。比如这里出现了非常细小的毛刺波形。这种毛刺出现,好像也不是随机的。感觉应该是在特殊的输出数值中出现的。具体是什么原因,现在一时毫无头绪。
▲ 图1.3.4 输出正弦波的PWM信号
示波器单次捕捉这个毛刺,放大之后,可以看到,这是 STC32G单片机输出PWM信号出现了抖动。于是乎就破坏了前后两次的PCA 转换结果。所以,这个毛刺的问题,应该有 STC32G单片机来背这个锅。这是另外一次捕捉的毛刺结果,是同样的问题。那么问题来了,为何STC32G单片机在输出PWM波形的时候,会出现这种抖动呢?
本文测试了利用STC32G的PWM输出,通过GP8500产生模拟信号的功能。在测试过程中,发现,GP8500模拟信号输出端口不能够并联 0.1微法的电容,否则就会出现高频震荡。输出端口可以不焊接任何电容。另外一个意外,那就是STC32G单片机输出PWM波形中,会出现抖动。这究竟是什么原因,现在还不得而知。
如何将GP8101 的工作电压改为5V?: https://zhuoqing.blog.csdn.net/article/details/136605372
[2]GP8500 PAC 芯片的特性: https://zhuoqing.blog.csdn.net/article/details/136774706
[3]测量GP8500的动态特性: https://zhuoqing.blog.csdn.net/article/details/137201737
[4]重新测试 GP8500 芯片: https://zhuoqing.blog.csdn.net/article/details/137200037