ในบทเรียนนี้ เราจะก้าวข้ามขีดจำกัดของการแค่อ่านค่าเซนเซอร์หรือสั่งไฟ LED กระพริบ มาสู่การควบคุม "ฮาร์ดแวร์ของจริง" แบบปลอดภัยกันครับ!
เป้าหมายของเราเรียบง่ายแต่ทรงพลังมาก: ทำยังไงให้ไมโครคอนโทรลเลอร์ตัวจิ๋ว สามารถสั่งงานอุปกรณ์ที่ใช้ไฟแรงดันสูง หรือกินกระแสไฟเยอะกว่าที่ตัวบอร์ดจะจ่ายไหว? คำตอบก็คือการใช้ฮีโร่ 2 ตัวในวงการอิเล็กทรอนิกส์ นั่นคือ รีเลย์ (Relay) และ ทรานซิสเตอร์ (Transistor) ครับ ในบทเรียนที่ 18 นี้ เราจะมาดูว่าอุปกรณ์สองตัวนี้ช่วยให้ Arduino UNO คุมมอเตอร์ได้อย่างไรโดยที่บอร์ดไม่พัง!
อุปกรณ์ที่ต้องเตรียม (Supplies)
บอร์ด Arduino UNO และ I/O Expansion Shield
เซนเซอร์วัดอุณหภูมิ LM35 และ โมดูลปุ่มกด (Push Button)
หน้าจอ I2C LCD Module
โมดูลรีเลย์ (Relay Module) และ ทรานซิสเตอร์ (BC547)
มอเตอร์ขนาดเล็ก และ หลอดไฟ LED
ไดโอด (H23 FR207G) *สำคัญมากสำหรับมอเตอร์
ตัวต้านทาน (2k และ 5kΩ)
เบรดบอร์ด (Breadboard), แบตเตอรี่ และสายจัมเปอร์
คลิกเพื่อดูรูปภาพอุปกรณ์ชิ้นอื่นๆ (View More)
Step 1: วิดีโอสอนแบบละเอียดยิบ
VIDEO
Step 2: ทำความเข้าใจการทำงานของ Relay
ถ้าอธิบายง่ายๆ รีเลย์ (Relay) ก็คือสวิตช์ที่ถูกควบคุมด้วยไฟฟ้า แทนที่เราจะเอานิ้วไปกดสวิตช์ มันจะใช้ขดลวดแม่เหล็กไฟฟ้า (Electromagnetic coil) ในการดึงหน้าสัมผัสเหล็กให้มาแตะกันเพื่อเปิด-ปิดวงจรแทน
ความเจ๋งของมันคือ "การแยกวงจร" (Isolation) บอร์ด Arduino ของเราจ่ายไฟได้นิดเดียว เอาไปต่อตรงกับมอเตอร์หรือหลอดไฟบ้านไม่ได้ บอร์ดจะไหม้เอา! รีเลย์เลยทำหน้าที่เป็นสะพานกั้น โดยฝั่งที่ต่อกับ Arduino ใช้ไฟต่ำ (Control side) และฝั่งที่ต่อไปหาโหลดใช้ไฟสูง (Switching side)
COM (Common): จุดต่อไฟหลักจากแหล่งจ่ายไฟภายนอก
NO (Normally Open): ปกติวงจรจะเปิด (ไฟไม่เดิน) จะทำงานก็ต่อเมื่อมีคำสั่งจาก Arduino
NC (Normally Closed): ปกติวงจรจะปิด (ไฟเดินตลอด) ถ้ามีคำสั่งจาก Arduino ถึงจะตัดไฟ
คลิกเพื่อดูภาพอธิบายขั้ว COM / NO / NC (View More)
Step 3: ผู้สนับสนุนโปรเจกต์
ซีรีส์บทเรียนนี้ได้รับการสนับสนุนจาก DFRobot ผู้จัดจำหน่ายฮาร์ดแวร์โอเพนซอร์สชั้นนำระดับโลก โดยใช้ชุด MindPlus Arduino Coding Kit ที่รวมเซนเซอร์และอุปกรณ์ที่จำเป็นมาให้ครบจบในกล่องเดียว ช่วยให้ผู้เริ่มต้นเรียนรู้ได้ง่ายขึ้น ไม่ต้องห่วงเรื่องการต่อสายไฟผิดครับ
Step 4: โปรเจกต์ที่ 1 - พัดลมคุมด้วยอุณหภูมิ (ใช้ Relay)
เราจะมาสร้างระบบจำลอง "เทอร์โมสตัท" (Thermostat) โดยใช้เซนเซอร์ LM35 อ่านอุณหภูมิ ถ้าอุณหภูมิเกินที่เราตั้งไว้ รีเลย์จะทำงานและสั่งให้พัดลม (มอเตอร์) หมุน!
จุดที่ต้องระวัง: ไดโอดกันไฟกระชาก (Flyback Diode)
มอเตอร์คืออุปกรณ์ประเภทขดลวด (Inductive load) เวลาที่เราตัดไฟ มันจะเกิด "ไฟกระชาก" ย้อนกลับมาที่วงจรแรงมาก ซึ่งอาจทำให้รีเลย์พังได้ เราเลยต้องต่อไดโอด (หันแถบสีขาวไปทางขั้วบวกของมอเตอร์) คร่อมไว้ เพื่อเป็นทางให้ไฟกระชากวิ่งวนจนหมดไป ปลอดภัยแน่นอน!
คลิกเพื่อดูรูปการต่อวงจรและ Flyback Diode (View More)
Step 5: อธิบายโค้ด
ในโค้ดเราจะกำหนดตัวแปรให้เช็กอุณหภูมิ เช่น ถ้าอุณหภูมิเกิน 50°C ให้สั่งเปิดพินดิจิทัล (HIGH) ไฟก็จะไปกระตุ้นคอยล์ในรีเลย์ให้ทำงาน และถ้าต่ำกว่า 50°C ก็สั่งปิดพิน (LOW) เพื่อตัดไฟมอเตอร์
คลิกเพื่อดูและคัดลอกโค้ด C++ (View More)
📋 คัดลอกโค้ด
// ---------- FAN CONTROL ----------
if (smoothedTempC >= 50.0) {
digitalWrite(RELAY_PIN, HIGH);
} else {
digitalWrite(RELAY_PIN, LOW);
}
Step 6: ทำความเข้าใจการทำงานของ Transistor
รีเลย์นั้นเจ๋งก็จริง แต่มันมีข้อเสียคือ "ทำงานช้า มีเสียงดังแต๊กๆ และเสื่อมสภาพไวเพราะเป็นกลไกขยับได้" ถ้าเราต้องการสวิตช์ที่สับแบบรัวๆ (PWM) หรือทำงานแบบเงียบกริบ ทรานซิสเตอร์ (Transistor) คือคำตอบครับ!
ทรานซิสเตอร์ทำงานเหมือน "วาล์วน้ำอิเล็กทรอนิกส์" รุ่น BC547 (NPN) ที่เราใช้ มี 3 ขา คือ Base (B), Collector (C) และ Emitter (E) พอเราป้อนกระแสไฟนิดเดียวเข้าที่ขา B มันจะยอมให้กระแสไฟก้อนใหญ่ไหลผ่านจาก C ไป E ได้ (ถ้าเป็น PNP จะกลับกัน) แถมยังทำหน้าที่ขยายสัญญาณ (Amplifier) ได้ด้วยนะ
คลิกเพื่อดูภาพอธิบาย Transistor (View More)
Step 7: โปรเจกต์ที่ 2 - ไฟเตือนอุณหภูมิ (ใช้ Transistor)
เนื่องจากทรานซิสเตอร์ BC547 ตัวเล็กเกินกว่าจะขับมอเตอร์ไหว เราเลยเปลี่ยนมาใช้ หลอด LED แทนครับ โดยต่อขา B เข้ากับตัวต้านทาน 5kΩ แล้วเข้าพินดิจิทัล 3 ส่วนขา C และ E ต่อคร่อม LED กับแหล่งจ่ายไฟ (โค้ดใช้ชุดเดิมได้เลย) พออุณหภูมิถึงจุดที่ตั้งไว้ ขา 3 จะส่งไฟมาเปิดวาล์วที่ขา B ทำให้ LED สว่างขึ้นมาทันที!
คลิกเพื่อดูรูปการต่อวงจรโปรเจกต์ที่ 2 (View More)
Step 8: เลือกใช้อะไรดีระหว่าง Relay กับ Transistor?
เลือกรีเลย์ (Relay): เมื่อต้องการ "แยกวงจร" เด็ดขาด (ไฟกระแสสลับ AC ไฟบ้าน 220V หรือไฟสูงมากๆ) เพราะมีความปลอดภัยสูง เป็นสวิตช์กายภาพชัดเจน
เลือกทรานซิสเตอร์ (Transistor): เมื่อต้องการควบคุมด้วยความเร็วสูง รัวๆ (PWM) ต้องการความเงียบ และความทนทานในระยะยาว (ถ้าขับมอเตอร์ตัวใหญ่ๆ นิยมใช้ทรานซิสเตอร์ชนิด MOSFET แทนครับ)
Step 9: สรุป
การเรียนรู้วิธีใช้งาน Relay และ Transistor เป็นเหมือนการปลดล็อกพลังให้ Arduino ของคุณสามารถควบคุมโลกความเป็นจริงได้ ไม่ใช่แค่การอ่านโค้ดในคอมพิวเตอร์ แต่มันคือการเปลี่ยนคำสั่งลอจิก ให้กลายเป็น "การลงมือทำ" (Physical Action) อย่างเปิดไฟ สตาร์ทปั๊มน้ำ หรือคุมมอเตอร์
พร้อมสร้างระบบควบคุมฮาร์ดแวร์แบบมือโปรแล้วหรือยัง?
คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา