论坛风格切换切换到宽版
  • 7212阅读
  • 52回复

关于智能频率显示组件的误差问题(熊军锋先生请进) [复制链接]

上一主题 下一主题
离线BD7RC
 
发帖
3283
只看楼主 倒序阅读 0楼 发表于: 2005-06-02
问题的由来:

今天早上,熊军锋先生在我开的“智能频率显示组件第三次提供(2004年11月)”主题中回复了这样一个帖子:(蓝色部分是熊先生的回复)

=======================================================
引用:
-----------------------------------------------------------------------
作者bd7rc
现在大家应该理解我只想提供成品,不想提供散件的原因了吧?

因为这个频率显示组件涉及到单片机的烧写问题,有些人从来就没有用过单片机;而所用的单片机pic16f84,又是一个使用比较灵活的芯片,可以根据使用者的需要设置其内部振荡电路方式、看门狗等的方式。本来设计者的初衷是方便使用者,但可惜对初学者来说是一个灾难:不会设置!!

另外,频率显示组件的校准也是一个大问题:没有标准信号发生器;不会设定校准参数。造成测量误差极大!

而当这些问题发生时,大家肯定要向我提出,有时没空,回答晚了,还产生误解,唉~~

有关芯片的烧写的问题,大家参考一下这个老帖子,希望能提供一点帮助:
http://www.hellocq.net/forum/showthread.php?t=92714

另外,不要怀疑我提供的烧片文件和源程序的真实性,很多人和我一样,就是用它做出来的。
----------------------------------------------------------------------


由于这一频率计计数时是采用的中断方式工作,所以在频率较高时本身误差就很大。这是不可避免的。因为单片机在工作时,响应中断必须等到正在执行的执令执行完。在这期间,信号可能已经经历了几个周期。并且这一等待的时间是不固定的。一次测量要经过很多次中断,所以误差较大。
=======================================================

帖子的地址链接是:
http://www.hellocq.net/forum/showthread.php?t=100506&page=12&pp=20
离线BD7RC
发帖
3283
只看该作者 1楼 发表于: 2005-06-02
我想就这个智能频率显示组件的误差问题,和熊先生、以及众高手、众用户探讨一下。
注意,请不要夹杂太多的感情因素。
离线BD7RC
发帖
3283
只看该作者 2楼 发表于: 2005-06-02
先看一下熊先生的测试条件:
(图片加亮处理了一下,图片出处:“我做的接收机及dds控制板”
http://www.hellocq.net/forum/showthread.php?t=108801
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BD7RC
发帖
3283
只看该作者 3楼 发表于: 2005-06-02
再看一看他的测量结果(1):
(同样,图片加亮处理了一下,图片出处:“我做的接收机及dds控制板”
http://www.hellocq.net/forum/showthread.php?t=108801
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BD7RC
发帖
3283
只看该作者 4楼 发表于: 2005-06-02
看一看他的测量结果(2):
(同样,图片加亮处理了一下,图片出处:“我做的接收机及dds控制板”
http://www.hellocq.net/forum/showthread.php?t=108801
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BD7RC
发帖
3283
只看该作者 5楼 发表于: 2005-06-02
熊先生的以上测量数据汇总:(左为dds输出,中间为频率计测值,右边为误差 )
1.234567-----1.23467-----103hz
1.888888-----1.88903-----142hz
9.000000-----9.00071-----710hz
45.000000----45.00355----3550hz
50.000000----50.00393----3930hz

分析结果:随着频率的升高,误差越来越大。

以上数据是基于他研制成功的dds,该dds的主要参数熊先生表述为:“置频最小间距:1hz,dds控制误差:<180000000/2^32约0.021”
离线BD7RC
发帖
3283
只看该作者 6楼 发表于: 2005-06-02
刚好今天完成了学生的毕业论文答辩工作,暂时空闲下来,手头又有些仪器,自己就再测量了一把,把有关的测量数据图片给大家看一下。


测试用的信号发生器是北京凯弘公司出的kh1650c函数信号发生器,最高输出频率6mhz(抱歉,手头只有这么一台自己认为精密可靠的、频率不够高!),能调节hz位,测量时仅让其输出正弦波。电源为实验室常用的稳压电源,调在9.5v。所有机器、设备包括频率计,全部开机预热1小时以上再进行测量。
离线BD7RC
发帖
3283
只看该作者 7楼 发表于: 2005-06-02
首先测量的是智能频率显示组件自己初始化后直接测量的状态(即:未校准,07h单元中的校准参数为默认的15h,,08h单元中的校准参数为默认的01h)

信号发生器输出分别为1、2、3mhz的情形:
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BD7RC
发帖
3283
只看该作者 8楼 发表于: 2005-06-02
信号发生器输出分别为4、5、6mhz的情形:
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BD7RC
发帖
3283
只看该作者 9楼 发表于: 2005-06-02
我的测量结果数据汇总:(左为dds输出,中间为频率计测值,右边为误差 )
1.000000------1.00006------60hz
2.000000------2.00012------120hz
3.000000------3.00017------170hz
4.000000------4.00023------230hz
5.000000------5.00030------300hz

分析结果:随着频率的升高,误差越来越大。似乎与熊先生的测量结果一致?
离线BD7RC
发帖
3283
只看该作者 10楼 发表于: 2005-06-02
将智能频率显示组件校准(实际上是改变07h、08h两个单元中的数据,然后微调一下组件上的微调电容,本此实验中07h变为13h,08h的没有改动),然后保持原来的状态,仅改变信号发生器的输出频率再次进行测量。
离线BD7RC
发帖
3283
只看该作者 11楼 发表于: 2005-06-02
信号发生器输出分别为1、2、3mhz的情形:
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BD7RC
发帖
3283
只看该作者 12楼 发表于: 2005-06-02
信号发生器输出分别为4、5、6mhz的情形:
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线BD7RC
发帖
3283
只看该作者 13楼 发表于: 2005-06-02
结果?!!!基本没有误差,就连有误差显示的数据也是在99999~00000间闪动!!

智能频率显示组件在校准前的表现和校准后的表现明显是不同的!
离线BD7RC
发帖
3283
只看该作者 14楼 发表于: 2005-06-02
我们回过头来看看熊先生谈到的单片机中断时延问题。

的确,使用中断方式计数的频率计,单片机还必须额外处理一些的事情,比如重新装载中断计数初始值等。如果这些额外的时间不计入闸门时间内的话,将产生测量误差,特别是当测量闸门比较长,需要多次中断时,误差更大。

所以,2004年《无线电》12期有一篇关于频率计制作的文章(署名熊军锋,应该是这里的熊先生吧?),就提出使用延时方式来取得闸门时间,根据《无线电》网站提供的源程序,该频率计在0~140mhz档的闸门时间为1s,>140mhz档时为4s,产生闸门时间的延时程序分为粗调、细调、微调三个部分,可以根据晶振精确设定时间。根据我们刚刚完成的实验(我的一个学生的毕业设计),这种方法还是可取的。

那么,中断方式计数的频率计的误差就该很大且不可避免了?

不是的,我们可以研究中断发生前后的单片机的反应,准确判断需要额外执行的指令,把这些额外的时间考虑上,可以最大程度上减少误差的发生。另外,可以通过减小测量周期(闸门时间)来减少误差积累(智能频率先生组件的测量周期大约在100ms左右);此外,通过算法的分段补偿,更可进一步减少误差。

在单片机制作的频率计中,不管是延时方式还是中断方式,产生误差的原因,都是是否多或少考虑了几条指令的额外运行时间,如果大家都认真考虑误差因素,两种方式上实际并没有太大的差别,关键是考虑的深度和减少误差的方法。
离线BD7RC
发帖
3283
只看该作者 15楼 发表于: 2005-06-02
智能频率显示组件程序的原作者不是我,我至今还是没有完全看明白他的思路,所以一些东西我没法说出来,但,对于这个频率计,我是推崇倍至,不是因为他原来设计多么巧妙(我没完全看懂),而是在实际应用中,这个频率计的分辨率、准确度、稳定度、测量速度大大改变了我原来对单片机频率计的成见,而且干扰非常小。

智能频率显示组件的误差到底怎么样呢?不可避免的,受环境温度和所用的普通晶体的影响,从冷态开机到连续正常稳定工作,几十hz的偏差是有的,随着测量频率的上升,误差会有所加大,但一般会少于100hz,绝对不可能达到khz数量级!

上面演示的数据图片中,已经清楚地向大家传答了一个信息:没有经过校准的智能频率显示组件,将产生很大的误差!
离线BD7RC
发帖
3283
只看该作者 16楼 发表于: 2005-06-02
熊先生的测量值为什么产生如此大的误差,我想上面我已经说明白了:没有校准!

另外,他使用的信号源的稳定度、精确度,我无从知道,但根据我们的实验(我带的另外一个学生也刚刚完成dds方面的一个毕业论文),这种dds,在业余情况下,尽管理论上的精确度很高,环境的温度、使用晶振的类型、使用的算法、甚至发送控制字周期的长短对dds的都会产生影响,甚至在用手放在芯片上帮助dds散热时都有影响。因此在业余情况下,说达到了1hz以上的精度意义不大,因为稳定度没有绝对的保证。在一般情况下,这样的dds和标准信号相差一两百hz是很正常的,当使用的晶体有误差时产生的误差更大,并且,由于dds本身的累加误差,随着频率的升高,误差也不可避免加大。

关于dds的误差,我和ba6bf曾有过一段讨论,大家可以搜索一下。
离线BD7RC
发帖
3283
只看该作者 17楼 发表于: 2005-06-02
此外,测量仪器的预热也非常重要,一般进行精确测量前,都要求所有的仪器设备至少要开机预热10分钟以上。

我目前在使用的一个dds套件,从冷态开机到正常工作,大约有150hz左右的偏差(成品测量频率计和dds先在热稳定工作状态下校准好,过几天后先预热成品测量频率计,完成预热后再开dds测量),连续工作中的dds偏差在15hz以内,(不知道是dds飘还是成品测量频率计本身飘了!)
离线BD7RC
发帖
3283
只看该作者 18楼 发表于: 2005-06-02
我想我要阐述的问题已经说完了。最近带学生论文,晕头晕脑的,大家别怪我八股哦~~

欢迎大家拍砖!
离线BG7TBL
发帖
2965
只看该作者 19楼 发表于: 2005-06-02
7rc辛苦了!!!
我详细看过程序,编得不是很简洁,不过效果绝对是一流的!!!