16x2 디스플레이를 사용하는 Arduino 주파수 측정기

문제를 제거하기 위해 도구를 사용해보십시오





이 기사에서는 Arduino를 사용하여 판독 값이 16x2 LCD 디스플레이에 표시되고 측정 범위가 35Hz에서 1MHz 인 디지털 주파수 측정기를 구성 할 것입니다.

소개

전자 제품 애호가라면 우리 모두는 프로젝트에서 주파수를 측정해야하는 지점을 발견했을 것입니다.



그 시점에서 우리는 오실로스코프가 주파수 측정에 매우 유용한 도구라는 것을 깨달았을 것입니다. 그러나 우리 모두는 오실로스코프가 모든 애호가가 감당할 수없는 값 비싼 도구이고 오실로스코프는 초보자에게 과도한 도구가 될 수 있다는 것을 알고 있습니다.

주파수 측정 문제를 극복하기 위해 애호가는 값 비싼 오실로스코프가 필요하지 않으며 합리적인 정확도로 주파수를 측정 할 수있는 주파수 미터 만 있으면됩니다.



이 기사에서는 간단하고 초보자에게 친숙한 주파수 측정기를 만들어 보겠습니다. 아두 이노의 멍청한 사람도 쉽게 수행 할 수 있습니다.

구조적 세부 사항으로 들어가기 전에 주파수가 무엇이고 어떻게 측정 할 수 있는지 살펴 보겠습니다.

주파수는 무엇입니까? (Noobs)

빈도라는 용어는 잘 알고 있지만 실제로는 무엇을 의미합니까?

음, 주파수는 초당 진동 수 또는 주기로 정의됩니다. 이 정의는 무엇을 의미합니까?

그것은“무언가”의 진폭이 1 초에 올라가고 내려가는 횟수를 의미합니다. 예를 들어 우리 거주지의 AC 전원 주파수 : '전압'( '무언가'가 '전압'으로 대체 됨)의 진폭은 1 초에 증가 (+) 및 감소 (-)되며, 이는 대부분의 국가에서 50 배입니다.

하나의 사이클 또는 하나의 진동은 위아래로 구성됩니다. 따라서 한 사이클 / 진동은 진폭이 0에서 양의 피크로 이동하고 다시 0으로 돌아와 음의 피크로 이동하여 0으로 돌아 오는 것입니다.

'기간'은 빈도를 다룰 때 사용되는 용어이기도합니다. 기간은 '1주기'를 완료하는 데 걸리는 시간입니다. 주파수의 역값이기도합니다. 예를 들어 50Hz에는 20ms의 시간주기가 있습니다.

1/50 = 0.02 초 또는 20 밀리 초

지금 쯤이면 빈도와 관련 용어에 대해 알 수있을 것입니다.

주파수는 어떻게 측정됩니까?

우리는 하나의 사이클이 높은 신호와 낮은 신호의 조합이라는 것을 알고 있습니다. 높고 낮은 신호의 지속 시간을 측정하기 위해 arduino에서 'pulseIn'을 사용합니다. pulseIn (핀, HIGH)은 하이 신호의 지속 시간을 측정하고 pulseIn (핀, LOW)은 로우 신호의 지속 시간을 측정합니다. 둘 다의 펄스 지속 시간이 추가되어 한주기의 시간을 제공합니다.

결정된 기간은 1 초 동안 계산됩니다. 이것은 다음 공식으로 수행됩니다.

Freq = 1000000 / 시간주기 (마이크로 초)

arduino의 기간은 마이크로 초 단위로 얻습니다. arduino는 전체 초 동안 입력 주파수를 샘플링하지 않지만 한주기의 기간 만 분석하여 주파수를 정확하게 예측합니다.

이제 arduino가 주파수를 측정하고 계산하는 방법을 알았습니다.

회로 :

회로는 프로젝트의 두뇌 인 arduino, 16x2 LCD 디스플레이, IC 7404 인버터 및 콘트라스트 조정을위한 하나의 전위차계로 구성됩니다. LCD 디스플레이 .

제안 된 설정은 35Hz에서 1MHz까지 측정 할 수 있습니다.

Arduino 디스플레이 연결 :

위의 다이어그램은 자명하며, arduino와 디스플레이 간의 배선 연결은 표준이며 다른 arduino 및 LCD 기반 프로젝트에서 유사한 연결을 찾을 수 있습니다.

16x2 디스플레이를 사용하는 Arduino 주파수 측정기

위의 다이어그램은 인버터 IC 7404로 구성되어 있습니다. IC 7404의 역할은 입력에서 노이즈를 제거하는 것이므로 노이즈가 잘못된 판독 값을 제공 할 수있는 arduino로 전파되지 않고 IC 7404가 통과하지 않는 짧은 스파이크 전압을 허용 할 수 있습니다. arduino 핀. IC 7404는 arduino가 아날로그 파형과 쉽게 비교할 수있는 직사각형 파형 만 출력합니다.

참고 : 최대 피크-피크 입력은 5V를 초과하지 않아야합니다.

프로그램:

//-----Program Developed by R.Girish-----//
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2)
int X
int Y
float Time
float frequency
const int input = A0
const int test = 9
void setup()
{
pinMode(input,INPUT)
pinMode(test, OUTPUT)
lcd.begin(16, 2)
analogWrite(test,127)
}
void loop()
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Frequency Meter')
X=pulseIn(input,HIGH)
Y=pulseIn(input,LOW)
Time = X+Y
frequency=1000000/Time
if(frequency<=0)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Frequency Meter')
lcd.setCursor(0,1)
lcd.print('0.00 Hz')
}
else
{
lcd.setCursor(0,1)
lcd.print(frequency)
lcd.print(' Hz')
}
delay(1000)
}
//-----Program Developed by R.Girish-----//

주파수 측정기 테스트 :

프로젝트를 성공적으로 구축 한 후에는 모든 것이 제대로 작동하는지 확인해야합니다. 판독 값을 확인하려면 알려진 주파수를 사용해야합니다. 이를 위해 우리는 주파수가 490Hz 인 arduino의 내장 PWM 기능을 사용하고 있습니다.

프로그램 핀 # 9는 50 % 듀티 사이클에서 490Hz를 제공하도록 활성화되어 있습니다. 사용자는 주파수 미터의 입력 와이어를 잡고 그림과 같이 arduino의 핀 # 9에 삽입 할 수 있습니다. LCD 디스플레이에서 490Hz를 볼 수 있습니다. (약간의 허용 오차 포함) 언급 된 절차가 성공적이면 주파수 측정기가 실험을 수행 할 준비가 된 것입니다.

저자의 프로토 타입 :

Arduino 주파수 측정기 프로토 타입 이미지

사용자는 위 이미지에 표시된 외부 주파수 생성기를 사용하여이 Arduino 주파수 측정기 회로 프로토 타입을 테스트 할 수도 있습니다.




이전 : 전체 프로그램 코드가있는 Arduino 순수 사인파 인버터 회로 다음 : Arduino를 사용하여 단일 채널 오실로스코프 만들기