免费大餐之一:我的频率计(参考国外牛人Jesper制作)。
明年就要毕业了,准备暑假去北京练练手,一是积累点经验,二是认识点社会上的朋友。这一年,在坛子里学到很多东西,一直想拿出点东西和大家分享,无奈整日忙于导师的项目没时间整理,临走前将我业余时间做的小东东拿出来和大家分享。
原代码:点击此处下载armok01122831.rar
原理图:http://cache.amobbs.com/bbs_upload782111/files_6/armok01122832.gif
万能板制作效果:
http://cache.amobbs.com/bbs_upload782111/files_6/armok01122833.jpg
http://cache.amobbs.com/bbs_upload782111/files_6/armok01122834.jpg
http://cache.amobbs.com/bbs_upload782111/files_6/armok01122835.jpg
http://cache.amobbs.com/bbs_upload782111/files_6/armok01122836.jpg 这个频率计没有做前端信号调理,只能测量实验室的标准波。我用实验室的老频率计测过,非常准确。可以测到10M是没有问题的。
出学者可以拿来玩玩:)
好运! good 楼主好棒,一连拿出3个。 三楼的朋友:这些东东很容易做,连我这种电子菜鸟都做的出来,可想而知啦。
可惜这里玩FPGA的不多:) 顶 搂主给大家详细讲一下频率计的原理吧。 这是作者的原文:
The method of measuing a frequency is simple. First, the counters are enabled for 1 mS. If the count is larger than 4096 (4.096 MHz), the count is shown on the display, and a new count is made. If less that 4096, we can get better resolution with a larger gate time, so we try 10 mS. Again, if the count is larger than 4096 (409.6 KHz), the count is shown, otherwise we try 100mS, or down to 1 S.
原理很简单,590先对输入信号进行分频然后送CPU定时器1计数,主要任务都交给硬件实现了。软件就是用恰当的方法读这些数,并实现自动量程功能,原作者的程序是C写的。 一直没有搞懂为什么以4096为分界点,希望楼主解释一下,谢谢!!! 不错。
但这个频率计也太太复杂了吧?
过两天,我来公布一个只有不到10个元件的高性能频率计制作资料,大家来制作看看如何。 mymach:这个我也不是很明白,不过:
取2的阶乘可以避免捕获数据的乘除发运算;
作者设定的捕获时间分别是(方便计算)1ms,10ms,100ms,1s,每次捕获值在0-65536之间(即:0到2的16次幂)对应:
1ms--->65M
10ms-->6.5M
100ms->650k
1s---->65k
又:590频响在40M以内,看来不能选65536。 I use AVR too :期待ING。不要跳票呀 不错呀.你玩FPGA的吗?交流一下! :)期待 I use AVR too 的好东东。
bynce:我才玩,还很菜。chenbin0011@yahoo.com 交个朋友多交流哈。 跳票? 不会吧,不就是一个频率计嘛。
这个频率计是用 AVR309 (M8)做的,所以才会不到10个元件,可以先照AVR309搭好线路板,等我整理下资料就发。
因为利用USB与上位机PC通信、显示和供电,还可有自动记录和频率变化曲线记录的功能,成本应该也在10元之内。
和楼上的一样,没有加入前端信号处理,所以测标准方波会比较准。
下面是记录的一个测量记录片段:用它来测示波器输出的5V标准方波(1KHz)
22:23:00 1000Hz
22:23:01 1000Hz
22:23:02 1000Hz
22:23:03 1000Hz
22:23:04 1000Hz
22:23:05 999Hz
22:23:06 999Hz
22:23:07 999Hz
22:23:08 999Hz
22:23:09 999Hz
22:23:10 999Hz
22:23:11 999Hz
22:23:12 999Hz
22:23:13 999Hz
22:23:14 1000Hz
22:23:15 999Hz
22:23:16 999Hz
22:23:17 1000Hz
22:23:18 1000Hz
22:23:19 1000Hz
22:23:20 1000Hz
22:23:21 1000Hz
22:23:22 1000Hz
22:23:23 1000Hz
22:23:24 1000Hz
22:23:25 1000Hz
22:23:26 1000Hz
22:23:27 1000Hz
22:23:28 1000Hz
下面是另一个测量记录片段:是24M时钟的51系统的ALE信号(当未读外部RAM时,ALE脚应该是4M)
22:27:05 3999009Hz
22:27:06 3999276Hz
22:27:07 3999453Hz
22:27:08 3999152Hz
22:27:09 3999259Hz
22:27:10 3999028Hz
22:27:11 3999478Hz
22:27:12 3999197Hz
22:27:13 3999191Hz
22:27:14 3999259Hz
22:27:15 3999229Hz
22:27:16 3999636Hz
22:27:17 3998518Hz
22:27:18 3998893Hz
22:27:19 4000115Hz
22:27:20 3999066Hz
22:27:21 3999879Hz
22:27:22 3999205Hz
22:27:23 3999270Hz
22:27:24 3998564Hz
22:27:25 3998860Hz
22:27:26 3998799Hz
22:27:27 3998920Hz
22:27:28 3999833Hz
22:27:29 3999286Hz 这些小东东也就为用起来方便。有时间我会在那个DDS上加几个键和一个小液晶做个可以脱离上位机的波形发生器。网上很多制作都是基于上下位机结构,这样做多了怕忙不过来:)
楼上的上位机界面是用什么写的,想法不错哦。 谢谢楼主,我也准备做一个,不过因为手头又mega128的试验板,所以想更改成mega128的。
以前改过mega16的,不过是proteus仿真的,呵呵,一直没有搞懂4096的分界点,听你这么一说,有点明白了,再次感谢!! mymach:下面这个连接是也是个频率计,显示用NokiaLCD前端做了简单处理可以借鉴一下:)
http://www.microsyl.com/
好运! 这东西很不准确的。
AVR上的4M时钟本身就是飘的。因此即便测到10M也没有准确度可言。
想办法搞一个jitter小的时钟。然后排出AVR本身的延时不确定性才行。 尽量不要使用内部时钟,很不准确;
如果使用带温度补偿的有源晶体会准确的多,就是价格高一点;成都城隍庙电子市场里有几家卖的,价位在40左右; 请问17楼给的哪个频率计前端处理是怎么回事?/怎么工作的啊??
下面是我用orcad仿真的
http://cache.amobbs.com/bbs_upload782111/files_8/ourdev_179175.JPG
http://cache.amobbs.com/bbs_upload782111/files_8/ourdev_179176.JPG
输入是0.001v的正弦波,但是输出的却是毫不相干的下降的波形 20Mhz的正弦波,LM358能正常放大吗?
我查到358的“增益-频率响应图”,在1M就降到0db啊
http://cache.amobbs.com/bbs_upload782111/files_8/ourdev_179231.JPG
我也头痛1M以上小幅度正弦波用什么电路放大好~ 不是吧,我去好好看看datasheet先 LM358肯定是不行的,我用LM393比较器做过一个不过也最多1MHZ,后来改用CMOS6非门基础电路来做,比如CD4069 74HC04等,很简单的。效果非常不错。如下图
http://cache.amobbs.com/bbs_upload782111/files_8/ourdev_179247.GIF
前面C20 C21是前部保护电路,2个4148负责箝位,
U5A~U5C是COMS非门多级线性放大电路,可提供大的信号放大,放大倍数=R23/R22,一般R23取值1~10M左右,我是选择R23=10M R22=33K,这样,放大倍数约300倍左右,拾取灵敏度为20mVpp,
后面的U5D~U5E以及R24~R25构成了施密特触发整形器。可以将放大后的信号整形成完美的方波信号。R25要大于R24,我是R25=22K, R24=10K。
上面的电路一直在用,电路非常简单,频率也可以做的很高,带宽取决于反相器的限制,可以根据需要选择。实际使用的效果很理想。 另外对于前端电路大家有没有发现,对于输入相同频率,信号波形(方波、正弦波等)不同经过整形后测得的频率会有非常微小的差别?
分析原因估计还是电路的时延以及整形器的门限设置的关系,由于差别不大不影响使用我就没再深入研究下去了,不知道大家对此有没有更深入的研究,可以交流交流,另外也期待能看到更专业更高档的电路,呵呵 CD4069的非门结构是一个PMOS管和一个NMOS管,栅极接在一起作为输入,源极接在一起作为输出。有放大的功能,只要在输入输出加一个1M~10M的电阻起到反馈左右就可以在一定程度上作为线性放大器用,类似与一个输入端接地的运算放大器,一个门的放大倍数约20倍左右,因此3个门串联起来并且加上R23/R22做为负反馈并调节放大倍数。
这样的用法在很多晶振振荡电路上就是这个用法。 23楼是让COMS电路工作在线形区域,实际上就是,任何的门电路,其状态的反转肯顶是要经历过一个从1到0或者从0到1的电平变化过程对吧,那么这个过程理论上是绝对的不需要变化的时间的,而实际东西就不是理论了,假如是5V的逻辑,从0V到5V变化我们说是逻辑状态0边到了逻辑状态1,这个过程中必须会有从0.5到0.8,从1.5到2.5等等这样的中间过程,而这个过程在cmos电路中有很长一段区域是比较线形的,我们就是利用这段先行区域来进行放大,由于COMS阻抗很高,所以我们可以将一个电阻跨在输入和输出间,这样实际上是将输入输出接成了一个负反馈的状态,结果是输入输出的电压都基本在VCC/2的样子,这样只要输入端外加(叠加)一个很小的电压并维持,破坏了原来本身电路的平衡,那么由于逻辑门本身的反转,输出与输入就不同电平,虽然是负反馈,但由于跨接在输入输出之间的电阻值相对很大,输入的信号可以强行把其作用抵消掉,OK,这样就有放大作用了。
当输入的信号不停的变化时,输出也就对应的翻转状态 真地很好, 用FPGA或CPLD做的话就比较简单了。 学习~ 谢谢了 ^_^ mark! 学习 关注中。。。。。。 不错
我毕设就是频率计 个人感觉还是前端模拟部分难做,我有台日本频率计,
前端模拟部分上到180MHz都很OK!用的是厚膜电路!! 标记 我在网上看的是用74HC393来分频。
我直接实验过,Atmega16单片机使用TC的异步方式定时,单片机使用11.0592MHz的晶振,测量3M的频率没问题,如果使用393,可以把频率提升到48MHz左右。 mark 这东西做学生练练手还不错,想把他做成几百兆的成品电路还是算了吧。全新一个2.7G频率计也才一百多块。 mark mark mark 23楼的R23必需大于1M,要不然起不到放大作用。 mark 学习了 谢谢23楼的电路,有空试试 问个比较弱的问题这个频率计如何测周期以及时间间隔,谢谢 有一点有点怀疑,138是否能受的了,数码管位的大电流?虽说是动态扫描和灌电流驱动,但还是有些怀疑,如果楼主这样用很安全,以后我也这么用了,至少比三极管方便,也省了IO口 xiexie mark mark mark 忽然有个想法 可以借鉴魏坤示波器的前端处理 合二为一 呵呵 完善一下 问一下,lz你是如何参考到国外牛人Jesper的制作??? cmos放大那部分讲的很精彩 cool MARK mark mark 顶 mark 欣赏一下 终于找到和我一样学FPGA的了,要好好学习一下 有没有用过4060分频的啊。 输出的通过40110级联计数,在数码管上显示。在用一片4060对32768晶振起震和分频,出来2HZ,在计数出来1HZ做前面401110的锁定电路。 唉哟不错哦。 good 学习学习 学习 mark 附件有问题,无法下载 想看看前端设计 mk mark 把这老的贴子翻出来了,原代码下载不了。 MARK mark 顶个 加上24楼的,输入波形整形就完美了。 MARK关注
mark 频率计 动手能力很强,估计现在都成大大大牛了.. 不错,标记一下 alien2006 发表于 2007-10-31 19:18
CD4069的非门结构是一个PMOS管和一个NMOS管,栅极接在一起作为输入,源极接在一起作为输出。有放大的功能, ...
学习了,非门作放大,,以后多余的非门有用了。 MARK关注 MARK关注 好多挖坟党,06年的贴挖到了16年,10年了啊
页:
[1]