วงจรพัดลม DC ควบคุมอุณหภูมิ Arduino

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ในบทความนี้เราจะสร้างวงจรพัดลม dc ควบคุมอุณหภูมิอัตโนมัติแบบ Arduino ที่ใช้ Arduino ซึ่งจะเปิดพัดลมหรืออุปกรณ์อื่น ๆ ที่เชื่อมต่อเมื่ออุณหภูมิโดยรอบถึงระดับเกณฑ์ที่กำหนดไว้ล่วงหน้า เราจะใช้เซ็นเซอร์ 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 เซ็นเซอร์อุณหภูมิ

โดย:Ankit Negi

วัตถุประสงค์ของเรา:

1). ทันทีที่อุณหภูมิโดยรอบเพิ่มขึ้นเกิน 25 องศาเซลเซียส (คุณสามารถเปลี่ยนค่านี้ในโปรแกรมได้ตามความต้องการของคุณซึ่งอธิบายไว้ในส่วนการทำงาน) มอเตอร์จะเริ่มทำงาน

2). และเมื่ออุณหภูมิสูงขึ้นแต่ละระดับความเร็วของมอเตอร์ก็เพิ่มขึ้นด้วย

3). มอเตอร์ทำงานด้วยความเร็วสูงสุดทันทีที่อุณหภูมิสูงขึ้นถึง 40 องศาเซลเซียส (ค่านี้สามารถเปลี่ยนแปลงได้ในโปรแกรม)

เซ็นเซอร์อุณหภูมิ LM35:

เพื่อให้บรรลุภารกิจดังกล่าวข้างต้นเราจะใช้ temp เซนเซอร์ LM35 เนื่องจากใช้กันอย่างแพร่หลายและหาได้ง่าย

LM35 มี 3 พินดังที่คุณเห็นในรูป

LM35 IC pinout

1. Vin - พินนี้เชื่อมต่อกับแหล่งจ่ายไฟ dc ระหว่าง 4 ถึง 20 v
2. Vout - พินนี้ให้เอาต์พุตในรูปของแรงดันไฟฟ้า
3. GND - พินนี้เชื่อมต่อกับขั้ว gnd ของวงจร

LM35 เมื่อเชื่อมต่อกับแหล่งจ่ายไฟจะรับรู้ อุณหภูมิของสภาพแวดล้อม และส่งแรงดันไฟฟ้าเทียบเท่าตามอุณหภูมิที่เพิ่มขึ้นต่อองศาผ่านขาเอาต์พุต

LM35 สามารถรับรู้อุณหภูมิใด ๆ ระหว่าง -50 องศาถึง +150 องศาเซลเซียสและเพิ่มผลผลิต 10 มิลลิโวลต์โดยอุณหภูมิเพิ่มขึ้น 1 องศา ดังนั้นแรงดันไฟฟ้าสูงสุดจึงสามารถให้ได้เนื่องจากเอาต์พุตคือ 1.5 โวลต์

ทำไม ARDUINO สำหรับโครงการ DC FAN CONTROLLER นี้?

Arduino จำเป็นต้องเปลี่ยนค่าอะนาล็อกที่ได้รับจากขาเอาต์พุตของ LM35 เป็นค่าดิจิทัลและส่งเอาต์พุตดิจิตอล (PWM) ที่สอดคล้องกันไปยังฐานของ mosfet

นอกจากนี้เรายังจะใช้ คำสั่ง arduino เพื่อพิมพ์อุณหภูมิ ค่าอนาล็อกที่สอดคล้องกันและเอาต์พุตดิจิตอลไปยัง mosfet บนมอนิเตอร์แบบอนุกรมของ ARDUINO IDE

บทบาทของ POWER MOSFET คืออะไร?

วงจรนี้จะไม่มีประโยชน์หากไม่สามารถใช้มอเตอร์กระแสสูงได้ ดังนั้นในการเรียกใช้มอสเฟ็ตกำลังของมอเตอร์ดังกล่าวจึงถูกนำมาใช้

ทำไมจึงใช้ไดโอด?

Diode ใช้เพื่อป้องกัน mosfet จาก E.M.F ด้านหลังที่สร้างโดยมอเตอร์ขณะทำงาน

รายชื่อชิ้นส่วนสำหรับโครงการ:

1. LM35

2. ARDUINO

3. POWER MOSFET (IRF1010E)

POWER MOSFET (IRF1010E)

4. ไดโอด (1N4007)

ไดโอด (1N4007)

5. FAN (มอเตอร์)

6. แหล่งจ่ายไฟของพัดลม

แผนภูมิวงจรรวม:

การควบคุมพัดลม DC ขึ้นอยู่กับอุณหภูมิ Arduino

ทำการเชื่อมต่อตามที่แสดงในแผนภาพวงจร

a) เชื่อมต่อ vin pin ของ lm358 กับ 5v ของ arduino
b) เชื่อมต่อ vout pin ของ lm358 กับ A0 ของ arduino
c) เชื่อมต่อพินกราวด์ของ lm358 กับ GND ของ arduino
d) เชื่อมต่อฐานของ mosfet กับพิน PWM 10 ของ arduino

รหัส:

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-

นี่เป็นเพียงค่าอะนาล็อกที่ได้รับจากหมายเลขพิน A0 จากขาเอาต์พุตของ LM35

B). ตัวแปรและ -

เนื่องจากตัวแปรนี้เท่านั้นมอเตอร์พัดลมของเราจึงทำงานตามอุณหภูมิที่สอดคล้องกัน สิ่งที่ตัวแปรนี้ทำคือการเปลี่ยนค่าอะนาล็อกเช่นตัวแปร x ให้สอดคล้องกับอุณหภูมิของสภาพแวดล้อม

Y = (500 * x) / 1023
1. ค่าอะนาล็อกแรกต้องเปลี่ยนเป็นแรงดันไฟฟ้าที่สอดคล้องกันเช่น
1023: 5v
ดังนั้น (5,000 มิลลิโวลต์ * x) / 1023 V.
2. ตอนนี้เรารู้แล้วว่าสำหรับแต่ละองศาที่เพิ่มขึ้นของอุณหภูมิที่สอดคล้องกันแรงดันเอาท์พุทจะเพิ่มขึ้น 10 mv เช่น
1 องศาเซลเซียส: 10 มิลลิโวลต์
ดังนั้น (5,000 มิลลิโวลต์ * x) / (1023 * 10) องศา

ค). ตัวแปร Z-

z = แผนที่ (x, 0, 1023, 0,255)
ตัวแปรนี้เปลี่ยนค่าอนาล็อกเป็นค่าดิจิทัลสำหรับเอาต์พุต pwm บนพิน 10

บันทึก :: เรารู้ว่า lm35 สามารถให้ได้สูงสุด 1.5 โวลต์และเช่นกันเมื่ออุณหภูมิ คือ 150 องศา ซึ่งใช้ไม่ได้จริง

ซึ่งหมายความว่าสำหรับ 40 องศาเซลเซียสเราจะได้ 0.40 โวลต์และสำหรับ 25 องศาเราจะได้ 0.25 โวลต์ เนื่องจากค่าเหล่านี้ต่ำมากสำหรับ pwm ที่เหมาะสมบน mosfet เราจึงต้องคูณด้วยปัจจัย

ดังนั้นเราจึงคูณมันด้วย 10 และให้ค่านี้เป็นเอาต์พุตอะนาล็อกไปยังพิน PWM 10 แทนเช่น

** analogWrite (10, z * 10)

ตอนนี้สำหรับ. 25 โวลต์ mosfet ได้รับ 0.25 * 10 = 2.5 โวลต์

สำหรับ. 40 โวลต์ mosfet จะได้รับ 0.40 * 10 = 4 โวลต์ที่มอเตอร์เกือบจะทำงานด้วยความเร็วเต็มที่

กรณี 1. เมื่ออุณหภูมิ น้อยกว่า 25 องศา

ในกรณีนี้ arduino จะส่งแรงดันไฟฟ้า 0 PWM ไปที่ขา 10 เหมือนในบรรทัดสุดท้ายของรหัส

** อื่น ๆ
{analogWrite (10,0) // ในกรณีอื่น ๆ PWM บนพิน 10 ต้องเป็น 0
} **

เนื่องจากแรงดันไฟฟ้า pwm บนฐานของ mosfet เป็น 0 จึงยังคงดับและมอเตอร์จะถูกตัดการเชื่อมต่อจากวงจร

ดูวงจรจำลองในกรณีนี้

การจำลองการควบคุมพัดลม Arduino

อย่างที่เห็นอุณหภูมิ 20 องศาด้วยเหตุนี้

ค่าอนาล็อก = 41
อุณหภูมิ = 20
ค่าที่แมป = 100

แต่เนื่องจากอุณหภูมิต่ำกว่า 25 องศาจึงทำให้ mosfet ได้ 0 โวลต์ดังแสดงในรูป (ระบุด้วยจุดสีน้ำเงิน)
กรณี 2. เมื่ออุณหภูมิ มากกว่า 25 องศา

เมื่ออุณหภูมิสูงถึง 25 องศาจากนั้นตามที่ระบุไว้ในสัญญาณรหัส pwm จะถูกส่งไปยังฐานของ mosfet และเมื่ออุณหภูมิเพิ่มขึ้นในแต่ละองศาแรงดันไฟฟ้า PWM ก็จะเพิ่มขึ้นเช่นกัน

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

ดูวงจรจำลองในกรณีนี้

อย่างที่คุณเห็นเมื่ออุณหภูมิเพิ่มขึ้นจาก 20 องศาเป็น 40 องศาค่าทั้งสามจะเปลี่ยนไปและที่ 40 องศาเซลเซียส

ค่าอนาล็อก = 82
อุณหภูมิ = 40
ค่าที่แมป = 200

เนื่องจากอุณหภูมิสูงกว่า 25 องศาจึงทำให้ mosfet ได้รับแรงดันไฟฟ้า PWM ที่สอดคล้องกันดังแสดงในรูป (ระบุด้วยจุดสีแดง)

ดังนั้นมอเตอร์จึงเริ่มทำงานที่ 25 องศาและด้วยการเพิ่มขึ้นของแรงดันไฟฟ้า pwm ต่อองศาที่สอดคล้องกันจากพิน 10 ถึงฐานของมอสเฟตก็เพิ่มขึ้นเช่นกัน ดังนั้นความเร็วของมอเตอร์จึงเพิ่มขึ้นเป็นเชิงเส้นตามการเพิ่มขึ้นของอุณหภูมิและเกือบสูงสุดที่ 40 องศาเซลเซียส

หากคุณมีข้อสงสัยเพิ่มเติมเกี่ยวกับวงจรพัดลม dc ควบคุมอุณหภูมิอัตโนมัติที่อธิบายไว้ข้างต้นโดยใช้พัดลมและ Arduino คุณสามารถใช้ช่องแสดงความคิดเห็นด้านล่างและส่งความคิดเห็นมาให้เราได้ตลอดเวลา เราจะพยายามติดต่อกลับโดยเร็วที่สุด




คู่ของ: วงจรป้องกันตู้เย็นอย่างง่าย ถัดไป: วิธีออกแบบวงจร Uninterruptible Power Supply (UPS)