거의 모든 전자 애호가는 시계 나 카운터 또는 타이머에서 생성 된 신호의 주파수를 측정해야하는 시나리오에 직면했을 것입니다. 우리는 오실로스코프를 사용하여 작업을 수행 할 수 있지만 우리 모두가 오실로스코프를 감당할 수있는 것은 아닙니다. 주파수 측정 용 장비를 구입할 수 있지만 이러한 모든 장치는 비용이 많이 들고 모든 사람을위한 것은 아닙니다. 이를 염두에두고 Arduino Uno 및 Schmitt 트리거 게이트를 사용하여 간단하면서도 효율적인 주파수 카운터 를 설계 할 것 입니다.
이 Arduino Frequency Counter 는 비용 효율적이고 쉽게 만들 수 있습니다. 우리는 신호의 주파수를 측정 하기 위해 ARDUINO UNO 를 사용할 것 입니다. UNO는 여기서 프로젝트의 핵심입니다.
주파수 측정기를 테스트하기 위해 더미 신호 생성기를 만들 것입니다. 이 더미 신호 발생기는 555 타이머 칩 을 사용하여 만들어집니다. 타이머 회로는 테스트를 위해 UNO에 제공 될 구형파를 생성합니다.
모든 것이 제자리에 있으면 Arduino 주파수 측정기와 구형파 생성기가 있습니다. Arduino는 또한 사인파, 톱니파 등과 같은 다른 종류의 파형을 생성하는 데 사용할 수 있습니다.
필수 구성 요소:
- 555 타이머 IC 및 74LS14 슈미트 트리거 게이트 또는 NOT 게이트.
- 1K Ω 저항 (2 개), 100Ω 저항
- 100nF 커패시터 (2 개), 1000µF 커패시터
- 16 * 2 LCD,
- 47KΩ 포트,
- 브레드 보드 및 일부 커넥터.
회로 설명:
Arduino를 이용한 주파수 측정 회로도는 아래 그림과 같습니다. 회로는 간단하고 LCD는 Arduino와 인터페이스되어 측정 된 신호 주파수를 표시합니다. 'Wave Input'은 Arduino에 신호를 공급하는 Signal Generator Circuit으로 이동합니다. Schmitt 트리거 게이트 (IC 74LS14)는 직사각형 파형 만 Arduino에 공급되도록하는 데 사용됩니다. 잡음을 필터링하기 위해 전력에 두 개의 커패시터를 추가했습니다. 이 주파수 측정기는 최대 1MHz의 주파수를 측정 할 수 있습니다.
신호 발생기 회로와 슈미트 트리거는 아래에 설명되어 있습니다.
555 타이머 IC를 사용하는 신호 발생기:
우선 555 IC 기반 구형파 발생기에 대해 이야기하거나 555 Astable Multivibrator라고 말해야합니다. 이 회로는 주파수 미터를 사용하면 주파수가 알려진 신호가 있어야하기 때문에 필요합니다. 이 신호가 없으면 주파수 측정기의 작동을 알 수 없습니다. 알려진 주파수의 사각형이 있으면 해당 신호를 사용하여 Arduino Uno 주파수 측정기를 테스트 할 수 있으며 편차가있는 경우 정확도를 조정하기 위해 조정할 수 있습니다. 555 Timer IC를 사용 하는 Signal Generator 의 그림 은 다음과 같습니다.
불안정 모드에서 555의 일반적인 회로는 아래에 나와 있으며 위에서 주어진 신호 생성기 회로를 도출했습니다.
출력 신호 주파수는 RA, RB 저항 및 커패시터 C에 따라 달라집니다. 방정식은 다음과 같이 제공됩니다.
주파수 (F) = 1 / (기간) = 1.44 / ((RA + RB * 2) * C).
여기서 RA와 RB는 저항 값이고 C는 커패시턴스 값입니다. 위의 방정식에 저항 및 커패시턴스 값을 입력하여 출력 구형파의 주파수를 얻습니다.
위 다이어그램의 RB가 신호 발생기 회로의 포트로 대체되었음을 알 수 있습니다. 이것은 더 나은 테스트를 위해 출력에서 가변 주파수 구형파를 얻을 수 있도록 수행됩니다. 단순화를 위해 냄비를 간단한 저항으로 대체 할 수 있습니다.
슈미트 트리거 게이트:
모든 테스트 신호가 정사각형 또는 직사각형이 아니라는 것을 알고 있습니다. 삼각파, 톱니파, 사인파 등이 있습니다. UNO가 사각 파 또는 사각 파 만 감지 할 수 있으므로 모든 신호를 사각 파로 변경할 수있는 장치가 필요하므로 Schmitt Trigger Gate를 사용 합니다. 슈미트 트리거 게이트는 산술 및 논리 연산을 위해 설계된 디지털 논리 게이트입니다.
이 게이트는 INPUT 전압 레벨에 따라 OUTPUT을 제공합니다. 슈미트 트리거는 THERSHOLD 전압 레벨을 가지며 게이트에 적용된 INPUT 신호의 전압 레벨이 로직 게이트의 THRESHOLD보다 높으면 OUTPUT은 HIGH가됩니다. INPUT 전압 신호 레벨이 THRESHOLD보다 낮 으면 게이트의 OUTPUT은 LOW가됩니다. 우리는 일반적으로 슈미트 트리거를 별도로 얻지 않고 항상 슈미트 트리거 다음에 NOT 게이트를 가지고 있습니다. 슈미트 트리거 작동은 여기에 설명되어 있습니다. 슈미트 트리거 게이트
우리는 74LS14 칩 을 사용할 것입니다 .이 칩에는 6 개의 Schmitt Trigger 게이트 가 있습니다. 이 SIX 게이트는 아래 그림과 같이 내부적으로 연결됩니다.
반전 슈미트 트리거 게이트의 진리표는 이것으로 우리는 단자에서 포지티브 및 네거티브 기간 반전 UNO위한 프로그래밍 필요도 아래에 표시된다.
이제 우리는 ST 게이트에 모든 유형의 신호를 공급하고 출력에서 반전 된 시간주기의 직사각형 파형을 갖게되고이 신호를 UNO에 공급합니다.
Arduino 주파수 카운터 코드 설명:
arduino를 사용한 이 주파수 측정을 위한 코드 는 매우 간단하고 이해하기 쉽습니다. 여기서는 주로 주파수 측정을 담당하는 pulseIn 함수를 설명합니다. 우노는 특별한 기능이 pulseIn , 긍정적 인 상태 기간 또는 특정 구형파의 부정적인 상태의 지속 시간을 결정하기 위해 우리가 할 수 있습니다:
Htime = pulseIn (8, HIGH); Ltime = pulseIn (8, LOW);
주어진 함수는 Uno의 PIN8에서 High 또는 Low 레벨이 존재하는 시간을 측정합니다. 따라서 단일 웨이브 사이클에서 마이크로 초 단위의 양수 및 음수 레벨에 대한 지속 시간이 있습니다. pulseIn의 기능은 마이크로 초 단위의 시간을 측정한다. 주어진 신호에서 우리는 높은 시간 = 10mS 및 낮은 시간 = 30ms (주파수 25HZ)를가집니다. 따라서 30000은 Ltime 정수에 저장되고 10000은 Htime에 저장됩니다. 우리가 그것들을 더할 때 우리는 Cycle Duration을 가질 것이고 그것을 반전함으로써 우리는 Frequency를 갖게 될 것입니다.
Arduino 를 사용 하는이 주파수 측정기에 대한 전체 코드와 비디오 는 다음과 같습니다.