首页

使用Arduino的频率计数器

频率计数器,顾名思义,是一种电子设备或元件,用来测量信号的频率。对于重复的电子信号,频率计数器测量该信号中的脉冲数。

我们通常使用示波器来描述信号,计算信号的时间周期,最后将其转换为计算信号的频率。但是,示波器非常昂贵,每个人都买不起。

因此,可以建立一个简单的数字频率计数器,它可以方便地测量时钟信号的频率。

在这个项目中,一个基于Arduino的数字频率计数器被设计用来测量传入信号的频率。

帮助我们选择下一个DIY Arduino项目。 选择你最喜欢的项目»

线路图

Arduino频率计数器电路图
Arduino频率计数器电路图

图Arduino频率计数器电路图

组件

Arduino部分

信号发生器部分

  • NE555定时集成电路
  • 10 KΩ电位器X
  • 100nf电容(代码:104)
  • 1µF / 16V电解电容
  • 5V电源(12V不合适,可能损坏Arduino板)
  • 连接电线
  • 原型板

组件描述

Arduino UNO:基于Arduino UNO的ATmega 328P单片机是本项目的主要部分。它捕获传入信号的时间周期并计算信号的频率。

555定时集成电路在本项目中,555定时器IC被用作脉冲发生器,即它工作在稳定模式下。

16 × 2液晶显示器: 16×2 LCD模块用于显示关键信息,如欢迎(或任何自定义)消息和计算出的信号频率。

电路设计

使用Arduino UNO的频率计数器的设计可以分为两部分:Arduino部分是对信号的信息进行处理,signal Generator部分是产生待测频率的信号。

Arduino电路

项目的Arduino部分包括Arduino UNO板和一个16 × 2液晶显示器。LCD (Vss和Vdd)的引脚1和2分别接地和5V电源。引脚3 (Vee)用于调节显示器的对比度,连接一个电位器。

LCD的引脚4和6 (RS和E)连接到Arduino的数字I/O引脚2和3。LCD引脚5 (RW)已接地。

引脚11 ~ 14 (D4 ~ D7)即LCD的数据引脚连接到Arduino的数字I/O引脚4 ~ 7。LCD的引脚15和16是背光led的供电引脚,分别连接到地面和5V(引脚16到5V通过1KΩ电阻)。

信号发生器部分

一个555定时器在此项目中用于生成脉冲。因此,它是在稳定运行模式下运行。此模式的连接如下所示。

引脚4和8(复位和Vcc)连接到5V电源。引脚1 (GND)已接地。引脚2和6(触发器和阈值)短路。

一个10KΩ电位器连接在电源和引脚7(放电)之间。电位器的雨刷端接在引脚7上。

类似地,另一个10KΩ电位器连接在引脚7和6之间。这次,电位器的雨刷连接到引脚6上。

引脚6与地之间连接100nF电容。通过选择这个电阻,输出信号的频率,可以从引脚3(输出),将在480赫兹到48 KHz的范围内。

可选地,可连接1 μ F电容,使用其产生的信号频率将在50 Hz到4.8 KHz的范围内。

请注意:信号发生器电路的电源只应是5V。这是因为,产生的脉冲电压将与输入电压相同,而Arduino UNO板(准确地说,是ATmega 328p微控制器)在其输入引脚上可以容忍5.5V的最大电压。

项目工作原理

本课题的目的是利用Arduino UNO和555定时器IC设计一个简单的数字频率计数器电路,该课题的工作非常简单,在这里进行说明。

如前所述,555定时器IC被配置为在稳定模式下运行。因此,555定时器IC(或更确切地说是信号发生器电路)的输出是一个具有可变频率的脉冲(使用电位器可变)。该脉冲作为输入信号,通过Arduino UNO的一个数字I/O引脚给出。

在Arduino中,我们使用了一个名为“pulseIn()”的函数;函数pulseIn可用于读取数字I/O引脚上的LOW或HIGH脉冲,并以微秒为单位返回脉冲长度。

例如,如果pulseIn函数用于读取引脚上的HIGH脉冲,它将等待引脚进入HIGH。一旦引脚走到HIGH,它就启动计时器,一直运行到引脚走到LOW。然后返回这个HIGH脉冲的持续时间(以微秒为单位)。

在我们的项目中,我们正在计算高脉冲和低脉冲的持续时间,并将它们相加,我们得到输入信号的周期。这个值的倒数给出了显示在LCD上的信号频率。

请注意

  • 如前所述,555层产生的信号的频率范围可以通过改变电容的值来改变。
  • Arduino只能检测到传入脉冲,即传入信号可以是正方形或矩形。并非所有的测试信号都可以采用脉冲形式。因此,我们可以使用施密特触发器将任何传入信号转换为脉冲。
  • 的输出也要注意施密特触发器集成电路(74LS14)是输入信号的反向信号。

应用程序

  • 设计了一个简单的频率计数器,使用简单的组件,可以用来测量脉冲的频率,而不需要示波器。
  • 通过选择合适的元件,可以测量多个频率范围。
  • 通过在生成的信号和Arduino之间添加Schmitt Trigger,可以计算出所有类型测试信号的频率。

项目图片

项目代码

14的反应

    1. 嗨,如果你得到inf Hz,这意味着脉冲的持续时间(高脉冲+低脉冲)非常接近于0。试着检查一次脉冲发生器电路。

  1. 你好先生/女士
    我在这个项目上工作的所有连接都按照上面的电路图。但它有一些错误,有时它显示频率,过了一段时间它只是显示中频,我试图检查所有的可能性的错误,但它似乎很好。请帮我解决一下

    关于
    希望你能尽快回复

    1. 嗨,如果你得到inf Hz,这意味着脉冲的持续时间(高脉冲+低脉冲)非常接近于0。试着检查一次脉冲发生器电路。


    1. pulsePin = 8;//输入信号连接到Arduino的8脚

      int pulseHigh;//输入脉冲的高时间
      int pulseLow;//输入脉冲的低时间
      浮动pulseTotal;//获取传入脉冲的总时间
      浮动频率;/ /计算频率

      无效的设置()

      //把你的设置代码放在这里,运行一次:
      Serial.begin (9600);

      无效循环()

      pulseHigh = pulseIn(pulsePin, HIGH);
      pulseLow = pulseIn(pulsePin, LOW);

      pulseTotal = pulseHigh + pulsellow;//脉冲的时间周期,单位为微秒
      frequency = 1000000 / pulseTotal;//频率单位为赫兹(Hz)

      并同时(频率);
      系列。println(“赫兹”);
      延迟(500);

  2. 这里用的是哪个计时器?我的意思是如上所述,当使用pulseIn()函数时,定时器在.....上得到这里哪个计时器开了?

  3. 你好,

    我继续创建了LCD屏幕硬件输出,然后信号产生硬件,它像一个魅力,除了sign on频率是负的。这是硬件问题还是软件问题?任何关于解决这个问题的建议都是有帮助的。

  4. 早上好,

    我怎样才能用天线接收信号?

    我想检查一个来自433兆赫的远程信号。

    谢谢你!

  5. 我正在使用一个外部设备来输入arduino电路。读取停止在200kHz -它会偶尔闪烁到250kHz,然后回到200kHz。有办法解决这个问题吗?试着用这个读数把东西调整到262kHz。较低的频率在输入时似乎工作正常。

留下一个回复

您的电邮地址将不会公布。

Electronicshub图标
Baidu
map