一种频率和幅度可程控的低频正弦波基准信号产生方法

文档序号:10697416阅读:681来源:国知局
一种频率和幅度可程控的低频正弦波基准信号产生方法
【专利摘要】本发明采用单片机编程技术和D/A转换技术,发明了一种频率和幅度都可以程控的低频正弦波基准信号产生方法。采用了2倍浮动定时周期输出编码方式和线性插值方式,确保正弦波具有一定的分辨率与频率精确度;采用正弦波相位幅度编码基值与设定的幅度权值进行比较,实现了正弦波幅度可程控调节;最终的正弦波相位幅度编码由单片机输出给D/A转换器,将数字信号转换成模拟信号输出,得到0.01~100Hz范围内基准正弦波信号。本发明实现电路由:单片机的键盘显示与串口通信接口电路、单片机电路、D/A转换电路、差分放大电路组成。
【专利说明】-种频率和幅度可程控的低频正弦波基准信号产生方法 所属技术领域
[0001] 本发明设及一种采用单片机编程技术和D/A转换技术,尤其设及到0.01~lOOHz范 围内,产生频率和幅度可程控的正弦波基准信号产生方法。 技术背景
[0002] 目前,市场上正弦波信号产生电路或忍片基本都在零点几化W上,很难达到 o.omz某种场合需要的特殊要求。并且作为基准源使用的正弦波信号,往往对频率精确度、 失真度W及幅度的稳定性都有较高的要求,鉴于上述原因,本发明通过对单片机编程,发明 了一种0.01~lOOHz范围内,频率和幅度都可W程控的低频正弦波产生方法。

【发明内容】

[0003] 为了满足特殊场合对超低频正弦波基准源的要求,本发明采用单片机编程技术和 D/A转换技术,发明了一种频率和幅度都可W程控的低频正弦波基准信号产生方法。采用了 2倍浮动定时周期输出编码方式,解决了正弦波分辨率与频率精确度的矛盾;采用了线性插 值方式,解决了超低频正弦波编码需要大容量数字编码库与单片机存储容量的矛盾;采用 正弦波相位幅度编码基值与设定的幅度权值进行比较,实现了正弦波幅度可程控调节;最 终的正弦波相位幅度编码由单片机输出给D/A转换器,本发明采用了两个16位D/A转换器, 一个用于产生零线在1/^2基准电压上的正弦波,另一个用于产生在1/^2基准电压上的参考零 线,两个D/A转换器的输出分别接在差分放大器上,将数字信号转换成模拟信号输出,得到 0.01~lOOHz范围内基准正弦波信号。
【附图说明】
[0004] 本发明的电路框图如附图(1)所示,其电路构成分别由:单片机的键盘显示与串口 通信接口电路、单片机电路、D/A转换电路、差分放大电路构成。 本发明单片机产生正弦波主程序框图如附图(2)所示,其程序流程分别由:①单片机初 始化,②键盘扫描与判断是否有工作指令,③启动正弦波编码输出定时器程序,④返回程序 构成,具体内容详见:【具体实施方式】第2节"单片机产生正弦波主程序编程方法"。 本发明产生正弦波编码数目及定时输出周期计算程序框图如附图(3)所示,其程序流 程分别由:①正弦波频率转化成周期程序,②计算编码数目及定时周期,③编码数目不大于 编码库的数目计算编码库寻址步长,④编码库大于编码库的数目计算编码库线性插值步 长,⑤返回程序构成,具体内容详见:【具体实施方式】第3节"产生正弦波编码数目及定时输出 周期计算程序"。 本发明定时器中断服务程序框图如附图(4)所示,其程序流程分别由:①自动装载定时 器定时常数,②判断正弦波编码数目是否大于编码库的数目,③不大于编码库数目的执行 程序,④大于编码库数目的执行程序,⑤计算相位幅度编码输出值,⑥将相位幅度编码输出 给D/A转换器,并返回等待中断六个部分构成,具体内容详见:【具体实施方式】第4节"定时器 中断服务程序"。
【具体实施方式】
[0005] 1、产生正弦波的原理和方法
[0006] 该发明产生正弦波的原理是:通过单片机对正弦波相位幅度值进行数字编码,再 将该数字编码值定时送给D/A转换器,将其转换成正弦波模拟信号,如附图(1)所示。其电路 构成分别由:单片机的键盘显示与串口通信接口电路、单片机电路、D/A转换电路、差分放大 电路构成。
[0007] 单片机对正弦波相位幅度值进行数字编码的基本方法是:首先将正弦波分成2"或 A · 2"等分,对每等分的幅度基值进行数字编码,并在单片机中建立相应的编码库。如果要 产生的正弦波的频率为f,根据该频率求出正弦波的周期T,根据所产生正弦波频率误差和 失真度(或分辨率)的要求,确定每个正弦波周期需要的编码的个数N,N取2的指数倍或A乘 W2的指数倍,再根据编码的个数的十算出单片机定时送给D/A转换器编码的时间Tn:
[000引馬=旱: U) N
[0009] 本发明要求所设置的正弦波的位数是Ξ位数,所产生正弦波的频率误差为0.1%, 为了保证较高的量化分辨率,本发明选用的是单片机89巧5作为产生正弦波的数字编码的 忍片,单片机晶体振荡器选用的是33M溫补晶振,经计算定时周期在lOOuS~200US基本可W 满足上述要求,而且运个定时周期为正弦波编码幅度值的计算、串口、键盘操作和显示留取 了时间。
[0010] 本发明在单片机89巧5程序存储中,事先编好了 100 X26个正弦波相位幅度基值双 字节编码,当要产生的正弦波的频率为f,对应的周期为τ(单位为uS),将T除W100后,再进 行除2计算m次,直到余数小于200为止,运个余数就是单片机定时送给D/A转换器编码的定 时周期Tn,运个定时周期Tn始终在100uS《Tn<200uS范围内,小于最小定时周期2倍范围内 浮动变化,运种定时方法称其为:2倍浮动定时周期输出编码方法。由于晶振是33M,因此定 时器的定时初值为:int(TNX2.75),并将定时器设置为中断工作方式,此时,正弦波相位幅 度编码个数为:N= 100X2"。
[001。 用26除W2",如果结果> 1,则再乘W 2便得到编码库寻址的步长:S = (6-m) X 2,根 据运个步长,单片机得到输出正弦波编码指令后,从正弦波编码库中顺序取出需要的相位 幅度编码基值(每个编码2个字节),本发明设定的幅度值范围为1~255(1个字节),用它与 取得的相位幅度编码基值2字节数相乘,得到一个Ξ字节数,取前面2个高字节数,即为需要 的正弦波相位幅度值编码,从而实现了频率和幅度可编程控制的目的。
[001^ 用26除^2",如果结果<1,那么:S=(m-6)X2即为对编码库两个相邻编码之间进 行插值的等分步长。当单片机得到输出正弦波编码指令,从正弦波编码库中顺序取出第一 个相位幅度编码基值Bn后,便从编码库中取出下一个编码基值Bn+l,在0~90° (和180~ 270°)时,用后面一个编码基值Bn+i减去前一个编码基值Bn,在90~180° (和270~360°)时, 用前面一个编码基值Bn减去后面一个编码基值Bn+l,为了节省运算时间,直接用编码基值的 低位字节相减,如果结果有借位,则用00H带借位对结果再减一次,得到的结果就是两个相 邻编码基值之间的差值A B,再依次计算插值后的编码基值B/ :
[0013]
(2)
[0014] 式(2)中,Κ = 0,1,……,S-1
[0015] 得出插值后的编码基值B。/后,再与设定的幅度值相乘,取前两个高字节数,即为 插值计算后的正弦波相位幅度值编码,从而达到频率和幅度可编程控制的目的。
[0016] 由于本发明采用了两个16位D/A转换器,型号是MAX541,给D/A转换器提供的基准 电压是2.5V,因此不能产生沿0V上下变化的正弦波,为了解决运个问题,本发明的做法是: 由于16位D/A转换器的转换范围是0000H~FFFFH,本发明W8000H作为正弦波的零线,将前 面计算得到的相位幅度值编码,除W2W后,是正半周加上8000H,是负半周则用8000H减去 现在得到的相位幅度编码,输出给其中的一个D/A转换器,产生W1/2基准电压源1.25V为参 考零线的正弦波;另一个D/A转换器则始终W8000H作为输出码,输出1.25V的直流电压作为 产生正弦波的零线参考电压;将两个D/A转换器的输出分别接在差分放大器的输入端,运时 差分放大器输出的就是W0V为零线的正弦波了。
[0017] 2、单片机产生正弦波主程序编程方法
[0018] 单片机产生正弦波主程序编程框图如附图(2)所示,第①步,单片机初始化,是对 单片机进行初始化设置,其中包括设置定时器定时方式,和将两个D/A转化器的输出码都设 置成8000H,使产生的输出信号值为0V;第②步,键盘扫描判断是否有工作指令,是对单片机 键盘电路进行扫描,判断是否有正弦波频率和幅度的设置指令,是否有正弦波信号的输出 指令,是否有停止输出正弦波的指令;第③步,启动正弦波编码输出定时器程序,如果键盘 有启动指令按下,启动正弦波编码输出定时器工作;第④步,返回程序,等待中断并返回到 键盘扫描程序。
[0019] 3、产生正弦波编码数目及定时输出周期计算程序
[0020] 产生正弦波编码数目及定时输出周期计算程序框图如附图(3)所示,第①步,正弦 波频率转化成周期程序,将设置的正弦波频率f转换成周期T(单位uS);第②步,计算编码数 目及定时周期,将T除moo后,再进行除2计算m次,直到余数小于200为止,运个余数就是单 片机定时送给D/A转换器编码的定时周期Tn,正弦波相位幅度编码个数为:Ν=100Χ2";第③ 步,编码数目不大于编码库的数目计算编码库寻址步长,用26除,如果结果> 1,则再乘 W2便得到编码库寻址的步长:S=(6-m)X2;第④步,编码库大于编码库的数目计算编码库 线性插值步长,用26除^2",如果结果<1,那么:S=(m-6)X2即为对编码库两个相邻编码之 间进行插值的等分步长;第④步,返回程序,返回键盘扫描,等待键盘指令。
[0021] 4、定时器中断服务程序
[0022] 定时器中断服务程序框图如附图(4)所示,第①步,自动装载定时器定时常数;第 ②步,判断正弦波编码数目是否大于编码库的数目;第③步,不大于编码库数目的执行程 序,W寻址步长取正弦波相位幅度编码基值;第④步,大于编码库数目的执行程序,W插值 步长进行相位幅度编码基值线性插值计算;第⑤步,计算相位幅度编码输出值,用设定的幅 度值与相位幅度编码基值相乘,取前2个字节,并进行除2计算,是正半周加上8000H,是负半 周则用8000H减去现在的相位幅度编码,得出输出正弦波相位幅度编码值;第⑥步,将相位 幅度编码输出给两个D/A转换器中一个D/A转换器,并返回等待再次中断,直到接收到停止 输出指令为止。
【主权项】
1. 一种频率和幅度可程控的低频正弦波基准信号产生方法,由2倍浮动定时周期输出 编码方法、正弦波相位幅度编码基值线性插值方法,正弦波相位幅度值编码计算方法、正弦 波参考零线变换方法组成,其特征是:正弦波相位幅度编码值直接由程序控制产生,直接达 到所产生的正弦波基准信号频率和幅度可程控的目的。2. 根据权利要求1所述的2倍浮动定时周期输出编码方法,其特征是:单片机定时送给 D/A转换器编码的定时周期TN,这个定时周期TN始终在KTN<2T min范围内,在最小定时周 期TmirJlj小于2倍Tmin范围内浮动变化。3. 根据权利要求1所述的正弦波相位幅度编码基值线性插值方法,其特征是:当单片机 中存储的正弦波相位幅度编码基值库的分辨率小于产生低频正弦波需要的分辨率时,所采 取的在编码库中相邻的两个编码进行线性插值的方法。4. 根据权利要求1所述的正弦波相位幅度值编码计算方法,其特征是:将正弦波相位幅 度基值编码与设定的幅度值进行相乘计算,并取前两个字节,得到相位幅度编码值的方法。5. 根据权利要求1所述的正弦波参考零线变换方法,其特征是:通过两个D/A转换器和 差分放大器,将以1/2基准电压源为参考零线的正弦波转换成以0V为正弦波零线的方法。
【文档编号】G06F1/02GK106066660SQ201610332819
【公开日】2016年11月2日
【申请日】2016年5月13日 公开号201610332819.7, CN 106066660 A, CN 106066660A, CN 201610332819, CN-A-106066660, CN106066660 A, CN106066660A, CN201610332819, CN201610332819.7
【发明人】夏忠, 刘大鹏, 张宇, 徐艳军, 彭润禾
【申请人】江苏省新沂地震台
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1