CN106066660B - 一种频率和幅度可程控的低频正弦波基准信号产生方法 - Google Patents
一种频率和幅度可程控的低频正弦波基准信号产生方法 Download PDFInfo
- Publication number
- CN106066660B CN106066660B CN201610332819.7A CN201610332819A CN106066660B CN 106066660 B CN106066660 B CN 106066660B CN 201610332819 A CN201610332819 A CN 201610332819A CN 106066660 B CN106066660 B CN 106066660B
- Authority
- CN
- China
- Prior art keywords
- sine wave
- amplitude
- coding
- frequency
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/022—Waveform generators, i.e. devices for generating periodical functions of time, e.g. direct digital synthesizers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明采用单片机编程技术和D/A转换技术,发明了一种频率和幅度都可以程控的低频正弦波基准信号产生方法。采用了2倍浮动定时周期输出编码方式和线性插值方式,确保正弦波具有一定的分辨率与频率精确度;采用正弦波相位幅度编码基值与设定的幅度权值进行比较,实现了正弦波幅度可程控调节;最终的正弦波相位幅度编码由单片机输出给D/A转换器,将数字信号转换成模拟信号输出,得到0.01~100Hz范围内基准正弦波信号。本发明实现电路由:单片机的键盘显示与串口通信接口电路、单片机电路、D/A转换电路、差分放大电路组成。
Description
所属技术领域
本发明涉及一种采用单片机编程技术和D/A转换技术,尤其涉及到0.01~100Hz范围内,产生频率和幅度可程控的正弦波基准信号产生方法。
技术背景
目前,市场上正弦波信号产生电路或芯片基本都在零点几Hz以上,很难达到0.01Hz某种场合需要的特殊要求。并且作为基准源使用的正弦波信号,往往对频率精确度、失真度以及幅度的稳定性都有较高的要求,鉴于上述原因,本发明通过对单片机编程,发明了一种0.01~100Hz范围内,频率和幅度都可以程控的低频正弦波产生方法。
发明内容
为了满足特殊场合对超低频正弦波基准源的要求,本发明采用单片机编程技术和D/A转换技术,发明了一种频率和幅度都可以程控的低频正弦波基准信号产生方法。采用了2倍浮动定时周期输出编码方式,解决了正弦波分辨率与频率精确度的矛盾;采用了线性插值方式,解决了超低频正弦波编码需要大容量数字编码库与单片机存储容量的矛盾;采用正弦波相位幅度编码基值与设定的幅度权值进行比较,实现了正弦波幅度可程控调节;最终的正弦波相位幅度编码由单片机输出给D/A转换器,本发明采用了两个16位D/A转换器,一个用于产生零线在1/2基准电压上的正弦波,另一个用于产生在1/2基准电压上的参考零线,两个D/A转换器的输出分别接在差分放大器上,将数字信号转换成模拟信号输出,得到0.01~100Hz范围内基准正弦波信号。
附图说明
本发明的电路框图如附图(1)所示,其电路构成分别由:单片机的键盘显示与串口通信接口电路、单片机电路、D/A转换电路、差分放大电路构成。
本发明单片机产生正弦波主程序框图如附图(2)所示,其程序流程分别由:①单片机初始化,②键盘扫描与判断是否有工作指令,③启动正弦波编码输出定时器程序,④返回程序构成,具体内容详见:具体实施方式第2节“单片机产生正弦波主程序编程方法”。
本发明产生正弦波编码数目及定时输出周期计算程序框图如附图(3)所示,其程序流程分别由:①正弦波频率转化成周期程序,②计算编码数目及定时周期,③编码数目不大于编码库的数目计算编码库寻址步长,④编码库大于编码库的数目计算编码库线性插值步长,⑤返回程序构成,具体内容详见:具体实施方式第3节“产生正弦波编码数目及定时输出周期计算程序”。
本发明定时器中断服务程序框图如附图(4)所示,其程序流程分别由:①自动装载定时器定时常数,②判断正弦波编码数目是否大于编码库的数目,③不大于编码库数目的执行程序,④大于编码库数目的执行程序,⑤计算相位幅度编码输出值,⑥将相位幅度编码输出给D/A转换器,并返回等待中断六个部分构成,具体内容详见:具体实施方式第4节“定时器中断服务程序”。
具体实施方式
1、产生正弦波的原理和方法
该发明产生正弦波的原理是:通过单片机对正弦波相位幅度值进行数字编码,再将该数字编码值定时送给D/A转换器,将其转换成正弦波模拟信号,如附图(1)所示。其电路构成分别由:单片机的键盘显示与串口通信接口电路、单片机电路、D/A转换电路、差分放大电路构成。
单片机对正弦波相位幅度值进行数字编码的基本方法是:首先将正弦波分成2n或A·2n等分,对每等分的幅度基值进行数字编码,并在单片机中建立相应的编码库。如果要产生的正弦波的频率为f,根据该频率求出正弦波的周期T,根据所产生正弦波频率误差和失真度(或分辨率)的要求,确定每个正弦波周期需要的编码的个数N,N取2的指数倍或A乘以2的指数倍,再根据编码的个数N计算出单片机定时送给D/A转换器编码的时间TN:
本发明要求所设置的正弦波的位数是三位数,所产生正弦波的频率误差为0.1%,为了保证较高的量化分辨率,本发明选用的是单片机89C55作为产生正弦波的数字编码的芯片,单片机晶体振荡器选用的是33M温补晶振,经计算定时周期在100uS~200uS基本可以满足上述要求,而且这个定时周期为正弦波编码幅度值的计算、串口、键盘操作和显示留取了时间。
本发明在单片机89C55程序存储中,事先编好了100×26个正弦波相位幅度基值双字节编码,当要产生的正弦波的频率为f,对应的周期为T(单位为uS),将T除以100后,再进行除2计算m次,直到余数小于200为止,这个余数就是单片机定时送给D/A转换器编码的定时周期TN,这个定时周期TN始终在100uS≤TN<200uS范围内,小于最小定时周期2倍范围内浮动变化,这种定时方法称其为:2倍浮动定时周期输出编码方法。由于晶振是33M,因此定时器的定时初值为:int(TN×2.75),并将定时器设置为中断工作方式,此时,正弦波相位幅度编码个数为:N=100×2m。
用26除以2m,如果结果≥1,则再乘以2便得到编码库寻址的步长:S=(6-m)×2,根据这个步长,单片机得到输出正弦波编码指令后,从正弦波编码库中顺序取出需要的相位幅度编码基值(每个编码2个字节),本发明设定的幅度值范围为1~255(1个字节),用它与取得的相位幅度编码基值2字节数相乘,得到一个三字节数,取前面2个高字节数,即为需要的正弦波相位幅度值编码,从而实现了频率和幅度可编程控制的目的。
用26除以2m,如果结果<1,那么:S=(m-6)×2即为对编码库两个相邻编码之间进行插值的等分步长。当单片机得到输出正弦波编码指令,从正弦波编码库中顺序取出第一个相位幅度编码基值Bn后,便从编码库中取出下一个编码基值Bn+1,在0~90°(和180~270°)时,用后面一个编码基值Bn+1减去前一个编码基值Bn,在90~180°(和270~360°)时,用前面一个编码基值Bn减去后面一个编码基值Bn+1,为了节省运算时间,直接用编码基值的低位字节相减,如果结果有借位,则用00H带借位对结果再减一次,得到的结果就是两个相邻编码基值之间的差值ΔB,再依次计算插值后的编码基值Bn′:
式(2)中,K=0,1,……,S-1
得出插值后的编码基值Bn′后,再与设定的幅度值相乘,取前两个高字节数,即为插值计算后的正弦波相位幅度值编码,从而达到频率和幅度可编程控制的目的。
由于本发明采用了两个16位D/A转换器,型号是MAX541,给D/A转换器提供的基准电压是2.5V,因此不能产生沿0V上下变化的正弦波,为了解决这个问题,本发明的做法是:由于16位D/A转换器的转换范围是0000H~FFFFH,本发明以8000H作为正弦波的零线,将前面计算得到的相位幅度值编码,除以2以后,是正半周加上8000H,是负半周则用8000H减去现在得到的相位幅度编码,输出给其中的一个D/A转换器,产生以1/2基准电压源1.25V为参考零线的正弦波;另一个D/A转换器则始终以8000H作为输出码,输出1.25V的直流电压作为产生正弦波的零线参考电压;将两个D/A转换器的输出分别接在差分放大器的输入端,这时差分放大器输出的就是以0V为零线的正弦波了。
2、单片机产生正弦波主程序编程方法
单片机产生正弦波主程序编程框图如附图(2)所示,第①步,单片机初始化,是对单片机进行初始化设置,其中包括设置定时器定时方式,和将两个D/A转化器的输出码都设置成8000H,使产生的输出信号值为0V;第②步,键盘扫描判断是否有工作指令,是对单片机键盘电路进行扫描,判断是否有正弦波频率和幅度的设置指令,如有正弦波频率与幅度的设置指令,则对正弦波的频率和幅度进行设置,并计算出产生正弦波的编码数目及定时输出编码的定时周期;是否有正弦波信号的输出指令,如有正弦波输出指令,则启动定时器工作,输出正弦波信号;是否有停止输出正弦波的指令,如有则停止输出正弦波信号;第③步,启动正弦波编码输出定时器程序,如果键盘有启动指令按下,启动正弦波编码输出定时器工作;第④步,返回程序,等待中断并返回到键盘扫描程序。
3、产生正弦波编码数目及定时输出周期计算程序
产生正弦波编码数目及定时输出周期计算程序框图如附图(3)所示,第①步,正弦波频率转化成周期程序,将设置的正弦波频率f转换成周期T(单位uS);第②步,计算编码数目及定时周期,将T除以100后,再进行除2计算m次,直到余数小于200为止,这个余数就是单片机定时送给D/A转换器编码的定时周期TN,正弦波相位幅度编码个数为:N=100×2m;第③步,编码数目不大于编码库的数目计算编码库寻址步长,用26除以2m,如果结果≥1,则再乘以2便得到编码库寻址的步长:S=(26÷2m)×2;第④步,编码库大于编码库的数目计算编码库线性插值步长,用26除以2m,如果结果<1,那么:S=(2m÷26)即为对编码库两个相邻编码之间进行插值的等分步长;第④步,返回程序,返回键盘扫描,等待键盘指令。
4、定时器中断服务程序
定时器中断服务程序框图如附图(4)所示,第①步,自动装载定时器定时常数;第②步,判断正弦波编码数目是否大于编码库的数目;第③步,不大于编码库数目的执行程序,以寻址步长取正弦波相位幅度编码基值;第④步,大于编码库数目的执行程序,以插值步长进行相位幅度编码基值线性插值计算;第⑤步,计算相位幅度编码输出值,用设定的幅度值与相位幅度编码基值相乘,取前2个字节,并进行除2计算,是正半周加上8000H,是负半周则用8000H减去现在的相位幅度编码,得出输出正弦波相位幅度编码值;第⑥步,将相位幅度编码输出给两个D/A转换器中一个D/A转换器,并返回等待再次中断,直到接收到停止输出指令为止。
Claims (1)
1.一种频率和幅度可程控的低频正弦波基准信号产生方法,由2倍浮动定时周期输出编码方法、正弦波相位幅度编码基值线性插值方法,正弦波相位幅度值编码计算方法、正弦波参考零线变换方法组成,其特征是:正弦波相位幅度编码值直接由程序控制产生,直接达到所产生的正弦波基准信号频率和幅度可程控的目的;
所述2倍浮动定时周期输出编码方法是:单片机定时送给D/A转换器编码的定时周期TN,这个定时周期TN始终在Tmin≤TN<2Tmin范围内,在最小定时周期Tmin到小于2倍Tmin范围内浮动变化;
所述正弦波相位幅度编码基值线性插值方法是:当单片机中存储的正弦波相位幅度编码基值库的分辨率小于产生低频正弦波需要的分辨率时,所采取的在编码库中相邻的两个编码进行线性插值;
所述正弦波相位幅度值编码计算方法是:将正弦波相位幅度基值编码与设定的幅度值进行相乘计算,并取前两个字节,得到相位幅度编码值;
所述正弦波参考零线变换方法是:通过两个D/A转换器和差分放大器,将以1/2基准电压源为参考零线的正弦波转换成以0V为正弦波零线。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610332819.7A CN106066660B (zh) | 2016-05-13 | 2016-05-13 | 一种频率和幅度可程控的低频正弦波基准信号产生方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610332819.7A CN106066660B (zh) | 2016-05-13 | 2016-05-13 | 一种频率和幅度可程控的低频正弦波基准信号产生方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106066660A CN106066660A (zh) | 2016-11-02 |
CN106066660B true CN106066660B (zh) | 2019-01-04 |
Family
ID=57419967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610332819.7A Expired - Fee Related CN106066660B (zh) | 2016-05-13 | 2016-05-13 | 一种频率和幅度可程控的低频正弦波基准信号产生方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106066660B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110161289A (zh) * | 2019-06-21 | 2019-08-23 | 江苏开放大学(江苏城市职业学院) | 一种新型高速同步正余弦信号激励装置及方法 |
CN111366784A (zh) * | 2020-03-19 | 2020-07-03 | 宁波新策电子科技有限公司 | 幅度可调的频率扫描装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1416116A (zh) * | 2002-12-12 | 2003-05-07 | 威盛电子股份有限公司 | 数字波产生装置与方法 |
CN1725629A (zh) * | 2005-03-22 | 2006-01-25 | 杭州华为三康技术有限公司 | 低频时钟信号产生方法及低频时钟信号产生装置 |
CN104503289A (zh) * | 2014-09-10 | 2015-04-08 | 苏州市职业大学 | 一种正弦波信号发生及分析处理器 |
-
2016
- 2016-05-13 CN CN201610332819.7A patent/CN106066660B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1416116A (zh) * | 2002-12-12 | 2003-05-07 | 威盛电子股份有限公司 | 数字波产生装置与方法 |
CN1725629A (zh) * | 2005-03-22 | 2006-01-25 | 杭州华为三康技术有限公司 | 低频时钟信号产生方法及低频时钟信号产生装置 |
CN104503289A (zh) * | 2014-09-10 | 2015-04-08 | 苏州市职业大学 | 一种正弦波信号发生及分析处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN106066660A (zh) | 2016-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100583644C (zh) | 一种积分式a/d转换方法及其模数转换装置 | |
CN106066660B (zh) | 一种频率和幅度可程控的低频正弦波基准信号产生方法 | |
CN102075191A (zh) | 高分辨率交叠比特分段dac | |
CN101435833A (zh) | 一种单相多参数电力仪表 | |
CN107436619B (zh) | 一种高精度低代价数字正弦波发生装置 | |
JP5679412B2 (ja) | Ad変換装置、ad変換方法、及び電子機器 | |
US4503549A (en) | Interpolating function generator for transmitter square root extraction | |
CN102707106B (zh) | 电力次谐波数字信号源 | |
CN103178783B (zh) | 求和调制信号发生器 | |
CN105511353A (zh) | 低频信号发生器及信号调试方法 | |
CN103095297B (zh) | 直接数字频率合成器产生精准频率的方法 | |
CN205121246U (zh) | 基于fpga的dds信号发生器 | |
CN203894328U (zh) | 一种数字rlc测试仪 | |
RU119960U1 (ru) | Аналого-цифровой преобразователь | |
CN115694084A (zh) | 电子式旋转编码器 | |
CN102735923B (zh) | 电能计量片上***及其运行方法 | |
CN202798675U (zh) | 一种da转换芯片数据位数扩展电路 | |
CN108696280B (zh) | 一种数模转换器 | |
CN202614807U (zh) | 电力次谐波数字信号源 | |
CN203535419U (zh) | 一种基准正弦信号产生电路 | |
RU162552U1 (ru) | Датчик реактивной мощности трехфазной сети переменного тока | |
CN201805406U (zh) | 多功能校验仪中的信号发生器 | |
CN201936214U (zh) | 大功率负压数控恒流模块 | |
CN107941884B (zh) | 一种氧分压传感器信号处理和测量电路 | |
TWI426711B (zh) | 具自時脈的類比數位轉換裝置及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190104 Termination date: 20190513 |
|
CF01 | Termination of patent right due to non-payment of annual fee |