간단한 Arduino 디지털 저항계 회로

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





이 게시물에서는 Arduino 및 16x2 LCD 디스플레이를 사용하여 간단한 디지털 저항계 회로를 구성 할 것입니다. 또한 동일한 개념을 사용하여 가능한 다른 회로 아이디어를 탐색 할 것입니다.

회로 목표

이 기사의 모토는 멀티 미터가 더 잘 할 수있는 저항을 측정하기 위해 옴 미터를 만드는 것이 아닙니다.



이 프로젝트의 주요 목표는 arduino가 읽은 저항 값을 사용하여 예를 들어 서미스터의 저항 값의 변화를 쉽게 감지 할 수있는 화재 경보 또는 토양의 저항이있는 경우 자동 관개 시스템과 같은 유용한 프로젝트를 수행하는 것입니다. 마이크로 컨트롤러가 물 펌프를 작동시킬 수 있습니다. 프로젝트의 가능성은 당신의 상상력에 달려 있습니다.

먼저 옴 미터를 만드는 방법을 살펴본 다음 다른 회로 아이디어로 이동합니다.



작동 원리

Arduino 저항계 회로

회로는 Arduino 보드, 알 수없는 저항 값을 표시하는 16x2 LCD 디스플레이, LCD 디스플레이의 대비 수준을 조정하는 전위차계로 구성됩니다. 두 개의 저항이 사용되는데, 그중 하나는 알려진 저항 값이고 다른 하나는 알 수없는 저항 값입니다.

저항은 아날로그 기능이지만 LCD에 표시되는 값은 디지털 기능입니다. 따라서 우리는 아날로그에서 디지털로 변환해야합니다. 다행히 Arduino에는 10 비트 아날로그-디지털 변환기가 내장되어 있습니다.

10 비트 ADC는 1024 개의 이산 전압 레벨을 구별 할 수 있으며, 5V는 2 개의 저항에 적용되며 전압 샘플은 저항 사이에서 수집됩니다.

몇 가지 수학적 계산을 사용하여 노드의 전압 강하와 알려진 저항 값을 해석하여 알려지지 않은 저항 값을 찾을 수 있습니다.

수학 방정식은 프로그램에 작성되어 있으므로 수동 계산을 수행 할 필요가 없으며 LCD 디스플레이에서 직접 값을 읽을 수 있습니다.

저자의 프로토 타입 :

Arduino 디지털 저항계 프로토 타입

옴 미터 프로그램 :

//-------------Program developed by R.Girish--------//
#include
LiquidCrystal lcd(12,11,5,4,3,2)
int analogPin=0
int x=0
float Vout=0
float R=10000 //Known Resistor value in Ohm
float resistor=0
float buffer=0
void setup()
{
lcd.begin(16,2)
lcd.setCursor(0,0)
lcd.print('----OHM METER---')
}
void loop()
{
x=analogRead(analogPin)
buffer=x*5
Vout=(buffer)/1024.0
buffer=(5/Vout)-1
resistor=R*buffer
lcd.setCursor(0,1)
lcd.print('R = ')
lcd.print(resistor)
lcd.print(' Ohm')
delay(3000)
}
//-------------Program developed by R.Girish--------//

참고 : float R = 10000 // 알려진 저항 값 (옴)

회로에서 알려진 저항 값을 변경할 수 있지만 그렇게 할 경우 프로그램에서도 값을 변경하십시오.

기존의 멀티 미터와 마찬가지로이 Arduino 디지털 저항계 회로에도 저항을 측정 할 수있는 범위가 있습니다. 멀티 미터에서 메가 옴 범위의 낮은 값 저항을 측정하려고하면 확실히 오류 값이 발생합니다.

마찬가지로이 저항계도 마찬가지입니다.

1K에서 50K 옴까지 저항을 측정하려면 10K 옴 알려진 저항으로 충분하지만 메가 옴 범위 또는 몇 옴 범위를 측정하면 일부 가비지 판독 값을 얻을 수 있습니다. 따라서 알려진 저항의 값을 적절한 범위로 변경해야합니다.

이 기사의 다음 섹션에서는 저항계의 LCD 디스플레이 회로를 연구하고 직렬 모니터에서 센서 값 (알 수없는 저항)을 읽는 방법을 살펴볼 것입니다.

또한 프로그램에 임계 값을 명시 할 것입니다. 미리 결정된 임계 값을 초과하면 Arduino가 릴레이를 트리거합니다.

회로도 :

프로그램 코드 :

//-------------Program developed by R.Girish--------//
float th=7800 // Set resistance threshold in Ohms
int analogPin=0
int x=0
float Vout=0
float R=10000 //Known value Resistor in Ohm
float resistor=0
float buffer=0
int op=7
void setup()
{
Serial.begin(9600)
pinMode(op,OUTPUT)
digitalWrite(op,LOW)
}
void loop()
{
x=analogRead(analogPin)
buffer=x*5
Vout=(buffer)/1024.0
buffer=(5/Vout)-1
resistor=R*buffer
Serial.print('R = ')
Serial.print(resistor)
Serial.println(' Ohm')
if(th>resistor) // if resistance cross below threshold value, output is on, if you want opposite result use '<' //
{
digitalWrite(op,HIGH)
Serial.println('Output is ON')
delay(3000)
}
else
{
digitalWrite(op,LOW)
Serial.println('Output is OFF')
delay(3000)
}
}
//-------------Program developed by R.Girish--------//

노트:

• float th = 7800 // 저항 임계 값을 옴 단위로 설정
7800ohm을 귀하의 값으로 바꾸십시오.
• float R = 10000 // 알려진 값 저항 (옴 단위)
10000 ohm을 알려진 저항 값으로 바꿉니다.
• if (th> 저항)

프로그램의이 라인은 센서 저항이 임계 값 아래로 떨어지면 출력이 켜지고 그 반대도 마찬가지임을 나타냅니다.

센서 판독 값이 임계 값을 초과하거나 그 반대 일 때 릴레이를 켜려면 'if (thresistor)'를 교체하십시오.

센서의 저항을 직접 측정 (LDR 또는 서미스터 또는 기타)하고 임계 값을 설정하여 릴레이, LED, 모터 및 기타 주변 장치에 대한 제어의 정확도를 높일 수 있습니다.

비슷한 종류의 프로젝트를 수행하기 위해 가변 저항을 맹목적으로 돌려 기준 전압을 설정하고 임계 값을 설정하는 비교기보다 낫습니다.




이전 : 재료 저장 레벨 컨트롤러 회로 다음 : 10 LED 타코미터 회로