更复杂的方法是 互惠数计数.
频率被定义为(事件数)/(以秒为单位) and measured in Hz.
使用1秒门时间(t)进行计算琐碎 直接读取边缘计数器的频率。
为高达65.536khz的频率进行频率计数器很容易 PIC芯片中的计数器可倒入65535,而不会溢出。
最多65.535khz你所做的就是等待1秒钟而计数 累积,读取值并显示它。它将是赫兹的频率。 超过65.536khz,您必须监控溢出值 同一等 time 做出准确的延迟时间(t)。
注意:使用1秒测量期结果 频率计数计数值是频率的直接测量 没有进一步处理。这也意味着测量结果被解析为1Hz。 (使用T = 0.1s的同时,增加T到10s将在0.1Hz上解析为 10Hz).
这里'是一系列可以购买的频率计数器 Ebay (if you don'想要弥补自己的然后你可以得到一个 便宜货 在这里 - 它将有所有的前面 为您制作的最终电路)。
只需点击您想要并开始的计数器 bidding.
对于以下项目晶体振荡器(其中) 微控制器)用作时基。在这些项目中测量t (设置在一秒)是通过执行需要设定的延迟来进行的 machine cycles.
使用4MHz振荡器提供1MHz的机器循环(一个时期 1US)从大多数情况下使计算和设定时间延迟相当容易 PIC指令在一台机器周期中执行。所以执行1,000,000的这些 循环延迟为1秒钟。
频率计数器的准确性取决于精度 驾驶微控制器的水晶。
这在ppm或百万分之之间指定。其实 相当简单:为4MHz水晶迈出±50ppm的例子。错误那个 晶体可能有(假设晶体被加载正确 电容)将在范围内:
最大可能误差4MHz +(4MHz x 50 x 1e-6)= 4.0002e6
最大可能误差4MHz - (4MHz x 50 x 1e-6)= 39998e6
所以晶体可以在任何频率之间振荡 4000200Hz和3999800Hz。请注意,此频率可以改变(有点) 改变晶体上的装载电容i.e.您可以校准它。
延迟时间是上面的重要测量 FOSC / 4)的水晶为PIC芯片的循环时间(名义上是1MHz) have:
最大循环时间:1 /(1.00005E6)或1 /(1MHz + 50ppm)
最小循环时间:1 /(0.99995E6)或1 /(1MHz - 50ppm)
乘以1E6给出1秒的时间给出延迟 time
最小延迟时间:1E6 /(1.00005E6)0.99995s或(1s - 1s x 50ppm)
seconds.
最大延迟时间:1E6 /(9.9995E6)1.00005s或(1s + 1s x 50ppm)秒。
所以你不'T必须计算所有中间步骤 直接使用ppm值。
注意:如果您有更多的参考振荡器 比频率计数器项目中使用的晶体准确,然后您可以 校准项目晶体。您可以通过调整变量来执行此操作 读取时晶体振荡器电路一侧的电容器 显示输出频率。如果你不'T有一个参考,然后使用固定的 电容器为水晶提供正确的并联负载电容 use.
常用晶体具有±30ppm的PPM规格 到±50ppm(百万分之一的错误),但你可以用ppm购买晶体 ±20ppm。 ppm值越小(误差越小)更准确 您可以测量频率。
注意:除非您,否则温度系数约为±50ppm 使用温度系数为0.034的钟表晶体 ±0.006ppm /ºC。如果温度不会改变,那么这将不会 影响精度e.g.在建筑物中控制的温度或 手表佩戴的地方,即你的体温充当温度 controller!
还有另外两个准确的系统通常非常昂贵,
当然,对于极端准确性要求,这些费用更多的钱(并使用更多
电力,占用更多空间)。
温控晶体振荡器
这些只是位于热源和传感器旁边的晶体,以试图和
保持相对恒定的温度 - 密封在包装中。
烤箱控制晶体振荡器
因为它们如此准确,所以使用了不同的测量即,而不是
PPM(百万分之一)他们使用(PPB)百亿零件。
他们使用腔室被加热到恒定的温度,无论如何
外部温度并允许内部的电子(和晶体)操作
最准确的输出可以使用水晶。
因此,ocxos非常昂贵。
要注意的参数是热身时间(因为它包含一个加热器
需要几分钟才能达到正确的温度)因此设备可以
不要立即使用,你打开它。
类型 | 准确性(PPM / PPB) | 准确性 | 老化/ 10 Year |
老化/ 10年 |
水晶 | 10ppm-100ppm. | 10-5 - 10-4 | 10-20ppm. | 10x10-6 |
TCXO | 1ppm | 10-6 | 3ppm | 3x10-6 |
ocxo. 5-10MHz. | 0.02ppm. (20ppb) |
2x10-8 | 〜0.2ppm(200bpp) | 0.2x10-6 |
ocxo. 15-100MHz. |
0.5ppm (500ppb) |
5x10-7 | ~10ppb | 1x10-8 |
铷原子 | 1x10-6PPM(0.001ppb) | 10-12 | 0.005ppm(5ppb) | 5x10-9 |
资源 维基百科
注意:您还将遇到另一个参数:老化描述了
由于老化组件,随着时间的推移而变化。还有漂移
时间。它可以得到非常复杂和冒险这个网站(febo.com.) 已
有关频率稳定性方面的有用信息。
注意:新的超准确OCXO可从 IQD
(±0.2ppb ocxo)即100倍优于上述正常精度。
还有其他方法可以将准确的时钟变成电路。用一个
属于别人:
有两个要求
定时器1是频率测量(计数边缘)的理想选择 它用作16位计数器,直接从端口占用 pin.
如果Timer 1不可用,则可以使用计时器0。唯一的 区别在于Timer0是8位计数器(增强到18F中的16位 parts).
计时器的最大计数是65535,还有一个计数 设置溢出标志(计时器再次读取零)。计算 溢出次数给出了65536的倍数并读取值 TMR1最终将提供总边缘计数 measurement - T.
测量时间
有两种方法可以测量时间。
中断
LCD频率计数器的当前设计使用定时器1作为事件
计数器和计时器0作为时间计数器。使用LCD提供了相当容易的
以高级语言显示结果的方式通常包括驱动程序
LCD。使用LCD不需要任何特殊技术,它可以是
updated quickly.
它可以工作,只要你不一样'错过了一个事件(对Timer1不是太快的中断
- 但它可以处理相当快的信号)。由于溢出是16位
无论如何,定时器实际中断到处理器都很慢。
使用256溢出(定时器0)使用1MHz内部时钟计算时间
那不是太快。
你可以找到 液晶 柜台项目在这里。
延误
不建议使用此方法,但它确实有效。由于处理器需要一个
每个指令的定义时间您可以创建所需的任何延迟。
如果您创建了一秒钟的延迟,那么内部的事件数量
该延迟将是Hz中的频率。您可以看到设计中使用的此方法
在使用16F84的Web上(只有1个定时器 - timer0)。另见
7SEGUNTION显示驱动器和频率计数器。
第二个项目使用几个七个段显示提供 一个8位数的输出到驱动器更复杂,但它更加复杂 比LCD显示屏令人满意。
你可以找到 七 段LED计数器项目在这里。
要在多个7段上显示数字,请显示您依赖的 视力持久性(一种描述你的眼睛如何感知光线)。
使用单个7段显示,您可以所有 直接连接到微控制器,您需要共8个 连接,具有2个段,您需要16个连接,以及8个段 need 64 connections.
显然大多数微控制器都不't有64个引脚,所以你需要 a different method.
答案是使用多路复用,这是一种回收方式 别针。所有七个段显示器都连接到相同的8位端口。然后 显示器是多路复用的i.e.每个显示器都打开短时间 时间然后关闭。您通常会通过切换七个段显示 打开连接到常见阴极(地)的晶体管 展示。当晶体管位于所有LED上时 - 相应的 当8位端口中有点高时,LED亮起。
以下示例显示了四个多路复用七个段显示使用
只有12个引脚(无需复用,您需要32个引脚)。
为了使LED一直在LED的幻像 必须比你的眼睛通知更快地刷新。您需要刷新显示屏 大约50Hz依靠持久性,即你看到的图像没有 只要它重复足够重复,需要保持不变。
驱动多路复用显示器的技巧 频率计数器应用是多路复用例程必须在a中工作 不断的时间。然后延迟时期t可以结合七个七个 段显示。需要恒定的时间,以相同的方式 轮询定时器1的溢出标志(见前)。
跳跃 频率计数器 to
最佳微控制器项目主页。
使用ADS1115精度16位ADC进行教程进行低功耗。
arduino.模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。
了解DigitalWrite()的工作原理......现在使用17倍宏宏!
如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。
使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。
HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。