unicon09-193208

16
Unicon 193 หนึ่งในการประยุกตใชงานระบบควบคุมอัตโนมัติคือ การควบคุมอุปกรณที่มีความตองการกระแสไฟฟา และแรงดันไฟฟาสูง อาทิ หลอดไฟ มอเตอร ขดลวดเคลื่อนที่หรือโซลินอยด ในขณะที่ไมโครคอนโทรลเลอร สามารถขับแรงดันไฟฟาและกระแสไฟฟาทางเอาตพุตไมสูง คือ เพียง +3 หรือ +5V 20mA ดังนั้นจึงตองมีการเรียนรู ถึงแนวทางในการนําไมโครคอนโทรลเลอรไปขับอุปกรณที่ตองการพลังงานไฟฟาสูง อุ ปกรณ ที่ นิ ยมนํ ามาใช ในการขั บโหลดกระแสไฟฟ าสู งร วมกั บไมโครคอนโทรลเลอร คื อ รีเลย (relay) โดยรีเลยทําหนาที่เปนสวิตชแรงดันและกระแสไฟฟาสูง ใชงานไดทั้งกับโหลดไฟฟากระแสตรง และกระแสสลับ เป นอุ ปกรณ แม เหล็ กไฟฟ าแบบหนึ่ งที่ ทํ าหน าที่ เป นสวิ ตช ตั ดต อหนึ่ งชุ ดหรื อมากกว า ขึ้ น อยูกับจํานวนหนาสัมผัสที่รีเลยตัวหนึ่ง ๆ บรรจุอยู รีเลยมีสัญลักษณตามรูปที่ 9-1 (ก) จะเห็นวารีเลยประกอบ ดวยสวนสําคัญ 2 สวนคือ ขดลวด (coil) และหนาสัมผัส (contact) แบงเปนหนาสัมผัสปกติ (Normally Closed :NC) และปกติเปดวงจรหรือไมตอ (Normally Opened :NC) (ก) แสดงสัญลักษณของรีเลย NC C NO หนาสัมผัส ขดลวด NC C NO รีเลยยังไมทํางาน + - +V (ข) การทํางานของรีเลย NC C NO รีเลยเริ่มทํางาน + - +V รูปที่ 9-1 แสดงสัญลักษณและการทํางานเบื้องตนของรีเลย

Upload: innovative-experiment-coltd

Post on 07-Mar-2016

216 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Unicon09-193208

Unicon 193

หนึ ่งในการประย ุกต ใช งานระบบควบค ุมอ ัตโนม ัต ิค ือ การควบค ุมอ ุปกรณ ที ่ม ีความต องการกระแสไฟฟ าและแรงด ันไฟฟ าสู ง อาทิ หลอดไฟ มอเตอร ขดลวดเคลื ่อนที ่หรื อโซล ินอยด ในขณะที ่ไมโครคอนโทรลเลอร สามารถข ับแรงด ันไฟฟ าและกระแสไฟฟ าทางเอาต พ ุตไม ส ูง ค ือ เพ ียง +3 หร ือ +5V 20mA ด ังนั ้นจ ึงต องม ีการเร ียนรู ถ ึงแนวทางในการนํ าไมโครคอนโทรลเลอร ไปขั บอ ุปกรณ ที ่ต องการพล ังงานไฟฟ าส ูง

อุ ปกรณ ที่ นิ ยมนํ ามาใช ในการขั บโหลดกระแสไฟฟ าสู งร วมกั บไมโครคอนโทรลเลอร คื อรี เลย (relay) โดยรี เลย ทํ าหน าที่ เป นสวิ ตช แรงดั นและกระแสไฟฟ าสู ง ใช งานได ทั้ งกั บโหลดไฟฟ ากระแสตรงและกระแสสลั บ

เป นอุ ปกรณ แม เหล็ กไฟฟ าแบบหนึ่ งที่ ทํ าหน าที่ เป นสวิ ตช ตั ดต อหนึ่ งชุ ดหรื อมากกว า ขึ้ นอยู กั บจํ านวนหน าสั มผั สที่ รี เลย ตั วหนึ่ ง ๆ บรรจุ อยู รี เลย มี สั ญลั กษณ ตามรู ปที่ 9-1 (ก) จะเห็ นว ารี เลย ประกอบด วยส วนสํ าคั ญ 2 ส วนคื อ ขดลวด (coil) และหน าสั มผั ส (contact) แบ งเป นหน าสั มผั สปกติ (Normally Closed:NC) และปกติ เป ดวงจรหรื อไม ต อ (Normally Opened :NC)

(ก) แสดงสั ญลั กษณ ของรี เลย

NC

C

NO

หนาสัมผัส

ขดลวด

NC

C

NO

รีเลยยังไมทํางาน

+-

+V

(ข) การทํ างานของรี เลย

NC

C

NO

รีเลยเริ่มทํางาน

+-

+V

ร ูปที ่ 9-1 แสดงส ัญล ักษณ และการทํ างานเบื ้องต นของร ีเลย

Page 2: Unicon09-193208

194 Unicon

การกระตุ นให รี เลย ทํ างานทํ าได ง ายมากเพี ยงจ ายแรงดั นให แก ขดลวดในปริ มาณที่ ขดลวดนั้ นต องการ ก็ จะทํ าให แม เหล็ กไฟฟ าเกิ ดข้ึ นที่ หน าสั มผั ส เกิ ดการดู ดหน าสั มผั สจากจุ ด NC มายั งจุ ด NO ดั งนั้ นเมื่ อรี เลย ทํ างานหน าสั มผั ส NO จะต อวงจร ในขณะที่ NC จะเป ดวงจรแทน ในลั กษณะนี้ ทํ างานเหมื อนเป นสวิ ตช 2 ทางที่ ควบคุ มด วยแม เหล็ กไฟฟ า ดั งแสดงการทํ างานในรู ปที่ 9-1 (ข)

คุ ณสมบั ติ ที่ สํ าคั ญของรี เลย ได แก

1. แรงดั นตกคร อมขดลวดที่ ทํ าให รี เลย ทํ างาน (Vcoil หรื อ Coil Voltage)

2. ค าความต านทานของขดลวด (Coil resistance) ปกติ มี ค าประมาณ 100 ถึ ง 600W

3. อั ตราทนได สู งสุ ดทั้ งแรงดั นและกระแสไฟฟ าของหน าสั มผั ส (Contact rating)

4. อายุ การใช งาน (Operating time)

5. ตํ าแหน งขาของหน าสั มผั ส NO, NC และ C รวมทั้ งขาต อใช งานของขดลวด

ในการทํ างานปกติ พอร ตเอาต พุ ตของไมโครคอนโทรลเลอร ไม สามารถนํ าไปขั บอุ ปกรณ เอาต พุ ตกระแสไฟฟ าสู งได โดยตรงได เนื่ องจากข อจํ ากั ดด านความสามารถในการจ ายกระแสไฟฟ า ดั งนั้ นถ าต องการน ําไมโครคอนโทรลเลอร ไปขั บโหลดกระแสไฟฟ าส ูงจะต องม ีอ ุปกรณ ที ่ท ําหน าที ่จ ายแรงด ันและกระแสส ูงโดยเฉพาะ เรี ยกอุ ปกรณ เหล านี้ ว า อุ ปกรณ ขั บ หรื อ ไดรเวอร (driver)

9.2.1 การใช ทรานซิ สเตอร ขั บ

9.2.1.1 การใช ทรานซิ สเตอร ขั บแบบเดี่ ยว

การขั บโดยวิ ธี นี้ เหมาะสมสํ าหรั บโหลดที่ มี ความต องการกระแสไฟฟ าปานกลาง ตั ้งแต 30 ถ ึง 200mA

อาท ิ ร ีเลย กํ าล ังตํ ่าไปจนถ ึงปานกลางที ่ม ีค าความต านทานของขดลวดภายในร ีเลย ไม ตํ ่ากว า 100, หลอดไฟกํ าล ัง

ตํ่ า และมอเตอร ไฟตรงขนาดเล็ ก มี วงจรตั วอย างตามรู ปที่ 9-2

ในร ูปที ่ 9-2 เป นการต อทรานซ ิสเตอร เข าก ับขาพอร ตของไมโครคอนโทรลเลอร โดยม ีตั วต านทาน R1

ทํ าหน าที ่จ ําก ัดกระแสไฟฟ าที ่ไหลเข าขาเบสของทรานซ ิสเตอร Q1 ซึ ่งจะทํ างานก ็ต อเมื ่อขาพอร ตจของไมโคร

คอนโทรลเลอร ม ีสถานะลอจ ิกเป น “1” เมื ่อ Q1 ทํ างาน ก ็จะเก ิดกระแสไฟฟ าไหลผ าน RL ซึ ่งเป นโหลดต ออยู ทาง

เอาต พ ุตที ่ขาคอลเล ็กเตอร ของ Q1 กระแสโหลดส ูงส ุด (ILmax) ม ีค าเท าก ับ 12V/300= 40mA ถ ึงแม ว า Q1 เบอร 2N3904 ม ีค ากระแสคอลเล ็กเตอร ส ูงส ุดถ ึง 100mA แต ในทางปฏ ิบ ัต ิจร ิงไม ควรออกแบบให ทรานซ ิสเตอร ทํ างานถ ึงพ ิก ัดส ูงส ุด ย านปลอดภ ัยของทรานซ ิสเตอร ควรอยู ไม เก ินครึ ่งหนึ ่งของอ ัตราการทนได ส ูงส ุด ด วยการจ ัดวงจรตามร ูปที ่ 9-2 สามารถใช ส ัญญาณจากพอร ตเอาต พ ุตกระตุ นให ทรานซ ิสเตอร ท ํางานเพื ่อข ับร ีเลย ขนาดเล ็กได อย าง

ปลอดภั ย

Page 3: Unicon09-193208

Unicon 195

9.2.1.2 การใช ทรานซิ สเตอร แบบดาร ลิ งตั นขั บโหลดกระแสสู ง

จากการใช ทรานซิ สเตอร ต อกั นแบบคาสเคดเพื่ อเพิ่ มความสามารถในการขั บกระแสไฟฟ าให สู งขึ้ น นํ ามาสู การใช ทรานซิ สเตอร อี กแบบหนึ่ งที่ บรรจุ ทรานซิ สเตอร 2 ตั วต อก ันแบบดาร ลิ งต ันภายใต ตั วถ ังเดี ยวกั น ทํ าให ขั บกระแสไฟฟ าทางเอาต พุ ตได สู งและมี ความเร็ วในการทํ างานสู งด วย โดยใช อุ ปกรณ เพี ยงตั วเดี ยวส งผลให ขนาดของวงจรเล็ กลง ดั งแสดงวงจรตามรู ปที่ 9-3

จากวงจร Q1 ซึ ่งเป นทรานซ ิสเตอร แบบดาร ล ิงต ันสามารถขั บกระแสไฟฟ าทางเอาต พ ุตได ส ูงถ ึง 750mAด วยการต อเข ากั บพอร ตเอาต พุ ต โดยผ านตั วต านทานจํ ากั ดกระแสเพี ยงตั วเดี ยวและไม ต องต อทรานซิ สเตอร แบบคาสเคด ทํ าให มี ความเร็ วในการทํ างานสู ง ตลอดจนสามารถขั บกระแสไฟฟ าทางเอาต พุ ตได สู งพอสมควร

+12V

RL

300(min)

R11k

Q12N3904

PORT

IC

40mA(max)

ร ูปที ่ 9 -2 วงจรข ับโหลดกระแสไฟฟ าปานกลางโดยใช ทรานซ ิสเตอร ต ัวเด ียว

+12V

Q12N6387

RL

16 (min)

IC

750mA(max)

R11k

PORT

รู ปที่ 9-3 การขั บโหลดโดยใช ทรานซิ สเตอร แบบดาร ล ิงต ัน

9

8

D6

D5

D4

D3

D2

D1

Q6

Q5

Q4

Q3

Q2

Q1

+5V

ULN2003

D0 Q1

IL(max)500mA

VL(max)+30V

7

6

5

4

3

2

1

10

11

12

13

14

15

16

รู ปที่ 9-4 การใช ไอซี ไดรเวอร เบอร ULN2003ข ับโหลดกระแสส ูง

Page 4: Unicon09-193208

196 Unicon

9.2.2 การใช ไอซี ขั บ

ไอซี ที่ ใช ในการขั บโหลดกระแสสู งมั กจะมี วงจรทางเอาต พุ ตเป นแบบคอลเล็ กเตอร เป ด ทํ าให ใช กั บแรงดั นไฟฟ าที่ สู งได สํ าหรั บไอซี ขั บหรื อไอซี ไดรเวอร ที่ ยกมาอธิ บายคื อเบอร ULN2003 เป นไอซี ที่ ภายในบรรจุ อิ นเวอร เตอร เกต 7 ตั ว มี รู ปแบบการจั ดขาและวงจรภายในแสดงในรู ปที่ 9-4 ใช กั บแรงดั นได สู งสุ ด+30V กระแสเอาต พุ ตสู งสุ ดในแต ละขาเท ากั บ 500mA ทั้ งนี้ ขึ้ นอยู กั บความสามารถในการจ ายกระแสไฟฟ าของแหล งจ ายไฟด วย

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

RELAY4i เป นแผงวงจรขั บรี เลย 4 ช อง ราคาประหยั ด มี คุ ณสมบั ติ ทางเทคนิ คโดยสรุ ปแสดงในรู ปที่ 9-5 ส วนในรู ปที่ 9-6 แสดงวงจรสมบู รณ และหน าตาของบอร ด RELAY4i

การใช งานบอร ดขั บรี เลย RELAY4i สรุ ปเป นข้ั นตอนได ดั งนี้ (ใช รู ปที่ 9-7 อ างอิ ง)

l. ต อโหลดที่ ต องการควบคุ มเข าที่ จ ุดต อหน าส ัมผั สของร ีเลย ซึ่ งมี 4 ช อง แต ละช องเลื อกให ท ํางานแบบต อหรื อตั ดวงจรก็ ได ปกติ แล วจะเลื อกใช งานแบบต อวงจรมากกว า นั่ นคื อ เมื่ อรี เลย ทํ างานจะเป นการต อวงจรเพื ่อจ ายไฟเลี ้ยงไปยั งโหลดหรื ออ ุปกรณ ไฟฟ าเพื ่อให ท ํางานต อไป จากร ูปที ่ 9-7 จะเห ็นว า ผู ใช งานสามารถต อหน าสั มผั สรี เลย เข ากั บเครื่ องใช ไฟฟ าได สู งสุ ด 220Vac 600W (วั ตต ) โดยต อผ านเต าเสี ยบ ในขณะที่ อี กช องหนึ่ งนั้ นจะต อก ับหลอดไฟ 12V ในแต ละช องของหน าสั มผ ัสรี เลย ต อกั บโหลดได ทั ้งแบบไฟฟ ากระแสตรงหรื อกระแสสลั บ รวมถึ งการต อวงจรเพื่ อทํ าหน าที่ เป นเหมื อนสวิ ตช ธรรมดาก็ สามารถทํ าได

ใช ไอซี ขั บโหลดกระแสสู งเบอร ULN2003 บนบอร ดจั ดวงจรเพื่ อขั บรี เลย 12V 4 ช อง

ใช ไฟเลี้ ยง +12V แยกต างหาก

รั บสั ญญาณลอจิ ก “1” จากไมโครคอนโทรลเลอร หรื อวงจรภายนอกในการกระตุ นให รี เลย ทํ างาน

มี ไฟแสดงการทํ างานของรี เลย

จุ ดต อหน าสั มผั สรี เลย เป นแบบขั นสกรู ทํ าให สามารถต อใช งานได อย างสะดวก

อั ตราทนได ของหน าสั มผั สรี เลย 220Vac 5A รองรั บโหลดได ไม เกิ น 600 วั ตต

รู ปที ่ 9-5 คุ ณสมบ ัติ ทางเทคนิ คของ RELAY4i บอร ดขั บร ีเลย 4 ช อง

Page 5: Unicon09-193208

Unicon 197

รู ปที่ 9-6 วงจรสมบู รณ ของ RELAY4i บอร ดขั บรี เลย 4 ช อง

14

13

IN4

IN3

OUT4

OUT3

OUT3

OUT4

+V

GND

IC1ULN2003

LED1RY1

R11.8k

RY1Relay 12V

K4RELAY-4

C10.1F/63V

LED2RY2

R21.8k

RY2Relay 12V

+12V

+12V

15

LED3RY3

R31.8k

RY3Relay 12V

+12V

16

LED4RY4

R41.8k

RY4Relay 12V

NO

C

NC

10

1

2K3RELAY-3

IN23K2

RELAY-2

IN14K1

RELAY-1

8

NO

C

NC

NO

C

NC

NO

C

NC

+12V

GND

Page 6: Unicon09-193208

198 Unicon

2. หน าสั มผั ส NO หมายถึ ง ปกติ เป ดวงจร (Normally Open) เมื่ อรี เลย ทํ างานจะต อวงจรเข ากั บขา C ดั งนั้ นหากต องการใช งานในแบบต อวงจร ต องเลื อกต อใช งานหน าสั มผั ส NO และ C

3. หน าสั มผั ส NC หมายถึ ง ปกติ ป ดวงจร (Normally Close) เมื่ อรี เลย ทํ างานจะเป ดวงจรออกจากกั บขา C หากต องการใช งานแบบตั ดวงจร ต องเลื อกต อใช งานหน าสั มผั ส NC และ C

4. จุ ดต อหน าสั มผั สรี เลย เป นแบบขั นสกรู ทํ าให สามารถต อใช งานได อย างสะดวก

5. อั ตราทนได ของหน าสั มผั สรี เลย 220Vac 5A สามารถรองรั บโหลดได ไม เกิ น 600 วั ตต

6. ต อไฟเลี้ ยง +12V สํ าหรั บเลี้ ยงวงจรแยกต างหากจากไฟเลี้ ยงของแผงวงจรควบคุ ม

7. เมื่ อต องการให วงจรข ับรี เลย ช ุดใดทํ างาน ให ป อนสั ญญาณลอจิ ก “1” จากไมโครคอนโทรลเลอร เข าที่ จุ ดต ออิ นพุ ต RELAY-1 ถึ ง RELAY-4 โดยต อใช งานพร อมกั นทั้ ง 4 ช อง หรื อควบคุ มแยกช องก็ ได

8. เมื ่อวงจรข ับได ร ับส ัญญาณลอจ ิก “1” ไอซ ีข ับบนบอร ด RELAY4i ท ํางาน จะได ย ินเส ียงหน าส ัมผ ัสร ีเลย ต ัดต อ พร อมก ับไฟแสดงการทํ างานของร ีเลย ต ิดสว าง หากต องการหย ุดการทํ างาน ให ส งส ัญญาณลอจ ิก “0”เข ามาที ่อ ินพ ุตของวงจร

RELAY-4 RELAY-3 RELAY-2 RELAY-1

RELAY12V RELAY12V RELAY12V RELAY12V

NO C NC NO C NC NO C NC NO C NC12V +-

RELAY4i4-Ch. Relay Driver

จุดตอ RELAY-1 ถึง RELAY-4ตอเขากับขาพอรตเอาตพุตดจิิตอลของไมโครคอนโทรลเลอร

ทํางานดวยลอจิก "1"ไฟแสดงการทํางาน

ของรีเลย

จุดตอไฟเลี้ยงรีเลย+12Vdc

จุดตอโหลดหรืออุปกรณไฟฟา พิกัดสูงสดุ 220Vac 5A

เตาเสียบ

สายปลั๊ก 220Vac

ตัวอยางการตอสายเพือ่ควบคุมเคร่ืองใชไฟฟา 220Vac

+12Vdc+

-

ตัวอยางการตอสายเพ่ือควบคุมหลอดไฟ 12V

ร ูปที ่ 9-7 แสดงส วนประกอบของ RELAY4i บอร ดขั บร ีเลย 4 ช องและการต อใช งาน

Page 7: Unicon09-193208

Unicon 199

ลํ าดั บต อไปเป นการนํ าเสนอตั วอย างการทดลองเพื่ อนํ าบอร ด Unicon มาใช งานกั บบอร ด RELAY4iเพื่ อขั บโหลดกระแสสู ง โดยแบ งออกเป น 3 แบบคื อ

1. สวิ ตช ไฟฟ าแบบโปรแกรมได อย างง าย เป นการทดลองขั บรี เลย อย างง าย โดยผู ใช งานสามารถปรั บเปลี่ ยนค าเวลาในการทํ างานและหยุ ดทํ างานได

2. ควบคุ มการขั บรี เลย ผ านคอมพิ วเตอร

3. ควบคุ มการขั บรี เลย ระยะไกลไร สายด วยรี โมตคอนโทรลอิ นฟราเรด

9.4.1 สวิ ตช ไฟฟ าแบบโปรแกรมได อย างง าย

ในการทดลองน้ี เป นการสร างระบบควบคุ มเป ด/ป ดอุ ปกรณ ไฟฟ าตามเวลาอย างง าย เป นการแสดงให เห็ นถ ึงการนํ าระบบไมโครคอนโทรลเลอร ซึ่ งใช ไฟเลี้ ยง +5V ในการทํ างานไปควบคุ มการเป ดป ดของอ ุปกรณ ไฟฟ าระบบ +12V ซึ่ งสามารถนํ าแนวทางของการทดลองนี้ ไปประยุ กต ใช ควบคุ มอุ ปกรณ ไฟฟ า 220Vac ได โดยสั งเกตผลการทํ างานจาก LED แสดงสถานะการทํ างานของบอร ด RELAY4i รวมถึ งเสี ยงการตั ดต อหน าสั มผั สของรี เลย ในขณะทํ างาน

(1) ต อวงจรตามรู ปที่ 9-8 ไฟเลี้ ยงบอร ด REALY4i คื อ +12V (ควรวั ดแรงดั นจากแหล งจ ายไฟก อนต อเข ากั บบอร ดเพื่ อใช งานจริ ง)

(2) เป ดโปรแกรม Arduino IDE เขี ยนโปรแกรมที่ 9-1 จากน้ั นคอมไพล และอั ปโหลดสู บอร ด Unicon

(3) รั นโปรแกรม

เมื ่อเริ ่มทํ างาน ร ีเลย ทุ กตั วถู กควบคุ มให หย ุดทํ างาน จากนั ้นรี เลย ช อง 1 จะเป นตั วแรกที ่ทํ างานนาน0.5 วิ นาที แล วหยุ ดทํ างาน รี เลย ช อง 2 จะทํ างานต อในลํ าดั บถั ดไป เรี ยงไปตามลํ าดั บจนครบทั้ ง 4 ช อง จากน้ั นรี เลย ทุ กช องถู กขั บให ทํ างานนาน 0.5 วิ นาที แล วหยุ ดลงนาน 0.5 วิ นาที ก อนจะเริ่ มทํ างานในรอบใหม

Page 8: Unicon09-193208

200 Unicon

1

RELAY-4 RELAY-3 RELAY-2 RELAY-1

RELAY12V RELAY12V RELAY12V RELAY12V

NO C NC NO C NC NO C NC NO C NC12V

+-

RELAY4i4-Ch. RelayDriver

21

20

19

รู ปที ่ 9-8 การเชื ่อมต อวงจรเพ่ื อทดลองใช งานบอร ด Unicon ก ับ REALY4i บอร ดขั บร ีเลย 4 ช อง

Page 9: Unicon09-193208

Unicon 201

int RELAY1_PIN = 18; // Output for driving relay pin 1int RELAY2_PIN = 19; // Output for driving relay pin 2int RELAY3_PIN = 20; // Output for driving relay pin 3int RELAY4_PIN = 21; // Output for driving relay pin 4

// Set off state for all relaysboolean RELAY_STATE = false;

char RelayOut[4] = {RELAY1_PIN,RELAY2_PIN,RELAY3_PIN,RELAY4_PIN};char i;

void setup(){

pinMode(RELAY1_PIN, OUTPUT); // Set output pinpinMode(RELAY2_PIN, OUTPUT);pinMode(RELAY3_PIN, OUTPUT);pinMode(RELAY4_PIN, OUTPUT);digitalWrite(RELAY1_PIN, LOW); // Set default state of relaydigitalWrite(RELAY2_PIN, LOW);digitalWrite(RELAY3_PIN, LOW);digitalWrite(RELAY4_PIN, LOW);

}

void loop(){

for (i=0;i<4;i++) // Loop counter{

digitalWrite(RelayOut[i],HIGH); // Turn-on relaydelay(500); // Delay 0.5 seconddigitalWrite(RelayOut[i],LOW); // Turn-off relaydelay(500); // Delay 0.5 second

}// Turn-on all relaysdigitalWrite(RELAY1_PIN,HIGH);digitalWrite(RELAY2_PIN,HIGH);digitalWrite(RELAY3_PIN,HIGH);digitalWrite(RELAY4_PIN,HIGH);delay(500); // Delay 0.5 second// Turn-off all relaysdigitalWrite(RELAY1_PIN,LOW);digitalWrite(RELAY2_PIN,LOW);digitalWrite(RELAY3_PIN,LOW);digitalWrite(RELAY4_PIN,LOW);delay(500);

}

คํ าอธิ บายโปรแกรม

ในโปรแกรมใช ตั วแปร RelayOut ซึ่ งกํ าหนดเป นตั วแปรแบบอะเรย ที่ มี สมาชิ ก 4 ตั ว แต ละตั วคื อขาพอร ตที่ ใช ส งสั ญญาณไปยั งวงจรขั บรี เลย แล วใช การวนลู ปเพื่ อทํ าการเขี ยนค าไปยั งขาพอร ตเพื่ อเป ดป ดวงจรขั บรี เลย ด วยวิ ธี นี้ ทํ าให โปรแกรมควบคุ มกระชั บขึ้ น รี เลย แต ละตั วจะทํ างานและหยุ ดทํ างาน 0.5วิ นาที เรี ยงลํ าดั บจากการชี้ ด วยตั วแปร i จากนั้ นจะทํ าการขั บรี เลย ทั้ งหมดให ทํ างาน 0.5 วิ นาที และหยุ ดทํ างานท้ั งหมดเป นเวลา 0.5 วิ นาที จากนั้ นวนกลั บไปเริ่ มต นทํ างานใหม

โปรแกรมที่ 9-1 ไฟล Relay_Simple.ino โปรแกรมภาษา C/C++ ของ Arduinio สํ าหรั บบอร ด Uniconในการขั บรี เลย 4 ตั วผ านทางบอร ด RELAY4i ตามเง่ื อนไขที ่กํ าหนดในโปรแกรม

Page 10: Unicon09-193208

202 Unicon

9.4.2 ควบคุ มการขั บรี เลย ผ านคอมพิ วเตอร

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

(1) ใช วงจรในรู ปที่ 9-8 ทํ าการทดลอง

(2) เป ดโปรแกรม Arduino IDE เขี ยนโปรแกรมที่ 9-2 จากน้ั นคอมไพล และอั ปโหลดสู บอร ด Unicon

(3) เมื่ ออั ปโหลดโปรแกรมเสร็ จ ทํ าการเป ดหน าต าง Serial monitor เลื อกอั ตราบอดเป น 9600

/* Example sketch to control the RELAY4 4-Channel Relay Driver. * Connect Relay4i inputs to unicon pins 18, 19, 20 and 21 * Open the Serial monitor at 9600 baud * and value to ON/OFF each relay * Credit : http://www.freetronics.com */int RELAY1_PIN = 18; // Output for driving relay pin 1int RELAY2_PIN = 19; // Output for driving relay pin 2int RELAY3_PIN = 20; // Output for driving relay pin 3int RELAY4_PIN = 21; // Output for driving relay pin 4

byte command = 0;

void setup(){

Serial.begin(9600); // Set baudrate 9600 bpsdelay(5000); // Initial delaySerial.println("Arduino with RELAY4i"); // Shows title messageSerial.println("Ready. Type 0 to OFF all relays, 1 - 4 to ON each relay.");pinMode(RELAY1_PIN,OUTPUT); // Set output pinpinMode(RELAY2_PIN,OUTPUT);pinMode(RELAY3_PIN,OUTPUT);pinMode(RELAY4_PIN,OUTPUT);resetAllChannels(); // OFF all relay driverdelay(1000); // Delay 1 second

}

โปรแกรมที่ 9-2 ไฟล Relay_SerialControl.ino โปรแกรมภาษา C/C++ ของ Arduinio สํ าหรั บบอร ดUnicon ในการขั บร ีเลย 4 ต ัวผ านทางบอร ด RELAY4i ด วยการควบคุ มจากคอมพิ วเตอร (มี ต อ)

คลิ กที่ นี่ เพ่ื อเป ดหน าต าง Serial monitor

Page 11: Unicon09-193208

Unicon 203

void loop(){

if (Serial.available()) // Check serial data available{

command = Serial.read(); // Read serial dataif( command == '0' ) // Check command 0{

resetAllChannels(); // Turn-off all relay outputsSerial.println("Turn-off all relays"); // Show operation messasge

}if( command == '1' ) // Check command 1{

digitalWrite(RELAY1_PIN, HIGH); // Turn-on relay 1Serial.println("Turn-on relay 1"); // Show operation messasge

}if( command == '2' ) // Check command 2{

digitalWrite(RELAY2_PIN, HIGH); // Turn-on relay 2Serial.println("Turn-on relay 2"); // Show operation messasge

}if( command == '3' ) // Check command 3{

digitalWrite(RELAY3_PIN, HIGH); // Turn-on relay 3Serial.println("Turn-on relay 3"); // Show operation messasge

}if( command == '4' ) // Check command 4{

digitalWrite(RELAY4_PIN, HIGH); // Turn-on relay4Serial.println("Turn-on relay 4"); // Show operation messasge

}}

}

void resetAllChannels() // Relay-OFF function{

digitalWrite(RELAY1_PIN, LOW);digitalWrite(RELAY2_PIN, LOW);digitalWrite(RELAY3_PIN, LOW);digitalWrite(RELAY4_PIN, LOW);

}

โปรแกรมที่ 9-2 ไฟล Relay_SerialControl.ino โปรแกรมภาษา C/C++ ของ Arduinio สํ าหรั บบอร ดUnicon ในการขั บรี เลย 4 ต ัวผ านทางบอร ด RELAY4i ด วยการควบคุ มจากคอมพิ วเตอร (จบ)

คํ าอธิ บายโปรแกรม

ที่ ตอนต นของโปรแกรมมี การหน วงเวลานาน 5 วิ นาที โดยใช คํ าสั่ ง delay(5000); หลั งจากทํ าการกํ าหนดบอดเรตของการสื่ อสารข อมู ล ทั ้งนี ้เพื ่อให มองเห็ นข อความเริ ่มต นการทํ างานบนหน าต าง Serialmonitor ทั้ งนี้ เน่ื องจากต องรอให ระบบพร อมทํ างานหลั งการรี เซตเนื่ องจากการอั ปโหลดโปรแกรม

Unicon จะเริ่ มต นรั บข อมู ลเมื่ อฟ งก ชั่ น Serial.available() ตรวจพบการเข ามาของข อมู ลอนุ กรม จากนั้ นจะอ านค าออกมาด วยฟ งก ชั่ น Serial.read() หากข อมู ลที่ เข ามาเป นตั วเลข 0 ถึ ง 4ก็ จะตี ความ แล วเขี ยนค าออกไปยั งพอร ตเอาต พุ ตที่ กํ าหนด

Page 12: Unicon09-193208

204 Unicon

(4) รั นโปรแกรม

เมื่ อเริ่ มทํ างาน ที่ หน าต าง Serial monitor จะแสดงข อความArduino with RELAY4i

Ready. Type 0 to OFF all relays, 1-4 to ON each relay.

(5) พิ มพ เลข 1 ลงในช องส งข อความที่ ด านบนของหน าต าง Serial monitor แล วคลิ กปุ ม Send เพื่ อส งค าไปยั งบอร ด Unicon

ที่ หน าต าง Serial monitor แสดงข อความ Turn-on realy 1 ในบรรทั ดต อมา พร อมกั นน้ั นรี เลย ที่ ช อง 1 ของบอร ด RELAY4i จะทํ างาน

(6) ส งเลข 2, 3 และ 4 ตามลํ าดั บ แล วสั งเกตการทํ างาน

ที่ หน าต าง Serial monitor จะแสดงข อความเพื่ อแจ งการทํ างานของรี เลย แต ละตั ว พร อมๆ กั บรี เลย แต ละช องที่ ตรงกั นก็ จะทํ างาน

(7) ส งเลข 0

ที่ หน าต าง Serial monitor แสดงข อความ Turn-off all relays ในบรรทั ดต อมา พร อมกั นน้ั นรี เลย ทั้ งหมดของบอร ด RELAY4i จะหยุ ดทํ างาน

Page 13: Unicon09-193208

Unicon 205

9.4.3 ควบค ุมการขั บรี เลย ระยะไกลไร สายด วยรี โมตคอนโทรลอิ นฟราเรด

ในการทดลองนี้ เป นการนํ าเสนอตั วอย างการสร างระบบควบคุ มเป ด/ป ดอุ ปกรณ ไฟฟ าระยะไกลด วยรี โมตคอนโทรลอิ นฟราเรด เป นการนํ าความรู จากบทที่ ว าด วยการอ านค าจากรี โมตคอนโทรลอิ นฟราเรดของบอร ด Unicon มาทํ าการควบคุ มอุ ปกรณ จริ งผ านบอร ดขั บรี เลย

(1) ใช วงจรในรู ปที่ 9-9 ทํ าการทดลอง

(2) เป ดโปรแกรม Arduino IDE เขี ยนโปรแกรมที่ 9-3 จากน้ั นคอมไพล และอั ปโหลดสู บอร ด Unicon

(3) ใช รี โมตคอนโทรลอิ นฟราเรดที่ ใช รหั สของโซนี่ ในการทดสอบ โดยกดปุ ม 1 ถึ ง 4

วงจรขั บรี เลย แต ละช องจะทํ างานและหยุ ดทํ างานตามจั งหวะการกดสั่ งงานจากรี โมตคอนโทรลโดยเมื่ อเริ่ มท ํางาน รี ลเย ทั้ งหมดจะหยุ ดทํ างาน เมื่ อกดปุ ม 1 รี เลย ในช องที่ 1 จะทํ างาน และทํ างานอย างต อเนื่ องจนกว าจะกดปุ ม 1 ซึ่ งอี กครั้ ง นั่ นคื อ จะใช ปุ มเดี ยวในการสั่ งการให รี เลย ทํ างานและหยุ ดทํ างาน

1

RELAY-4 RELAY-3 RELAY-2 RELAY-1

RELAY12V RELAY12V RELAY12V RELAY12V

NO C NC NO C NC NO C NC NO C NC12V

+-

RELAY4i4-Ch. RelayDriver

21

20

19

ZX-IRM

D

+ S

+

S

38kHz IR module

12

345

678

90

+

-MENU

PROG

VOLUME

+

-

รู ปที่ 9-9 การเชื่ อมต อวงจรเพ่ื อทดลองใช งานบอร ด Unicon กั บ REALY4i บอร ดขั บรี เลย 4 ช องโดยใช การควบค ุมระยะไกลไร สายด วยร ีโมตคอนโทรลอ ินฟราเรด

Page 14: Unicon09-193208

206 Unicon

#include <IRremote.h> // Include IR remote control library

int RECV_PIN = 6; // Connect ZX-IRM at pin 6IRrecv irrecv(RECV_PIN);decode_results results;

int RELAY1_PIN = 18; // Output for driving relay pin 1int RELAY2_PIN = 19; // Output for driving relay pin 2int RELAY3_PIN = 20; // Output for driving relay pin 3int RELAY4_PIN = 21; // Output for driving relay pin 4

// Set off state for all relaysboolean RELAY1_STATE = false;boolean RELAY2_STATE = false;boolean RELAY3_STATE = false;boolean RELAY4_STATE = false;

void setup(){

irrecv.enableIRIn(); // Enable the IR module operationpinMode(RELAY1_PIN, OUTPUT); // Set output pinpinMode(RELAY2_PIN, OUTPUT);pinMode(RELAY3_PIN, OUTPUT);pinMode(RELAY4_PIN, OUTPUT);digitalWrite(RELAY1_PIN, RELAY1_STATE); // Set default state of relaydigitalWrite(RELAY2_PIN, RELAY2_STATE);digitalWrite(RELAY3_PIN, RELAY3_STATE);digitalWrite(RELAY4_PIN, RELAY4_STATE);

}

void loop(){

if (irrecv.decode(&results)) // Check the remote control data available{

if (results.decode_type == SONY) // Check the remote brand - Sony{

if(results.value == 16) // Get the button 1 ?{

RELAY1_STATE = !RELAY1_STATE; // Toggle state of relay 1digitalWrite(RELAY1_PIN, RELAY1_STATE);// Send to control the relay driver channel 1delay(300); // Delay 0.3 second

}else if(results.value == 2064) // Get the button 2?{

RELAY2_STATE = !RELAY2_STATE; // Toggle state of relay 2digitalWrite(RELAY2_PIN, RELAY2_STATE);// Send to control the relay driver channel 2delay(300); // Delay 0.3 second

}else if(results.value == 1040) // Get the button 3?{

RELAY3_STATE = !RELAY3_STATE; // Toggle state of relay 2digitalWrite(RELAY3_PIN, RELAY3_STATE);// Send to control the relay driver channel 2

โปรแกรมที ่ 9-3 ไฟล Relay_Remote.ino โปรแกรมภาษา C/C++ ของ Arduinio สํ าหร ับบอร ด Uniconในการข ับร ีเลย 4 ต ัวผ านทางบอร ด RELAY4i ผ านการควบค ุมจากร ีโมตคอนโทรลอ ินฟราเรด (ม ีต อ)

Page 15: Unicon09-193208

Unicon 207

โปรแกรมที ่ 9-3 ไฟล Relay_Remote.ino โปรแกรมภาษา C/C++ ของ Arduinio สํ าหร ับบอร ด Uniconในการข ับร ีเลย 4 ต ัวผ านทางบอร ด RELAY4i ผ านการควบค ุมจากร ีโมตคอนโทรลอ ินฟราเรด (จบ)

delay(300); // Delay 0.3 second}else if(results.value == 3088) // Get the button 4?{

RELAY4_STATE = !RELAY4_STATE; // Toggle state of relay 2digitalWrite(RELAY4_PIN, RELAY4_STATE);// Send to control the relay driver channel 2delay(300); // Delay 0.3 second

}}irrecv.resume();

}}

คํ าอธิ บายโปรแกรม

โปรแกรมนี้ จะมี การผนวกไฟล ไลบรารี IRremote.h เพื่ อใช ในการรั บและถอดรหั สสั ญาณของรี โมตคอนโทรลอิ นฟราเรดที่ ใช รหั สของโซน่ี โดยมี การตรวจสอบรู ปแบบของข อมู ลว าตรงกั บโปรโตคอลของโซน่ี หรื อไม ด วยคํ าสั่ ง if (results.decode_type == SONY) หากตรงกั น ก็ จะตรวจสอบต อไปว า สั ญญาณท่ี รั บได ตรงกั บปุ ม 1 (ค าของข อมู ลเท ากั บ 16), 2 (ค าของข อมู ลเท ากั บ 2064), 3 (ค าของข อมู ลเท ากั บ 1040)หร ือ 4 (ค าของข อม ูลเท าก ับ 3088) หรื อไม หากตรงกั น ก ็จะท ําการกล ับสถานะของต ัวแปร RELAYx_STATE(x คื อเลขที่ มี ค า 1 ถึ ง 4) เพื่ อนํ าไปกํ าหนดสถานะของขาพอร ตที่ เช่ื อมต อกั บวงจรขั บรี เลย

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

Page 16: Unicon09-193208