具有一定驱动能力的波形生成方法
我们实际电子产品验证测试时经常需要特定形状的波形,这些波形除了频率需要满足要求外,在驱动能力上也有一定要求,否则无法满足驱动目标产品的目的。
任意波形发生器是最常见的一种信号源,虽然波形发生器在波形生成上极具优势,但是一般的波形发生器都没有什么驱动能力,这就需要我们对这些信号进行放大增强以满足需求。
笔者遇到一个pdlc(调光膜)的测试需求,需要对pdlc提供60hz最峰峰值高达到100v左右的平顶的正弦波。
如果是50hz正弦波,我们可以把市电调压使用,但是60hz就需要自行产生该信号。
自行设计电路实现上述目标当然可以,但是考虑到仅临时测试而且波形还会有变动需求,故选择用波形发生器来形成波形。
我使用的波形发生器最大峰峰值20v,且没有什么驱动能力,所以对信号放大是一定要做的。现有的信号放大器可以将信号扩展两倍,即40v峰峰值10瓦,这个电压范围还是无法覆盖pdlc的调整电压范围,进一步升压我采用60hz的变压器,只是变压器进行反接进行二次升压(试验使用,合理性不追究),进而实现电压的进一步提升。因为测试的是60hz准正弦波,所以系统的线性区间应该要主要集中在这个范围即可。
我用的波形发生器如下图,型号jds6600:
运行界面如下:
因为我们要产生的波形不属于标准的波形库里面,需要自己生成,在配套的信号发生器软件里面,自定义波形是用鼠标画图,这个比较难操作出完全想要的波形,转而用程序生成波形数据导入到信号发生器软件里面。我推测这个信号发生器的加载和存储的文件就是2018个点的归一化的AD值,所以可以用octave 直接生成类似的波形文件并载入到波形发生器里面。下面是我用octave 编写的一个生成削顶正弦波的代码:
function [wave_data]=gensin(cut_peak,rate)
%input parameter:
% cut_peak:是否需要消顶
% rate: 如果需要,消除比例(按照最大值是1,大于rate的值会全部设置为rate)
x=0:2*pi/2047:2*pi;
y=sin(x);
if(cut_peak)
for i=1:length(y)
if(y(i)>abs(rate))
y(i)=abs(rate);
elseif(y(i)<-1*abs(rate))
y(i)=-1*abs(rate);
end
end
plot(y);
wave_data=sprintf('%0.6f\n',y);
else
plot(y);
wave_data=sprintf('%0.6f\n',y);
end
endfunction
wave_data=gensin(1,55/68.)
save 2.txt wave_data
生成的波形在octave查看如下图:
然后用notepad编辑2.txt,移除前面几个头和最后面几行非数据行将数据导入波形发生器,生成的波形如下图:
功率放大:
Dpa1698 10w 最大峰峰值40v,使用主芯片是lm1875l 本质上应该就是一块音频放大电路
变压器:输入110v 60hz, 输出12v 20w
反接接上变压器后的输出如下图,峰峰值将近80v:
下面是测量的几组升压情况实测表:
输入(信号源) | 功放 | 变压器输出 |
5 | 10 | 80v |
4 | 8 | 64v |
3 | 6 | 49v |
2 | 4 | 32v |
1 | 2 | 16v |
从图上可以看出,系统信号的放大约为16倍
经实际验证该输出电压是可以让pdlc膜片工作的。