基于单片机技术的正弦波波形失真度控制
扫描二维码
随时随地手机看文章
1 正弦波的失真度
设所生成的一个正弦波为A,其功率为P,它包含的谐波分量为A1,A2,……An,其相应的功率分别是P1,P2,……Pn,那么正弦波失真度r定义为:
我们研制的磁耦合非接触式温度传感器是靠正弦波进行非接触传递信号的,该正弦波的频率大小代表某一温度值,因此对正弦波发生器发出的正弦波的失真度有很高的要求。因为其谐波分量的存在(即便进行了滤波),还足以产生一个不存在的温度值,从而导致错误的测量和错误的控制。
正弦波的失真度可用“正弦波失真仪”来测量。
2 单片机正弦波发生器
采用查表方式的单片机正弦波发生器的工作原理如下:
(1)对正弦信号进行采样,设正弦波一个周期采样点数共N点。参见公式(1)
式中n=0,1,……N-1
考虑到正弦函数数值范围从-1→0→+1,将它们转化为定点无符号数值存放,如存放的位数M取8,那么对公式(1)进行数值迁移,参见公式(2)
这样正弦函数值范围-1→0→+1,存放的8位(即M)二进制数据便相应为0→128→255(以十进制表示)。依次对公式(2)采样可得X(n),n=0,1,……N-1,共N个数据,组成一张正弦数据表,固化在EPROM中。
(2)编制查表程序,从头到尾依次取出数据,再由D/A芯片输出转变成模拟量,—个完整的正弦波便产生了。设从表中每取一个数据,并将它从D/A芯片输出至少需要时间为ts,那么输出一个完整的正弦波需要的时间为TM,且TM=ts*N。
(3)查表程序周而复始进行下去,便可实现连续的正弦波输出。
3 采样点数N对失真度的影响
微机化正弦波发生器是用N个依次以正弦变化的数值来驱动D/A芯片而产生“正弦波”的。每输出一点X(n),需要的最小时间为ts,那么一个完整的正弦波(即一周)需要的时间为TM,且TM=ts*N。此时正弦波的最高频率为
设编制的子程序ts约为1μs,如N取200,则fmax,亦即如果要求输出正弦波的频率f大于4998Hz,只能使N小于200。所以可以得出定性的结论:N越大,正弦波的失真度越小,但正弦小限fmax也下降。
本文提出一个数字化正弦波“波形精度”R这一概念,R的定义为:
定义“波形精度”R的理由如下:
微机化正弦波是取出正弦波表格中的数值,由D/A输出产生阶跃状的模拟量正弦波。显然,正弦波表格中的数据值直接影响阶跃状正弦波的形状。“波形精度”R是对正弦波表格数据优劣的一种描述,它应该等价于“失真度”对模拟正弦波的描述。
根据理想采样的规则,数据X(n)点与点之间的采样时间间隔是恒定的,即上面的ts,亦即X(n)序列在时间上是均匀分布在正弦波上的N个点的采样值。由于N是有限的,所以这些点不能组成光滑的正弦波,而是有落差ΔR的,且ΔR=X(n)-X(n-1),它的大小反映了曲线的不光滑度(和失真度对应)。正弦波的斜率变化最大在n=0处,所以ΔRmax=X(1)-X(0)。用相对误差的概念,便得“波形精度”R。下面分别用公式(4)定量计算N=200,N=100的波形精度R200和R100:
显然R200<R100,N=200相比N=100而言其阶跃状正弦波更趋向于光滑的理论值。
4 量化误差对正弦波失真度的影响
对正弦波的采样值X(n)而言,必须用有限位(M位)二进制数值来表示。它和理论的正弦值之间存在着量化误差。量化误差的存在直接影响正弦波的失真度,因为采样值X(n)实际并不落在理论正弦值曲线上,两者之间的差即量化误差。显然,M越大,量化误差越小,X(n)越趋向于理论正弦值,从而产生的实际正弦波失真度也越小。至于量化误差对正弦波失真度影响的定量计算本文不再展开。其结论是:
M的取值应该和D/A芯片的字长相一致。当选用的D/A芯片是8位字长时,它的数据管脚D0~D7也一共8位,正弦数据表格存放位数M也应是8位,以便数据传送时位与位之间一一对应。此时用12位、16位存放正弦表格毫无意义。
5 小结
为了使微机化正弦波发生器发出高品质的正弦波,设计时可在下列几方面给予关注:
(1)尽可能提高单片机的晶振频率,编制采样D/A输出的子程序尽可能简洁,这样运行时间ts便减小,高品质正弦波的频率上限fmax可提高;
(2)在满足最高频率的条件下,取尽可能大的N,即正弦表格的采样点数尽可能大,使产生的实际正弦波失真度减小;
(3)在考虑成本的基础上,选用转换速度快、字长大的D/A芯片,这样会减小量化误差,从而减小失真度。
参考文献
[1]严隽道.回转物体内温度的非接触测量及控制[J].中国纺织大学学报,1982,(2).