임베디드 애호가라면 누구나 전압, 전류, 저항 등을 측정 할 수있는 훌륭한 도구 인 멀티 미터에 익숙합니다. 멀티 미터로 쉽게 측정 할 수 있습니다. 하지만 때로는 일반 멀티 미터로는 불가능한 인덕턴스와 커패시턴스를 측정해야합니다. 인덕턴스와 커패시턴스를 측정 할 수있는 특수 멀티 미터가 있지만 비용이 많이 듭니다. 우리는 이미 Arduino를 사용하여 주파수 측정기, 커패시턴스 측정기 및 저항 측정기를 구축했습니다. 그래서 오늘 우리는 Arduino를 사용하여 인덕턴스 LC 미터 를 만들 것 입니다. 이 프로젝트에서는 16x2 LCD 디스플레이의 주파수와 함께 인덕턴스 및 커패시턴스 값을 표시합니다. 커패시턴스와 인덕턴스 디스플레이 사이를 전환하기 위해 회로에 푸시 버튼이 제공됩니다.
필요한 구성 요소
- Arduino Uno
- 741 opamp IC
- 3v 배터리
- 100 옴 저항
- 커패시터
- 인덕터
- 1n4007 다이오드
- 10k 저항
- 10k 냄비
- 전원 공급
- 누름 단추
- 브레드 보드 또는 PCB
- 전선 연결
주파수 및 인덕턴스 계산
이 프로젝트에서는 LC 회로를 병렬로 사용하여 인덕턴스와 커패시턴스 를 측정 할 것 입니다. 이 회로는 특정 주파수에서 공진을 시작하는 링 또는 벨과 같습니다. 펄스를 적용 할 때마다이 LC 회로는 공진을 시작하고이 공진 주파수는 아날로그 (사인파) 형태이므로이를 squire wave로 변환해야합니다. 이를 위해이 아날로그 공진 주파수를 opamp (이 경우 741)에 적용하여 듀티 사이클의 50 %에서 squire wave (주파수)로 변환합니다. 이제 Arduino를 사용하여 주파수를 측정하고 몇 가지 수학적 계산을 사용하여 인덕턴스 또는 커패시턴스를 찾을 수 있습니다. 주어진 LC 회로 주파수 응답 공식을 사용했습니다.
f = 1 / (2 * 시간)
pulseIn () 함수 의 시간이 출력되는 곳
이제 LC 회로 주파수가 있습니다.
f = 1 / 2 * Pi * 제곱근 (LC)
인덕턴스를 얻기 위해 해결할 수 있습니다.
f 2 = 1 / (4Pi 2 LC) L = 1 / (4Pi 2 f 2 C) L = 1 / (4 * Pi * Pi * f * f * C)
이미 언급했듯이 파동은 정현파이므로 양의 진폭과 음의 진폭 모두에서 동일한 시간주기를 갖습니다. 이는 비교기가 듀티 사이클이 50 % 인 구형파로 변환한다는 것을 의미합니다. 그래서 아두 이노의 pulseIn () 함수를 이용하여 측정 할 수 있습니다. 이 함수는 시간을 반전하여 쉽게 주파수로 변환 할 수있는 시간을 제공합니다. 마찬가지로 pulseIn의 정확한 주파수를 얻을 이제 단 하나의 펄스 함수 계수, 우리는 (2) 이제 우리는 상기 식을 이용하여 인덕턴스로 변환 할 수있는 주파수를 갖도록하여 곱해야한다.
참고: 인덕턴스 (L1)를 측정하는 동안 커패시터 (C1) 값은 0.1uF 여야하며 커패시턴스 (C1)를 측정하는 동안 인덕터 (L1) 값은 10mH 여야합니다.
회로도 및 설명
이 LC 미터 회로도 에서는 Arduino를 사용하여 프로젝트 작업을 제어했습니다. 여기에서는 LC 회로를 사용했습니다. 이 LC 회로는 인덕터와 커패시터로 구성됩니다. 정현파 공명 주파수를 디지털 또는 구형파로 변환하기 위해 연산 증폭기, 즉 741을 사용했습니다. 여기서 정확한 출력 주파수를 얻으려면 연산 증폭기에 음의 공급을 적용해야합니다. 그래서 우리는 역 극성으로 연결된 3v 배터리를 사용했습니다. 즉, 741 음극 핀이 배터리 음극 단자에 연결되고 배터리의 양극 핀이 나머지 회로의 접지에 연결됩니다. 자세한 내용은 아래 회로도를 참조하십시오.
여기에는 인덕턴스를 측정하든 커패시턴스를 측정하든 작동 모드를 변경 하는 푸시 버튼이 있습니다. 16x2 LCD는 LC 회로의 주파수로 인덕턴스 또는 커패시턴스를 표시하는 데 사용됩니다. 10k 포트는 LCD의 밝기를 제어하는 데 사용됩니다. 회로는 Arduino 5v 전원의 도움으로 전원이 공급되며 USB 또는 12v 어댑터를 사용하여 Arduino에 5v 전원을 공급할 수 있습니다.
프로그래밍 설명
이 LC 미터 프로젝트 의 프로그래밍 부분 은 매우 쉽습니다. 이 기사의 끝에 완전한 Arduino 코드가 제공됩니다.
먼저 LCD 용 라이브러리를 포함하고 일부 핀과 매크로를 선언해야합니다.
#포함
그 후, 설정 기능 에서 LCD와 시리얼 통신 을 초기화 하여 LCD와 시리얼 모니터를 통해 측정 된 값을 보여줍니다.
void setup () { #ifdef serial.begin (9600); #endif lcd.begin (16, 2); pinMode (freqIn, INPUT); pinMode (충전, OUTPUT); pinMode (모드, INPUT_PULLUP); lcd.print ("LC 미터 사용"); lcd.setCursor (0, 1); lcd.print ("아두 이노"); 지연 (2000); lcd.clear (); lcd.print ("회로 다이제스트"); 지연 (2000); }
그런 다음 루프 기능에서 LC 회로를 충전 할 LC 회로에 고정 된 시간주기의 펄스를 적용합니다. 펄스를 제거한 후 LC 회로가 공진을 시작합니다. 그런 다음 pulseIn () 함수 를 사용하여 op-amp에서 나오는 구형파 변환을 읽고 2를 곱하여 변환합니다. 여기에서도 이것의 일부 샘플을 가져 왔습니다. 이것이 빈도가 계산되는 방법 입니다.
void loop () { for (int i = 0; i
주파수 값을 얻은 후 주어진 코드를 사용하여 인덕턴스 로 변환했습니다.
커패시턴스 = 0.1E-6; 인덕턴스 = (1. / (커패시턴스 * 주파수 * 주파수 * 4. * 3.14159 * 3.14159)) * 1.E6; #ifdef serial Serial.print ("Ind:"); if (인덕턴스> = 1000) { Serial.print (인덕턴스 / 1000); Serial.println ("mH"); } else { Serial.print (인덕턴스); Serial.println ("uH"); } #endif lcd.setCursor (0, 1); lcd.print ("Ind:"); if (인덕턴스> = 1000) { lcd.print (인덕턴스 / 1000); lcd.print ("mH"); } else { lcd.print (인덕턴스); lcd.print ("uH"); } }
그리고 주어진 코드를 사용하여 커패시턴스 를 계산했습니다.
if (Bit.flag) { 인덕턴스 = 1.E-3; 커패시턴스 = ((1. / (인덕턴스 * 주파수 * 주파수 * 4. * 3.14159 * 3.14159)) * 1.E9); if ((int) 커패시턴스 <0) 커패시턴스 = 0; #ifdef serial Serial.print ("커패시턴스:"); Serial.print (커패시턴스, 6); Serial.println ("uF"); #endif lcd.setCursor (0, 1); lcd.print ("캡:"); if (커패시턴스> 47) { lcd.print ((커패시턴스 / 1000)); lcd.print ("uF"); } else { lcd.print (커패시턴스); lcd.print ("nF"); } }
그래서 이것이 Arduino를 사용하여 주파수, 커패시턴스 및 인덕턴스를 계산 하여 16x2 LCD에 표시하는 방법입니다.