Professional Documents
Culture Documents
4._Project Report VLC_AFT18_20160615
4._Project Report VLC_AFT18_20160615
บทที่ 1
บทนา
1.1 ความสาคัญของปัญหา
เนื่ องด้วยโลกเราในปั จจุ บนั เทคโนโลยีไ ด้เข้ามาเป็ นส่ วนหนึ่ ง ภาคอุ ตสาหกรรมของ
ประเทศ ซึ่ งมีการขยายตัวเป็ นจานวนมาก โดยเครื่ องจักรถูกนาเข้ามาช่ วยในกระบวนการต่างๆ ใน
อุ ตสาหกรรม ไม่ ว่า จะเป็ นขั้นตอนการผลิ ต ขั้นตอนการบรรจุ ล งในหี บ ห่ อต่ า งๆ หรื อแม้แ ต่
ขั้นตอนการขนส่ งก็เช่ นกัน ซึ่ งเครื่ องจักรต่างๆ ที่ใช้ในกระบวนการเหล่านั้น มีความจาเป็ นต้องมี
ระบบสมองกลเข้ามาช่วยในการควบคุมการทางาน ซึ่ งเรามักจะใช้ PLC (Programmable Logic
Controller) ในการควบคุมเครื่ องจักรต่างๆ และการสื่ อสารกันของเครื่ องจักร จึงมีความสาคัญมาก
เพื่อให้กระบวนการต่า งๆเป็ นไปได้อย่า งถู ก ต้องและรวดเร็ ว[1] โดยมักจะใช้การสื่ อสารด้วย
โปรโตคอลมอดบัส ซึ่ งเป็ นการสื่ อสาร ข้อมูลอินพุต / เอาต์พุต และรี จิสเตอร์ ภายใน PLC ซึ่ งถูก
คิดค้นโดย บริ ษทั Modicon (ปั จจุบนั คือบริ ษทั Schneider Electric) และโปรโตคอลมอดบัสนี้ ได้
เป็ นที่ ยอมรั บกันอย่างกว้างขวาง ในการติ ดต่อสื่ อสารที่ เป็ นแบบ Network Protocol อัน
เนื่องมาจากมอดบัสเป็ นระบบเปิ ด ไม่มีค่าใช้จ่าย รวมทั้งเชื่ อมต่อและพัฒนาง่าย และยังสามารถนา
โปรโตคอลนี้ ไปใช้งานร่ วมกับอุปกรณ์ อื่นๆ เช่ น Power Meter, Remote I/O, PLC เป็ นต้น
นอกจากนี้ โปรโตคอลมอดบัส ยังสามารถรองรับและใช้งานร่ วมกับ Application จาพวก SCADA
และ HMI Software ได้อีกด้วย
ในการส่ งสัญญาณการสื่ อสารไร้สายในโรงงานอุตสาหกรรมที่มีเครื่ องจักรกลขนาดใหญ่
มักจะพบกับปั ญหาสัญญาณรบกวนที่เกิ ดจากคลื่ นแม่เหล็กไฟฟ้ า การส่ งข้อมูลในบริ เวณดังกล่าว
อาจพบกับปั ญหาความผิดพลาดของข้อมูลเนื่ องจากสัญญาณรบกวน การติดต่อสื่ อสารแบบไร้สาย
ด้วยแสงที่มองเห็น VLC (Visible Light Communication) จึงเป็ นทางเลือกที่ใช้เป็ นตัวส่ งผ่าน
สัญญาณข้อมูลดิจิตอลที่มีศกั ยภาพและมีความน่าสนใจในการพัฒนาเนื่ องจากการสื่ อสารด้วยแสงที่
มองเห็นอาจหลอด LEDs (Light Emitting Diodes) ในการกาเนิ ดแสงพร้อมกับการส่ องสว่าง ที่
ไม่ได้รับผลกระทบจากสัญญาณรบกวนที่ มาจากคลื่ นแม่เหล็กไฟฟ้ า ดังนั้นการพัฒนาระบบการ
ติดต่อแบบไร้สายเพื่อใช้ในการสื่ อสารไร้สายในโรงงานอุตสาหกรรมที่มีสัญญาณรบกวนจากคลื่น
แม่เหล็กไฟฟ้ าจึ งมีความจาเป็ น และเป็ นที่ มาของการนาการติ ดต่อสื่ อสารแบบไร้ สายด้วยแสงที่
มองเห็ นได้ มาใช้งานร่ วมกับ โปรโตคอลมอดบัส ในโครงงานชิ้ นนี้ เพื่ อที่ จะแก้ปั ญหาการเดิ น
2
1.2 วัตถุประสงค์ของโครงงาน
- เพื่อที่จะศึก ษาวิธี ก ารใช้ง านรวมทั้ง ข้อดี และข้อเสี ย ของการติ ดต่ อสื่ อสารแบบ
โปรโตคอลมอดบัสผ่านแสงที่มองเห็นได้
- เพื่อที่ จะศึ กษาระบบการติดต่อสื่ อสารด้วยโปรโตคอลมอดบัสที่ ใช้กบั อุปกรณ์ ต่างๆ
ในภาคอุตสาหกรรม
- เพื่อที่จะพัฒนารู ปแบบการติดต่อสื่ อสารของอุปกรณ์ ให้มีความสะดวกรวดเร็ วมาก
ยิง่ ขึ้น
1.3 ขอบเขตของโครงงาน
- มีชุดจาลองการสื่ อสารด้วยโปรโตคอลมอดบัส RTU ผ่านแสงที่มองเห็นได้
- สามารถรับสัญญาณ RS-485 เพื่อนาไปใช้ในชุดการสื่ อสาร
- ระยะห่างการสื่ อสารไร้สายไม่นอ้ ยกว่า 3 เมตร
- มีอุปกรณ์แม่ข่าย 1 ตัว และลูกข่าย 3 ตัว ที่สามารถใช้กบั ตัวกระตุน้ ที่แตกต่างกันได้
- มีชุดคู่มือที่อ่านง่าย และมีรายละเอียดต่างๆของโครงงาน
3
- ได้รับความรู ้เกี่ยวกับระบบโปรโตคอลมอดบัส
- ได้รับความรู ้เกี่ยวกับการติดต่อสื่ อสารแบบไร้สายด้วยแสงที่มองเห็นได้ (VLC)
- ได้มีชุดทดลองสาหรับเรี ยนรู้ไว้ให้ผทู้ ี่สนใจระบบการติดต่อสื่ อสารแบบไร้สายด้วย
แสงที่มองเห็นได้ ได้ทาการศึกษาและทดลอง
4
บทที่ 2
ทฤษฎีที่เกีย่ วข้ อง
มอดบัสเป็ นการสื่ อสารที่ อาศัย หลัก การแม่ข่ ายและลู กข่า ย สื่ อสารแบบอนุ กรมที่เป็ น
โครงข่าย (Serial Communication Network ) และจะมีเพียงแม่ข่ายเพียงตัวเดียวเท่านั้น ที่ควบคุม
การสื่ อสารบนโครงข่าย ที่ มีลูกข่ายจานวนหลายตัว และตามมาตรฐานนั้น สามารถมี ลูกข่ายใน
โครงข่ายได้สูงสุ ดอยูท่ ี่ 247 ตัว การสื่ อสารโดยโปรโตคอลมอดบัสจะต้องเริ่ มต้นการติดต่อสื่ อสารที่
แม่ข่ายเสมอ โดยที่ ตวั ลูกข่ายจะไม่สามารถตอบสนองหรื อส่ งข้อมูลใดๆได้ ถ้าไม่มีการร้ องขอ
จากแม่ข่าย และระหว่างตัวลูกข่ายด้วยกันนั้น จะไม่มีการสื่ อสารระหว่างกัน แม่ข่ายสามารถส่ งการ
ร้องขอไปยังลูกข่ายได้ 2 ลักษณะ คือ
1. แบบโหมดยูนิคาสต์ (Unicast Mode) ในลักษณะนี้ แม่ข่ายจะใช้หมายเลขแบบระบุตวั
ลูกข่าย หลังจากที่ลูกข่ายรับข้อมูล ก็จะประมวลผลการร้องขอนั้นของแม่ข่าย จากนั้นจะทางาน
ตามชุ ดข้อมูล นั้นของแม่ ข่า ย และจะตอบกลับโดยที่ เฟรมข้อมูลจะมี หมายเลขของลู กข่ ายตอบ
กลับไปยังแม่ข่ายด้วยในโหมดนี้ และการสื่ อสารนั้นจะมี 2 ชุ ดข้อมูล คือ 1. ข้อมูลการร้องขอ
จากแม่ข่าย และ 2. ข้อมูลการตอบสนองกลับจากลูกข่าย โดยที่แต่ละข้อมูลการสื่ อสารนั้นต้องมี
หมายเลขของลูกข่ายอยูใ่ นช่วงจาก 1 ถึง 247 และไม่ซ้ ากัน จึงจะมีความอิสระจากลูกข่ายตัวอื่นๆ
5. สถาปัตยกรรมของมาตรฐาน ประกอบด้วย
- ชั้นฟิ สิ กคอล (Physical Layer : PHY) กาหนดมาตรฐานในส่ วนประกอบของ
อุปกรณ์รับ–ส่ งแสง และกลไกการควบคุมทางวงจรต่างๆ
- ชั้นแมท (Medium Access control Layer : MAC)
รู ปแบบ PHY I
- เพื่อใช้งานภายนอกอาคาร
- ใช้กบั ความเร็ วของการสื่ อสารทีไม่สูงมากนักในช่วงประมาณหลักร้อย Kbps
- ใช้เทคนิคการกล้ า OOK (On-Off Keying : OOK) และเทคนิคการกล้ า VPPM
(Variable Pulse Position Modulation : VPPM)
รู ปแบบ PHY II
- เพื่อใช้งานภายในอาคาร
- ใช้กบั ความเร็ วของการสื่ อสารระดับกลางในช่วงประมาณหลักสิ บ Mbps
- ใช้เทคนิคการกล้ า OOK (On-Off Keying : OOK) และเทคนิคการกล้ า VPPM
(Variable Pulse Position Modulation : VPPM)
รู ปแบบ PHY III
- เพื่อใช้การประยุกต์ใช้กบั การสื่ อสารที่มีจานวนตัวรับและตัวส่ งหลายตัว
- ใช้กบั ความเร็ วของการสื่ อสารอยูใ่ นช่วงประมาณหลักสิ บ Mbps
- ใช้เทคนิคการกล้ า CSK (Color-Shift Keying : CSK)
โปรโตคอล คื อ โครงสร้ า งของอิ น เตอร์ เ ฟซด้า นบนจุ ด เชื่ อ มต่ อ (a) ที่ ก าหนดโดย
มาตรฐานนี้ โปรโตคอลที่ประกอบด้วยโครงสร้างของสองระนาบ ในการส่ งมอบระนาบข้อมูล
และระนาบรหัสระบุตวั ตน ในจานวนการส่ งออกนั้นชั้นฟิ สิ กคอล (L1: PHYSICAL) และชั้นเฟรม
ของ ชั้นที่สอง (L2: FRAME) คือชั้นที่ใช้ร่วมกันระนาบข้อมูลและระนาบรหัสระบุตวั ตน ส่ วนชั้น
ที่ สามและชั้นที่ อยู่เหนื อขึ้ นไปมี การแบ่ งออกเป็ นระนาบข้อมู ลและระนาบรหัส ระบุ ตวั ตน ให้
ข้อมูลของแสงที่สามารถมองเห็นได้จะได้รับการจัดตาแหน่งในของบุคคลที่สามชั้น ( L3 : ID ) และ
การส่ ง ข้อมูล โดยตรงจากรหัส ระบุ ตวั ตนที่ ได้รับการสร้ างขึ้ นมาจากข้อมู ลที่ ช้ นั (L3: DATA)
เป็ นไปได้ที่จะใช้ช้ นั ข้อมูลและชั้นรหัสระบุตวั ตนพร้อมกันในครั้งเดียวในชั้นที่สองได้
21
บทที่ 3
การออกแบบทางโครงงาน
3.1.2 เลือกอุปกรณ์ ต่อเสริมฟั งก์ ชันพอร์ ตสื่ อสารมอดบัส RS-485 ให้ กบั PLC
อุ ป กรณ์ ต่อเสริ มฟั งก์ชันยี่ห้อ Mitsubishi รุ่ น MFX3S-30MR/ES เป็ นอุ ปกรณ์ ต่อเสริ ม
ฟังก์ชนั สาหรับ PLC ที่เป็ นตัวแปลงพิเศษสาหรับการสื่ อสารแบบ RS-485 ที่ใช้โปรโตคอลมอดบัส
คุณสมบัติ
- แปลงสัญญาณ RS-485/UART
- ชิพ Driver MAX13487 (Auto Direction)
- สามารถส่ งสัญญาณได้ระยะไกลสู งสุ ด 1.2 km.
- อัตราการสื่ อสารสู งสุ ด 500kbps
- อัตรากระแสรับ-ส่ งสัญญาณ 250µA
- แรงดันไฟเลี้ยงที่ 5 VDC
คุณสมบัติ
- เป็ นชุดอุปกรณ์ที่สามารถเขียนโปรแกรมควบคุมการทางานของ
ไมโครคอนโทรลเลอร์ได้ Arduino Pro Micro (mini Leonardo)
- มีความถี่นาฬิกา 16 MHz
- มีอุปกรณ์ส่งข้อมูลส่ องสว่างด้วยหลอด LED High Brightness 1W แสงสี ขาวที่มี
ค่าความเข้มการส่ องสว่าง 100 lm
- มีอุปกรณ์รับข้อมูล Photodiode SFH213 ที่มีพ้นื ที่รับสัญญาณ 1 mm 2 และการ
ตอบสนอง 0.65 A/W และช่วงของความยาวคลื่นที่ 400 nm ถึง 1100 nm
38
3.3.2 เขียนโปรแกรมชุ ดคาสั่ งให้ VLC-CP1223 Development board v1.0 สื่ อสารด้ วย
โปรโตคอลมอดบัสบนการติดต่ อสื่ อสารผ่านแสงทีม่ องเห็นได้ CP1223
การเขียนโปรแกรมให้ VLC-CP1223 Development board v1.0 สื่ อสารด้วยโปรโตคอล
มอดบัสบนการติดต่อสื่ อสารผ่านแสงที่มองเห็นได้ CP1223 นั้น จาเป็ นต้องดาวน์โหลด Library ที่
ชื่อว่า SARGMET_VLC_CP1223 เข้ามาในซอฟแวร์ Arduino IDE เพื่อใช้ในการเขียนโปรแกรมให้
บอร์ด Arduino ทางานได้ และสามารถนาตัวอย่างโปรแกรมมาประยุกต์ใช้งานได้ โดยมีข้ นั ตอนการ
เขียนโปรแกรมดังต่อไปนี้
1. ทาการเปิ ดโปรแกรม Arduino IDE ขึ้นมา
2. ทาการเลือกเมนู Sketch > Include Library > Add .ZIP Library….
3. เลือกไฟย์ที่เก็บ Library : SARGMET_VLC_CP1223 ไว้ แล้วทาการกด Open
4. เลือกตัวอย่างจากเมนู File > Examples > VLC-CP1223_QuickStarterCode
39
3.3.3 เขียนโปรแกรมรับค่ าชุ ดข้ อมูลโปรโตคอลมอดบัส และส่ งข้ อมูลด้ วย VLC CP1223
เขียนโปรแกรมรับค่าชุดข้อมูลโปรโตคอลมอดบัส และส่ งข้อมูลด้วย VLC CP1223 จะใช้
วิธีนาตัวอย่างโปรแกรม EX1_Transmitter มาประยุกต์ใช้งาน ซึ่ งมีการเขียนโปรแกรมดังนี้
1. ประกาศตัวแปลสาหรับเก็บข้อมูลโปรโตคอลมอดบัสที่รับเข้ามาชนิ ด unsigned char
แบบ array ขนาด 17 ข้อมูล เช่น unsigned char msg[17]={}; เป็ นต้น
2. เขียนคาสัง่ ตรวจสอบการรับข้อมูลผ่าน serial port เช่น if (Serial1.available()) เป็ นต้น
3. เขียนเงื่อนไขสาหรับเก็บข้อมูลไปยังตัวแปลที่ได้ประกาศไว้ เช่น
for(j=0;j<16;j++)
{
msg[j] = (unsigned char)Serial1.read();
}
3.3.4 เขียนโปรแกรมรับข้ อมูลด้ วย VLC CP1223 และส่ งค่ าชุ ดข้ อมูลโปรโตคอลมอดบัส
เขียนโปรแกรมรับข้อมูลด้วย VLC CP1223 และส่ งค่าชุดข้อมูลโปรโตคอลมอดบัส จะใช้
วิธีนาตัวอย่างโปรแกรม EX2_Receiver_Serial มาประยุกต์ใช้งาน ซึ่ งมีการเขียนโปรแกรมดังนี้
1. ประกาศตัวแปลสาหรับเก็บข้อมูล VLC ที่รับเข้ามาชนิด unsigned char แบบ array
ขนาด 17 ข้อมูล เช่น unsigned char VLCin[17]={}; เป็ นต้น
2. เขียนคาสัง่ ตรวจสอบการรับข้อมูล VLC เช่น if(VLCread()==1)เป็ นต้น
3. เขียนเงื่อนไขสาหรับเก็บข้อมูลไปยังตัวแปลที่ได้ประกาศไว้ เช่น
for(int x=1;x<9;x++)
{
VLCin = PAYLOAD_IN[x];
}
บทที่ 4
การทดลองและผลการทดลอง
4.1.2 ขั้นตอนการทดลอง
1. กาหนดชุดรหัสคาสั่งโปรโตคอลมอดบัสที่ตอ้ งการทดสอบ
- 01 อ่านค่าบิต (Read Coils)
- 02 อ่านค่าอินพุต (Read Discrete Inputs)
- 04 อ่านค่าข้อมูล (Read Input Register)
- 05 สั่งบิตทางาน (Write Single Coil)
- 15 สั่งบิตทางานแบบชุด (Write Multiple Coils)
2. เขียนโปรแกรมให้ PLC รับ-ส่ งข้อมูลมอดบัสตามรหัสคาสัง่ ที่ได้กาหนดไว้
3. ทาการติดตั้งชุดทดลอง PLC เข้ากับโครงขาตั้งสาหรับทดลองในห้องปฏิบตั ิการ
4.1.3 วิจารณ์ผลการทดลอง
จากการทดลอง ทาให้สามารถเข้าใจถึ งการเขียนโปรแกรมใช้งาน Mitsubishi PLC
ส าหรั บ การก าหนดค่ า พารามิ เ ตอร์ และการใช้ง านฟั ง ก์ ชั่น ADPRW ให้ส ามารถสื่ อ สารด้ว ย
โปรโตคอลมอดบัสระหว่า งแม่ ข่า ย และลู ก ข่า ย พร้ อมทั้งการต่ อสายสัญญาณสื่ อสารเชื่ อมโยง
โครงข่ายด้วย RS-485 ได้ ซึ่ งจากผลการทดลองแสดงให้เห็นว่า ชุ ดทดลอง PLC สามารถใช้งาน
โปรโตคอลมอดบัสรหัสคาสั่ง 01, 02, 05 และ 15 ได้
44
4.2.1 วัตถุประสงค์
เพื่อทดสอบการติดต่อสื่ อสารด้วยโปรโตคอลมอดบัสกับบอร์ ด Arduino ที่ได้ทาการเขียน
โปรแกรมจัดการข้อมูลโปรโตคอลมอดบัส
4.2.2 ขั้นตอนการทดลอง
1. กาหนดชุดรหัสคาสั่งโปรโตคอลมอดบัสที่ตอ้ งการทดสอบ
- 01 อ่านค่าบิต (Read Coils)
- 02 อ่านค่าอินพุต (Read Discrete Inputs)
- 04 อ่านค่าข้อมูล (Read Input Register)
- 05 สัง่ บิตทางาน (Write Single Coil)
- 15 สั่งบิตทางานแบบชุด (Write Multiple Coils)
2. ทาการเขียนโปรแกรมให้บอร์ด Arduino แม่ข่ายทางานตามรหัสคาสั่งที่กาหนด
3. ทาการติดตั้งชุดทดสอบ Arduino ร่ วมกับอุปกรณ์แปลงสัญญาณ 3B-RS485
4. ทาการทดสอบการติดต่อสื่ อสาร
5. ทาการบันทึกผลการทดสอบ
6. ทาการสรุ ปผลการทดสอบ
4.2.3 วิจารณ์ผลการทดลอง
จากการทดลอง ทาให้ส ามารถเข้าใจถึ ง การเขี ย นโปรแกรมคาสั่ ง ให้กบั บอร์ ด Arduino
สามารถสื่ อ สารด้ว ยโปรโตคอลมอดบัส และสามารถใช้ ร่ ว มกับ อุ ป กรณ์ แ ปลงสั ญ ญาณ RS-
485/UART ด้วยบอร์ ดแปลงสัญญาณ 3B-RS485 ได้ ซึ่ งจากผลการทดลองแสดงให้เห็ นว่าชุ ด
ทดลอง บอร์ด Arduino สามารถใช้งานโปรโตคอลมอดบัสคาสั่ง 01, 02, 04, 05 และ 15 ได้
46
4.3.2 ขั้นตอนการทดลอง
1. กาหนดชุดรหัสคาสั่งโปรโตคอลมอดบัสที่ตอ้ งการทดสอบ
- 05 สั่งบิตทางาน (Write Single Coil)
- 15 สั่งบิตทางานแบบชุด (Write Multiple Coils)
2. เขียนโปรแกรมให้ PLC รับ-ส่ งข้อมูลมอดบัสตามรหัสคาสั่งที่ได้กาหนดไว้
3. ทาการติดตั้งชุดทดลอง PLC เข้ากับชุดการเรี ยนรู ้ VLC-CP1223 Development board
v1.0 ผ่านพอร์ ต RS-485
ภาพที่ 4.5 การติดตั้งชุดทดลอง PLC เข้ากับชุดการเรี ยนรู ้ VLC-CP1223 Development board v1.0
47
4. ทาการทดสอบการติดต่อสื่ อสาร
5. ทาการบันทึกผลการทดสอบ
6. ทาการสรุ ปผลการทดสอบ
4.3.3 วิจารณ์ผลการทดลอง
จากการทดลอง ทาให้สามารถเข้าใจถึงการเขียนโปรแกรมคาสั่งให้กบั ชุ ดการเรี ยนรู ้ VLC-
CP1223 Development board v1.0 สามารถสื่ อสารด้วยโปรโตคอลมอดบัส ร่ วมกับการสื่ อสารผ่าน
แสงที่มองเห็นได้ CP1223 และสามารถใช้ร่วมกับอุปกรณ์แปลงสัญญาณ RS-485/UART ด้วยบอร์ ด
แปลงสัญญาณ 3B-RS485 ได้ ซึ่ งจากผลการทดลองแสดงให้เห็ นว่าชุ ดทดลองสามารถใช้งาน
โปรโตคอลมอดบัสคาสั่ง 05 และ 15 ได้ ซึ่ งช่วยเพิ่มประสิ ทธิ ภาพในการสื่ อสารให้กบั โปรโตคอล
มอดบัส ให้สามารถมีระยะในการส่ งข้อมูลไกลขึ้น มีโครงข่ายเพิ่มขึ้น เนื่ องจากการสื่ อสารผ่านแสง
ที่มองเห็นได้ CP1223 นั้น มีลกั ษณะเป็ นบอร์ ดคราส ที่ไม่ตอ้ งการตอบรับข้อมูลตอบกลับจากลู ก
ข่าย ทาให้สามารถมี จานวนลู กข่ายได้มากขึ้ น และมี ขอ้ เสี ยคื อการสื่ อสารผ่านแสงที่ มองเห็ นได้
CP1223 นั้น มีการกาหนดความเร็ วในการสื่ อน้อยกว่าโปรโตคอลมอดบัส ทาให้เกิ ดข้อจากัดมาก
ขึ้น
48
4.4.2 ขั้นตอนการทดลอง
1. จัดเตรี ยมอุปกรณ์ที่จะใช้ในการทดลอง
- ชุดทดลอง VLC-CP1223 Development board v1.0
- ลักซ์มิเตอร์
- คอมพิวเตอร์
- ตลับเมตร
2. ทาการเขียนโปรแกรมสาหรับส่ งข้อมูลเพื่อทดสอบ โดยเขียนโปรแกรมกาหนดจานวน
ครั้งในการส่ งข้อมูล ให้มีจานวนครั้งที่ 10, 20, 30, 40, 50 และ 60 ครั้ง
จานวนครงที
ั้ ร่ ับได้ในทีม ี สงสว่าง 300-400 ล ักซ ์
่ แ
30
10
ั้ ร่ ับได้
20 20
จานวนครงที
10 30
40
0
25 75 125 175 225 275 325 50
ระยะความสูง (ซม.) 60
จานวนครงที
ั้ ร่ ับได้ในทีม ี สงสว่างน้อยกว่า 10 ล ักซ ์
่ แ
30
10
ั้ ร่ ับได้
20 20
จานวนครงที
10 30
40
0
25 75 125 175 225 275 325 50
ระยะความสูง (ซม.) 60
จานวนครงที
ั้ ร่ ับได้ ทีม ี สงสว่าง 300-400 ล ักซ ์
่ แ
15
ั้ ร่ ับได้
10
จานวนครงที
25
5
50
0 75
25 75 125 175 225 275 325
ทีร่ ะยะร ัศมี (ซม.)
จานวนครงที
ั้ ร่ ับได้ทม ี สงสว่างน้อยกว่า 10 ล ักซ ์
ี่ แ
15
ั้ ร่ ับได้
10
จานวนครงที
25
5
50
0 75
25 75 125 175 225 275 325
ทีร่ ะยะร ัศมี (ซม.)
4.4.3 วิจารณ์ผลการทดลอง
จากการทดลองแสดงให้เห็นว่าชุดทดลอง VLC-CP1223 Development board v1.0 นั้นได้มี
การแก้ไขปั ญหาผลกระทบจากแสงรบกวนภายนอกในระดับที่สามารถใช้งานในสภาวะการทางาน
ปกติในพื้นที่ปิด ที่มีแสงจากแหล่งกาเนิดแสงจากหลอดไฟ
4.5.1 วัตถุประสงค์
เพื่อศึกษาผลกระทบที่เกิดขึ้นจากแสงภายนอก ที่มีผลกับการสื่ อสารผ่านแสงที่มองเห็นได้
รวมทั้งประสิ ทธิ ภาพของอุปกรณ์ ตวั รับข้อมูลผ่านแสงที่มองเห็นได้น้ ี อีกด้วย และยังเป็ นการทราบ
ถึงข้อจากัดในการนาชุ ดทดลอง VLC-CP1223 Development board v1.0ไปติดตั้งใช้งานจริ งได้อีก
ด้วย
4.5.2 ขั้นตอนการทดลอง
1. จัดเตรี ยมอุปกรณ์ที่จะใช้ในการทดลอง
- ชุดทดลอง VLC-CP1223 Development board v1.0
- ลักซ์มิเตอร์
- คอมพิวเตอร์
- ตลับเมตร
- โคมไฟ
2. ทาการเขียนโปรแกรมสาหรับส่ งข้อมูลเพื่อทดสอบ โดยเขียนโปรแกรมกาหนดจานวน
ครั้งในการส่ งข้อมูล ให้มีจานวนครั้งที่ 30 ครั้ง
การทดลองแสงรบกวนภายนอกระยะความสูงในแนวตรง
2500
100
2000
้ (ล ักซ์)
200
1500 300
แสงรวมทีเ่ กิดขึน
400
1000 600
800
500
1000
0 1500
30 40 50 60 70 80 90 100 2000
ระยะความสูง (ซม.)
4.5.3 วิจารณ์ผลการทดลอง
จากการทดลองแสดงให้เห็นว่าชุ ดทดลอง VLC-CP1223 Development board v1.0 นั้นมี
ข้อจากัดในการสื่ อสาร ในสถานที่ที่มีแสงรบกวนภายนอก ซึ่ งการนาไปติดตั้งใช้งานนั้น จาเป็ นต้อง
คานึงถึงแสงรบกวนจากภายนอกด้วย
56
4.6.1 วัตถุประสงค์
เพื่อศึกษาสภาวะการรับสัญญาณของอุปกรณ์ตวั รับชนิดมีวงจรขยายสัญญาณในตัว และใน
ลักษณะต่างๆ เช่ น IC TSL12S เพื่อประกอบการตัดสิ นใจเลือกใช้งานอุปกรณ์รับสัญญาณแสงที่
มองเห็นได้ในโครงงานชิ้นนี้
4.6.2 ขั้นตอนการทดลอง
1. จัดเตรี ยมอุปกรณ์ที่จะใช้ในการทดลอง
- IC TSL12S
- LED แสงสี ขาว
- ตัวต้านทานขนาด 250 Ω
- Oscilloscope
- ตลับเมตร
2. ทาการทดลองส่ งสัญญาณด้วยหลอด LED 1 หลอด ในพื้นที่มืด และติ ดตั้งตัวรั บ
สัญญาณที่ระยะ 4, 8, 12, 16 และ 20 ซม.
3. ติดตั้ง Oscilloscope กับสัญญาณเอาต์พุตของตัวรับ
4. อ่านค่าสัญญาณ และบันทึกผลลงในตาราง
4.6.3 วิจารณ์ผลการทดลอง
จากการทดลองแสดงให้เห็นถึ งผลกระทบจากแสงสว่างอื่น มีผลต่อการติดต่อสื่ อสารผ่าน
แสงที่มองเห็นได้ ที่ทาให้ตวั รับไม่สามารถแยกแยะสัญญาณข้อมูลที่ส่งเข้ามาที่ตวั รับได้ เนื่ องจาก
วงจรขยายสัญญาณภายในของอุปกรณ์ตอบสนองสัญญาณแสงนั้น มีการขยายที่ไม่สามารถกาหนด
อัตราการขยายได้ จึงทาให้เกิดข้อจากัดของการนาไปใช้งานในสถานที่ที่มีแสงภายนอกรบกวน
60
บทที่ 5
สรุปผลการทาโครงงาน
เอกสารอ้างอิง
ภาคผนวก
#include <modbus.h>
#include <modbusDevice.h>
#include <modbusRegBank.h>
#include <modbusSlave.h>
/* PINS
Add more registers if needed
Digital input pins 2,3,4,5,6,7
Digital output pins 8,9,12,13
Analog output pins 10,11 (PWM)
Analog input pins 0,1,2,3,4,5
*/
modbusDevice regBank;
modbusSlave slave;
int AI0,AI1,AI2,AI3,AI4,AI5;
void setup()
{
regBank.setId(1); ///Set Slave ID
regBank.add(9);
regBank.add(12);
regBank.add(13);
//Analog input registers
regBank.add(30001);
regBank.add(30002);
regBank.add(30003);
regBank.add(30004);
regBank.add(30005);
regBank.add(30006);
//Analog Output registers
regBank.add(40010);
regBank.add(40011);
slave._device = ®Bank;
slave.setBaud(9600);
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(6,INPUT);
pinMode(7,INPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
}
void loop(){
while(1){
71
//Digital Input
byte DI2 = digitalRead(2);
if (DI2 >= 1)regBank.set(10002,1);
if (DI2 <= 0)regBank.set(10002,0);
byte DI3 = digitalRead(3);
if (DI3 >= 1)regBank.set(10003,1);
if (DI3 <= 0)regBank.set(10003,0);
byte DI4 = digitalRead(4);
if (DI4 >= 1)regBank.set(10004,1);
if (DI4 <= 0)regBank.set(10004,0);
byte DI5 = digitalRead(5);
if (DI5 >= 1)regBank.set(10005,1);
if (DI5 <= 0)regBank.set(10005,0);
byte DI6 = digitalRead(6);
if (DI6 >= 1)regBank.set(10006,1);
if (DI6 <= 0)regBank.set(10006,0);
byte DI7 = digitalRead(7);
if (DI7 >= 1)regBank.set(10007,1);
if (DI7 <= 0)regBank.set(10007,0);
//Digital output
int DO8 = regBank.get(8);
if (DO8 <= 0 && digitalRead(8) == HIGH)digitalWrite(8,LOW);
if (DO8 >= 1 && digitalRead(8) == LOW)digitalWrite(8,HIGH);
int DO9 = regBank.get(9);
if (DO9 <= 0 && digitalRead(9) == HIGH)digitalWrite(9,LOW);
if (DO9 >= 1 && digitalRead(9) == LOW)digitalWrite(9,HIGH);
int DO12 = regBank.get(12);
if (DO12 <= 0 && digitalRead(12) == HIGH)digitalWrite(12,LOW);
if (DO12 >= 1 && digitalRead(12) == LOW)digitalWrite(12,HIGH);
72
AI5 = analogRead(5);
delay(10);
AI5 = analogRead(5);
regBank.set(30006, (word) AI5);
delay(10);
//Analog output
word AO10 = regBank.get(40010);
analogWrite(10,AO10);
delay(10);
word AO11 = regBank.get(40011);
analogWrite(11,AO11);
delay(10);
slave.run();
}
}
74
/*
Example 1 VLC-CP1223 Course
Transmit Multi VLC-CP1223 DATA
created 10 NOV 2015
modified 22 NOV 2015
By. Kata Jaruwongrungsee
Credit:
This work used the VLC-CP1223 driver-code VLC_CP1223_QSC.h
"VLC-CP1223 QUICK STARTER CODE", Kata Jaruwongrungsee, CC-BY
Which is licensed under a Creative Commons Attribution 4.0 International License.
To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/
*/
void setup() {
startVLC_OUT(5); //SET VLC_out PIN (default = 5)
//PWM PIN IS NEEDED (3,5,6,9,10 for Leonardo)
Serial1.begin(9600);
}
void loop() {
//SET MESSAGE TO SEND
//--->> FUNCTION: setupMessage( FTYPE(1 byte) , STRING DATA(max 16 byte) )
//Ex. setupMessage('1',"VLC-CP1223 DEMO ");
//PRINT SENDING MESSAGE AT DEFAULT SERIAL PORT (Serial.begin(XX); is needed)
//--->> FUNCTION: printPAYLOAD();
//Ex. printPAYLOAD();
75
char j;
unsigned char msg[17]={};
while(true){
transmitALL();
//save serial input
if (Serial1.available()) {
for(j=0;j<16;j++)
{
unsigned char inModbus = (unsigned char)Serial1.read();
msg[j] = inModbus;
delay(100);
}
/*
Example 2 VLC-CP1223 Course
Show Received VLC DATA on Serial Port
created 10 NOV 2015
modified 12 JAN 2015
By. Kata Jaruwongrungsee
Credit:
This work used the VLC-CP1223 driver-code VLC_CP1223_QSC.h
"VLC-CP1223 QUICK STARTER CODE", Kata Jaruwongrungsee, CC-BY
Which is licensed under a Creative Commons Attribution 4.0 International License.
To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/
*/
#define LED1 4
#define LED2 6
#define LED3 8
void setup() {
startVLC_IN(7); //SET VLC_IN PIN (default 7);
startVLC_OUT(5); //SET VLC_OUT PIN (default 5);
void loop() {
unsigned int errcount = 0; //NO-DATA TIMEOUT
unsigned char Serialout [8];
//Main Function is "VLCread()"
//which return 1(integer) when data is correct
//and return 0(integer) when no data detected
//IF DATA IS DETECTED PAYLOAD_IN[0-17] (byte) will be updated
//PAYLOAD_IN[0] = FTYPE, ID
//PAYLOAD_IN[1-17] = MESSAGE
while(true)
{
if(VLCread()==1)
{ //<<----- VLC Signal Detecting
errcount = 0;
if(PAYLOAD_IN[2]==0x05)
{ digitalWrite(LED1,0);digitalWrite(LED2,1);digitalWrite(LED3,0);
for(int x=1;x<9;x++)
{
unsigned char VLCin = PAYLOAD_IN[x];
Serial1.write(VLCin);
}
delay(1000);
}
else if(PAYLOAD_IN[2]==0x0F)
{ digitalWrite(LED1,0);digitalWrite(LED2,0);digitalWrite(LED3,1);
for(int x=1;x<11;x++)
{
unsigned char VLCin = PAYLOAD_IN[x];
78
Serial1.write(VLCin);
}
delay(1000);
}
else {digitalWrite(LED1,1);digitalWrite(LED2,0);digitalWrite(LED3,0);
}
}
}
}