Arduino 온도 제어 DC 팬 회로

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





이 기사에서는 주변 온도가 미리 결정된 임계 값 수준에 도달 할 때 팬 또는 팬에 연결된 다른 장치를 켜는 간단한 Arduino 기반 자동 온도 제어 DC 팬 회로 두 개를 구성 할 것입니다. 이 프로젝트에서는 DHT11 센서와 arduino를 사용할 것입니다.

개요

마이크로 컨트롤러의 장점은 연결된 주변 장치를 매우 정밀하게 제어 할 수 있다는 것입니다. 이 프로젝트에서 사용자는 프로그램에 임계 온도를 입력하기 만하면됩니다. 마이크로 컨트롤러가 나머지 기능을 처리합니다.



비교기 및 트랜지스터를 사용하는 것과 같이 인터넷을 통해 사용할 수있는 마이크로 컨트롤러 기반이 아닌 자동 온도 컨트롤러 프로젝트가 많습니다.

매우 간단하고 잘 작동하지만 미리 설정된 저항기 또는 전위차계를 사용하여 임계 값 레벨을 보정하는 동안 문제가 발생합니다.



우리는 그것을 보정하는 동안 맹목적인 아이디어를 가지고 있으며 사용자는 스위트 스팟을 찾기 위해 시행 착오 방법을해야 할 수도 있습니다.

이러한 문제는 마이크로 컨트롤러로 극복되며 사용자는이 프로젝트에서 섭씨 온도를 입력하기 만하면되므로 보정이 필요하지 않습니다.

이 프로젝트는 회로 내부 온도를 안정화하거나 과열을 방지해야하는 곳에서 사용할 수 있습니다.

다이어그램 1에서는 CPU 팬을 출력으로 연결하고 있습니다. 이 설정은 폐쇄 회로의 내부 주변 온도를 제어하는 ​​데 사용할 수 있습니다.

임계 온도에 도달하면 팬이 켜집니다. 온도가 임계 온도 이하로 내려 가면 팬이 꺼집니다. 따라서 기본적으로 자동화 된 프로세스입니다.

그림 2에서는 테이블 팬과 같은 주전원 전압으로 작동하는 장치를 제어하기위한 릴레이를 연결했습니다.

실내 온도가 임계 온도에 도달하면 실내 온도가 낮아지면 팬이 켜지고 꺼집니다.

이것은 전력을 절약하는 가장 좋은 방법 일 수 있으며, 다른 사람들이 따뜻할 때 팬을 켜기를 바라는 게으른 사람들에게는 천국이 될 수 있습니다.

DC 팬 제어를 보여주는 회로도

자동 온도 조절을위한 DC 팬 제어

이 설정은 상자에 포함 된 회로에 대해 배포 할 수 있습니다. 미리 설정된 임계 값 수준에 도달하면 LED가 켜지고 팬도 켜집니다.

더 큰 팬 제어를위한 릴레이 연결

Arduino 온도 센서를 사용한 릴레이 스위치 팬 제어

이 회로는 이전 회로와 유사한 기능을 수행하므로 이제 팬이 릴레이로 교체됩니다.

이 회로는 테이블 팬이나 천장 팬 또는 주변 온도를 식힐 수있는 기타 장치를 제어 할 수 있습니다.

온도가 사전 설정된 임계 값 미만에 도달하면 연결된 장치가 꺼집니다.

여기에 설명 된 온도 제어식 DC 팬 회로도는 많은 가능성 중 일부에 불과합니다. 자신의 목적에 맞게 회로와 프로그램을 사용자 정의 할 수 있습니다.

참고 1 : #Pin 7이 출력됩니다.

참고 2 :이 프로그램은 DHT11 센서와 만 호환됩니다.

위에서 설명한 Arduino를 사용하는 자동 온도 조절기 회로를위한 프로그램 :

프로그램 코드

//--------------------Program developed by R.Girish---------------------//
#include
dht DHT
#define DHTxxPIN A1
int p = A0
int n = A2
int ack
int op = 7
int th = 30 // set thershold tempertaure in Celsius
void setup(){
Serial.begin(9600) // May be removed after testing
pinMode(p,OUTPUT)
pinMode(n,OUTPUT)
pinMode(op,OUTPUT)
digitalWrite(op,LOW)
}
void loop()
{
digitalWrite(p,1)
digitalWrite(n,0)
ack=0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack=1
break
}
if(ack==0)
{
// you may remove these lines after testing, from here
Serial.print('Temperature(°C) = ')
Serial.println(DHT.temperature)
Serial.print('Humidity(%) = ')
Serial.println(DHT.humidity)
Serial.print(' ')
// To here
if (DHT.temperature>=th)
{
delay(3000)
if(DHT.temperature>=th) digitalWrite(op,HIGH)
}
if(DHT.temperature {
delay(3000)
if(DHT.temperature }
}
if(ack==1)
{
// may be removed after testing from here
Serial.print('NO DATA')
Serial.print(' ')
// To here
digitalWrite(op,LOW)
delay(500)
}
}
//-------------------------Program developed by R.Girish---------------------//

참고 : 프로그램에서

int th = 30 // 임계 온도를 섭씨로 설정합니다.

'30'을 원하는 값으로 바꿉니다.

두 번째 디자인

아래에서 설명하는 두 번째 온도 제어 DC 팬 회로 프로젝트는 주변 온도를 자동으로 감지하고 팬 모터 속도를 조정하여 주변 온도를 제어합니다. 이 자동 처리는 Arduino 및 온도 센서 IC LM35를 통해 수행됩니다.

으로:안킷 네기

우리의 목표 :

1). 주변 온도가 섭씨 25도 이상으로 상승하면 (작업 섹션에 설명 된대로 필요에 따라 프로그램에서이 값을 변경할 수 있음) 모터가 작동하기 시작합니다.

2). 그리고 온도가 올라갈 때마다 모터의 속도도 증가합니다.

삼). 모터는 온도가 섭씨 40도까지 상승하자마자 최고 속도로 작동합니다 (이 값은 프로그램에서 변경할 수 있음).

온도 센서 LM35 :

위에서 언급 한 작업을 수행하기 위해 temp를 사용합니다. 센서 LM35는 널리 사용되며 쉽게 구할 수 있습니다.

LM35에는 그림에서 볼 수 있듯이 3 개의 핀이 있습니다.

LM35 IC 핀아웃

1. Vin--이 핀은 4 ~ 20V 사이의 DC 전원 공급 장치에 연결됩니다.
2. Vout--이 핀은 전압 형태로 출력을 제공합니다.
3. GND--이 핀은 회로의 gnd 단자에 연결됩니다.

LM35, 전원 공급 장치에 연결되면 주변 온도 그리고 출력 핀을 통해 온도 상승에 따라 등가 전압을 보냅니다.

LM35는 모든 온도를 감지 할 수 있습니다. 섭씨 -50도에서 +150도 사이에서 온도가 1도 상승하면 출력이 10 밀리 볼트 증가합니다. 따라서 출력으로 제공 할 수있는 최대 전압은 1.5V입니다.

이 DC 팬 컨트롤러 프로젝트에 왜 ARDUINO가 필요한가?

Arduino는 LM35의 출력 핀에서받은 아날로그 값을 디지털 값으로 변경하고 해당 디지털 출력 (PWM)을 MOSFET의베이스로 전송해야합니다.

우리는 또한 사용할 것입니다 온도를 인쇄하는 arduino 명령, ARDUINO IDE의 직렬 모니터에서 MOSFET에 해당하는 아날로그 값 및 디지털 출력.

파워 MOSFET의 역할은 무엇입니까?

이 회로는 고전류 모터를 구동 할 수 없으면 소용이 없습니다. 따라서 이러한 모터를 실행하기 위해 전력 MOSFET이 사용됩니다.

왜 다이오드를 사용합니까?

다이오드는 구동 중 모터에 의해 생성되는 후면 E.M.F로부터 MOSFET을 보호하는 데 사용됩니다.

프로젝트의 부품 목록 :

1. LM35

2. 아르 두 이노

3. 파워 MOSFET (IRF1010E)

파워 MOSFET (IRF1010E)

4. 다이오드 (1N4007)

DIODE (1N4007)

5. FAN (모터)

6. 팬 전원 공급

회로 다이어그램 :

Arduino 온도 의존형 DC 팬 제어

회로도에 표시된대로 연결하십시오.

a) lm358의 vin 핀을 arduino의 5v에 연결하십시오.
b) lm358의 vout 핀을 arduino의 A0에 연결
c) lm358의 접지 핀을 arduino의 GND에 연결하십시오.
d) MOSFET의베이스를 arduino의 PWM 핀 10에 연결합니다.

암호:

float x// initialise variables
int y
int z
void setup()
{
pinMode(A0,INPUT) // initialize analog pin A0 as input pin
Serial.begin(9600) // begin serial communication
pinMode(10,OUTPUT) // initialize digital pin 10 as output pin
}
void loop()
{
x=analogRead(A0) // read analog value from sensor's output pin connected to A0 pin
y=(500*x)/1023// conversion of analog value received from sensor to corresponding degree Celsius (*formula explained in working section)
z=map(x,0,1023,0,255) // conversion of analog value to digital value
Serial.print('analog value ')
Serial.print( x) // print analog value from sensor's output pin connected to A0 pin on serial monitor( called 'analog value')
Serial.print(' temperature ')
Serial.print( y) // print the temprature on serial monitor( called 'temprature')
Serial.print(' mapped value ')
Serial.print( z*10) // multiply mapped value by 10 and print it ( called ' mapped value ' )
Serial.println()
delay(1000) // 1 sec delay between each print.
if(y>25)
{analogWrite(10,z*10) // when temp. rises above 25 deg, multiply digital value by 10 and write it on PWM pin 10 ( ** explained in working section)
}
else
{analogWrite(10,0) // in any other case PWM on pin 10 must be 0
}
}

작업 (코드 이해) :

ㅏ). 변수 X-

이것은 단순히 핀 번호로 수신되는 아날로그 값입니다. LM35의 출력 핀에서 A0.

비). 변수 AND-

이 변수 때문에 팬 모터는 해당 온도에 따라 작동합니다. 이 변수가하는 일은 아날로그 값, 즉 변수 x를 해당 주변 온도로 변경하는 것입니다.

Y = (500 * x) / 1023
1. 첫 번째 아날로그 값은 해당 전압으로 변경해야합니다.
1023 : 5v
따라서 (5000 밀리 볼트 * x) / 1023V
2. 이제 우리는 온도가 상승 할 때마다 해당 전압 출력이 10mv 씩 증가한다는 것을 압니다.
섭씨 1도 : 10 밀리 볼트
따라서 (5000 밀리 볼트 * x) / (1023 * 10) DEGREE

씨). 변수 Z-

z = 맵 (x, 0, 1023, 0,255)
이 변수는 핀 10의 pwm 출력에 대한 아날로그 값을 디지털 값으로 변경합니다.

노트 :: 우리는 lm35가 최대 1.5V를 제공 할 수 있다는 것을 알고 있습니다. 150 도입니다. 실용적이지 않습니다.

즉, 섭씨 40도에서는 0.40 볼트를, 25도에서는 0.25 볼트를 얻습니다. 이 값은 mosfet의 적절한 pwm에 대해 매우 낮기 때문에 계수로 곱해야합니다.

따라서 우리는 그것에 10을 곱하고 대신이 값을 PWM 핀 10에 아날로그 출력으로 제공합니다.

** analogWrite (10, z * 10)

이제 .25V의 경우 MOSFET은 0.25 * 10 = 2.5V를 얻습니다.

.40V의 경우 mosfet은 0.40 * 10 = 4V를 얻습니다. 모터가 거의 최대 속도로 작동합니다.

CASE 1. 온도 25도 미만

이 경우 arduino는 코드의 마지막 줄에서와 같이 핀 10에 0 PWM 전압을 보냅니다.

** 그 외
{analogWrite (10,0) // 다른 경우 핀 10의 PWM은 0이어야합니다.
} **

MOSFET베이스의 pwm 전압이 0이므로 꺼진 상태로 유지되고 모터가 회로에서 분리됩니다.

이 경우 시뮬레이션 된 회로를 참조하십시오.

Arduino 팬 제어 시뮬레이션

보시다시피 온도는 20 도입니다.

아날로그 값 = 41
온도 = 20
매핑 된 값 = 100

그러나 온도가 25도 미만이므로 mosfet은 그림 (파란색 점으로 표시)과 같이 0V를 얻습니다.
CASE 2. 온도. 25도 이상

온도가 25도에 도달하면 코드에 지정된대로 pwm 신호가 MOSFET의베이스로 전송되고 온도가 1도 상승 할 때마다이 PWM 전압도 증가합니다.

if(y>25)
{analogWrite(10,z*10)
} which is z* 10.

이 경우 시뮬레이션 된 회로를 참조하십시오.

보시다시피 온도가 20도에서 40도까지 상승하면 세 값이 모두 변하고 섭씨 40도에서

아날로그 값 = 82
온도 = 40
매핑 된 값 = 200

온도가 25 도보 다 크므로 mosfet은 그림 (빨간색 점으로 표시)과 같이 해당 PWM 전압을 얻습니다.

따라서 모터는 25도에서 작동하기 시작하고 핀 10에서 MOSFET의베이스까지 1 도당 pwm 전압이 증가함에 따라 증가합니다. 따라서 모터 속도는 온도 상승에 따라 선형 적으로 증가하고 섭씨 40도에서는 거의 최대가됩니다.

팬과 Arduino를 사용하는 위에서 설명한 자동 온도 제어 DC 팬 회로에 대한 추가 질문이 있으시면 언제든지 아래의 의견 상자를 사용하여 의견을 보내주십시오. 빨리 돌아 오도록 노력하겠습니다.




이전 : 간단한 냉장고 보호 회로 Next : 무정전 전원 공급 장치 (UPS) 회로를 설계하는 방법