รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2...

97
1 1. รายละเอียดสวนประกอบของหุนยนต ROBO-1 ประกอบดวยกลไกและฮารดแวรตัวหลัก อยู 5 สวนไดแก - ตัวกลไกที่เปนโครงตัวหุและชุดมอเตอรขับพรอมเกียรบ็อกซ - บอรดไมโครคอนโทรลเลอร และวงจรขับมอเตอรแบบ H-Bridge - บอรดเซ็นเซอร - แบตเตอรี- อุปกรณประกอบการใชงาน ไดแก อะแด็ปเตอร แทนชารจแบตเตอรีและจอแอลซีดี รูปที1 สวนประกอบของหุนยนต ROBO-1EX รูปที2 สวนประกอบของบอรดคอนโทรลเลอร บอรดคอนโทรลเลอร บอรดเซ็นเซอรแทร็ก วัตถุ และแสง ดานหนา บอรดเซ็นเซอรวัตถุดานหลัง กลไกตัวหุนและมอเตอรเกียร CPU ไมโครโฟน ลําโพง ตัวขับมอเตอรแบบ H-Bridge ขั วตอสายดาวนโหลด ขั วตอมอเตอร ขั วตอแบตเตอรีขั วตอเซ็นเซอรหลัง ขั วตอเซ็นเซอรหนา Jumper J5 TP1 TP2 ตาหนยนต ขั วตออะแด็ปเตอร ปุม RESET ปุม Start ปุม Stop Jumper J1 – J4 ที่ปรับระดับความไวของไมโครโฟน SW Power

Transcript of รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2...

Page 1: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

1

1. รายละเอียดสวนประกอบของหุนยนต ROBO-1 ประกอบดวยกลไกและฮารดแวรตัวหลัก ๆ อยู 5 สวนไดแก

- ตัวกลไกที่เปนโครงตัวหุน และชุดมอเตอรขับพรอมเกียรบ็อกซ- บอรดไมโครคอนโทรลเลอร และวงจรขับมอเตอรแบบ H-Bridge- บอรดเซ็นเซอร

- แบตเตอรี่- อุปกรณประกอบการใชงาน ไดแก อะแด็ปเตอร แทนชารจแบตเตอรี่ และจอแอลซีดี

รูปที่ 1 สวนประกอบของหุนยนต ROBO-1EX

รูปที่ 2 สวนประกอบของบอรดคอนโทรลเลอ

บอรดคอนโทรลเลอรบอรดเซ็นเซอรวัตถุดานหลัง

กลไกตัวหุนและมอเตอรเกียร

CPUขั้วตอสายดาวนโหลด

ขั้วตอมอเตอรขั้วตอแบตเตอรี่

ขั้วตออะแด็ปเตอร

ปุม RESET

ปุม Start

ปุม Stop

ที่ปรับระดับความไวของไมโครโฟน

SW Power

บอรดเซ็นเซอรแทร็กวัตถุ และแสง ดานหนา

ขั้วตอเซ็นเซอรหลัง

ขั้วตอเซ็นเซอรหนา

Jumper J1 – J4

ลํ าโพง

TP1

Jumper J5

ตัวขับมอเต

TP2

ตาหุนยนต

ไมโครโฟน

อรแบบ H-Bridge

Page 2: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

2

รูปที่ 3 สวนประกอบของบอรดเซ็นเซอรดานหนา

รูปที่ 4 บอรดเซ็นเซอรดานหลัง

แทร็กเซ็นเซอร อยูดานหลังบอรด

ที่ปรับยานระยะการตรวจจับแทร็ก

ตัวตรวจจับความเขมแสง

ตัวปรับระยะการตรวจจับวัตถุ

ตัวตรวจจับระยะวัตถุแบบอินฟาเรด

ที่ปรับระยะการตรวจจับวัตถุ

ตัวตรวจจับระยะวัตถุ

Page 3: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

3

2. รายละเอียดทางเทคนิค และการทํ างานของวงจรและกลไกหุนยนต ระบบการทํ างานของหุนยนตแมลงแบบเดิน 6 ขา ประกอบดวยกลไกแบบเดิน 6 ขาของ TAMIYAเคลื่อนไหวโดยใชมอเตอรเกียรจํ านวน 2 ชุด สามารถบังคับกลไกการเดินไดทุกทิศทาง บอรดควบคุมประกอบดวยตัวประมวลผลหรือไมโครคอนโทรลเลอร ใชตระกูล PIC ขนาด 28 ขา ของบริบัทไมโครชิพ บอรดที่ออกแบบใหสามารถใชไดหลายเบอร ไดแก PIC 16F73, 16F873, 16F876 เปนตน ในบอรดควบคุมประกอบดวยวงจรดาวนโหลดตัวชิพ วงจรขับมอเตอรดีซีแบบ Dual H-BRIDGE ที่สามารถขับมอเตอรได 2 ตัว วงจรตรวจจับสัญญาณเสียงคํ าพูด วงจรขับจอแสดงผลแอลซีดี วงจรขับสัญญาณเสียงแบบ ElectromagneticTransducer

บอรดเซ็นเซอร ประกอบดวยแผงวงจรรวมกัน 3 ชิ้น ไดแก ชุดเซ็นเซอรดานหนา เปนแผงวงจร สองชิ้นประกอบเขาดวยกันดวยขั้วตอขนาด 20 พิน (ตามรูปที่ 3) ประกอบดวยวงจรตรวจจับแทร็ก แบบ 3 จุดใหสัญญาณเอาพุทเปนแบบดิจิตอล วงจรตรวจจับระยะวัตถุแบบใชรังสีอินฟาเรด แบบ 3 จุดคือ หนาซายหนาขวา และกลางหนาตัวหุน ใหสัญญาณเอาทพุทแบบอะนาล็อก โดยมีคาระหวาง 0.2 - 4 V แปรผกผันไปตามระยะหางของวัตถุที่ตรวจจับได วงจรตรวจจับระดับความเขมแสงที่มองเห็นได ใชตัว LDR จํ านวน 2 ตัวLDR เปนอุปกรณอิเล็กทราอนิกสที่สามารถเปลี่ยนคาตวามตานทานไปตามขนาดความเขมของแสงในลักษณะผกผัน ชุดบอรดเซ็นเซอรระยะวัตถุดานหลัง (ตามรูปที่ 4) ประกอบดวยตัวเซ็นเซอร แบบ 3 จุดคือ ดานหลังซาย กลาง และขวา ใหสัญญาณเอาทพุทแบบอะนาล็อก โดยมีคาระหวาง 0.2 - 4 V แปรผกผันไปตามระยะหางของวัตถุที่ตรวจจับได เชนเดียวกับดานหนา

Page 4: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

4

รูปที่ 5 ผังไดอะแกรมระบบของหุนยนต ROBO-1EX
Page 5: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

5

รูปที่ 6 วงจรขับดีซีมอเตอร แบบ Dual H-BRIDGE

เปนไอซีขนาด 16 ขา แตละชุดสามารถขับกระแสไดสูงสุด 1 แอมป มีขาควบคุมชุดละ 2 ขา คือ ขาควบคุมทิศทางการหมุน CW / CCW และขาควบคุมการหมุนและหยุดหมุน ON / OFF สัญญาณควบคุมเหลานี้สงมาจากขาพอรทของไมโครคอนโทรลเลอร เราสามารถควบคุมความเร็วของมอเตอรโดยปอนสัญญาณPWM ( Pulse Width Modulation) เขาที่ขา ON / OFF ของ วงจร H – BRIDGE ไดโดยตรง TransistorBC547 ทํ าหนาที่เปนวงจร Inverter กลับสัญญาณลอจิกที่ขา IN1 กับ IN2 และ IN3 กับ IN4 ใหตรงกันขามกันซึ่งจะทํ าใหไดขาที่ควบคุมทิศทางการหมุนของมอเตอรเหลือเพียงขาเดียวคือ ขา CW/CCWเนื่องจากไอซี L293D ตัวนี้ตองจายกระแสกระชากจํ านวนมาก โดยเฉพาะขณะกลับทิศทางการหมุน การออกแบบแผงวงจรไมดีอาจทํ าใหตัวไอซีรอนจัดและอาจเสีหายได เพื่อเปนการระบายความรอนใหแกตัวไอซี จะตองทํ ากราวดเพลนใหกับขาที่ตอลงกราวดใหมีเนื้อที่มากที่สุดเทาที่จะทํ าได

Page 6: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

6

3. การตอจอ LCD เขากับบอรดคอนโทรลเลอรของหุนยนต ROBO-1EX จอ LCD ที่นํ ามาใชทดลองนี้เปนขนาด 2 บรรทัด 8 ตัวอักขระตอบรรทัด รวมเปน แถวเดียว 16 ตัวเนื่องจากมีราคาถูก หาซื้องาย และเปนแอลซีดีโมดูลที่มีโครงสรางเปนมาตรฐานที่มีผูผลิตหลายราย แตใชคอนโทรลเลอรเบอรเบอรเดียวกัน คือ HD44750 ของฮิตาชิ

ตํ าแหนงขาของจอแอลซีดี ไมวาจะมีขนาดกี่บรรทัด กี่ตัวอักขระก็ตาม จะกํ าหนดตํ าแหนงของขาไวเปนมาตรฐานเดียวกัน คือ

ขา 1 GNDขา 2 +5V

ขา 3 Brightness ปรับความเขมของตัวอักขระขา 4 RS (Register Select)

ขา 5 R/W เปนขาที่ใชควบคุมการอาน และเขียนลงจอแอลซีดี ในที่นี้ตอลงกราวดไวเพื่อใชเขียน เพียงอยางเดียว

ขา 6 E (Enabled) ขา 7 – 14 เปนขาสํ าหรับรับ-สงขอมูล D0 – D7 ตามลํ าดับ ในวงจรตามขางลางนี้ไดตอ ขา 11-14

ไวกับขาขอมูล D4 – D7 เพื่อสงขอมูลทีละ 4 บิทขา 15 – 16 เปนขาสํ ารองไวตอไฟแบ็คไลท สํ าหรับใชงานเวลากลางคืน เวลาซื้อตองระบุดวยวามี

ตองการแบบมีไฟแบ็คไลทดวย เนื่องจากราคาจะสูงกวาแบธรรมดา

7

รูปที่

8

รูปที่
Page 7: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

7

4. วงจรตรวจจับระยะวัตถุดานสวนหนาของตัวหุนยนต

สํ าหรับวัตถุทา

เดียวกันประมามากหรก็จะดูดมีกระแมาก – C 0.1

9

รูปที่

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

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

Page 8: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

8

VR 10K จะทํ าหนาที่ปรับระดับของสัญญาณอินพุทที่ปอนเขาออปแอมป โดยมีไอซีเบอร LM324 ทํ าหนาที่ขยายสัญญาณ ตามวงจร R 1M กับ R 10K จะทํ าหนาที่ควบคุมอัตราการขยายไวประมาณ 100 เทา สัญญาณที่ถูกขยายจะออกมาทางเอาพุท ของออปแอมป ปอนเขาที่ขาพอรท RA0 RA1 และ RA2 ซึ่งเปนขาที่สามารถรับสัญญาณอินพุทแบบอะนาล็อกได โดยมีแรงเคลื่อนอยูระหวาง 0.2 - 4 V

5. วงจรตรวจจับระยะวัตถุดานสวนหลังของตัวหุนยนต

ดานดานตรวสามแบ

รูปที่ 10

หลักการทํ างานของวงจรตรวจจับระยะวัตถุดานหลัง ใชหลักการเชนเดียวกันกับวงจรตรวจจับระยะวัตถุหนา ตามที่ไดกลาวมาแลวในหัวขอที่ 4 โดยมีวงจรตรวจจับ 3 ชุด คือ ดานหลังซาย ตรงกลาง และหลังขวา ตัวตรวจจับหลังซาย และหลังขวา จะติดตั้งใหเฉียงออกจากตัวหุนประมาณ 45 องศา เพื่อสามารถจจับวัตถุดานขางได เนื่องจากพอรทที่รับสัญญาณอะนาล็อกเหลือเพียง 2 ขา คือ RA3 และ RA5 ไมารถนํ าสัญญาณเอาพุทชองกลางออกมาเขาขาพอรทของไมโครคอนโทรลเลอรโดยตรง ตามวงจรจึงตองออกบใหสงสัญญาณเอาพุทผานไดโอดทั้ง 2 ตัว ไปรวมฝากไวกับสัญญาณทั้งชองซาย และ ขวา

Page 9: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

9

6. วงจรตรวจจับแทร็ก ( Track Sensor )

หลักการทํ างานขอแทร็กในลักษณะขอบซาย ตเสน ตกขอบซาย หรือตกขอเดียวกับกับตัวตรวจจับวัตถุคทํ าใหมีแรงเคลื่อนตกคลอม Rเคลื่อนนอย และถาเปนพื้นข(Comparator) โดยเปรียบเทไอซีเบอร LM339 เปน Quarไปตรวจจับจุดขาว ๆ ดํ า ๆ ขคาความแตกตางระหวางสีเส

1

รูปที่ 1

งวงจรประกอบดวยวงจรตรวจจับเสนแทร็กแบบ 3 จุด ที่สามารถตรวจจับเสนรงกลางเสน และขอบขวา ที่สามารถเขียนโปรแกรมใหหุนยนตรับรูไดวาเดินตรงบขวา หรือถึงทางเลี้ยว การทํ างานของวงจรประกอบดวยตัวตรวจจับใชเบอรือ TCRT5000L สัญญาณจากตัวตรวจจับจะแปลงเปนกระแสใหลใหลผาน R10K10K จะมีคามาก หรือนอยขึ้นอยูกับสีของเสน กับสีของพื้น ถาเสนสีดํ าก็จะมีแรงาวก็จะมีแรงเคลื่อนมาก แรงเคลื่อนจะถูกปอนมาเขาวงจรเปรียบเทียบียบกับแรงเคลื่อนจาก VR 10K เอาพุทที่ไดจะเปนลอจิกสองสถานะ คือ 0 กับ 1d Comparator C 0.01 ไมโคร ทํ าหนาที่กรองสัญญาณรบกวนที่อาจจะเกิดจากองสนามหรือเสนแทร็กที่ไมราบเรียบ VR 10K ทํ าหนาที่ปรับระยะของการตรวจจับนกับสีพื้นสนาม

Page 10: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

10

7. การตรวจจับเสียง ( Voice Sensor )

หลักการตเปนสัญญาณอะนาโครคอนโทรลเลอร ของแตละเสียงคํ าพเอาสัญญาณออกมรบกวนที่จะเขามาแมาโดยใช R5 และที่ขา 2 โดยใชออปVoltage divider )จะทํ าหนาที่ควบคุมวงจร Voltage comไวที่ประมาณ 2.5 เสียง ซึ่งถาปรับไวใช VR 50K เปนตัวไมโครคอนโทรลเลอ

2

รูปที่ 1

รวจจับเสียงคํ าพูด ของหุนยนต ROBO-1EX จะใชหลักการแปลงสัญญาณที่เปนเสียงคํ าพูดที่ล็อก+แถบความถี่ ไปเปนสัญญาณแถบความถี่พัลสเพียงอยางเดียว สงเขาขาพอรทของไม โดยการเขียนโปรแกรมใหไมโครคอนโทรลเลอรสามารถแยกแยะแถบยานความถี่ที่ไมเหมือนกันูดที่เปนคํ าส่ัง อยางงายๆ วงจรประกอบดวยไมโครโฟนแบบคอนเด็นเซอร การาตองตอ R1 ที่เปนโหลดของไมค เนื่องจากสัญญาณที่ไดมีขนาดเล็กมากซึ่งไวตอสัญญาณทรกได ดังนั้นในการออกแบบแหลงไฟปอนจะตองปองกันโดยการลดระดับแรงเคลื่อนที่จายลง C1 เปนตัวกรองสัญญาณรบกวน สัญญาณที่ไดจะผาน C3 และ R4 เขาออปแอมปแอมปชนิดที่อินพุทเปนมอสเฟทเบอร LF353 R2 และ R3 ทํ าหนาที่เปนตัวแบงแรงเคลื่อน ( เพื่อเปนไบอัสจุดทํ างานกึ่งกลางของออปแอมปที่ประมาณ 2.5 V R4 กับ R6อัตราการขยายไวประมาณ 100 เทา สัญญาณเอาพุทจะออกทางขา 1 ผาน C4 ไปเขาparator LM393 ที่ขา 3 โดยมี R7 และ R8 เปนตัวรักษาระดับกึ่งกลางของสัญญาณ

V VR 50K ทํ าหนาที่ปรับระดับแรงเคลื่อนที่จะเปนคาอางอิงการเปรียบเทียบกับสัญญาณใกลเคียงกับจุดกึ่งกลางของสัญญาณเสียง ก็จะไดสัญญาณเอาพุทที่มีความไวสูมาก เราจึงปรับ Gain / Sensitivity ของระดับเสียงแทน สัญญาณเอาพุทจะปอนเขาที่ RC0 ของร R9 ทํ าหนาที่เปน External load ของ ไอซี comparator

Page 11: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

11

8. การตรวจจับความเขมของแสงที่มองเห็นได ( Visible light sensor )

รูปที่ 13 แสดงวงจรตรวจจับความเขมของแสงโดยใช LDR กับตัวเก็บประจุ C

LDR ( Light Dependent Resistance ) เปนตัวตานทานที่เปล่ียนคาไปตามระดับความเขมของแสงที่มาตกกระทบ ซึ่งจะมีความไวตอแสงที่มีแถบความยาวคลื่นในยานที่มองเห็นได คาความตานทานจะเปนสัดสวนผกผันกับความเขมของแสง คือ คาความตานทานของ LDR จะมีคาลดลง เมื่อแสงมีความสวางเพิ่มขึ้นหลักการตรวจจับความเขมแสง ตามวงจรในรูปที่ 13 จะใช LDR ตอรวมกับตัวเก็บประจุ C เปน RC-networkจํ านวน 2 ชุด ติดตั้งไวสวนหนาดานซาย และดานขวาของตัวหุน หลักการทํ างานของวงจรคือ อาศัยการอานคาเวลาคงที่ ( Time constant ) ของ LDR และ C ออกมาเปนคาแทนความเขมของแสง ซึ่งตองกระทํ าโดยวิธีการเขียนโปรแกรมเทานั้น

หลักในการเขียนสํ าหรับอานคา Time constant ของ LDR และ C ขณะมีแสงมาตกกระทบตองเริ่มตนดวยการใชคํ าส่ังสงลอจิก 0 ที่ขั้วตอ LDR และ C เพื่อคายประจุที่ C ใหเปนศูนย ตั้งไทเมอรเปนศูนยใชคํ าส่ังอานคาลอจิกที่ขั้วตอ LDR และ C เปดเกทไทเมอร ใชคํ าส่ังวนไปอานคาลอจิกที่ขั้วตอ LDR และ Cวาเปนลอจิก 1 หรือยัง หากเปนลอจิก 1 แลวปดเกทไทเมอร นํ าคาที่ไทเมอรนับไดไปกํ าหนดใหตัวแปรนํ าไปใชงานตอไป เนื่องจากคาที่ไทเมอรนับได เปนสัดสวนกับคา Time constant และคา Time constant จะเปนสัดสวนโดยตรงกับคา ค.ต.ท.ของ LDR แตคา ค.ต.ท.ของ LDR เปนสัดสวนผกผันกับคาความเขมของแสงดังนั้นคาที่ไทเมอรนับได จึงเปนสัดสวนผกผันกับคาความเขมแสงที่มาตกกระทบ LDR

Page 12: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

12

8. การทํ างานของวงจรโปรแกรมตัวชิพไมโครคอนโทรลเลอร

วงจรตามรูปที่ 14 เปนวงจรสํ าหรับโปรแกรมตัวชิพไมโครคอนโทรลเลอรตระกูล PIC ของบริบัทไมโครชิพไดทุกเบอร โดยใชรวมกับโปรแกรมดาวโหลด EPICWIN ใชโปรแกรมผานพอรทขนานของคอมพิวเตอรตามวงจรจะมีสายสัญญาณที่สํ าคัญอยู 4 เสนที่ตอเขาตัวไมโครคอนโทรลเลอร คือ สายที่ตอเขาขา MCLRขานี้เมื่อไดรับแรงเคลื่อน 13.5 V จะทํ าใหตัวไมโครคอนโทรลเลอรเขาสูโหมดโปรแกรม โดยมีขา RB7 เปนขาData และขา RB6 เปนขา Clock สวนขา RB3 เปนขาที่จะกํ าหนดวาจะใชวิธี High voltage programmingหรือ Low voltage programming ตามวงจรจะตอลงกราวดไวเพื่ออนุญาตใหใชวิธีโปแกรมแบบ High voltageprogramming เพียงอยางเดียว ไอซี 78L12 รวมกับไดโอด D1 และ D2 ทํ าหนาที่สรางไฟ 13.5 V ใหกับขา MCLR โดยมี Q1 เปนตัวปด-เปด ซึ่ไดรับสัญญาณควบคุมมาจากขา D3 ของพอรทพริ้น-เตอร ไอซี 74LS04 ทํ าหนาที่เปนบัฟเฟอร ไดโอด D4 ทํ าหนาที่กั้นไมใหไฟ 13.5 V ยอนเขาไปกวนไฟ Vdd 5 V

รูปที่ 14

Page 13: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

13

9. โครงสรางทางฮารดแวรของไมโครคอนโทรลเลอรตระกูล PIC แบบ 28 ขา

รูปที่ 15 แสดงตารางเปรียบเทียบรายละเอียดของไมโครคอนโทรลเลอรตระกูล PIC เบอรตางๆ ที่สามารถใชแทนกันไดตามตารางที่ 15 เบอรที่มีขนาด 28 ขา ไดแก PIC16F73 PIC16F76 นอกจากนี้ยังมีเบอรอื่นอีกไดแกPIC16F873 16F876 เบอรเหลานี้สามารถใชทดแทนกันไดหมด แตยังมีอีกบางเบอรที่สามารถใชทดแทนกันไดแตจะไมสามารถใชขีดความสามารถทางดานการควบคุมความเร็วแบบ ฮารดแวร PWM ไดแก PIC16F72และ PIC16F872

รูปที่ 16 แสดงตํ าแหนงขาของไมโครคอนโทรลเลอรแบบ PDIP 28 pin

รูปที่ 17 แสดงตารางขีดความสามารถทางฮารดแวรของไมโครคอนโทรลเลอรเบอรที่ใชแทนกันได

Page 14: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

14

รูปท

รูปท

ี่ 18 แสดงโครงสรางทางสถาปตยกรรมของไมโครคอนโทรลเลอร เบอรตามรูปที่ 17

ี่ 19 แสดงรายละเอียดของขาพอรท A ขา MCLR และขา OSC

Page 15: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

15

รูปที 2

0 แสดงรายละเอียดและตํ าแหนงขาของพอรท B และ พอรท C
Page 16: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

16

รูปที่ 21 แสดงชื่อ Register ตาง ๆ ที่ทํ าหนาที่ทํ างาน และควบคุมการทํ างานของไมโครคอนโทรลเลอร

รูปที่ 22 ก. แสดงโครงสรางของขาพอรท รูปท RA0, RA1, RA2, RA3 และ RA5 ท สามารถรับสัญญาณอะนาล็อกได ตอ

ี่ 22 ข. แสดงโครงสรางของขาพอรท RA4ี่วงจรเอาพุทเปนเปนแบบ Open drainงตอ R 1-10K ที่ขาเมื่อตองการใชงานเปนoutput

Page 17: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

17

รีจิสเตอรที่เกี่ยวของกับการใชงานของพอรททั้งสาม ที่จํ าเปนPORTA PORTB PORTC เปนรีจิสเตอรสํ าหรับ Latch พTRISA TRISB TRISC เปนรีจิสเตอรสํ าหรับกํ าหนดตัวอยางเชน TRISB = %11110000 กํ าหนดให RB0 –

รูปที่ 23 ก. แสดงโครงสรางของพอรท B ขา RB0 RB1 RB2 และ RB3 จากรูป แสดงขา RB0 สามารถใชงานเปนขา interrupt ไดดวย

รูปที่ 23 ข. แสดงโครงสรางของพอรท B ขา RB4 RB5 RB6 และ RB7 จากรูป แสดงขา RB6 และ RB7 สามารถใช งานเปนขาโปรแกรมตัวชิพไดอีก หนาที่หนึ่ง

รูปที่ 24 แสดงโครงสรางของพอรท C ขา

ตองทราบไดแกักขอมูลไวเมื่อกํ าหนดใหขานั้นเปน outputทิศทางของ I/O แตละขาของพอรท

RB3 เปนoutput RB4-RB7 เปนinput

Page 18: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

18

ADCON0 REGISTER

รูปที่ 2

รูปที่ 2กํ าหนADCOเตอรคขาพอรจะกํ าหดิจิตอ

5 แสดงการกํ าหนดคาใหรีจิสเตอร ADCON0 ซึ่งเปนรีจิสเตอรควบคุการเลือกชองรับสัญญาณ อะนาล็อก ADCON1 REGISTER

6 แสดงการดคาใหรีจิสเตอรN1 ซึ่งเปนรีจิสวบคุการกํ าหนดท A แตละขาวานดใชงานเปนล หรืออะนาล็อก

Page 19: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

19

10. การติดตั้งโปรแกรมที่เปนเครื่องมือตาง ๆ ในการพัฒนาและประยุกตใชงานไมโครคอนโทรลเลอร โปรแกรมที่เปนเครื่องมือในการพัฒนาระบบไมโครคอนโทรลเลอรตระกูล PIC ที่จะใชในการเขียนโปรแกรมควบคุมการทํ างานของหุนยนต ROBO-1EX หรือบอรดทดลอง PIC877 – S ประกอบดวย

- โปรแกรม mcstudio เปนโปรแกรมสํ าหรับเปนแมงานของการทํ างานทั้งหมด แตโดยหนาที่จะทํ าหนาที่เปนกระดาษเขียนโปรแกรม ( Editor )

- โปรแกรม PBP244.ZIP ( PIC Basic Pro ver 2.44 ) เปนโปรแกรมสํ าหรับทํ าหนาที่ แปลงโปรแกรมที่เขียนดวยภาษา PIC BASIC ไปเปน Assembly และ Machine code

- โปรแกรม mplab ในที่นี้จะใช mpasm.exe เพียงอยางเดียว จะทํ าหนาที่แปลงภาษา Assemblyเปน Machine code โปรแกรมนี้เปนของบริษัทไมโครชิพ

- โปรแกรม EPICWIN เปนโปรแกรมที่ทํ าหนาที่ดาวนโหลดซอสโคด ที่เปน Machine codeลงตัวชิพไมโครคอนโทรลเลอร

10.1 การติดตั้งโปรแกรม mcstudio ปฏิบัติตามขั้นตอนตอไปนี้

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

1. ดับเบิ้ลคลิก เพื่อเริ่มติดตั้งโปรแกรม

Page 20: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

20

10.2 การติดตั้งโปรแกรม mplab ver. 5.62 ปฏิบัติตามขั้นตอนตอไปนี้

การติดตั้ง ถามี Next ใหคลิก Next มี Yes ใหคลิก Yes ไปจนถึงรายใหเลือกตามนี้

เมื่อผานขั้นตอนนี้ไปแลวใหดํ าเนินการติดตั้งตอไปจนจบกระบวนการติดเปนอันวาเรียบรอย

10.3 การติดตั้งโปรแกรม PBP244.ZIP ปฏิบัติตามขั้นตอนตอเนื่องจากการติดตั้งโปรแกรม PBP244.ZIP เปนโปรแกรมที่ถูก

ใชโปรแกรม Winzip ระบิดออกไปไวที่ไดรฟ C โดยกํ าหนด Folder เป

1. ดับเบิ้ลคลิก

ดับเบิ้ลคลิกเพื่อ unz

การโปรแกรมที่จะใหติดตั้ง

ตั้ง โดยจะตอง Restart เครื่องใหม

ไปนี้บีบอัดมา ดังนั้นในการติดตั้งเพียงแตนที่เก็บไว เปนอันวาเรียบรอย

2. ดับเบิ้ลคลิกเพื่อเริ่มติดตั้ง

ip

Page 21: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

21

10.4 การติดตั้งโปรแกรม EP5BETA.ZIP ปฏิบัติตามขั้นตอนตอไปนี้เนื่องจากการติดตั้งโปรแกรม EP5BETA.ZIP เปนโปรแกรมที่ถูกบีบอัดมา ดังนั้นในการติดตั้งเพียงแต

ใชโปรแกรม Winzip ระบิดออกไปไวที่ไดรฟ C โดยกํ าหนด Folder เปนที่เก็บไว เปนอันวาเรียบรอย

เมื่อติดตั้งโปรแกรมตามขอ 10.1 ถึง 10.4 เสร็จเรียบรอยแลว กอนการใชงานครั้งแรกเราจํ าเปนตองกํ าหนดคาOption ตาง ๆ ของโปรแกรม mcstudio เพื่อใหโปรแกรมสามารถเรียกใช โปรแกรม PBP244mpasm.exe และ EPICWIN โดยปฏิบัติตามขั้นตอนดังนี้

เขาสูโปรแกรม mcstudio แลวกํ าหนดคาในเมนู View PICBasic Option ดังตอไปนี้

ดับเบิ้ลคลิกเพื่อ unzip

1.ที่ Compiler ตองคลิกปุมคนหาแบบ Find Manually ใหพบFolder pbp244 ตามนี้

2.ที่ Assembler ตองคลิกปุมคนหาแบบ Find Automatically ใหพบFolder mplab และตองเลือกรายการตาม check box นี้

Page 22: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

22

เมื่อปฏิบัติครบตามขั้นตอนทั้งหมดจะทํ าใหโปรแกรม mcstudio สามารถติดตอกับโปรแกรม ที่ทํ าหนาที่Compiler Assembler และ Downloader ขั้นตอนตอไปคือ การกํ าหนดคา Option และ Configuration

3.ที่ Programmer หากไมมีชื่อตัวโปรแกรมเมอร ตามนี้ ตองคลิกปุม Edit เพื่อไปเอาโปรแกรมเมอร ชื่อ EPICWIN ใน Folder ที่ได unzip มาติดตั้งไว แลวตามขั้นตอนที่ 10.4

คลิก

ชื่อโปรแกรมตามนี้

คลิก

คลิก

เลือก Folder ของโปรแกรมเมอรที่ unzip ไวตามขั้นตอนที่ 10.4เสร็จแลวคลิก Ok

Page 23: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

23

ทดลองพิมพโปรแกรม Save โปรแกรม คลิกปุม Compile เมื่อ Compile ผานโปรแกรมจะเรียกโปรแกรมดาวนโหลดชื่อ EPICWin ขึ้นมา เราจะตองกํ าหนดคา Config และ Option กอนดังนี้

1. พิมพโปรแกรมตามนี้แลว Save

3. คลิกปุมCompile หากผานจะเรียกโปรแกรม EPICWin

EPICWIn2. เลือกเบอร MCU ตามที่ใชงานจริง

ปุมโปรแกรม

4. กํ าหนด Optionตามนี้

ปุมลบโปรแกรมในตัวชิพ

5. เลือกรายการตามนี้

6. กํ าหนด Config ตามนี้

Page 24: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

24

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

เมื่อโปรแกรมเสร็จเรียบรอยแลว ถาเปนบอรดทดลองใหกดปุมสวิตชกลับมาเปนโหมด RUN หรือหากไมไดใชงานขา RB6 และ RB7 ก็ไมจํ าเปนตองกดปุมสวิตชเปล่ียนมาเปน โหมด RUN

7. กํ าหนด EPIC Port ตามนี้

ตรวจสอบวาตองมีชื่อโปรแกมที่จะดาวนโหลด

พรอมแลวคลิกปุมดาวโหลด

Page 25: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

25

ใบงานที่ 1 การประกอบกลไกตัวหุนยนต ROBO-1EX

จุดประสงค เพื่อเรียนรู และฝกทักษะการประกอบตัวหุนยนต โดยใชชิ้นสวนสํ าเร็จรูปของชุดคิท หุนยนตแมลงเดิน 6 ขาของทามิยะ รุน ITEM 71107*1980

อุปกรณและเครื่องมือที่ใช 1. ชุดคิทหุนยนต 2-CHANEL REMOTE CONTROL INSECT SIX-LEG CRAWING TYPE ITEM 71107*1980 จํ านวน 1 ชุด

2. กรรไก คีมตัด หรือ คัทเตอร 3. ไขควง

ขัน้ตอนการปฏิบัติ 1. นํ าชี้นสวนหุนยนตออกจการกลอง ตรวจสอบและศึกษาจํ านวนชิ้นสวนใหรอบคอบ 2. ศึกษาขั้นตอนการประกอบตัวหุนจากแผนคูมือการประกอบโดยละเอียด 3. ตัดชิ้นสวนกลไก และประกอบชิ้นสวนของ CONTROL STICKS และที่ใสแบตเตอรี่

ตามขั้นตอนที่ 1 และ 2 ในคูมือ พรอมทั้งทดสอบการทํ างานของกลไกเบื้องตน 4. ประกอบเฟองเขากับแกนของมอเตอร และประกอบมอเตอรเขากับเกียรบ็อกซ และ ตรวจสอบการทํ างานของมอเตอรกับเกียรบอกซ โดยการใสแบตเตอรี่และทดสอบโยก CONTROL STICKS ตามขั้นตอนที่ 3 ในคูมือ

5. ประกอบชุดมอเตอรเกียรเขากับแผนโครงของหุนยนตทั้ง 2 ชุด ตามขั้นตอนที่ 4 ในคูมือ

6. ประกอบกลไกสวนขา และลวดเชื่อมโยงเขากับตัวหุนและแกนของเกียรขับ ตามขั้นตอนที่ 5 , 6 , 7 และ 8 ในคูมือ

7. ศึกษาและทดสอบการบังคับการทํ างานของหุนยนตแบบใชคันบังคับ(CONTROLSTICKS)เพื่อตรวจสอบการทํ างานของกลไกตาง ๆ ถาติดตั้งมอเตอรถูกตอง เมื่อโยก

CONTROLSTICKS ไปขางหนาหุนยนตตองเดินหนา8. ติดตั้งรังถานแบตเตอรี่เขากับตัวหุน ตามรูปที่ 19. ติดตั้งบอรดคอนโทรลเลอรเขากับตัวหุน โดยอาจจะตองถอดเกียรออกชั่วคราวกอน เพื่อ

รอยน็อตสกรูยึดแผนปริ้นเซอรกิต แลวประกอบเขาไวตามเดิม10. ติดตั้งบอรดเซ็นเซอร โดยใชขารองปริ้นแบบยาว ใชน็อตสกรูรอยยึดเขากับบอรดคอน-

โทรลเลอร ตามรูปที่ 1ตัดสายมอเตอรโดยวัดใหพอดีกับระยะขั้วตอมอเตอรที่บอรดคอนโทรลเลอร แลวสอดเขากับขั้วตอขันสถรูยึดใหแนน(ตามรูปที่ 1)

11. เสียบตอสายเชื่อมตอตอรดคอนโทรลเลอรเขากับบอรดเซ็นเซอร(ตามรูปที่ 1)12. ใสแบตเตอรี่ที่ชารจไฟเต็มแลวเขากับรังถาน แลวตอสายจากรังถานเขากับบอรด

Page 26: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

26

คอนโทรลเลอรขันสกรูใหแนน เปดสวิทเพื่อสังเกตดูวาไฟดีซีเขาไปเลี้ยงวงจรที่บอรดคอนโทรลเลอรหรือไม โดยสังเกตที่หลอดไฟแอลอีดี ติดสวาง

13. ติดตั้ง Heat sink ระบายความรอนใหกับไอซีเรกูเลท 7805 เนื่องจากในใบงานแรกๆ จะใชไฟเลี้ยงวงจรจากอะแด็ปเตอรแทนแบตเตอรี่ไปกอน

Page 27: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

27

ใบงานที่ 2 การเขียนโปรแกรมใหหุนยนตสงเสียงรอง

จุดประสงค เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมเพื่อบังคับใหไมโครคอนโทรเลอรสงสัญญาณออกมา ขับตัวบัซเซอรใหสงสัญญาณเสียงออกมาในลักษณะตาง ๆ

อุปกรณและเครื่องมือที่ใช1. ตัวหุนยนต ROBO-1EX2. เครื่องคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร

ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว

ทฤษฎีพื้นฐานที่เกี่ยวของตัวขับเสียง หรือ บัซเซอรที่นํ ามาใชกับหุนยนต ROBO-1EX นี้ เปนแบบที่ไมมีตัวสรางเสียงและขับเสียง

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

คํ าส่ังในภาษา PIC BASIC PRO ที่เกี่ยวของในการเขียนโปรแกรม ไดแก1. VAR ใชประกาศตัวแปรที่ใชงาน2. INPUT เปนคํ าส่ังสํ ารับคาลอจิกทางขาพอรท แลวนํ าไปใสไวในตัวแปร3. HIGH เปนคํ าส่ังสํ าหรับสงลอจิก 1 ออกทางขาพอรท4. LOW เปนคํ าส่ังสํ าหรับสงลอจิก 0 ออกทางขาพอรท5. PAUSE เปนคํ าส่ังสํ าหรับหนวงเวลา ซึ่งมีคาระหวาง 0 - 65535 mS6. FOR … NEXT เปนคํ าส่ังสํ าหรับการวนลูปประมวลผลซํ้ าตามเงื่อนไขที่กํ าหนด7. IF … THEN เปนคํ าส่ังในการตรวจสอบเงื่อนไขที่เปนคาลอจิกที่ตัวแปร หรือขาพอรท8. GO TO เปนคํ าสังใหโปรแกรมกระโดดไปยัง Label ที่ระบุ9. FREQOUT SOUND และ DTMFOUT เปนคํ าส่ังสรางเสียงออกมาทางขา I/O พอรท10. TRISA TRISB TRISC เปนชื่อรีจิสเตอรที่ใชกํ าหนดใหขาของ I/O แตละขาวาขาใดเปน

Input และขาใดเปน Outputรายละเอียดและตัวอยางการใชคํ าส่ังทั้งหมดอยูในคูมือการใชโปรแกรม PIC BASIC PRO และฮารดแวรการตอวงจรบัซเซอรดูในวงจรในใบงานนี้

Page 28: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

28

โปรแกรมและการทํ างานของโปรแกรมเปนโปรแกรมที่ส่ังใหหุนยนตรอรับการกดปุม START แลวสงเสียงดวยคํ าส่ัง SOUND 5 ครั้ง หนวง

เวลา 2 วินาที แลวสงเสียงดวยคํ าส่ัง FREQOUT 5 ครั้ง หนวงเวลา 2 วินาที และสงเสียงดวยคํ าส่ัง หมุนหมายเลขโทรศัพท DTMFOUT จนหมดหมายเลขแลวหยุดเอง จนกวาจะกดปุม START เพื่อเริ่มใหมการปฏิบัติ1. ใสแบตเตอรี่ชารจไฟเต็ม2. ปด SW Power3. พิมพโปรแกรม Compile โปรแกรมลงตัวชิพ เปด SW power ทดลองกดปุม Startโปรแกรมคํ าสั่ง

มอบหมายงานเพิ่มเติมจงออกแบบโปรแกรมใหหุนยนตสงเสียงบีฟที่แตกตางไปจากโปรแกรมนี้

eye_l VAR PORTB.3eye_r VAR PORTB.4spk VAR PORTC.7sto VAR PORTB.5start VAR PORTA.4i var byteadcon1 = 7Low eye_lLow eye_rLow ml_onLow mr_onLow spkmain:

input startIF start=0 Then main1 Pause 50 GoTo main

main1: for i = 1 to 5

Sound spk,[100,10,50,10]pause 500

next i pause 2000 for i = 1 to 5 freqout spk,2000,2500 next i pause 2000 dtmfout spk,[0,2,5,0,9,3,6,5,4] goto main end

Page 29: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

29

ใบงานที่ 3 การเขียนโปรแกรมใหหุนยนตกระพริบตา

จุดประสงค เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมเพื่อบังคับใหไมโครคอนโทรเลอรสงสัญญาณออกมา ที่หลอด LED ที่เปนนัยตาของหุนยนตทั้ง สองดวง ในลักษณะตาง ๆ

อุปกรณและเครื่องมือที่ใช1. ตัวหุนยนต ROBO-1EX2. เครื่องคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร

ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว

ทฤษฎีพื้นฐานที่เกี่ยวของหลอด LED ( LED : Light Emitting Diode ) เปนไดโอดเปลงแสงไดเมื่อมีกระแสไฟดีซีใหลผานในทิศ

ทาง Forward bias โดยจะตองตอไฟบวกเขากับขาอาโหนด(Anode) และตอไฟลบเขากับขาคาโธด(Cathode) .ในสภาพที่หลอด LED ติดสวางเต็มที่จะมีแรงเคลื่อนตกคลอมตัว LED ประมาณ ไมเกิน 2 โวลทและจะจํ ากัดกระแสใวไมใหเกิน 20 mA ตามวงจรในรูปที่ 5 (หน 4) LED ที่เปนนัยตาขางซายตอไวที่ขา RB3และขางขวาตอไวที่ขา RB4 โดยมี R 220 โอหมเปนตัวจํ ากัดกระแสขณะที่ไมโครคอนโทรลเลอรสงคาลอจิก High ซึ่งจะมีแรงเคลื่อนที่ขา I/O ประมาณ 4.8 V

คํ าส่ังในภาษา PIC BASIC PRO ที่เกี่ยวของในการเขียนโปรแกรม ไดแก1. VAR ใชประกาศตัวแปรที่ใชงาน2. INPUT เปนคํ าส่ังสํ ารับคาลอจิกทางขาพอรท แลวนํ าไปใสไวในตัวแปร3. HIGH เปนคํ าส่ังสํ าหรับสงลอจิก 1 ออกทางขาพอรท4. LOW เปนคํ าส่ังสํ าหรับสงลอจิก 0 ออกทางขาพอรท5. PAUSE เปนคํ าส่ังสํ าหรับหนวงเวลา ซึ่งมีคาระหวาง 0 - 65535 mS6. FOR … NEXT เปนคํ าส่ังสํ าหรับการวนลูปประมวลผลซํ้ าตามเงื่อนไขที่กํ าหนด7. IF … THEN เปนคํ าส่ังในการตรวจสอบเงื่อนไขที่เปนคาลอจิกที่ตัวแปร หรือขาพอรท8. GO TO เปนคํ าสังใหโปรแกรมกระโดดไปยัง Label ที่ระบุ9. TRISA TRISB TRISC เปนชื่อรีจิสเตอรที่ใชกํ าหนดใหขาของ I/O แตละขาวาขาใดเปน

Input และขาใดเปน Outputรายละเอียดและตัวอยางการใชคํ าส่ังทั้งหมดอยูในคูมือการใชโปรแกรม PIC BASIC PRO และฮารดแวรการตอวงจรบัซเซอรดูในวงจรในใบงานนี้

Page 30: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

30

โปรแกรมและการทํ างานของโปรแกรมเปนโปรแกรมที่ส่ังใหหุนยนตรอรับการกดปุม START แลวสงเสียงดวยคํ าส่ัง SOUND 5 ครั้ง หนวง

เวลา 2 วินาที แลวสงเสียงดวยคํ าส่ัง FREQOUT 5 ครั้ง หนวงเวลา 2 วินาที และสงเสียงดวยคํ าส่ัง หมุนหมายเลขโทรศัพท DTMFOUT จนหมดหมายเลขแลวหยุดเอง จนกวาจะกดปุม START เพื่อเริ่มใหมการปฏิบัติ

1. ใสแบตเตอรี่ชารจไฟเต็ม2. ปด SW Power3. พิมพโปรแกรม Compile โปรแกรมลงตัวชิพ เปด SW power ทดลอง

กดปุม Startโปรแกรมคํ าสั่ง

มอบหมายงานเพิ่มเติม1. เมื่อเขาใจการทํ างานของโปรแกรมดีแลว ใหทดลองปรับปรุงเปลี่ยนแปลงโปแกรมใหหุนยนตกระ

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

eye_l var portb.3eye_r var portb.4sto var portb.5start var porta.4i var byte'------------------trisa = %11111111 ‘PortA as inputtrisb = %00100000 ‘PortB as output ,but portb.5 as input'------------------low eye_llow eye_r'===================adcon1 = 7

begin: if (start = 1) then goto begin ‘Loop to begin if “Start” is not press

pause 100

for i = 1 to 5 high eye_l high eye_r pause 500 low eye_l low eye_r pause 500 next i

goto begin end

Page 31: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

31

ใบงานที่ 4 การเขียนโปรแกรมใหหุนยนตรับรูการกด – และการถอนนิ้วจากปุม Start

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

จริงตอไป

อุปกรณและเครื่องมือที่ใช1. ตัวหุนยนต ROBO-1EX2. เครื่องคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร

ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว

ทฤษฎีพื้นฐานที่เกี่ยวของสวิตชปุมสตารทตามวงจรรูปที่ 5 (หนา 4) ตออยูที่ขาRA4 โดยมี R 10K ตอแขวนอยูกับไฟบวก 5 โวลท

ขณะที่สวิตชยังไมถูกกด ที่ขา RA4 จะมีสถานะเปนลอจิก 1 หรือ High แตถา สวิตชถูกกด ที่ขา RA4จะมีสถานะเปนลอจิก 0 หรือ Low เนื่องจากตัวสวิตชเปนกลไก ในการกดทุกครั้งจะเกิดการกระเดงของหนาสัมผัส ผลนี้จะทํ าใหคอนโทรลเลอรรับรูและเกิดการทํ างานผิดพลาด ดังนั้นในการเขียนโปรแกรมที่เกี่ยวกับการรับอินพุทจากสวิตช จะตองแกอาการผิดพลาดดังกลาว ดวยการใสคํ าส่ังหนวงเวลาคาที่เหมาะสม (ประมาณ50 mS) เพื่อใหเลยเวลาการเดงของหนาสัมผัสไปกอนจึงจะเริ่มรับรูการกด และการถอนนิ้ว

คํ าส่ังในภาษา PIC BASIC PRO ที่เกี่ยวของในการเขียนโปรแกรม ไดแก1. VAR ใชประกาศตัวแปรที่ใชงาน2. INPUT เปนคํ าส่ังสํ ารับคาลอจิกทางขาพอรท แลวนํ าไปใสไวในตัวแปร3. HIGH เปนคํ าส่ังสํ าหรับสงลอจิก 1 ออกทางขาพอรท4. LOW เปนคํ าส่ังสํ าหรับสงลอจิก 0 ออกทางขาพอรท5. PAUSE เปนคํ าส่ังสํ าหรับหนวงเวลา ซึ่งมีคาระหวาง 0 - 65535 mS6. FOR … NEXT เปนคํ าส่ังสํ าหรับการวนลูปประมวลผลซํ้ าตามเงื่อนไขที่กํ าหนด7. IF … THEN เปนคํ าส่ังในการตรวจสอบเงื่อนไขที่เปนคาลอจิกที่ตัวแปร หรือขาพอรท

เดงขณะที่กด เดงขณะที่ถอนนิ้ว

Page 32: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

32

8. GO TO เปนคํ าสังใหโปรแกรมกระโดดไปยัง Label ที่ระบุ9. TRISA TRISB TRISC เปนชื่อรีจิสเตอรที่ใชกํ าหนดใหขาของ I/O แตละขาวาขาใดเปน

Input และขาใดเปน Outputรายละเอียดและตัวอยางการใชคํ าส่ังทั้งหมดอยูในคูมือการใชโปรแกรม PIC BASIC PRO

โปรแกรมและการทํ างานของโปรแกรมเปนโปรแกรมที่ส่ังใหหุนยนตรอรับการกดปุม START แลวรอจนกวาผูกดจะถอนนิ้วออกจากปุม Start

หุนยนตจึงจะเริ่มทํ างานคือกระพริบตา 5 ครั้ง แลวกลับมาเริ่มตนใหมการปฏิบัติ 1. ใสแบตเตอรี่ชารจไฟเต็ม

2. ปด SW Power3. พิมพโปรแกรม Compile โปรแกรมลงตัวชิพ เปด SW power ทดลกดปุStart

โปรแกรมคํ าสั่ง

มอบหมายงานเพิ่มเติม จะตองนํ าเอาหลักการนี้ไปใชในใบงานตอ ๆ ไป

eye_l var portb.3eye_r var portb.4sto var portb.5start var porta.4i var byte'------------------trisa = %11111111trisb = %00100000'------------------adcon1 = 7low eye_llow eye_r'===================begin: if (start = 1) then begin pause 50again: if (start = 0) then again pause 50' for i = 1 to 5 high eye_l high eye_r pause 500 low eye_l low eye_r pause 500 next i goto begin end

Page 33: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

33

ใบงานที่ 5 การเขียนโปรแกรมใชงานเกี่ยวกับคํ าสั่ง TOGGLE

จุดประสงค เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมใชงานเกี่ยวกับคํ าส่ัง TOGGLE เพื่อที่จะนํ า แนวความคิดนี้ไปประยุกตใชงานจริงตอไป

อุปกรณและเครื่องมือที่ใช1. ตัวหุนยนต ROBO-1EX2. เครื่องคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร

ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว

ทฤษฎีพื้นฐานที่เกี่ยวของคํ าส่ัง TOGGLE เปนคํ าส่ังสํ าหรับกลับสถานะทางลอจิกของขา I/O ของไมโครคอนโทรลเลอรที่ได

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

คํ าส่ังในภาษา PIC BASIC PRO ที่เกี่ยวของในการเขียนโปรแกรม ไดแก1. VAR ใชประกาศตัวแปรที่ใชงาน2. HIGH เปนคํ าส่ังสํ าหรับสงลอจิก 1 ออกทางขาพอรท3. LOW เปนคํ าส่ังสํ าหรับสงลอจิก 0 ออกทางขาพอรท4. PAUSE เปนคํ าส่ังสํ าหรับหนวงเวลา ซึ่งมีคาระหวาง 0 - 65535 mS5. FOR … NEXT เปนคํ าส่ังสํ าหรับการวนลูปประมวลผลซํ้ าตามเงื่อนไขที่กํ าหนด6. IF … THEN เปนคํ าส่ังในการตรวจสอบเงื่อนไขที่เปนคาลอจิกที่ตัวแปร หรือขาพอรท7. GO TO เปนคํ าสังใหโปรแกรมกระโดดไปยัง Label ที่ระบุ8. TRISA TRISB TRISC เปนชื่อรีจิสเตอรที่ใชกํ าหนดใหขาของ I/O แตละขาวาขาใดเปน

Input และขาใดเปน Outputรายละเอียดและตัวอยางการใชคํ าส่ังทั้งหมดอยูในคูมือการใชโปรแกรม PIC BASIC PRO

โปรแกรมและการทํ างานของโปรแกรมเปนโปรแกรมที่ส่ังใหหุนยนตรอรับการกดปุม START ทํ าใหตาของหุนยนตจากดับ เปนติด ถากดปุม

START ตาหุนยนตจากติด ก็จะดับ แบบนี้สลับกันไปการปฏิบัติ

1. ใสแบตเตอรี่ชารจไฟเต็ม

Page 34: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

34

2. ปด SW Power3. พิมพโปรแกรม Compile โปรแกรมลงตัวชิพ เปด SW power ทดลอง

กดปุม Startโปรแกรมคํ าสั่ง

ใหทดลองดัดแปลงโปรแกรมตามขางลางนี้ แลวเปรียบเทียบผลแตกตางกับโปรแกรมขางบน

eye_l var portb.3eye_r var portb.4sto var portb.5start var porta.4i var byte'------------------trisa = %11111111trisb = %00100000'------------------low eye_llow eye_r'===================begin: if (start = 1) then begin pause 50 toggle eye_l toggle eye_r pause 500 goto begin end

eye_l var portb.3eye_r var portb.4sto var portb.5start var porta.4i var byteadcon1 = 7'------------------trisa = %11111111trisb = %00100000'------------------low eye_llow eye_r'===================begin: if (start = 1) then begin pause 50 toggle eye_l toggle eye_r pause 100again: if (start = 0) then again pause 50 goto begin end

Page 35: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

35

ทดลองเปรียบเทียบผลกับโปรแกรมขางลางนี้

'------------------sto var portb.5start var porta.4speaker var portc.7eye_l VAR PORTB.3eye_r VAR PORTB.4i var bytetemp var byte'------------------trisa = %11111111trisb = %00100000adcon1 = 7'--- Initial ------Low eye_lLow eye_r'------------------------begin: if (start = 1) then begin pause 60 gosub click toggle eye_l toggle eye_r idle: if (start = 0) then idle pause 60 goto begin end'==== End of Program ===='click: freqout speaker,10,2000 return'------------------------

Page 36: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

36

ใบงานที่ 6 การเขียนโปรแกรมใชงานเกี่ยวกับจอ LCD

จุดประสงค เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมใชงานเกี่ยวกับการแสดงผลผานจอ LCD เพื่อที่จะนํ า แนวความคิดนี้ไปประยุกตใชงานจริงตอไป

อุปกรณและเครื่องมือที่ใช1. ตัวหุนยนต ROBO-1EX2. เครื่องคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร

ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว

ทฤษฎีพื้นฐานที่เกี่ยวของจอ LCD เปนอุปกรณแสดงผลที่จํ าเปนในการทํ างานของหุนยนต ใชในการตรวจสอบคาที่ตัวเซ็นเซอร

ตรวจจับได เพื่อนํ าไปพัฒนาโปรแกรมประมวลผลตอไป วงจรการตอ จอ LCD ดูตามรูปที่ 5 (หนา 4) และรูปที่ 7 (หนา 6 ) LCD ที่ใชเปนแบบบรรทัดเดียว 16 ตัวอักขระ และแบงตัดตอนออกเปน 2 บรรทัดตอกันแตละตํ าแหนงตัวอักขระจํ ามีตํ าแหนงแอดเดรสที่เปนเลขฐาน 16 ตามขางลางนี้

$80 $81 $82 $83 $84 $85 $86 $87 $C0 $C1 $C2 $C3 $C4 $C5 $C6 $C7

คํ าส่ังรหัสตาง ๆ ที่ใชในการควบคุม จอ LCD ไดแก$FE,1 Clear display$FE,2 Return home (begining of first line)$FE,$0C Cursor off$FE,$0E Underline cursor on$FE,$0F Blinking cursor on$FE,$80 move cursor to beginning of first line$FE,$10 Move cursor to left one position$FE,$14 Move cursor to right one position$FE,$C0 Move cursor to beginning of the second line$FE,$94 Move cursor to beginning of the third line$FE,$D4 Move cursor to beginning of the fourth line

Page 37: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

37

Option สํ าหรับควบคุมการแสดงขอมูลBIN Send binary digit formatDEC Send decimal digit formatHEX Send hexadecimal digit format

ตัวอยางคํ าส่ังสํ าหรับนิยามขาของ LCD กอนการใชงานดังนี้DEFINE LCD_DREG PORTB กํ าหนํ าขา Data ไวที่ PortBDEFINE LCD_DBIT 0 เริ่มที่ บิท 0DEFINE LCD_RSREG PORTA กํ าหนด ขา RS ตอที่PortADEFINE LCD_RSBIT 3 ที่บิท 3DEFINE LCD_EREG PORTA กํ าหนดขา EN ตอที่ PortADEFINE LCD_EBIT 5 ที่บิท 5

การตอจอ LCD เขากับบอรด คอนโทรลเลอร ROBO-1EX ตองปฏิบัติดังนี้คือ1. ถอดสายแพที่ขั้วตอ CN5 ออก แลวเอาขั้วตอสาย LCD ใสแทน2. ปลด Jumper J1 – J4 ออก เพื่อขอใชขา RB0 – RB3 เปนขาขอมูลของ LCD ชั่วคราวกอน

ถอด Jumper J1 – J4 ออกชั่วคราวกอน

ใสสายตอจอ LCD ที่CN5

Page 38: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

38

คํ าส่ังในภาษา PIC BASIC PRO ที่เกี่ยวของในการเขียนโปรแกรม ไดแก1. VAR ใชประกาศตัวแปรที่ใชงาน2. HIGH เปนคํ าส่ังสํ าหรับสงลอจิก 1 ออกทางขาพอรท3. LOW เปนคํ าส่ังสํ าหรับสงลอจิก 0 ออกทางขาพอรท4. PAUSE เปนคํ าส่ังสํ าหรับหนวงเวลา ซึ่งมีคาระหวาง 0 - 65535 mS5. FOR … NEXT เปนคํ าส่ังสํ าหรับการวนลูปประมวลผลซํ้ าตามเงื่อนไขที่กํ าหนด6. IF … THEN เปนคํ าส่ังในการตรวจสอบเงื่อนไขที่เปนคาลอจิกที่ตัวแปร หรือขาพอรท7. GO TO เปนคํ าสังใหโปรแกรมกระโดดไปยัง Label ที่ระบุ8. LCDOUT เปนคํ าส่ังสงขอมูลแสดงที่จอ LCD9. TRISA TRISB TRISC เปนชื่อรีจิสเตอรที่ใชกํ าหนดใหขาของ I/O แตละขาวาขาใดเปน

Input และขาใดเปน Outputรายละเอียดและตัวอยางการใชคํ าส่ังทั้งหมดอยูในคูมือการใชโปรแกรม PIC BASIC PRO

โปรแกรมและการทํ างานของโปรแกรมเปนโปรแกรมที่ส่ังใหหุนยนตรอรับการกดปุม START ทํ าใหจอ LCD มีขอความปรากฏตามตํ าแหนง

ตาง ๆ ในจอการปฏิบัติ 1. ใสแบตเตอรี่ชารจไฟเต็ม 2. ปด SW Power 3. พิมพโปรแกรม Compile โปรแกรมลงตัวชิพ เปด SW power ทดลอง

กดปุม Startโปรแกรมคํ าสั่ง

โปรแกรมที่ 1

DEFINE LCD_DREG PORTBDEFINE LCD_DBIT 0DEFINE LCD_RSREG PORTADEFINE LCD_RSBIT 3DEFINE LCD_EREG PORTADEFINE LCD_EBIT 5'------------------sto var portb.5start var porta.4speaker var portc.7eye_l VAR PORTB.3eye_r VAR PORTB.4temp var byte'------------------trisa = %11111111trisb = %00100000adcon1 = 7temp = 85' ตอหนา 39

Page 39: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

39

โปรแกรมที่ 2

งานที่มอบหมาย1. จากโปรแกรมที่ 1 ใหทดลองเปลี่ยนขอความ เปล่ียนตํ าแหนงแสดงขอความ2 จากโปรแกรมที่ 2 ใหทดลองเปลี่ยนคาตัวแปร temp ในโปรแกรมเพื่อดูการเปลี่ยนแปลงผล

begin: if (start = 1) then begin pause 50lcdout $FE,1lcdout $FE,$80,"Hello",$FE,$C0,”World”end

ตอจากหนา 38

DEFINE LCD_DREG PORTBDEFINE LCD_DBIT 0DEFINE LCD_RSREG PORTADEFINE LCD_RSBIT 3DEFINE LCD_EREG PORTADEFINE LCD_EBIT 5'------------------sto var portb.5start var porta.4speaker var portc.7eye_l VAR PORTB.3eye_r VAR PORTB.4temp var byte'------------------trisa = %11111111trisb = %00100000adcon1 = 7temp = 85'lcdout $FE,1lcdout $FE,$80,"Temp=",$FE,$85,dec templcdout $FE,$C2,"C"end

Page 40: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

40

ใบงานที่ 7 การเขียนโปรแกรมใชงานเกี่ยวกับจอ LCD (ตอ)

จุดประสงค เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมใชงานเกี่ยวกับการแสดงผลผานจอ LCD ที่สามารถ แสดงผลคาตัวแปรที่มีคาเปลี่ยนแปลงได เพื่อที่จะนํ า แนวความคิดนี้ไปประยุกตใชงานจริงตอไป

อุปกรณและเครื่องมือที่ใช1. ตัวหุนยนต ROBO-1EX

2. เครื่องคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว

ทฤษฎีพื้นฐานที่เกี่ยวของในการแสดงผลคาตัวแปรที่เปนเลข ฐานสิบ เราจะตองใช Option บังคับ คือ DEC แลวตามดวยตัวแปรคํ าสั่งที่เกี่ยวของ

เปนคํ าส่ังตามใบงานที่ 6โปรแกรมคํ าสั่ง

เปนโปรแกรมจํ าลองการตั้งคาอุณหภูมิ โดยใชสวิทฃปุม Start เปนตัวกดเพื่อปรับเพิ่มอุณหภูมิ โดยกํ าหนดเพดานไวไมเกิน 60 องศา และ ใชสวิทชปุม Stop เปนตัวปรับลดอุณหภูมิ ปรับลงไดตํ่ าสุด 0 องศาโปรแกรมนี้เขียนในรูปแบบของ Main program และ Subroutine ซึ่งเปนโปรแกรมยอย ใหศึกษารูปแบบการใชงานไวดวย

DEFINE LCD_DREG PORTBDEFINE LCD_DBIT 0DEFINE LCD_RSREG PORTADEFINE LCD_RSBIT 3DEFINE LCD_EREG PORTADEFINE LCD_EBIT 5'------------------sto var portb.5start var porta.4speaker var portc.7i var bytetemp var byte'------------------trisa = %11111111trisb = %00100000adcon1 = 7'temp = 36'==================begin: if (start = 0) then gosub click temp = temp+1 if (temp >= 60) then temp = 60 endif gosub display endif

มีตอหนา 41

Page 41: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

41

if (sto = 0) then gosub click if (temp = 0) then temp = 1 endif temp = temp-1 gosub display endif pause 200 goto begin end‘'== End of Main ===='display: lcdout $FE,1,"Temp = " lcdout $FE,$C0,dec temp lcdout $FE,$C4,"C" return'---------------click: freqout speaker,10,2000 return'---------------

ตอจากหนา 40

Page 42: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

42

ใบงานที่ 8 การเขียนโปรแกรมใชงานเกี่ยวกับจอ LCD (ตอ)

จุดประสงค 1. เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมใชงานเกี่ยวกับการแสดงผลผานจอ LCD ที่สามารถ แสดงผลคาตัวแปรที่มีคาเปลี่ยนแปลงได เพื่อที่จะนํ า แนวความคิดนี้ไปประยุกตใชงานจริง 2. เพื่อศึกษาเทคนิคการเขียนโปรแกรมในลักษณะ Main program และ Subroutine Program

3. เพ่ือศึกษาการกํ าหนดการกํ าหนดเงื่อนไขในคํ าส่ัง IF ... THEN ... รูปแบบตาง ๆ

อุปกรณและเครื่องมือที่ใช1. ตัวหุนยนต ROBO-1EX

2. เครื่องคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว

ทฤษฎีพื้นฐานที่เกี่ยวของในการเขียนโปแกรมใชงานจริง จะตองมีการวิเคราะหระบบการทํ างาน และจะตองลํ าดับขั้นตอนการ

ทํ างานใหชีดเจนกอน จะทํ าใหการทํ างานของโปรแกรมไมวกวนหรือซับซอน พรอมทั้งตองแยกแยะกิจกรรมหรืองานยอย ๆ วามีงานอะไรบางที่ตองวนมาทํ าซํ้ าบอย ๆ งานสวนไหนเปนอินพุท สวนไหนเปนการประมวลผล และสวนไหนเปนเอาพุท งานไหนที่ตองการประมวลผลเร็วทันทีทันใด การลํ าดับขั้นตอนการทํ างานใหเขียนเปนภาษาคํ าพูดเรียงลํ าดับขอ 1 2 3... ไปเรื่อย ๆ จากนั้นก็นํ าขั้นตอนเหลานั้นมาผนวกเปนโฟลชารท (Flow chart)และจากโฟลชารท ก็แปลงออกมาเปนโปรแกรมภาษาเบสิกตอไป หลักในการพัฒนาโปรแกรมมีอยูวา ถากิจกรรมใดจะตองเรียกมาทํ าซํ้ าบอย ๆ จะตองแยกออกจากโปรแกรมหลัก(main program) ไวเปนโปรแกรมยอย(subroutine) โดยการใชคํ าส่ัง GOSUB ในการเรียกใช สวนคํ าส่ัง GOTO พยายามใชใหนอยที่สุด และควรใชเฉพาะในโปรแกรมหลัก หรือในโปรแกรมยอย อยาใชคํ าส่ัง GOTO กระโดดขามระหวางโปรแกรมยอยหรือระหวางโปรแกรมหลัก กับโปรแกรมยอย

Page 43: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

43

รูปที่ 27 แสดงรูปแบบทิศทางขั้นตอนการทํ างานของโปรแกรมหลัก และ โปรแกรมยอยดวยคํ าส่ัง GOSUB และคํ าส่ัง GOTO

โปรแกรมคํ าสั่งการทํ างานของโปรแกรมเมื่อมีการกดปุม Start และปุม Stop จะทํ าใหตัวเลขที่จอ LCD มีคาเพิ่มขึ้น

และลดลง เหมือนกับการปรับเพิ่ม – ลดอุณหภูมิ แตจะมีการประมวลผลวาถาคาอุณหภูมิมีคามากกวา 25 แตไมเกิน 48 จะทํ าใหตาของหุนยนตติด นอกเหนือจากคาดังกลาว หลอดจะดับ การเขียนโปรแกรมจะเปนไปในลักษณะ โปรแกรมหลัก และโปรแกรมยอย

โปรแกรมหลัก(Main program)

ทั้งหมดเหลานี้เปนโปรแกรมยอย(Subroutine)

นิยามคาตาง ๆ

กํ าหนดขา I/Oใชงานกํ าหนดตัวแปรใชงาน

กํ าหนดคาตัวแปรเริ่มตน

Page 44: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

44

มอบหมายงานเมื่อทดลองโปรแกรมเกี่ยวกับจอ LCD เสร็จเรียบรอยแลวใหถอดออกแลวตอ Jumper J1 – J4 เขาตามเดิม

DEFINE LCD_DREG PORTBDEFINE LCD_DBIT 0DEFINE LCD_RSREG PORTADEFINE LCD_RSBIT 3DEFINE LCD_EREG PORTADEFINE LCD_EBIT 5trisa = %11111111trisb = %00100000sto var portb.5start var porta.4speaker VAR PORTC.7heater var portb.4value var byteadcon1 = 7value = 30begin: if (start = 0) then pause 50 value = value + 1 if value >= 60 then value = 60 gosub click gosub display gosub action endif if (sto = 0) then pause 50 if (value = 0) then value = 1 value = value - 1 gosub click gosub display gosub action endif pause 180 goto begin end'------- End of Program ---------action: if (value >= 25) and (value < 48) then high heater else low heater endif return'display: lcdout $FE,$80,"Temp = ",dec value lcdout $FE,$C0,"C" return

click: freqout speaker,10,2500 return

Page 45: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

45

ใบงานที่ 9 การเขยีนโปรแกรมบังคับใหหุนยนตเดินเคลื่อนไหวขั้นพื้นฐาน

จุดประสงค 1. เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมบังคับใหหุนยนตเดินในทาทางตาง ๆที่เปนพื้นฐานในการประยุกตตอไป

2. เพื่อศึกษา และปรับแกการทํ างานของโปรแกรม ใหสัมพันธกับการทํ างานของฮารดแวร

อุปกรณและเครื่องมือที่ใช 1. เครื่องคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว 2. หุนยนต ROBO-1EX

ทฤษฎีพื้นฐานที่เกี่ยวของในการทํ าใหหุนยนตเดินเคลื่อนไหวในทาทางตาง ๆ ที่เปนพื้นฐาน ไดแก เดินหนาตรง เดินถอยหลัง

ตรง เดินเลี้ยวซาย เดินเลี้ยวขวา บิดตัวทางดานซาย บิดตัวทางดานขวา ถอยหลบซาย ถอยหลบขวาเหลานี้ เราจะตองเขียนโปรแกรมไปบังคับทิศทางการหมุน และการหมุน – หยุดหมุน ของมอเตอรเกียรทั้ง 2 ตัวโดยผานตัวขับมอเตอรไอซี L293 (ตามวงจรรูปที่ 5 หนา 4 และรูปที่ 6 หนา 5) ตามฮารดแวรที่ตอขั้วมอเตอรถูกตอง และสลับตัวมอเตอรถูกตอง เราจะไดสัญญาณควบคุมมอเตอรทั้งสอง (ตามรูปที่ 6 หนา 5)ดังนี้

การทํ าใหหุนยนตเดินหนาตรง จะตองเขียนโปรแกรมใหขา CW/CCW ทั้งสองขามีลอจิกเปน Highและขา ON/OFF ทั้งสองขามีลอจิกเปน High

การทํ าใหหุนยนตเดินถอยหลังตรง จะตองเขียนโปรแกรมใหขา CW/CCW ทั้งสองขามีลอจิกเปน Lowและขา ON/OFF ทั้งสองขามีลอจิกเปน High

การทํ าใหหุนยนตเดินเลี้ยวซาย จะตองเขียนโปรแกรมใหขา CW/CCW ทั้งสองขามีลอจิกเปน Highและขา ON/OFF ของมอเตอรตัวซาย( RC1) มีลอจิกเปน Lowเพื่อหยุดมอเตอร สวนขา ON/OFF ของมอเตอรตัวขวา( RC2) มีลอจิกเปน High เพื่อใหเดินหมุนเลี้วไปทางดานซาย

การทํ าใหหุนยนตเดินเลี้ยวขวา จะตองเขียนโปรแกรมใหขา CW/CCW ทั้งสองขามีลอจิกเปน Highและขา ON/OFF ของมอเตอรตัวขวา( RC2) มีลอจิกเปน Low เพื่อหยุดมอเตอร สวนขา ON/OFF ของมอเตอรตัวซาย( RC1) มีลอจิกเปน High เพื่อใหเดินหมุนเลี้วไปทางดานขวา

การทํ าใหหุนยนตเดินถอยหลบซาย จะตองเขียนโปรแกรมใหขา CW/CCW ทั้งสองขามีลอจิกเปน Lowและขา ON/OFF ของมอเตอรตัวซาย( RC1) มีลอจิกเปน High สวนขา ON/OFF ของมอเตอรตัวขวา( RC2)มีลอจิกเปน Low เพื่อหยุดมอเตอรทํ าใหเดินหมุนถอยหลบไปทางดานซาย

การทํ าใหหุนยนตเดินถอยหลบขวา จะตองเขียนโปรแกรมใหขา CW/CCW ทั้งสองขามีลอจิกเปน Lowและขา ON/OFF ของมอเตอรตัวขวา( RC2) มีลอจิกเปน High สวนขา ON/OFF ของมอเตอรตัวซาย( RC1)มีลอจิกเปน Low เพื่อหยุดมอเตอรทํ าใหเดินหมุนถอยหลบไปทางดานขวา

Page 46: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

46

การทํ าใหหุนยนตหมุนบิดตัวไปทางดานขวา จะตองเขียนโปรแกรมใหขา CW/CCW ดานขวา (RC4)มีลอจิก Low ขา CW/CCW ดานซาย (RC3) มีลอจิก Highสวนขา ON/OFF ทั้งสอง(RC1 กับ RC2) ตองมีลอจิก High

การทํ าใหหุนยนตรหมุนบิดตัวไปทางดานซาย จะตองเขียนโปรแกรมใหขา CW/CCW ดานขวา (RC4)มีลอจิก High ขา CW/CCW ดานซาย (RC3) มีลอจิก Lowสวนขา ON/OFF ทั้งสอง(RC1 กับ RC2) ตองมีลอจิก High

การทํ าใหหุนยนตหยุดอยูนิ่ง ๆ จะตองเขียนโปรแกรมใหขา ON/OFF ทั้งสองขา มีลอจิกเปน Low

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

ถอยหลัง 1 วินาทีแลว หยุด 3 วินาที เดินเลี้ยวซาย 1 วินาที หยุด 3 วินาที เดินเลี้ยวขวา 1 วินาที หยุด 3วินาที ถอยหลบซาย 1 หยุด 3 วินาที ถอยหลบขวา 1 หยุด 3 วินาที บิดตัวทางซาย 2 วินาที หยุด 3วินาที บิดตัวทางขวา 2 วินาที หยุด 3 วินาที แลววนไปเริ่มตนเดินหนาใหม เปนแบบนี้ตลอดไป

หากหุนยนตตัวใดไมเปนไปตามลํ าดับนี้แสดงวา โปรแกรม กับฮารดแวรทํ างานไมสัมพันธกัน มีสองทางใหเลือกคือ ตองแกที่ฮารดแวรคือขั้วตอมอเตอร หรือ แกที่โปรแกรม (ซึ่งสะดวกกวา)

motr VAR PORTC.2motl VAR PORTC.1cwr VAR PORTC.4cwl VAR PORTC.3start VAR PORTA.4stop_1 VAR PORTB.5speakerVAR PORTC.7dr VAR PORTB.2dl VAR PORTB.0dm VAR PORTB.1eye_l var portb.3eye_r var portb.4i VAR BYTE

'adcon1=7TRISB = %00100111TRISC = %01100001TRISA = %11111111Low speaker

'begin:

GoSub standIF start = 1 Then begin

Pause 300again:

IF start = 0 Then again'

มีตอหนา 47

Page 47: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

47

GoSub beep gosub blink_eyeagain1: gosub forward pause 1000 gosub stand pause 3000 gosub backward pause 1000 gosub stand pause 3000 gosub turn_left pause 1000 gosub stand pause 3000 gosub turn_right pause 1000 gosub stand pause 3000 gosub back_left pause 1000 gosub stand pause 3000 gosub back_right pause 1000 gosub stand pause 3000 gosub twist_left pause 800 gosub stand pause 3000 gosub twist_right pause 800 gosub stand pause 3000 GoTo again1End'========== End of Program ==========beep: Sound speaker,[100,10,50,10]

Pause 100 Sound speaker,[200,10,50,10]

Pause 100Low speakerReturn

'blink_eye: for i = 1 to 5 high eye_l high eye_r pause 200 low eye_l low eye_r pause 200 next ireturn'

มีตอหนา 48
Page 48: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

48

backward:High motrHigh motlHigh cwrHigh cwlReturn

'stand:

Low motrLow motlReturn

'forward:

High motrHigh motlLow cwrLow cwlReturn

'twist_left:

High motrHigh motllow cwrhigh cwlReturn

'twist_right:

High motrHigh motlhigh cwrlow cwlReturn

'turn_right:

low motrhigh motllow cwrlow cwlReturn

'back_left:

low motrhigh motllow cwrhigh cwlReturn

'turn_left:

high motrlow motllow cwrlow cwlReturn

'

มีตอหนา 49

Page 49: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

49

back_right:high motrlow motlhigh cwrlow cwlReturn

'skip_right:

'GoSub twist_rightPause 140GoSub standReturn

'skip_left:

GoSub twist_leftPause 140GoSub standReturn

'=== End of Subroutine ====

Page 50: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

50

ใบงานที่ 10 การเขียนโปรแกรมบังคับใหหุนยนตเดินตามเสน ( TRACKING )

จุดประสงค 1. เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมบังคับใหหุนยนตเดินตามเสนแทร็กในลักษณะตาง ๆ 2. เพื่อศึกษา และปรับแกการทํ างานของโปรแกรม ใหสัมพันธกับสภาพและลักษณะของเสนแทร็ก

อุปกรณและเครื่องมือที่ใช 1. เครือ่งคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว 2. หุนยนต ROBO-1EX

ทฤษฎีพื้นฐานที่เกี่ยวของในการที่จะบังคับใหหุนยนตเดินตามเสนแทร็กไดนั้น จะตองทํ าใหหุนยนตสามารถมองเห็นเสนแทร็ก

ขณะเดินไปดวย อุปกรณที่ทํ าใหหุนยนตมองเห็นเสนแทร็กไดคือ Track sensor (ตามรูปที่ 3 หนา 2) วงจรการทํ างาน (ตามรูปที่ 11 หนา 9) โดยจะมีตัวตรวจจับเสนแทร็ก 3 ตัว ตออยูที่ขา I/O ขา RB0 RB1 RB2(ตามวงจร รูปที่ 5 หนา 4) Track sensor ทั้ง 3 ชุดจะใหผล Output เปนดิจิตอล คือ 0 กับ 1 หรือ Lowกับ High วิธีการตรวจจับจะอาศัยความแตกตาง ระหวางสีของเสนแทร็ก กับสีของพื้นสนาม ในใบงานนี้จะกํ าหนดใหสีของเสนแทร็กเปนสีดํ า และพื้นสนามเปนสีขาว ซึ่งจะทํ าใหเซ็นเซอรใดตรวจจับพบเสนแทร็กจะใหเอาพุทเปน 0 ถาตรวจจับพื้นสนามจะใหเอาพุทเปน 1 การทํ างานของวงจรตรวจจับแทร็ก ใหศึกษาในหนา9

กอนการใชงาน เราจะตองปรับความไว หรือชวงระยะของการตรวจจับเพื่อใหการทํ างานของตรวจจับมีความเสถียรแมนยํ าที่สุด ในภาวะที่หุนจะตองเดินยกตัวสูง ๆ ตํ่ า ๆ การปรับ ทํ าไดโดย :-

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

กันทั้ง 3 ตัว และทดสอบโดยเลื่อนตัวหุน(ขณะยกลอยอยู) เขาไปใหหัวเซ็นเซอรอยูในแถบดํ า หลอดLED จะตองดับหมด และถาเลื่อนใหหัวเซ็นเซอรทั้ง 3 เขา – ออก แถบขาว – ดํ า พรอมกัน หลอดก็จะติดดับพรอมกัน หากไมเปนตามนี้ใหพยายามปรับจนกวาหลอดจะติดดับพรอมกันมากที่สุด เมื่อเรียบรอยแลวแทร็กเซ็นเซอรก็พรอมจะใชงานได

ปรับระยะการตรวจจับแทร็กขาว-ดํ า

หลอด LED ติดแสดงวาเปนลอจิก 1

Page 51: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

51

หลักการตรวจจับเสนแทร็ก ในการเขียนโปรแกรมใหหุนยนตเดินไปตามเสนแทร็กเซ็นเซอรแทร็กทั้ง 3ตัวจะตรวจจับเสนแทร็กทั้งหมดได 9 กรณีดังนี้คือ

11เ

4.เพุทหุน

7.เเอหุน

.เดินตรงเสนจะไดเอาพุท 0 1 ตองบังคับใหหุนดินหนาตอไป

2พห

ดินเฉียงขวาจะไดเอา 0 0 1 ตองบังคับใหเดินเลี้ยวซาย

5เอใ

ดินพบมุมเล้ียวขวาจะไดาพุท 1 0 0 ตองบังคับใหเดินเลี้ยวขวา

.เดินเฉียงซายจะไดเอาุท 1 0 0 ตองบังคับใหุนเดินเลี้ยวขวา

3เอใ

.เดินเฉียงขวามากจะไดาพุท 0 1 1 ตองบังคับหหุนรีบเดินเลี้ยวซาย

6เอห

.เดินเฉียงซายมากจะไดาพุท 1 1 0 ตองบังคับหหุนรีบเดินเลี้ยวขวา

.เดินพบมุมเล้ียวซายจะไดาพุท 0 0 1 ตองบังคับใหุนเดินเลี้ยวซาย

9. หุนเดินไปถึงปลายทาง ตองบังคับใหหยุด

8. เดินหลุดแทร็กตองหยุดแลวถอยกลับเพื่อใหเขาแทร็กแลวทํ ากรณีอื่นตอไป

Page 52: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

52

โปรแกรมคํ าสั่งการทํ างานของโปรแกรมเมื่อกดปุม Start หุนยนตจะสงเสียงบีฟ และกระพริบตา 5 ครั้งจามนั้นจะเริ่ม

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

motr VAR PORTC.2motl VAR PORTC.1cwr VAR PORTC.4cwl VAR PORTC.3start VAR PORTA.4stop_1 VAR PORTB.5speakerVAR PORTC.7dr VAR PORTB.2dl VAR PORTB.0dm VAR PORTB.1eye_l var portb.3eye_r var portb.4i VAR BYTE'adcon1= 7TRISB = %00100111TRISC = %01100001TRISA = %11111111Low speaker

'begin:

GoSub standIF start = 1 Then begin

Pause 300again:

IF start = 0 Then again''

GoSub beep gosub blink_eye GoSub forward Pause 300again1: IF (dl=0) AND (dm=1)AND(dr=1) Then GoSub turn_left Pause 30 EndIF

IF (dl=1) AND (dm=1)AND(dr=0) Then GoSub turn_right Pause 30 EndIF IF (dl=1) AND (dm=1) AND (dr=1) Then GoSub backward pause 20 gosub stand pause 10 EndIF มีตอหนา 53

Page 53: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

53 IF (dl=1) AND (dm=0)AND(dr=1) Then GoSub forward Pause 100 EndIF

IF (dl=1) AND (dm=0)AND(dr=0) Then GoSub turn_right pause 50 EndIF IF (dl=0) AND (dm=0)AND(dr=1) Then GoSub turn_left pause 50 EndIF IF (dl=0) AND (dm=0)AND(dr=0) Then

Pause 50 GoSub stand EndIF GoTo again1End

beep: Sound speaker,[100,10,50,10]

Pause 100 Sound speaker,[100,10,50,10]

Pause 100Low speakerReturn

'blink_eye: for i = 1 to 5 high eye_l high eye_r pause 300 low eye_l low eye_r pause 300 next ireturn'backward:

High motrHigh motlHigh cwrHigh cwlReturn

'stand:

Low motrLow motlReturn

'forward:

High motrHigh motlLow cwrLow cwlReturn

'มีตอหนา 54

Page 54: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

54

ในบางกรณีไดแก ทั้งหมด ซึ่งเขากรณเขียนโปรแกรมหาท

'twist_left:

High motrHigh motlLow cwrHigh cwlReturn

'turn_right:

High motrLow motllow cwrlow cwlReturn

'turn_left:

Low motrHigh motllow cwrlow cwlReturn

'skip_right:

'GoSub twist_leftPause 140GoSub standReturn

'skip_left:

GoSub twist_rightPause 140GoSub standReturn

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

Page 55: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

55

ใบงานที่ 11 การเขียนโปรแกรมทดสอบระยะการตรวจจับวัตถุทางจอ LCD

จุดประสงค 1. เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมระยะการตรวจจับระยะวัตถุและดูผลทางจอ LCD 2. เพื่อศึกษา และปรับแกระยะการตรวจจับใหมีคาที่เหมาะสม เพื่อนํ าไปเขียนในโปรแกรม

อุปกรณและเครื่องมือที่ใช 1. เครือ่งคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว 2. หุนยนต ROBO-1EX

ทฤษฎีพื้นฐานที่เกี่ยวของ.ในการเขียนโปรแกรมเพื่อทดสอบระยะตรวจจับวัตถุ แลวแสดงคาระยะที่เปนสัญญาณอะนาล็อกออก

มาทางจอ LCD จะสามารถกระทํ าไดกับตัวตรวจจับระยะวัตถุที่อยูดานหนาทั้ง 3 ตัวเทานั้น สวน 3 ตัวที่อยูดานหลังไมสามารถทํ าไดเนื่องจากใชพอรท I/O ซํ้ ากันกับจอ LCD แตไมจํ าเปนตองทํ าทั้งหมด เนื่องจากวงจรเหมือนกัน เพียงเพื่อศึกษาหลักการปรับเพื่อใหสามารถนํ าคาโดยประมาณไปเปนขอมูลเงื่อนไขในการเขียนโปรแกรมตรวจจับระยะวัตถุในใบงานตอไป หลักการทํ างานของวงจรตรวจจับระยะวัตถุใหศึกษาในหนา 7-8

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

ขั้นตอนปฏิบัติ1. ถอดสายแพที่ขั้วตอ CN5 ออก แลวเอาสายตอ LCD ใสแทน2. ปลด Jumper J1 – J4 ออกใหเสียบเก็บไวขาเดียว3. ปดสวิทช Power เสียบสายอะแด็ปเตอร เสียบสายดาวนโหลด4. พิมพโปรแกรม Compile โปรแกรมลงตัวชิพ เปดสวิทช Power5. ใชไขควงคอย ๆ ปรับความเขมตัวอักขระที่จอ LCD โดยปรับที่ทริมพ็อท BRIGHTNESS6. ทํ าการปรับจูนระยะวัตถุ โดยหันหนาหุนยนตไปในทางที่ไมมีวัตถุขวางหนาในระยะไมเกิน 50ซม.

แลวใชไขควงคอย ๆ ปรับหมุนทวนเข็มนาฬิกาเพื่อใหสัญญาณเอาทพุทลดลงมาเรื่อย ๆ จนเหลือคาประมาณ25ถึง30 (ขณะที่ปรับอยาใหมือไปบังหัวเซ็นเซอรที่กํ าลังปรับจูนอยู) ใหทํ าเชนเดียวกันทั้ง 3 ตัว

ปรับระยะ

ปรับระยะเซ็นเซอรตัวหนา

Page 56: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

56

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

DEFINE LCD_DREG PORTB

DEFINE LCD_DBIT 0DEFINE LCD_RSREG PORTADEFINE LCD_RSBIT 3DEFINE LCD_EREG PORTADEFINE LCD_EBIT 5motr VAR PORTC.2motl VAR PORTC.1cwr VAR PORTC.4cwl VAR PORTC.3start VAR PORTA.4stop_1 VAR PORTB.5speakerVAR PORTC.7dr VAR PORTB.2dl VAR PORTB.0dm VAR PORTB.1eye_l var portb.3eye_r var portb.4front_l var porta.0front_f var porta.1front_r var porta.2rear_l var porta.3rear_r var porta.5mic var portc.0ldr_l var portc.6ldr_r var portc.5light_l var bytelight_r var bytevoice var wordi var bytetime var bytefl var byteff var bytefr var byterl var byterr var byteadcon1=0TRISB = %00100111TRISC = %01100001TRISA = %11111111Low speakergosub stand'-----------------begin: ADCON1 = 0 gosub check_object ADCON1 = 7 lcdout $FE,1,"L",dec fl,$FE,$84,"F",dec ff lcdout $FE,$C0,"R",dec fr pause 100 goto begin end'------- End of Program ------

มีตอหนา 57

Page 57: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

57

เมื่อทดลองเสร็จเรียบรอยแลว ใหถอด LCD ออก และใส Jumper J1 – J4 ไวตามเดิมเพื่อเตรียมทํ าใบงานตอไป

check_object: adcin 0,fl adcin 1,ff adcin 2,fr return'blink_eye: for i = 1 to 2 high eye_l high eye_r pause 150 low eye_l low eye_r pause 150 next ireturn'stand:

Low motrLow motlReturn

''----- End of Subroutine -----

Page 58: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

58

ใบงานที่ 12 การเขียนโปรแกรมใหหุนยนตเคลื่อนไหวตอบสนองกับวัตถุรอบตัวหุน

จุดประสงค 1. เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมใหหุนยนตสามารถเคลื่อนไหวตอบสนองกับวัตถุ รอบตัวหุนเลียนแบบพฤติกรรมของสิ่งมีชีวิต 2. เพื่อศึกษา และปรับแกระยะการตรวจจับใหมีคาที่เหมาะสม กับการใชงาน

อุปกรณและเครื่องมือที่ใช 1. เครือ่งคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว 2. หุนยนต ROBO-1EX

ทฤษฎีพื้นฐานที่เกี่ยวของในการทํ าใหหุนยนตสามารถตรวจจับวัตถุ และตอบสนองกับวัตถุไดรอบตัว จะตองใชตัวตรวจจับวัตถุถึง

6 ตัว คือดานหนา 3 ตัว และดานหลัง 3 ตัว โดยการเขียนโปรแกรมใหหุนยนตยืนอยูนิ่ง ๆ และสแกนตรวจจับระยะวัตถุจากทุกตัวเซ็นเซอรนํ ามาประมวลผลตอเนื่อง หลักการประมวลผล คือจะใชคํ าส่ัง IF .. THEN.. ในการตรวจสอบเงื่อนไขคาระยะจากตัวแปรที่เก็บคาที่เซ็นเซอรแตละตัวตรวจจับได หากเปนไปตามเงื่อนไขใดก็เขียนโปรแกรมบังคับใหหุนยนตเคลื่อนไหวหลบหลีกเสมือนส่ิงมีชีวิตที่มีตามองเห็นวัตถุเขามาใกลได

ขั้นตอนปฏิบัติ1. ปดสวิทช Power เสียบสายอะแด็ปเตอร เสียบสายดาวนโหลด2. พิมพโปรแกรม Compile โปรแกรมลงตัวชิพ เปดสวิทช Power3. การ RUN โปรแกรมโดยกดปุม Start หากหุนยนตเคลื่อนไหวอยูตลอดเวลา ไมหยุดนิ่ง แสดงวา

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

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

Page 59: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

59

motr VAR PORTC.2motl VAR PORTC.1cwr VAR PORTC.4cwl VAR PORTC.3start VAR PORTA.4stop_1 VAR PORTB.5speakerVAR PORTC.7dr VAR PORTB.2dl VAR PORTB.0dm VAR PORTB.1eye_l var portb.3eye_r var portb.4front_l var porta.0front_f var porta.1front_r var porta.2rear_l var porta.3rear_r var porta.5mic var portc.0ldr_l var portc.6ldr_r var portc.5light_l var bytelight_r var bytevoice var wordi var bytetime var bytefl var byteff var bytefr var byterl var byterr var byte'adcon1=0TRISB = %00100111TRISC = %01100001TRISA = %11111111Low speaker

'-----------------begin:

GoSub standIF start = 1 Then beginPause 300

again:IF start = 0 Then again

'gosub blinkinggosub sleepingagain1:

gosub check_object

if (fl > 60 and fl<80) then gosub wake_up else gosub sleeping endif '

Page 60: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

60

if (fr > 60 and fr<80) then gosub wake_up else gosub sleeping endif ' if (ff > 60 and ff<80) then gosub wake_up else gosub sleeping endif ' if (fl > 90) then gosub back_left pause 500 gosub stand

GoSub beep gosub blink_eye gosub sleeping endif if (fr > 90) then gosub back_right pause 500 gosub stand

GoSub beep gosub blink_eye gosub sleeping endif if (ff > 90) then gosub backward pause 400 gosub stand

GoSub beep gosub blink_eye gosub sleeping endif if (rl > 90) and (rr > 90) then gosub twist_right pause 1500 gosub backward pause 500 gosub stand

GoSub beep gosub blink_eye gosub sleeping endif if (rl > 90) then gosub twist_left pause 1700 gosub backward pause 500 gosub stand

GoSub beep gosub blink_eye gosub sleeping endif'

Page 61: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

61

if (rr > 90) then gosub twist_right pause 1700 gosub backward pause 500 gosub stand

GoSub beep gosub blink_eye gosub sleeping endif goto again1 end'------- End of Program ------'===============================blinking: high eye_l high eye_r pause 50 low eye_l low eye_rreturn'check_voice: count mic,500,voice return'check_light: Low ldr_l

Pause 10RCTime ldr_l,0,light_lLow ldr_rPause 10RCTime ldr_r,0,light_rPause 10

return'check_object: adcin 0,fl adcin 1,ff adcin 2,fr adcin 3,rl adcin 4,rr return'sleeping: low eye_l low eye_r return'wake_up: high eye_l high eye_r return' beep: Sound speaker,[100,10,50,10]

Pause 50 Sound speaker,[70,10,50,10]

Low speakerReturn

'

Page 62: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

62blink_eye: for i = 1 to 2 high eye_l high eye_r pause 150 low eye_l low eye_r pause 150 next ireturn'backward:

High motrHigh motlHigh cwrHigh cwlReturn

'stand:

Low motrLow motlReturn

'forward:

High motrHigh motlLow cwrLow cwlReturn

'twist_left:

High motrHigh motllow cwrhigh cwlReturn

'twist_right:

High motrHigh motlhigh cwrlow cwlReturn

'turn_right:

low motrhigh motllow cwrlow cwlReturn

'back_left:

low motrhigh motllow cwrhigh cwlReturn

'

Page 63: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

63

turn_left:high motrlow motllow cwrlow cwlReturn

'back_right:

high motrlow motlhigh cwrlow cwlReturn

'skip_right:

'GoSub twist_rightPause 140GoSub standReturn

'skip_left:

GoSub twist_leftPause 140GoSub standReturn

'----- End of Subroutine -----

Page 64: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

64

ใบงานที่ 13 การเขยีนโปรแกรมใหหุนยนตสามารถเดินหลบหลีกวัตถุที่ขวางหนา

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

2. เพื่อศึกษา และปรับแกระยะการตรวจจับใหมีคาที่เหมาะสม กับการใชงาน

อุปกรณและเครื่องมือที่ใช 1. เครือ่งคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว 2. หุนยนต ROBO-1EX

ทฤษฎีพื้นฐานที่เกี่ยวของในการเขียนโปรแกรมใหหุนยนตสามารถเดินหลบหลีกวัตถุที่ขวางหนาได โดยไมชนวัตถุที่ขวางหนา หรือ

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

ขั้นตอนปฏิบัติ1. ปดสวิทช Power เสียบสายอะแด็ปเตอร เสียบสายดาวนโหลด2. พิมพโปรแกรม Compile โปรแกรมลงตัวชิพ เปดสวิทช Power3. การ RUN โปรแกรมโดยกดปุม Start หุนยนตจะกระพริบตา แลวเดินหนาไปตลอด หากพบวัตถุที่

มาขวางหนาในลักษณะตาง ๆ หุนยนตก็จะหลบหลีกตามเงื่อนไขที่วางไวไปเรื่อย ๆ

โปรแกรมคํ าสั่ง

motr VAR PORTC.2motl VAR PORTC.1cwr VAR PORTC.4cwl VAR PORTC.3start VAR PORTA.4stop_1 VAR PORTB.5speakerVAR PORTC.7dr VAR PORTB.2dl VAR PORTB.0dm VAR PORTB.1

Page 65: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

65

eye_l var portb.3eye_r var portb.4front_l var porta.0front_f var porta.1front_r var porta.2rear_l var porta.3rear_r var porta.5i VAR BYTEfl var byteff var bytefr var byterl var byterr var byte'adcon1=0TRISB = %00100111TRISC = %01100001TRISA = %11111111Low speaker

'-----------------begin:

GoSub standIF start = 1 Then beginPause 300

again:IF start = 0 Then again

'gosub blink_eyegosub forwardagain1:' gosub check_object if (fl > 60) then gosub wake_up gosub stand pause 200 gosub twist_right pause 400 gosub sleeping else gosub forward pause 5 endifif (fr > 60) then gosub wake_up gosub stand pause 200 gosub twist_left pause 400 gosub sleeping else gosub forward pause 5 endifif (ff > 60) then gosub wake_up gosub stand gosub beep pause 200 gosub backward

Page 66: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

66

pause 400 gosub twist_left pause 400 gosub sleeping else gosub forward pause 5 endif gosub stand goto again1 end'========= End of Program ==========='blinking: high eye_l high eye_r pause 50 low eye_l low eye_rreturn'check_object: adcin 0,fl adcin 1,ff adcin 2,fr return'sleeping: low eye_l low eye_r return'wake_up: high eye_l high eye_r return' beep: Sound speaker,[100,10,50,10]

Pause 50 Sound speaker,[70,10,50,10]

Low speakerReturn

'blink_eye: for i = 1 to 2 high eye_l high eye_r pause 150 low eye_l low eye_r pause 150 next ireturn'backward:

High motrHigh motlHigh cwrHigh cwlReturn

Page 67: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

67

skip_left:GoSub twist_leftPause 140GoSub standReturn

'----- End of Subroutine -----

stand:Low motrLow motlReturn

'forward:

High motrHigh motlLow cwrLow cwlReturn

'twist_left:

High motrHigh motllow cwrhigh cwlReturn

'twist_right:

High motrHigh motlhigh cwrlow cwlReturn

'turn_right:

low motrhigh motllow cwrlow cwlReturn

'back_left:

low motrhigh motllow cwrhigh cwlReturn

'turn_left:

high motrlow motllow cwrlow cwlReturn

'back_right:

high motrlow motlhigh cwrlow cwlReturn

'skip_right:

'GoSub twist_rightPause 140GoSub standReturn

'

ตอ

Page 68: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

68

ใบงานที่ 14 การเขียนโปรแกรมตรวจสอบคาระดับความเขมแสงที่มองเห็นได

จุดประสงค 1. เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมตรวจสอบคาระดับความเขมของแสงที่มองเห็นไดออก ที่จอ LCD

2. เพื่อศึกษา และปรับแกมุมและระยะการตรวจจับระดับความเขมแสงใหมีคาที่เหมาะสม กับการใช งานเขียนโปรแกรมประยุกตตอไป

อุปกรณและเครื่องมือที่ใช 1. เครือ่งคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว 2. หุนยนต ROBO-1EX

ทฤษฎีพื้นฐานที่เกี่ยวของในการเขียนโปรแกรมใหหุนยนตสามารถมองเห็นแสงและบังคับใหเคลื่อนไหวตอบสนองกับแหลงแสงได

จะตองมีตัวตรวจจับระดับความเขมแสง คือตัว LDR ซึ่งเปนตัวตานทานที่เปล่ียนคาไปตามความเขมแสง การทํ างาน เราอาศัยคา ค.ต.ท. ของ LDR ไปเปล่ียนคา RC – timesconstant แลวนํ าคา RC-timesconstant ไปเปนคาระดับความเขมแสงแทน คาเอาทพุทที่ไดจะเปนคาสัดสวนผกผันกับระดับความเขมแสง ( รายละเอียดวงจรและการทํ างานอยูหนา 11) กอนการใชงานจะตองปรับมุม LDR ทั้งสองตัวใหทํ ามุมแยกออกจากกันประมาณ30 - 40 องศา เพื่อให LDR ทั้งสองตัวสามารถใหคาสัญญาณเอาทพุทที่แยกแยะตํ าแหนงของแหลงกํ าเนิดแสงได

ขั้นตอนปฏิบัติ1. ถอดสายแพที่ขั้วตอ CN5 ออก แลวเอาสายตอ LCD ใสแทน2. ปลด Jumper J1 – J4 ออกใหเสียบเก็บไวขาเดียว3. ปดสวิทช Power เสียบสายอะแด็ปเตอร เสียบสายดาวนโหลด4. พิมพโปรแกรม Compile โปรแกรมลงตัวชิพ เปดสวิทช Power5. ใชไขควงคอย ๆ ปรับความเขมตัวอักขระที่จอ LCD โดยปรับที่ทริมพ็อท BRIGHTNESS

LDR-R

LDR-L

ตองปรับมุม LDR ทั้ง 2 ตัวใหทํ ามุมแยกจากจากกัน 30 - 40 องศา

Page 69: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

69

6. ใชหลอดไฟแสงสวางขนาด 60 วัตต มาวางตรงหนาตัวหุนยนต พอดี ที่ระยะหางประมาณ 40-50ซม. ตรวจสอบดูความเขมแสงที่จอ LCD หากมีคามไมเทากันใหปรับมุมตัว LDR ใหมีคาทั้งซายและขวาเทา ๆกัน จะทํ าใหหุนยนตไมเกิดอาการตาเอียง ทดลองนํ าดวงไฟเลื่อนเขาใกลตัว LDR จะพบวาคาเอาทพุทที่ไดจะลดลงเปนสัดสวนตามไปดวย ใหบันทึกคาระดับความเขมแสง ตามระยะหางคาตาง ๆ ไว เพื่อการเขียนโปรแกรมประยุกตในใบงานตอไป

โปรแกรมคํ าสั่ง

เมื่อปฏิบัติตามใบงานเสร็จเรตามเดิม และเสียบ Jumper

DEFINE LCD_DREG PORTBDEFINE LCD_DBIT 0DEFINE LCD_RSREG PORTADEFINE LCD_RSBIT 3DEFINE LCD_EREG PORTADEFINE LCD_EBIT 5ldr_l VAR PORTC.6ldr_r VAR PORTC.5light_l VAR BYTElight_r VAR BYTEadcon1 = 7main:

Low ldr_lPause 10RCTime ldr_l,0,light_lLow ldr_rPause 10RCTime ldr_r,0,light_rPause 10'LCDOut $FE,1,DEC light_lPause 50LCDOut $FE,$C0,DEC light_rPause 200GoTo main

End

ียบรอยแลว ใหถอดจอ LCD ออก ใสสายตอเซ็นเซอรชุดหลังตัวหุนเขากับ CN5 J1 – J4 ใวตามเดิม

Page 70: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

70

ใบงานที ่ 15 การเขียนโปรแกรมใหหุนยนตเดินเคลื่อนไหวตอบสนองกับแหลงแสง

จุดประสงค 1. เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมใหหุนยนตสามารถมองเห็นแหลงแสงและเคลื่อนไหว ตอบสนองกับแหลงแสงในลักษณะตาง ๆ ได 2. เพื่อศึกษา และปรับแกมุมและระยะการตรวจจับระดับความเขมแสงใหมีคาที่เหมาะสม กับการใช

งานเขียนโปรแกรมประยุกตตอไป

อุปกรณและเครื่องมือที่ใช 1. เครือ่งคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว 2. หุนยนต ROBO-1EX

ทฤษฎีพื้นฐานที่เกี่ยวของคาที่บันทึกไวตามใบงานที่ 14 จะนํ ามาใชในการเขียนโปรแกรมดังนี้คือ เมื่อกดปุม Start ขณะอยูหาง

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

โปรแกรมคํ าสั่งdm VAR PORTB.1eye_l var portb.3eye_r var portb.4front_l var porta.0front_f var porta.1front_r var porta.2rear_l var porta.3rear_r var porta.5mic var portc.0ldr_l var portc.6ldr_r var portc.5light_l var bytelight_r var bytevoice var wordi var bytetime var bytefl var byteff var bytefr var byterl var byterr var byte

Page 71: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

71

'adcon1=0TRISB = %00100111TRISC = %01100001TRISA = %11111111Low speaker

'begin:

GoSub standIF start = 1 Then beginPause 300

again:IF start = 0 Then again

'time =0gosub sleepingagain1: gosub check_light

IF ((light_r> 17) AND (light_r<40)) OR ((light_l> 17) AND (light_l<40))Then gosub wake_up

Pause 10 GoSub forward IF (light_l < light_r) Then Pause 10 GoSub turn_right EndIF IF (light_l > light_r) Then Pause 10 GoSub turn_left EndIF Else IF(light_r<14) OR (light_l<14) Then gosub wake_up Pause 10 GoSub backward Pause 1000 time = time +1 IF time = 3 Then Pause 10 GoSub twist_left Pause 1500 GoSub forward Pause 1500 GoSub twist_right Pause 1500 GoSub stand time = 0 EndIF Else Pause 10 GoSub stand EndIF EndIF goto again1 end'------------ End of Program ------------

มีตอหนา 72

Page 72: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

72

blinking: high eye_l high eye_r pause 50 low eye_l low eye_rreturn'-----------------------check_voice: count mic,500,voice return'-----------------------check_light: Low ldr_l

Pause 10RCTime ldr_l,0,light_lLow ldr_rPause 10RCTime ldr_r,0,light_rPause 10

return'------------------------check_object: adcin 0,fl adcin 1,ff adcin 2,fr adcin 3,rl adcin 4,rr return'-------------------------sleeping: low eye_l low eye_r return'-------------------------wake_up: high eye_l high eye_r return'-------------------------beep: Sound speaker,[100,10,50,10]

Pause 50 Sound speaker,[70,10,50,10]

Low speakerReturn

'--------------------------blink_eye: for i = 1 to 2 high eye_l high eye_r pause 150 low eye_l low eye_r pause 150 next ireturn'---------------------------

มีตอหนา 73

Page 73: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

73

twist_right:High motrHigh motlhigh cwrlow cwlReturn

'---------------------------turn_right:

low motrhigh motllow cwrlow cwlReturn

'---------------------------back_left:

low motrhigh motllow cwrhigh cwlReturn

'---------------------------turn_left:

high motrlow motllow cwrlow cwlReturn

'---------------------------back_right:

high motrlow motlhigh cwrlow cwlReturn

'---------------------------skip_right:

'GoSub twist_rightPause 140GoSub standReturn

'---------------------------skip_left:

GoSub twist_leftPause 140GoSub standReturn

'-- End of Subroutine ----

Page 74: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

74

ใบงานที่ 16 การเขียนโปรแกรมแสดงแถบความถี่คลื่นเสียงคํ าสั่งที่เปนคํ าพูด

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

อุปกรณและเครื่องมือที่ใช 1. เครือ่งคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว 2. หุนยนต ROBO-1EX

ทฤษฎีพื้นฐานที่เกี่ยวของในการเขียนโปรแกรมแสดงคาแถบความถี่คล่ืนคํ าส่ังที่เปนเสียงคํ าพูดผาน จอ LCD ไดนั้น ตองมี

ไมโครโฟนซึ่งเปนตัวรับสัญญาณเสียงคํ าพูด แลวแปลงเปนสัญญาณพัลซ ( รายละเอียดการทํ างานของวงจรศึกษาในหนา 10 ) เขาไปเก็บไวในตัวแปร โดยใชคํ าส่ัง COUNT ในภาษา PIC BASIC แลวนํ าคาที่อยูในตัวแปรแสดงออกทางจอ LCD เพื่อวิเคราะหและศึกษาคาประมาณแถบความถี่คํ าส่ังที่เปนเสียงคํ าพูด และนํ าขอมูลนี้ไปเปนเงื่อนไขในการเขียนโปรแกรมสั่งการทํ างานของหุนยนตดวยเสียงคํ าพูดอีกทีหนึ่ง

ขั้นตอนปฏิบัติ1. ถอดสายแพที่ขั้วตอ CN5 ออก แลวเอาสายตอ LCD ใสแทน2. ปลด Jumper J1 – J4 ออกใหเสียบเก็บไวขาเดียว3. ปดสวิทช Power เสียบสายอะแด็ปเตอร เสียบสายดาวนโหลด4. พิมพโปรแกรม Compile โปรแกรมลงตัวชิพ เปดสวิทช Power5. ใชไขควงคอย ๆ ปรับความเขมตัวอักขระที่จอ LCD โดยปรับที่ทริมพ็อท BRIGHTNESS6. เมื่อ RUN โปรแกรม จะเห็นตัวเลขความถี่สัญญาณจาก MIC ปรากฏที่จอ LCD ใหพูดที่ตองการ

กํ าหนดใหเปนคํ าส่ัง เชน “ โร – โบะ” เพื่อเปนคํ าส่ังใหหุนยนตเดินหนามาหาเจาของ หรือ “ ชี้วววว” เพื่อเปนคํ าส่ังใหหุนยนตถอยหลังกลับไป เปนตน หากพูดแลวตัวเลขที่จอ LCD ไมเปล่ียนแปลง แสดงวาเรายังปรับ GainSensitivity ยังไมเหมาะสม ใหใชไขควงคอย ๆ ปรับทริมพ็อท MIC GAIN ที่อยูใกลกับขั้วตอแบตเตอรี่ ในบอรดคอนโทรลเลอรใหอยูในตํ าแหนงใกล ๆ จุดกึ่งกลางจะทํ าใหการแปลงสัญญาณเสียงเปนสัญญาณพัลซมีความไวและความละเอียดสูง จะทํ าใหการตรวจจับความถี่เปนไปอยางแมนยํ าขึ้น และใหทํ าซํ้ า ๆ กับคํ าส่ังเพื่อใหไดคาประมาณที่ใกลเคียงกันมากที่สุด เพื่อที่จะนํ าคาประมาณนี้ไปกํ าหนดเปนคาเงื่อนไขชวงความถี่ ที่แยกแยะคํ าส่ังบังคับใหหุนยนตทํ างาน ในใบงานตอไป

Page 75: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

75

โปรแกรมคํ าสั่ง

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

if mic = 1 then count mic,500,voice

endif

เมื่อปฏิบัติตามใบงานเสร็จเรียบรอยแลว ใหถอดจอ LCD ออก ใสสายตอเซ็นเซอรชุดหลังตัวหุนเขากับ CN5ตามเดิม และเสียบ Jumper J1 – J4 ใวตามเดิม

DEFINE LCD_DREG PORTBDEFINE LCD_DBIT 0DEFINE LCD_RSREG PORTADEFINE LCD_RSBIT 3DEFINE LCD_EREG PORTADEFINE LCD_EBIT 5ml_dir VAR PORTC.3ml_on VAR PORTC.1mr_dir VAR PORTC.4mr_on VAR PORTC.2mic VAR PORTC.0eye_r VAR PORTB.4voice VAR wordadcon1 = 7Low ml_onLow mr_onmain: if mic = 1 then

count mic,500,voice endif LCDOut $FE,1,DEC voice GoTo main End'--------------------------

คํ าส่ังที่เปนเงื่อนไขการ Sync กับการทํ างานของคํ าส่ัง count

Page 76: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

76

ใบงานที่ 17 การเขียนโปรแกรมใหหุนยนตเคลือ่นไหวตอบสนองเสียงคํ าสั่งที่เปนคํ าพูด

จุดประสงค เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมใหหุนยนตเคลื่อนไหวตอบสนองเสียงคํ าส่ังที่เปนคํ าพูด

อุปกรณและเครื่องมือที่ใช 1. เครือ่งคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว 2. หุนยนต ROBO-1EX

ทฤษฎีพื้นฐานที่เกี่ยวของจากใบงานที่ 16 เราจะนํ าคาชวงความถี่มาเปนเงื่อนไขคํ าส่ังบังคับใหหุนยนตเคลื่อนไหวตอบสนองตาม

คํ าส่ังดวยเสียงคํ าพูด โดยพูดวา “โร – โบะ” จะบังคับใหหุนยนตสงเสียงรองและเดินเขามาหา และถาพูดวา“ชี้วววว...” จะเปนคํ าส่ังบังคับใหหุนยนตเดินถอยหลัง แลวสงเสียงขู

โปรแกรมคํ าสั่งmotr VAR PORTC.2motl VAR PORTC.1cwr VAR PORTC.4cwl VAR PORTC.3start VAR PORTA.4stop_1 VAR PORTB.5speakerVAR PORTC.7dr VAR PORTB.2dl VAR PORTB.0dm VAR PORTB.1eye_l var portb.3eye_r var portb.4front_l var porta.0front_f var porta.1front_r var porta.2rear_l var porta.3rear_r var porta.5mic var portc.0voice var wordi VAR BYTEk var bytefl var byteff var bytefr var byterl var byterr var byte'adcon1=0TRISB = %00100111TRISC = %01100001TRISA = %11111111Low speaker

Page 77: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

77gosub sleepingbegin:

GoSub standIF start = 1 Then beginPause 300

again:IF start = 0 Then again

gosub blink_eyegosub sleepingagain1: if mic = 1 then count mic,500,voice ENDIF' Say SHeeeeeiiiiiiwwhh... if (voice > 1100) then gosub backward pause 2000 gosub stand gosub blinking gosub voice2 gosub voice4 endif'' Say SAAAAiiii.. if (voice > 300) and (voice < 600) then pause 100 gosub turn_left pause 1000 gosub stand endif' Say KWAAAAAAA.. if (voice > 190) and (voice < 250) then pause 100 gosub turn_right pause 1000 gosub stand endif' Say Rooo Bo.. if (voice > 50) and (voice < 150) then pause 5 gosub beep gosub forward pause 1700 gosub stand gosub blink_eye endif goto again1 end'========= End of Program ========='-----------------blinking: high eye_l high eye_r pause 50 low eye_l low eye_rreturn'

Page 78: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

78

wake_up: high eye_l high eye_r return' beep: Sound speaker,[100,10,50,10]

Pause 50 Sound speaker,[70,10,50,10]

Low speakerReturn

'voice2: freqout speaker,2000,2500 return'voice4: dtmfout speaker,[0,2,5] return'blink_eye: for i = 1 to 2 high eye_l high eye_r pause 150 low eye_l low eye_r pause 150 next ireturn'backward:

High motrHigh motlHigh cwrHigh cwlReturn

'stand:

Low motrLow motlReturn

'forward:

High motrHigh motlLow cwrLow cwlReturn

'twist_left:

High motrHigh motllow cwrhigh cwlReturn

'twist_right:

High motrHigh motlhigh cwrlow cwlReturn

Page 79: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

79back_left:

low motrhigh motllow cwrlow cwlReturn

'turn_right:

low motrhigh motllow cwrhigh cwlReturn

'turn_left:

high motrlow motllow cwrlow cwlReturn

'back_right:

high motrlow motlhigh cwrlow cwlReturn

Page 80: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

80

ใบงานที่ 18 การเขียนโปรแกรมใหหุนยนตสามารถควบคุมความเร็วของการเดิน

จุดประสงค เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมใหหุนยนตสามารถควบคุมความเร็วของมอเตอรที่ใช ขับใหหุนยนตเดินไดดวยวิธีของ PWM

อุปกรณและเครื่องมือที่ใช 1. เครือ่งคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว 2. หุนยนต ROBO-1EX

ทฤษฎีพื้นฐานที่เกี่ยวของการควบคุมความเร็วของมอเตอรเปนปจจัยที่สํ าคัญในการบังคับใหหุนยนตสามารถเดินหรือเคลื่อนไหว

เร็ว หรือชาไดตามตองการ เนื่องจากขา I/O ของไมโครคอนโทรลเลอรไมสามารถสงเอาทพุทเปนสัญญาณแบบอะนาล็อกได ดังนั้นเราจํ าเปนตองใชกรรมวิธีทางดานสวิทชิ่งที่มีสัญญาณ ON กับ OFF สงออกมาปอนใหวงจรขับมอเตอรใหสามารถควบคุมความเร็วของมอเตอรได วิธีการที่นํ าเอาคาบเวลาของสัญญาณ ON กับ OFF สงออกมาปอนใหวงจรขับมอเตอรใหสามารถควบคุมความเร็วของมอเตอร นี้เราเรียกวา การควบคุมแบบ PWM( PWM : Pulse Width Modulation)

รูปที่ 28 แสดงความสัมพันธระหวางเปอรเซ็นตดิวตี้ไซเกิล กับแรงเคลื่อนเอาทพุทที่ขับมอเตอรหลักในการควบคุมแบบ PWM เราจะตองกํ าหนดใหคาบเวลา Cycle หรือความถี่คงที่ จากสมการตามรูปที่ 28

Page 81: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

81

จะพบวา ถาเราลดคา % Duty cycle จะทํ าใหแรงเคลื่อนเอาทพุทที่ไปขับมอเตอรมีคาลดลง ทํ าใหมอเตอรหมุนชาลง และในทางตรงกันขาม หากเราเพิ่มคา % Duty cycle มากยิ่งขึ้นก็จะทํ าใหแรงเคลื่อนเอาทพุทที่ไปขับมอเตอรมีคาเพิ่มขึ้น ทํ าใหมอเตอรหมุนเร็วขึ้น หมายความวาเราสามารถควบคุมความเร็วของมอเตอรไดโดยการปรับคา % Duty cycle นั่นเอง ซึ่งเราสามารถควบคุมความเร็วของมอเตอรไดตั้งแตหยุดหมุน ไปจนถึงความเร็วสูงสุดไดโดยการปรับคา % Duty cycle ตั้งแต 0% ไปจนถึง 100%

ไมโครคอนโทรลเลอรตระกูล PIC ขนาด 28 ขา เบอร 16F73 16F873 16F876 เหลานี้จะมีขา I/O ที่สงสัญญาณ PWM แบบตอเนื่องโดยฮารดแวร สํ าหรับงานควบคุมความเร็วมอเตอร หรือโหลดดีซีโดยเฉพาะอยู 2ขา คือ RC1 กับ RC2 คํ าส่ังในภาษา PICBASIC ที่ใชคือ HPWM duty cycle, frequency คํ าส่ังนี้เมื่อส่ังไปแลว สามารถทํ างานตามลํ าพังได ในขณะที่โปรแกรมสามารถประมวลผลคํ าส่ังอื่น ๆ อยู ในโปรแกรม คํ าส่ังนี้จะเขียนไวใน Subroutine หรือโปรแกรมยอย เมื่อตองการจะเปลี่ยนความเร็วมอเตอรก็เพียงสงคา dutycycle คาใหมไปที่ Subroutine ของ HPWM ทํ าใหงายตอการควบคุม

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

โปรแกรมคํ าสั่ง

duty_r var byteduty_l var bytemotr VAR PORTC.2motl VAR PORTC.1cwr VAR PORTC.4cwl VAR PORTC.3start VAR PORTA.4stop_1 VAR PORTB.5speakerVAR PORTC.7dr VAR PORTB.2dl VAR PORTB.0dm VAR PORTB.1eye_l var portb.3eye_r var portb.4i var bytefront_l var porta.0front_f var porta.1front_r var porta.2rear_l var porta.3rear_r var porta.5fl var byteff var bytefr var byterl var byterr var byte

Page 82: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

82

'adcon1=7TRISB = %00100111TRISC = %01100001TRISA = %11111111Low speakerlow eye_llow eye_rduty_l = 255duty_r = 255gosub drive0'begin: ADCON1 = 0 gosub check_object if ff > 180 then ff = 180 i = 180 - ff duty_l = i duty_r = i GoSub forward1 goto begin end'------------- End of Program -----------beep: Sound speaker,[120,10,110,10,100,10]

Pause 100 Sound speaker,[90,5,95,5,100,10]

Pause 100Low speakerReturn

'blink_eye: for i = 1 to 5 high eye_l high eye_r pause 100 low eye_l low eye_r pause 100 next ireturn'backward:

High cwrHigh cwlGoSub driveReturn

'forward1:

Low cwrLow cwlGoSub driveReturn

'

Page 83: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

83

'turn_left:

low cwrlow cwlduty_l = 0

duty_r = 255GoSub driveReturn

'drive: HPWM 1,duty_l,800 HPWM 2,duty_r,800 Returndrive0: HPWM 1,0,800 HPWM 2,0,800

Returncheck_object: adcin 0,fl adcin 1,ff adcin 2,fr Return

Page 84: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

84

ใบงานที่ 19 การเขียนโปรแกรมใหหุนยนตเดนิตามเสนโดยใชการควบคุมความเร็วPWM

จุดประสงค เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมใหหุนยนตเดินตามเสนแทร็กโดยใชกรรมวิธีควบคุม ความเร็วของมอเตอรขับแบบ PWM

อุปกรณและเครื่องมือที่ใช 1. เครือ่งคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว 2. หุนยนต ROBO-1EX

ทฤษฎีพื้นฐานที่เกี่ยวของตามใบงานที่ 10 เปนใบงานที่บังคับใหหุนยนตเดินตามเสนแทร็กดวยวิธีการบังคับใหมอเตอรทั้งซาย

และขวา ใหหมุน - หยุดหมุนในลักษณะ ON – OFF เพื่อบังคับใหหุนยนตเดินเลี้ยวไปตามตองการ แตในใบงานที่19 นี้จะใชวิธีการบังคับเล้ียวดวยวิธีการเรง – หรี่ ความเร็วมอเตอรแทนการใหหมุน - หยุดหมุนในลักษณะ ON– OFF ดวยวิธีการเขียนโปรแกรมไปปรับเพิ่ม – ลดคา duty cycle ของสัญญาณ PWM ที่จะสงไปขับมอเตอรทั้ง2 ตัว ตามเงื่อนไขในใบงานที่ 10 ทั้ง 9 กรณี

ขั้นตอนปฏิบัติ1. ปดสวิทช Power เสียบสายอะแด็ปเตอร เสียบสายดาวนโหลด2. พิมพโปรแกรม Compile โปรแกรมลงตัวชิพ เปดสวิทช Power3. การ RUN โปรแกรมโดยกดปุม Start หุนยนตสงเสียงบีฟ แลวเดินหนาไปตามเสนแทร็กตามเงื่อนไข

ตาง ๆ โดยใชกรรมวิธีเรง – หรี่ความเร็วมอเตอรแบบ PWM ดังนั้นในการปรับใหเลยวมาก หรือนอยสามารถควบคุมไดดวยคา duty cycle

โปรแกรมคํ าสั่ง

motr VAR PORTC.2motl VAR PORTC.1cwr VAR PORTC.4cwl VAR PORTC.3start VAR PORTA.4stop_1 VAR PORTB.5speakerVAR PORTC.7dr VAR PORTB.2dl VAR PORTB.0dm VAR PORTB.1i VAR BYTEduty_l var byteduty_r var byte

Page 85: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

85

adcon1 = 7TRISB = %00100111TRISC = %01100001TRISA = %11111111Low speakerduty_l = 255duty_r = 255'begin:

GoSub standIF start = 1 Then begin Pause 300

again:IF start = 0 Then again

'GoSub beepduty_l = 200duty_r = 200

GoSub forward Pause 300again1: IF (dl=0) AND (dm=1)AND(dr=1) Then duty_l = 0 duty_r = 200 GoSub drive EndIF

IF (dl=1) AND (dm=1)AND(dr=0) Then duty_l = 200 duty_r = 0 GoSub drive EndIF

IF (dl=1) AND (dm=1) AND (dr=1) Then duty_l = 150 duty_r = 150 GoSub backward pause 20 EndIF

IF (dl=1) AND (dm=0)AND(dr=1) Then duty_l = 255 duty_r = 255 GoSub forward Pause 100 EndIF

IF (dl=1) AND (dm=0)AND(dr=0) Then duty_l = 200 duty_r = 120 GoSub drive pause 20 EndIF

Page 86: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

86

IF (dl=0) AND (dm=0)AND(dr=1) Then duty_l = 120 duty_r = 200 GoSub drive pause 20 EndIF

IF (dl=0) AND (dm=0)AND(dr=0) Then pause 50

duty_l = 0 duty_r = 0 GoSub drive EndIF GoTo again1End

beep: Sound speaker,[100,10,50,10]

Pause 50 Sound speaker,[70,10,50,10]

Low speakerReturn

'drive: HPwm 1,duty_l,800 HPwm 2,duty_r,800

return'backward:

High cwrHigh cwlgosub driveReturn

'stand: duty_l = 0 duty_r = 0 gosub drive

Return'forward:

Low cwrLow cwlgosub driveReturn

'twist_right:

High cwrLow cwlgosub driveReturn

'twist_left:

Low cwrHigh cwlgosub driveReturn

Page 87: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

87

หมายเหตุ โปรแกรมนี้เปนเพียงตัวอยาง ซึ่งบางสวนอาจจะทํ างานไมไดดี ผูเขียนโปรแกรมอาจตองปรับคาคาบ เวลา ในคํ าส่ัง PAUSE และคา duty cycle ใหเหมาะสม และระดับพลังงานในแบตเตอรี่จะมีผลใน การทํ างานดวย

'turn_left:

duty_l = 0duty_r = 255

gosub driveReturn

'turn_right:

duty_l = 255duty_r = 0gosub driveReturn

'skip_right:

GoSub twist_leftPause 140GoSub standReturn

'skip_left:

GoSub twist_rightPause 140GoSub standReturn

Page 88: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

88

ใบงานที่ 20 การเขียนโปรแกรมใหหุนยนตเดินเกาะไปกับขางกํ าแพง

จุดประสงค เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมใหหุนยนตเดินรักษาระยะหางระหวางกํ าแพงกับตัวหุน โดยใชกรรมวิธีควบคุมความเร็วของมอเตอรขับแบบ PWM

อุปกรณและเครื่องมือที่ใช 1. เครือ่งคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว 2. หุนยนต ROBO-1EX

ทฤษฎีพื้นฐานที่เกี่ยวของในการเขียนโปรแกรมใหหุนยนตสามารถเดินเกาะเรียบรักษาระยะหางระหวางตัวหุนกับขางกํ าแพงใหคง

ที่ไดตลอดเวลานั้น เทากับวาเราไดสอนใหหุนยนตมีความฉลาดพอที่จะมองหาวัตถุที่อยูขาง ๆ อาศัยเปนตัวบอกทางใหเดินเรียบไปตามขางกํ าแพงได ดวยวิธีการนี้เราจะใชเซ็นเซอรตรวจจับระยะวัตถุดานหนาดานใดดานหนึ่งเปนตัวตรวจจับระยะเพื่อนํ ามาประมวลผลสงคาดิวตี้ไซเกิลที่เหมาะสมมาขับมอเตอรที่งสองตัวใหหุนยนตสามารถเดินหนาเลี้ยวเกาะไปตามกํ าแพงโดยรักษาระยะหางอยูตลอดเวลาได ซึ่งในหลักการนี้อาศัยหลักการควบคุมแบบปอนกลับ ( Feedback Control )

การทํ า

ตรวจจับระยะวัตเหมาะสม ส่ังควระหวางกํ าแพงกความคลาดเคลื่อ

รูปที่ 29 แสดงการทํ างานของระบบควบคุมแบบปอนกลับของการเดินโดย รักษาระยะหางระหวางกํ าแพงกับตัวหุนงานของโปรแกรมจะเริ่มจากการกดปุม Start บังคับใหหุนยนต็เดินหนาไปยางชา ๆ ขณะที่มีการถุโดยอาศัยตัวตรวจจับดานซาย นํ ามาเปนเงื่อนไขคํ านวนหาระยะหางเพื่อกํ าหนดคาดิวตี้ไซเกิลที่บคุมความเร็วของมอเตอรทั้ง 2 ตัว ใหสามารถเดินไปขางหนาพรอมกับการปรับรักษาระยะหางับตัวหุนใหไดตามคาที่ไดกํ าหนดใวในโปรแกรมตลอดระยะเวลาที่หุนเดิน โดยยอมใหมีคานไดตามที่กํ าหนดไวในโปแกรม

Page 89: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

89

ขั้นตอนป

123

โปรแกรม

รูปที่ 30 แสดงคาความผิดพลาดที่ยอมใหมีได( Clearance ) ในการเดินรักษาระยะหาง ระหวางกํ าแพงกับตัวหุนยนตฏิบัติ

. ปดสวิทช Power เสียบสายอะแด็ปเตอร เสียบสายดาวนโหลด

. พิมพโปรแกรม Compile โปรแกรมลงตัวชิพ เปดสวิทช Power

. การ RUN โปรแกรมโดยวางตัวหุนไวขางกํ าแพง แลวกดปุม Startคํ าสั่ง

motr VAR PORTC.2motl VAR PORTC.1cwr VAR PORTC.4cwl VAR PORTC.3start VAR PORTA.4stop_1 VAR PORTB.5speakerVAR PORTC.7dr VAR PORTB.2dl VAR PORTB.0dm VAR PORTB.1eye_l var portb.3eye_r var portb.4front_l var porta.0front_f var porta.1front_r var porta.2rear_l var porta.3rear_r var porta.5mic var portc.0ldr_l var portc.6ldr_r var portc.5light_l var bytelight_r var bytevoice var wordi var bytetime var bytefl var byteff var bytefr var byterl var byterr var byteduty_l var byteduty_r var byte

Page 90: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

90

'adcon1=0TRISB = %00100111TRISC = %01100001TRISA = %11111111Low speakerduty_l = 128duty_r = 128'-----------------begin:

IF start = 1 Then beginPause 300

again:IF start = 0 Then again

'again1:

gosub check_object if (fl > 100 and fl<120 ) then duty_l = 128:duty_r = 128:gosub forward if (fl < 100) then duty_r = 70:duty_l = 128:gosub forward if (fl > 120 ) then duty_r = 120:duty_l = 70:gosub forward goto again1

if (fr > 90) then gosub stand pause 400 duty_l = 128 duty_r = 128 gosub backward pause 400 gosub twist_left pause 400 else duty_l = 120 duty_r = 120 gosub forward endifif (ff > 90) then gosub stand pause 400 duty_l = 128 duty_r = 128 gosub backward pause 400 gosub twist_right pause 400 else duty_l = 120 duty_r = 120 gosub forward endif goto again1 end'------- End of Program ------beep: Sound speaker,[100,10,50,10]

Pause 50 Sound speaker,[70,10,50,10]

Low speakerReturn

Page 91: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

91

'-------------------------------check_object: adcin 0,fl adcin 1,ff adcin 2,fr return'drive: HPwm 1,duty_l,800 HPwm 2,duty_r,800 return'backward:

High cwrHigh cwlgosub driveReturn

'stand: duty_l = 0 duty_r = 0 gosub drive

Return'forward:

Low cwrLow cwlgosub driveReturn

'twist_right:

High cwrLow cwlgosub driveReturn

'twist_left:

Low cwrHigh cwlgosub driveReturn

'turn_left:

duty_l = 0duty_r = 255

gosub driveReturn

'turn_right:

duty_l = 255duty_r = 0gosub driveReturn

'skip_right:

GoSub twist_leftPause 140GoSub standReturn

'

skip_left:GoSub twist_rightPause 140GoSub standReturn

ตอ

Page 92: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

92

ใบงานที่ 21 การเขียนโปรแกรมใหหุนยนตแบบมีลอขับเคลื่อนใหวิ่งตามเสนแทร็ก

จุดประสงค เพื่อเรียนรู และฝกทักษะการเขียนโปรแกรมบังคับใหหุนยนตแบบมีลูกลอขับเคลื่อนดวยมอเตอร ไฟตรง (DC Motor) วิ่งไปเกาะไปตามเสนแทร็กในลักษณะการควบคุมแบบ ON – OFF

อุปกรณและเครื่องมือที่ใช 1. เครือ่งคอมพิวเตอรที่ติดตั้งโปรแกรมพัฒนาระบบไมโครคอนโทรลเลอร ตระกูล Microchip ดวย PIC BASIC PRO เรียบรอยแลว 2. หุนยนต ROBO-2EX

ทฤษฎีพื้นฐานที่เกี่ยวของในการออกแบบหุนยนตแบบมีลอขับเคลื่อน เพื่อใหสามารถควบคุมใหตัวหุนเคลื่อนที่ไดทุกทิศทาง จะ

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

ตามรูปทมีการทรออกแบบ

แบบเดิน

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

6 ขา เนื่องจากจะมีตัวแปรเกื่ยวกับมวลนํ้ าหนักของตัวหุนที่ทํ าใหเกิดแรงเฉื่อยเขามาเกี่ยวของดวย

Page 93: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

93

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

รูปที่ 2 - 3

เซ็นเซอรวัตถุหนา เซ็นเซอรวัตถุหลัง

เส

แบตเตอรี่เซ็นเซอรแ เซ็นเซอรเสียง

สง

แสดงรายละเอียดหุนยนตจริงที่ใชปฏิบัติตามใบงานทดลอง Model Robo-2EX ของ S.A.N. ELECTRONICS

ลอประคองลอขับเซ็นเซอรแทร็ก

โครงตัวหุนยนต

ารองปริ้นโลหะ

ลอประคอง ลอขับ

มอเตอรแบบคูซาย-ขวา เกียรทดแบบคูซาย-ขวา

เซ็นเซอรแทร็กซาย-กลาง-ขวา

Page 94: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

94

การประกอบเกียรบ็อกซกับมอเตอรขับเนื่องจากเกียรบ็อกซที่ใชเปนชุดประกอบของยี่หอ TAMIYA ที่มีความยืดหยุน สามารถจะประกอบใหมี

หลายอัตราทดตามความตองการของการนํ าไปใชงาน สํ าหรับอัตราทดความเร็วสํ าหรับใชกับหุนยนตตัวนี้ขอแนะนํ าใหใชอัตราทด 344.2 : 1 ซึ่งจะทํ าใหมีความเร็วและแรงบิดในการขับเคลื่อนที่เหมาะสมและดีที่สุด การปรับอัตราทดทํ าไดโดยการเลือกประกอบเฟองเขากับเกียรบ็อกซ (รายละเอียดการประกอบใหศึกษาดูจากคูมือการประกอบที่ใหมากับชุดเกียร ) สํ าหรับการประกอบเกียรที่มีอัตราทด 344.2 : 1 ที่จะใชกับหุนยนตตามใบงาน มีขั้นตอนตอไปนี้

1. ใสบุชทองเหลืองตาไกที่รูของแกนใสเพลาทั้ง 8 ตัว2. ประกอบเฟองเกียรชุดโดยรอยเขาที่แกนเพลา ทั้ง 2 เพลาตามรูปที่ 63. ใสปลอกพลาสติก(สีเหลือง) สํ าหรับล็อกเพลาตัวส้ัน ที่เพลากลมสั้นทั้งสองขาง ตามรูปที่ 64. ใสตัวล็อกเพลาขับหกเลี่ยม พรอมสกรูยึด เขากับเฟองขับแลวใชประแจ L หกเลี่ยมขันยึดใหแนน5. จัดระยะเฟองเกียร ใหเหมาะสมแลวประกอบเขากับหองเกียร และใชสกรูยึดใหแนน ตามรูปที่ 66. ทดลองหมุนฟนเกียรดูวาทํ างานเรียบรอยดีหรือไม7. สวมเฟองขับที่แกนมอเตอรกอนตามรูปที่ 68. ใสมอเตอรเขากับหองเกียรทั้ง 2 ตัวโดยเอาขั้วตอสายไฟหันออกจากกัน9. ใสปลอกล็อกมอเตอร

ตํ าแหนงยึดสกรู

รูปที่ 4 เกียรบอกซเมื่อประกอบเสร็จ รูปที่ 5 ตํ าแหนงขันสกรูยึดเกียรบ็อกปลอกพลาสติกสีเหลืองตัวส้ัน เฟองสีนํ้ าเงิน 2 ตัว

ตัวล็อกเพลาขับทองเหลืองหกเหลี่ยมพรอมสกรูล็อกเพลา

เฟองดอกจอก

เฟองหัวเพลามอเตอรสีมวงเพลาขับหกเหลี่ยม

ปลอกล็อกมอเตอร

รูปที่ 6 การประกอบเกียรบอกซ

Page 95: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

95

การประกอบตัวหุนการประกอบตัวหุนควรตองทํ าตามลํ าดับตอไปนี้ คือ1. ประกอบหองเกียรแบบที่ใชอัตราทดมากที่สุดตามรูปที่แนบมาที่กลอง2. ประกอบหองเกียรยึดเขากับโครงตัวหุนตามรูปที่ 2-3 โดยใสน็อตยึดจากโครงตัวหุนดานบนลงลาง3. ประกอบลอประคองเขากับตัวหุนโดยยึดที่ดานลางของตัวหุนตามรูปที่ 2-34. ใสลูกลอขับหองเกียรตามรูปที่ 2-35. ยึดกระบะถานติดกับดานบนตัวหุน โดยใชตะปูเกลียวตามรูปที่ 2-36. ยึดแผนบอรด CPU และบอรดเซ็นเซอรเขากับตัวหุนตามรูปที่ 2-37. ตอสายแบตเตอรี่ และสายมอเตอรทั้งสองตัวเขากับขั้วตอที่บอรด CPU

ทดสอบการทํ างานกลไกเบื้องตน1. ใสแบตเตอรี่ในกระบะถาน2. นํ าหุนยนตวางกับพื้น เปดสวิทช เมื่อยังไมไดใสโปรแกรมไวใน CPU หุนยนตจะตองเดินหนาไป

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

ทดสอบการทํ างานดวยซอฟทแวรเบื้องตนโปรแกรมตอไปนี้ จะบังคับหุนยนตใหเคลื่อนที่ในทาพื้นฐาน เพื่อทดสอบการทํ างานระหวางซอฟทแวร

และฮารดแวรใหสัมพันธกัน การทํ างานของโปรแกรมที่ใชทดสอบจะเปนไปตามใบงานที่ 9 และการปฏิบัติใหโปรแกรมซอสโคดตามใบงานที่ 9 เขาไปที่ตัวไมโครคอนโทรลเลอร หากผลการทํ างานออกมาตามที่โจทกกํ าหนดแสดงวาตอฮารดแวรทํ างานสัมพันธสอดคลองกับซอฟทแวร

โปรแกรมคํ าสั่งที่บังคับใหหุนยนตแบบใชลูกลอเดินตามเสนแทร็กmotr VAR PORTC.2motl VAR PORTC.1cwr VAR PORTC.4cwl VAR PORTC.3start VAR PORTA.4stop_1 VAR PORTB.5speaker VAR PORTC.7dr VAR PORTB.2dl VAR PORTB.0dm VAR PORTB.1eye_l var portb.3eye_r var portb.4i VAR BYTE'adcon1=7TRISB = %00100111TRISC = %01100001TRISA = %11111111Low speaker

มีตอหนาถัดไป

Page 96: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

96

'begin:

GoSub standIF start = 1 Then begin

Pause 300again:

IF start = 0 Then again'

GoSub beep gosub blink_eye GoSub forward Pause 300again1: IF (dl=0) AND (dm=1)AND(dr=1) Then gosub stand pause 8 GoSub turn_left Pause 3 EndIF

IF (dl=1) AND (dm=1)AND(dr=0) Then gosub stand pause 8 GoSub turn_right Pause 3 EndIF

IF (dl=1) AND (dm=1) AND (dr=1) Then gosub stand pause 8 GoSub backward pause 12 EndIF

IF (dl=0) AND (dm=1) AND (dr=0) Then gosub stand pause 8 GoSub backward pause 10 EndIF

IF (dl=1) AND (dm=0)AND(dr=1) Then GoSub forward Pause 100 EndIF

IF (dl=1) AND (dm=0)AND(dr=0) Then gosub stand pause 8 GoSub turn_right pause 3 EndIF IF (dl=0) AND (dm=0)AND(dr=1) Then gosub stand pause 8 GoSub turn_left pause 3 EndIF

IF (dl=0) AND (dm=0)AND(dr=0) ThenPause 200

GoSub stand EndIF GoTo again1End‘--------------------------- End of Main Program -----------------------‘‘--------------------------- Subroutine Program Start here ---------beep: Sound speaker,[100,10,50,10]

Pause 100 Sound speaker,[100,10,50,10]

Pause 100Low speakerReturn

'

Page 97: รูปที่ 1 ส วน ... - ctc.ac.th MCU_PIC/PDF/Jobsheet_ROBO-1EX.pdf · 2 รูปที่ 3 ส วนประกอบของบอร ดเซ็นเซอร

97blink_eye: for i = 1 to 5 high eye_l high eye_r pause 300 low eye_l low eye_r pause 300 next ireturn'backward:

High motrHigh motlHigh cwrHigh cwlReturn

'stand:

Low motrLow motlReturn

'forward:

High motrHigh motlLow cwrLow cwlReturn

'twist_left:

High motrHigh motllow cwrhigh cwlReturn

'twist_right:

High motrHigh motlhigh cwrlow cwlReturn

'turn_right:

low motrhigh motllow cwrlow cwlReturn

'back_left:

low motrhigh motllow cwrhigh cwlReturn

'turn_left:

high motrlow motllow cwrlow cwlReturn

'back_right:

high motrlow motlhigh cwrlow cwlReturn

skip_right:'GoSub twist_rightPause 140GoSub standReturn

'skip_left:

GoSub twist_leftPause 140GoSub standReturn

‘‘------------------------ End of Subroutine ------------------

ตอ