Questions tagged «frequency-measurement»

4
示波器带宽,这是怎么回事?
不久前,这个问题突然出现在我眼前。我当时测量的是0至2.5级的50Mhz方波,但是我在屏幕上看到的是正弦波,其中心位于1.2V和0.5至2.0V的水平,频率为4MHz。 我检查了示波器数据表,结果显示带宽为10MHz,采样率为50 MS / s。 我想知道这些数字是关于什么的。 它们是否可以测量示波器可以测量的上限频率? 这台示波器是否能够测量50Mhz?

1
如何使用8位PIC测量IR信号的脉冲宽度?
我和我的朋友想设计一个通用的学习型遥控器,像这样,用于学习。我们基本上要做的是存储和重放红外脉冲。 我们要检测36kHz,38kHz和40kHz信号。40kHz信号的周期为25。μμ\mu 我们想使用一个8位PIC单片机,现在我们选择了PIC16F616,它将以20MHz的高速晶体振荡器运行。我们有两种选择: 使用Interrupt On Change模块。 使用CCP模块的捕获模式。 第一种选择如下: 假设寄存器设置为:unsigned char _10_us = 0;。该寄存器将保留时间。带有周期寄存器的TMR2模块被设置为每产生一个中断。发生中断时,它将增加寄存器并退出。这将使最大时间为2.55毫秒。如果需要更多的时间测量,则可以定义其他寄存器,并根据需要递增。μμ\mu_10_us_1_ms _10_us_10_usμμ\mu 这个选择使我挠头。TMR2中断大约每50条指令发生一次。中断处理大约需要20条指令。我剩下30条指令来计算周期并将其保存到数组中。这种方法行得通吗? 第二种选择如下: 设置CCP模块的捕获模式,以便当CCP1引脚上发生事件(从高到低)时,它将产生中断。在中断程序中,它将设置一个标志,以便程序中的任务可以计算(如果需要)并保存CCPR1H(可能不需要)和CCPR1L的值。然后,我们将更改捕获模式的配置,以便在发生低到高沿时触发中断。然后它将等待下一个事件。由于从未使用过,因此无法估算此方法的性能。 另外的选择? 我们可以使用红外解调器IC,例如TSOP17xx系列。那将完全解决我们的问题。但是,有些问题浮现在脑海。 我们的阅读距离要求不高;1米(约3英尺)。如果我们选择一个,就是在38kHz的可正常工作的TSOP1738,如何以及将与36kHz和40kHz的信号,这项工作? TSOP17xx系列数据表的第4页显示“响应频率相关性”图。据我们了解; 40kHz,即38kHz的〜1.053,将给出〜0.6的相对响应度。 36kHz,即38kHz的〜0.95,将给出〜0.65的相对响应度。 这些值是什么意思?我们可以使用TSOP1738罚款吗?

4
如何在板上测试晶体谐振器?
我的PCB板上有2个石英晶体谐振器:32.768 kHz和20 MHz。它们连接至飞思卡尔MC12311收发器IC,后者内嵌有HCS08微控制器。我想测试这些晶体是否正常工作。 可用工具:示波器,频率计(数字计数器),数字万用表。 我应该如何使用这些工具来测试板上的晶体? 注意:应该考虑探头的电容性负载效应。否则,测量结果将不准确,甚至更糟,晶体将根本无法工作。 Edit1:我同时使用了示波器和频率计(带有x10探头),但是不幸的是根本没有监控任何东西。

6
用微控制器测量高于5V的信号的频率
我想测量矩形信号的频率(最高300 Hz),该频率在0V和Vtop之间变化,其中Vtop在5V和15V之间。因为我不能向单片机(PIC16F1827)施加超过5V 的电压,所以我需要以某种方式限制电压。 我的第一个想法是使用分压器。但随后5V输入信号将变为低电平。 第二种方法是使用运算放大器(TS914)。以5V供电时,输出不会超过5V。我的设计中已经装有该运算放大器,以过滤另一个电压测量值。但是,当我查看数据表时,它说(在“绝对最大额定值”部分中): 输入和输出电压的幅度不得超过VCC + + 0.3V。 我应该添加另一个运算放大器,例如LM324吗?数据表显示(输入共模电压范围(注10)): 任何一个输入信号电压的输入共模电压都不允许负向超过0.3V(在25)C时)。共模电压范围的上限为V + − 1.5V(在25˚C时),但任一输入或两个输入都可以升至+ 32V而没有损坏(LM2902为+ 26V),与V +的大小无关。 因此LM324不会受到损坏,但是可以在我的设计中工作(输出5V矩形信号)吗? 我的最后一个想法是使用齐纳二极管。这行得通吗? 您将如何解决此问题?我没有想到过另一种可能性吗?


1
用合成的ROM内核模拟一个简单的测试台
我对FPGA领域是一个全新的领域,并认为我将从一个非常简单的项目开始:一个4位7段解码器。我纯粹用VHDL编写的第一个版本(基本上是单个组合select,不需要时钟),并且似乎可以使用,但我也想尝试使用Xilinx ISE中的“ IP内核”功能。 因此,现在我正在使用“ ISE Project Explorer” GUI,并使用ROM内核创建了一个新项目。生成的VHDL代码为: LIBRARY ieee; USE ieee.std_logic_1164.ALL; -- synthesis translate_off LIBRARY XilinxCoreLib; -- synthesis translate_on ENTITY SSROM IS PORT ( clka : IN STD_LOGIC; addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); douta : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END SSROM; ARCHITECTURE SSROM_a OF SSROM IS -- …

7
使用MCU测量0-1 MHz(0.25Hz分辨率)方波
我需要测量方波的频率,该频率可以在0到1MHz之间变化,分辨率为0.25Hz。 我还没有决定使用哪个控制器,但是它很可能是20pin Attiny的控制器之一。 通常,我如何测量低频信号将通过使用两个定时器来配置,其中一个配置为定时器捕获模式以在外部信号的上升沿中断,另一个定时器设置为每秒中断一次,因此前一个定时器在1秒后计数寄存器值将等于信号的频率。 但是,这种方法显然无法以0.25Hz的分辨率捕获0到1MHz范围内的信号,为此,我需要一个22Bit计数器(AFAIK 8bit micros仅具有8 / 16bit计数器)。 我曾经想过的一个想法是在将信号应用于微控制器之前先对其进行分频,但这是不切实际的,因为必须将信号除以61,因此频率只能每61秒更新一次,而我希望每隔几秒更新一次。 还有另一种方法可以让频率每4秒更新一次吗? 更新: 最简单的解决方案是使用外部中断或定时器捕获在信号的上升沿中断,并使isr增量为type变量long int。每4秒钟读取一次变量(以允许测量低至0.25Hz的频率)。 更新2: 正如JustJeff所指出的,一个8位MCU将无法跟上1MHz的信号,从而排除了在每个上升沿中断并增加long int... 我选择了timororr建议的方法。一旦我实现了它,我会回发并分享结果。感谢大家的建议。 进度报告: Iv'e开始测试此处提出的一些想法。首先,我尝试了vicatcu的代码。存在一个明显的问题,即TCNT1在计算频率后仍未清除-没什么大不了的... 然后,我在调试代码时注意到,大约每2到7倍的频率被计算出来,定时器1(配置为对外部事件进行计数的定时器)的溢出计数将减少2。我将其归结为定时器0 ISR的等待时间,并决定将ISR的if语句块移至主要(请参见下面的代码段),并在ISR中设置一个标志。一些调试显示,第一次测量是可以的,但随后的每次读取都将使Timer 1的溢出计数超过2。这我无法解释-我希望它不会超过...。 int main() { while(1) { if(global_task_timer_ms > 0 && (T0_overflow == 1)) { global_task_timer_ms--; T0_overflow = 0; } ..... } } 接下来,我决定尝试实施timrorrs建议。要生成必要的间隔(每个timer_isr中断之间大约15毫秒),我将必须将两个8位定时器级联,因为Atmega16上仅有的16位定时器被用来捕获外部信号的上升沿。 我认为此解决方案将行之有效,并且效率会更高,因为大部分开销都转移到了计时器上,并且仅剩一个简短的isr供CPU处理。但是它不如我所希望的那样准确,测量值来回移动了约70Hz,这在高频下我不介意,但在低频下绝对不能接受。我没有花太多时间来分析问题,但是我猜想计时器的级联设置不太准确,因为我在一个速度较慢的具有2个16位计时器的8051控制器上实现了与调速建议类似的安排,结果相当准确。 现在,我又回到了vicatcu的建议,但是将频率计算移到了Timer 0 isr (请参见下面的代码段)中,此代码产生了一致且合理的测量结果。稍加校准后,精度应约为+/- …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.