กลับไปหน้ารวมไฟล์
the-arduino-nano-ajustable-thermostatic-relay-project-bd498e.md

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

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

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

นี่คือไดอะแกรมของโปรเจกต์ที่เสร็จสมบูรณ์และใช้งานได้บนเบรดบอร์ด ก่อนจะเอาไปประกอบเป็นเวอร์ชันพกพา:

Precision HVAC Control: Programmable Thermostatic Relay

(ควบคุมระบบทำความร้อน-ความเย็นแบบแม่นยำ: รีเลย์เทอร์โมสแตทแบบโปรแกรมได้)

ฮีตเตอร์ราคาถูกตามท้องตลาดส่วนใหญ่ใช้แถบไบเมทัลลิกแบบอนาล็อก ที่งอเพราะความร้อนเพื่อตัดการทำงาน ทำให้อุณหภูมิแกว่งแบบสุดเหวี่ยงได้ถึง 5°C! โปรเจกต์ Ajustable Thermostatic Relay นี้ ออกแบบระบบควบคุมความร้อนใหม่หมดโดยใช้เซนเซอร์ดิจิทัลจริงๆ Arduino Nano จะคอยอ่านค่าจากเซนเซอร์วัดสภาพแวดล้อมความแม่นยำสูง และรันคณิตศาสตร์ "ฮิสเทอรีซิส" (Hysteresis) เพื่อสั่งการรีเลย์แม่เหล็กไฟฟ้าจริงๆ ทำให้รักษาอุณหภูมิเป้าหมายได้อย่างแม่นยำและเสถียรสุดๆ!

ลงมือทำ "ฮิสเทอรีซิส" ตัวกูรูสำคัญ!

ถ้าน้องเขียนโค้ดง่ายๆ แบบ if (temp < 25) { Relay_ON(); } else { Relay_OFF(); } น้องจะสั่งให้รีเลย์ทำงานแบบบ้าคลั่งทันที!

  • อุณหภูมิจะแกว่งไปมาระหว่าง 24.99 กับ 25.01 อย่างรวดเร็ว ทำให้รีเลย์ 240V ตัวเบิ้มเปิดปิดวูบวาบ 10 ครั้งต่อวินาที (Short Cycling) ซึ่งจะหลอมละลายหน้าสัมผัสของรีเลย์และทำลายคอมเพรสเซอร์ฮีตเตอร์ที่ต่ออยู่ได้ในพริบตา!
  • ฮิสเทอรีซิส คือการบังคับให้มี "โซนตาย" (Dead Zone) กว้างๆ คั่นไว้!
float currentTemp = dht.readTemperature();

// ฮีตเตอร์จะเปิดก็ต่อเมื่ออุณหภูมิตกลงไปต่ำกว่า 23°C เท่านั้น
if (currentTemp <= 23.0) {
  digitalWrite(RELAY_PIN, HIGH); // ไฟ 240V เข้าฮีตเตอร์!
  heaterState = true;
}

// แต่มันจะไม่ยอมปิดจนกว่าอุณหภูมิจะขึ้นไปถึง 26°C เลย!
if (currentTemp >= 26.0) {
  digitalWrite(RELAY_PIN, LOW); // ฮีตเตอร์ดับ!
  heaterState = false;
}
// ช่วงระหว่าง 23 ถึง 26 องศา Arduino จะไม่สั่งอะไรทั้งนั้น! สถานะถูกล็อคไว้!

ต่อเชื่อมกับรีเลย์แรงดันสูง AC

Arduino ทำงานอยู่ในโลกเล็กๆ ของลอจิก 5V เท่านั้น

  • ถ้าจะไปควบคุมฮีตเตอร์ขนาด 1500 วัตต์แบบเบิ้มๆ น้องต้องใช้ บอร์ดรีเลย์แบบ Opto-Isolated 5V โดยเฉพาะ
  • Arduino ส่งไฟ 5V เข้าไปที่ LED ภายในบอร์ดรีเลย์ (Optocoupler) แสงจาก LED จะไปตกกระทบโฟโตทรานซิสเตอร์เพื่อกระตุ้นขดลวดแม่เหล็ก
  • ช่องว่างที่เชื่อมด้วยแสงนี้แหละ ที่จะกั้นโลกอันบอบบางของชิป Arduino ออกจากไฟบ้าน 240 โวลต์ที่น่ากลัวไว้โดยสมบูรณ์! ห้ามช็อตนะตัวนี้

โครงสร้างฮาร์ดแวร์สำหรับควบคุมสภาพอากาศ

  • Arduino Nano (ตัวเล็กจิ๋วแบบนี้แหละที่ใช่! ลงตัวสุดๆ สำหรับการยัดลงไปในกล่องเทอร์โมสแตทที่พิมพ์จากเครื่อง 3D พริ้นเตอร์แล้วติดผนัง)
  • เซ็นเซอร์ DHT11 / DHT22 หรือ DS18B20 (บอกเลยว่า DHT22 แม่นยำกว่า DHT11 เยอะในเรื่องความละเอียดทศนิยม!)
  • จอ LCD 16x2 แบบ I2C (ของจำเป็นขั้นสุดขาดไม่ได้! ไว้เช็คด้วยตาว่าค่า Setpoint ที่เราตั้ง กับค่าอุณหภูมิความชื้นปัจจุบันมันตรงกันรึเปล่า)
  • Rotary Encoder หรือ Potentiometer (เอาไว้ปรับค่า Setpoint แบบ Real-time ง่ายๆ ด้วยมือเราเอง)
  • รีเลย์โมดูลสำหรับไฟ AC ขนาด 10A / 250V (อันนี้ต้องเช็คให้ชัวร์! เครื่องทำความร้อน 1500W ที่ไฟ 110V จะกินกระแสประมาณ 13A ถ้าใช้รีเลย์ 10A ธรรมดา ระวังไฟไหม้ได้! ต้องใช้แบบที่รับโหลดหนักๆ ได้จริงจัง)

พอทำเวอร์ชั่นพกพาเสร็จ ผมก็เอาไปทดสอบที่บ้านหลังเล็กของผม ผลคือใช้ได้ลื่นปรื้ดไม่มีปัญหามาตลอดเลย

พยายามยัดข้อมูลเกี่ยวกับโปรเจคให้มากที่สุดเท่าที่จะทำได้ โดยไม่ให้รุ่นพี่คนเขียนบทเรียนเขาเสียใจ แต่ถ้าใครอยากเจาะลึกกว่านี้ ผมแนะนำให้ไปหาอ่านเพิ่มเติมเกี่ยวกับการทำโปรเจคแบบนี้ดูนะ

นี่คือวิดีโอจากโปรเจคที่แสดงผลงานเวอร์ชั่นพกพาสำเร็จรูป พร้อมกับใช้ Power Supply 5V จากภายนอก:

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE 2.0 (beta)"
author: "arduinoguy007"
category: "Sensors & Environment"
components:
  - "1x Panel Mount Extension Mini B USB Cable - for Nano models with Mini USB"
  - "1x Breadboard wire bundle"
  - "1x tm1637 4 digit dis play"
  - "1x Arduino Nano"
  - "1x Waterproof 1-Wire DS18B20 Digital temperature sensor"
  - "1x GX12 Male Female 12 mm 3 Pin Connectors"
  - "1x GX16 Male Female 16mm 2 Pin Connectors"
  - "1x Project Breadboard"
  - "1x 5V One Channel Relay Module"
description: "มาลองเล่น Arduino Nano กัน! โปรเจคนี้จะสอนให้รู้จักเซนเซอร์วัดอุณหภูมิ และวิธีสร้างระบบควบคุมอุณหภูมิแบบตั้งค่าเองได้ งานนี้ตึงๆ วัยรุ่นสายช่างต้องจัดไป!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX1+VqZJMd70xGsIT59NpfdyPDC3hV0cmRyZCRpAEs3KxhND5Mwl5Tnq/KxYAWi9WLXUWofB/OMyPUCKrckaTs0dDKzUaBGdKaYY="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/the-arduino-nano-ajustable-thermostatic-relay-project-bd498e_cover.png"
lang: "en"
likes: 1
passwordHash: "0abf95d63b0f11121027f53ddabe3609dca6e1aa052da2d197357cfd9119d9dd"
price: 299
seoDescription: "Build an Arduino Nano Adjustable Thermostatic Relay project. Learn to create your own temperature monitoring and control device."
tags:
  - "Environmental Sensing"
  - "Energy Efficiency"
  - "Monitoring"
  - "Security"
  - "Tools"
  - "Weather"
  - "Home Automation"
title: "โปรเจค Arduino Nano ควบคุมอุณหภูมิแบบปรับค่าได้ งานง่ายแต่หล่อ!"
tools: []
videoLinks:
  - "https://youtu.be/qLMZ_JW6NgU"
views: 1465