การใช้งานรีเลย์
รีเลย์
รีเลยเปนอุปกรณอิเล็กทรอนิกสที่ใชในการตัดตอวงจรคลายกับสวิตช
รีเลย์ทั่วไปจะใช้ปรากฎการณ์ทางไฟฟ้าแม่เหล็กในการทำงาน และเรียกวาเป็นแบบมีหนาสัมผัส
รีเลย์หนึ่ง ๆ จะประกอบดวยชุดหนาสัมผัส (Contact) ที่ตอกับ แท่งอารเมเจอร (Armature) และคอยล (Coil) ที่ถูกพันดวยขดลวด
เมื่อมีการจายแรงดันไฟฟาใหกับคอยลจะทําใหเกิดสนามแมเหล็ก แทงอารเมเจอรที่ตอกับหนาสัมผัสจะถูกดูดด้วยแรงแม่เหล็ก
ทําใหหนาสัมผัสเปลี่ยนสถานะการเชื่อมตอเปนสถานะตรงกันขาม กลาวคือ
ปกติเปด (NO, Normally Open) จะกลายเปนปด และปกติปด (NC,
Normally Closed) จะกลายเปนเปด และเมื่อตัดไฟเลี้ยงที่จายใหคอยล
จะทําใหรีเลยกลับสูสถานะเดิม
คือหนาสัมผัสตางๆ จะกลับสูสภาวะแรกกอนการจายไฟดวยแรงจากสปริงที่ติดตั้งอยู่ภายใน
รูปรางทั่วไปของรีเลย์ขั้วเดียวสองทาง (Single
Pole Double Throw, SPDT) และลักษณะภายในของรีเลย์แสดงดังรูปที่ 4.1 (ก) และ (ข) และ บอรดรีเลยที่ใชในการทดลองแสดงดังรูปที่ 4.2 โดยบอร์ดที่เลือกใช้นี้มีวงจรควบคุมรีเลยอยู
4 ชุด
รูปที่
4.1 (ก) รูปร่างและ (ข)
ลักษณะภายในของรีเลย์
รูปที่
4.2 บอร์ดรีเลย์ชนิด 4 ช่อง แบบ isolation
control, 250V/10A และ Active Low
การทํางานของวงจรควบคุมรีเลยขึ้นอยู่กับลักษณะการต่อวงจร
โดยสำหรับบอร์ดที่แสดงในรูปที่ 4.2 นี้ รีเลยจะทํางานเมื่อได้รับสัญญาณลอจิกต่ำ
(Active Low) ที่ขา IN แต่ละขา
ซึ่งเราจะทำการเชื่อมตออยูกับขาของ NodeMCU v.3
โดยเมื่อป้อนสัญญาณระดับต่ำ (LOW) ที่ขา IN1 (ดูรูปที่ 4.3) แล้ว กระแสไฟฟาจะไหลผาน LED ทำให้ LED สวาง สวนภายในชิฟ U1 นั้น
เมื่อมีกระแสไหลผ่านก็จะมีการส่งสัญญาณแสงทําใหทรานซิสเตอร์ใน
U1 นํากระแสและทำให้ทรานซิสเตอร์ Q1
มีสถานะนำกระแสด้วย ซึ่งก็จะทำให้รีเลย์ทำงาน
(คือมีการเปลี่ยนสถานะ) สำหรับไดโอด D1 ที่ต่อขนานกับคอยล์ของรีเลย์นั้น
เพื่อทำให้กระแสไฟฟ้าสามารถไหลย้อนกลับทางได้ในช่วงเวลาสั้น ๆ
ขณะที่รีเลย์เปลี่ยนสถานะ
รูปที่
4.3 วงจรบอร์ดรีเลย์ (เฉพาะส่วนของรีเลย์ตัวที่ 1)
รูปที่ 4.4
แสดงตัวอย่างการนำรีเลย์ไปใช้ควบคุมอุปกรณ์ไฟฟ้าทั่วไป เช่น หลอดไฟ
โดยเราสามารถต่ออุปกรณ์แรงดัน 220 V กระแสสูงสุด 10
แอมแปร์กับบอร์ดรีเลย์นี้ได้ โดยในการทดลองเบื้องต้น เราจะไม่มีการต่อไฟฟ้าแรงดัน
220 V จริง ดังนั้นเราอาจจะเอาจัมเปอร์
JD บนบอร์ดรีเลย์นี้ออก (ดูรูปที่ 4.2 และ
รูปที่ 4.3)
เพื่อมิให้รีเลย์ทำงานจริงแต่จะสังเกตการทำงานผ่านหลอด LED ที่แสดงสถานะของรีเลย์บนบอร์ดรีเลย์แทน
รูปที่
4.4 ตัวอย่างการนำรีเลย์ไปควบคุมกับอุปกรณ์ไฟฟ้าทั่วไป
การเขียนโปรแกรมส่งออกค่าดิจิทัล
คำสั่งเบื้องต้นในการใช้งานรีเลย์
ในภาษา Arduino
แสดงแยกเป็นหัวข้อย่อย ดังนี้
1.
ฟงกชันเอาตพุตแบบดิจิทัล (Digital
Output)
1) pinMode(pin,
mode) เปนคําสั่งใชกําหนดขา (หรือพอรต) ใด
ๆ ที่ทําหนาที่
เปนพอรตดิจิทัล ปกติจะใช้ในฟังก์ชัน
setup() เพื่อกำหนดการทำงานเริ่มต้นของขาต่าง ๆ
ที่เกี่ยวข้อง
- pin หมายถึงชื่อหรือเลขขาของบอร์ด NodeMCU เปน D0, D1,
หรือเป็นเลขจำนวนเต็ม
โดยชื่อขาเหล่านี้ ถูกกำหนดให้สอดคล้องกับพิน GPIO อยู่ก่อนแล้ว (ดูรูปที่ 3.2)
- mode หมายถึงโหมดการทํางาน กำหนดให้มีค่าเปน INPUT หรือ OUTPUT เท่านั้น
ตัวอย่างเชน คำสั่ง pinMode(D1, OUTPUT) คือการกําหนดใหขา D1 ของ
NodeMCU ทํางานโดยส่งสัญญาณออกไปเท่านั้น
2)
digitalWrite(pin, value) เปนคําสั่งให้ขาที่กําหนดมีสถานะเปนลอจิกสูง (HIGH หรือ 1) หรือเปนลอจิกต่ำ (LOW หรือ 0)
- pin หมายถึงชื่อหรือเลขขาของบอร์ด NodeMCU
- value หมายถึงคา กำหนดให้มีค่าเปน HIGH หรือ LOW เท่านั้น
ตัวอย่างเชน คำสั่ง digitalWrite(D0, HIGH) คือการกําหนดใหขา D0 ของ
NodeMCU มีคาเปนลอจิกสูง (HIGH) ซึ่งจะมีระดับแรงดัน
3.3 V
2. ฟงกชันหนวงเวลา (Time Delay)
1.)
delay(value) เปนคําสั่งใหหนวงเวลา
-
value หมายถึงคาการหนวงเวลามีหนวย 1/1000 วินาที หรือมิลลิวินาที (ms) โดยจะรับค่าที่มีชนิดเป็นเลขจำนวนเต็ม (integer, int) เท่านั้น
ตัวอย่างเชน delay(1000); คือการกําหนดใหโปรแกรมหนวงเวลา 1 วินาที
(1 s = 1000 ms = 1000000 µs)
2.)
delayMicroseconds(time) เปนคําสั่งใหหนวงเวลา
- time หมายถึงคาการหนวงเวลามีหนวย 1/1000000 วินาที (µs หรือ us โดยเรามักใช้
u แทน สัญลักษณ์ไมโคร µ) ฟังก์ชันนี้จะรับค่าเป็นเลขจำนวนเต็ม
ตัวอย่างเชน delayMicroseconds(1000); กําหนดใหการหนวงเวลามีคาเทากับ
1 มิลลิวินาที
ข้อมูลเพิ่มเติม:
สำหรับตัวแปร int
(คือจำนวนเต็มหรือ integer) ในภาษา C จะมีค่าระหว่าง -32768 ถึง 32767 (-215 ถึง 215-1)
ในขณะที่ ตัวแปร unsigned int (คือจำนวนเต็มแบบไม่คิดเครื่องหมาย)
จะมีค่าระหว่าง 0 ถึง 65535 (0 ถึง 216-1)
การทดลองควบคุมรีเลย์
วัตถุประสงค์
1.
สามารถตอบอร์ด NodeMCU v.3 กับบอร์ดรีเลย์ได
2.
สามารถเขียนโปรแกรมให้ NodeMCU ควบคุมการทํางานของรีเลย์ได
3.
เขียนโปรแกรมควบคุมรีเลย์โดยมีการหนวงเวลาประกอบด้วยได
อุปกรณ์ที่ใช้ในการทดลอง
1. เครี่องคอมพิวเตอร์ที่มีระบบปฏิบัติการ
Windows
(ตั้งแต่ Windows 7 ขึ้นไป)
พร้อมติดตั้งโปรแกรม Arduino IDE 1.8.8 IoT 1
เครื่อง
2. NodeMCU v.3 1
บอร์ด
3. NodeMCU Base
Ver 1.0 1
บอร์ด
4. บอร์ดรีเลย์ชนิด 4 ช่อง 1 บอร์ด
5. สาย USB 1
เส้น
6. สายต่อวงจร (สายจัมพ์ เมีย-เมีย) 6
เส้น
วิธีการทดลอง
1.
ตอวงจรตามรูปที่ 4.5 โดยต่อทางดานอินพุท (input) ของรีเลย์หมายเลข 1 (IN1)
ที่ขา D1, รีเลย์หมายเลข 2, 3, และ 4 (IN2, IN3, และ IN4) ที่ขา
D2, D3 และ D4 สวนขา GND (ขากราวด์) ให้ต่อร่วมกันและ ต่อขา VCC กับ
VUSB ซึ่งคือไฟบวก +5 V ที่บอร์ด NodeMCU
Base Ver 1.0 ที่ได้รับมาจากคอมพิวเตอร์ จากนั้นดึงจัมเปอร์ JD บนบอร์ดรีเลย์ออกก่อนเพื่อมิให้ไฟเข้าไปเลี้ยงคอยล์และสังเกตการทำงานของรีเลย์ผ่าน
LED บนบอร์ดก่อน
ในการเขียนโปรแกรมควบคุมใหรีเลย์ที่ทํางานแบบ Active Low เราตองป้อนสัญญาณลอจิกต่ำ
(LOW) ที่ตําแหนงขา ของ NodeMCU
ที่ต่อเพื่อควบคุมรีเลย์ ดังนั้น เราจึงใช้คำสั่ง #define ในการกำหนดชื่อ ให้ LOW คือ ON และ HIGH คือ OFF เพื่อให้คำสั่งที่เขียนสอดคล้องกับการทำงานของรีเลย์
รูปที่
4.5 การต่อ NodeMCU v.3 เพื่อควบคุมการเปิด-ปิดรีเลย์
2.
เขียนโค้ดควบคุมรีเลย์ในโปรแกรม Arduino IDE เพื่อควบคุมการเปด-ปดการทํางานของรีเลย 4
ตัวพร้อม ๆ กัน โดยให้เปิด-ปิดเป็นเวลา 1 วินาทีสลับกันไปเรื่อย ๆ ตลอดเวลา
แผนผังการทำงานของโปรแกรมในการทดลองนี้แสดงได้ดังรูปที่ 4.6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// Control
4-channel Relay by NodeMCU ESP8266 #define ON LOW #define OFF HIGH int Relay1 = D1; int Relay2 = D2; int Relay3 = D3; int Relay4 = D4; void setup() { pinMode(Relay1, OUTPUT); pinMode(Relay2, OUTPUT); pinMode(Relay3, OUTPUT); pinMode(Relay4, OUTPUT); } void loop() { digitalWrite(Relay1, ON); digitalWrite(Relay2, ON); digitalWrite(Relay3, ON); digitalWrite(Relay4, ON); delay(1000); digitalWrite(Relay1, OFF); digitalWrite(Relay2, OFF); digitalWrite(Relay3, OFF); digitalWrite(Relay4, OFF); delay(1000); } |
รูปที่
4.6 แผนผังการทำงานของโปรแกรมที่แสดงในการทดลองนี้
แบบฝึกหัดท้ายการทดลอง
หากเราต้องการสร้างสัญญาณไฟจราจร (ไฟเขียว-เหลือง-แดง) โดยใช้ NodeMCU และบอร์ดรีเลย์ควบคุมการทำงานของไฟสัญญาณ
(ไฟสัญญาณแดง-เหลือง-เขียว) (ดูรูปที่ 4.7)
โดยกำหนดให้ระบบควบคุมรีเลย์ทำงานดังแสดงในตารางที่ 4.1
จงเขียนโค้ดโปรแกรมสำหรับการสร้างสัญญาณไฟจราจรนี้
รูปที่
4.7 รูปประกอบแบบฝึกหัดท้ายการทดลอง
ตารางที่
4.1 สถานะของรีเลย์ที่ช่วงเวลาต่าง ๆ
เพื่อใช้ควบคุมไฟสัญญาณจราจร
เวลา
(วินาที) |
รีเลย์ 1 สีเขียว |
รีเลย์ 2 สีเหลือง |
รีเลย์ 3 สีแดง |
10 |
ON |
OFF |
OFF |
3 |
OFF |
ON |
OFF |
8 |
OFF |
OFF |
ON |