ใช้ PC ควบคุมโลกภายนอกแบบราคาต่ำสุด

การใช้เครื่องคอมพิวเตอร์ในงาน Real time control อย่างแขนกลของหุ่นยนต์ทำได้สองวิธี วิธีแรกคือใช้การ์ดที่ประกอบด้วยพอร์ทจำนวนมาก เสียบในสล็อต PCI แล้วต่อไปควบคุมหุ่นยนต์โดยตรงจากการ์ดนี้ อีกวิธีคือต่อผ่านพอร์ดขนาน หรืออนุกรมไปสื่อสารกับไมโครคอนโทลเลอร์ (PLC) อีกทอดหนึ่ง เช่นการต่อกับโมเด็ม เครื่อพิมพ์ และสแกนเนอร์เป็นต้น


จากนิตยสาร QuickPC ฉบับที่ 123่
หน้า 1 บทความนี้มีสองหน้า [2]

ใน บทความนี้นายลาภลอยกิ๊กก็อก ขอเสนอตัวรับใช้โดยสอนการสร้างฮาร์ดแวร์ และซอฟท์แวร์ในความต้องการต่ำสุด คุณจะใช้เครืองพีซีของคุณ ไปควบคุมอุปกรณ์ภายนอก เป็นการต่อจากพอร์ดอนุกรม ไปควบคุมรีเลย์ด้วยวงจรง่ายๆ อะไหล่ทุกชิ้นเป็นของดาษดื่นราคาไม่แพง ทั้งโครงงานใช้งบแค่ประมาณ 350 บาท ประยุกต์ใช้ได้มากหลาย ขึ้นอยู่กับความคิดสร้างสรรของคุณเอง อาธิ

• ไฟกระพริบตามจังหวะเพลง : ให้โปรแกรมตรวจสอบระดับเสียงที่ wave output ของการ์ดเสียง แล้วเปิดปิดรีเลย์ตามระดับที่กำหนด
 
• ปลุกตอนเช้าด้วยเสียงวิทยุ : ต่อรีเลย์กับวิทยุ เขียนโปรแกรมตรวจสอบเวลาถ้าเป็นหกโมงเช้า (หรือเวลาใดๆ ที่กำหนด) เปิดวิทยุให้ทำงาน
 
• ไฟและเสียงกันขโมย : เปิดปิดไฟหรือทีวีเป็นระยะที่ไม่แน่นอนเวลาไม่มีคนอยู่บ้าน เพื่อลวงว่ามีคนอยู่
 
• เปิดพัดลมระบายความร้อน : เขียนโปรแกรมอ่านข้อมูลอุณหภูมิจากตัวเซนเซอร์ในเมนบอร์ด แล้วเปิดพัดลมระบายความร้อนเมื่อถึงอุณหภูมิที่กำหนด
 
• โทรฯ มาบอกคอมฯ ให้หุงข้าวให้กิน : ต่อรีเลย์กับหม้อหุงข้าว เขียนโปรแกรมแบบ telephony ให้โมเด็มรับโทรศัพท์ กดเลขรหัส แล้วรีเลย์ทำงาน ตอนเย็นๆ ก่อนออกจากที่ทำงานจะกลับบ้านก็โทรมาบอกให้คอมพิวเตอร์หุงข้าวรอท่าไว้
กดภาพเพื่อดูภาพใหญ
วงจร PC ควบคุมโลกภายนอกแบบราคาต่ำสุด

ฮาร์ดแวร์

ไม่ต้องอรัมภบทให้ยืดยาว มาดูชมวงจรกันเลยดีกว่า พระเอกของงานนี้คือไอซีของบริษัทเม็กซิม เบอร์ MAX232 ที่ผมเคยเอามาทำสายดาต้าลิงค์เชื่อมมือถือกับพีซี เป็นไอซีสิบหกขาธรรมดาๆ ที่หาซื้อได้ตามร้านขายอะไหล่อุปกรณ์ดิจิตอลทั่วไป ผู้อ่านหลายคนเคยเขียนมาบ่นใน เว็บบอร์ดว่าหาซื้อยาก ขอเรียนว่าไอซียี่ห้ออื่นที่ใช้แทนกันได้คือ Analog Devices เบอร์ ADM232LJN หรือยี่ห้อ National Semiconductor เบอร์ DS14C232 หรือยี่ห้อ Intersil เบอร์ HIN232CP หรือเบอร์ ICL232CPE ก็ได้ ถ้าเจอยี่ห้อ Texas Instruments เบอร์ LT1081 ก็ใช้ได้เช่นกัน

บอกเบอร์แทนเยอะแยะอย่างนี้แล้วคงไม่บ่นว่าหาซื้อยากอีกนะครับ ถ้าคุณอยู่กรุงเทพฯ ก็ต้องไปเดินบ้านหม้อ รับรองว่าไม่พลาด ส่วนผู้ที่อยู่ต่างจังหวัดผมขอแนะนำให้ซื้อนิตยสารอิเลคโทรนิคมาดูโฆษณาแล้วโทรฯ ถามร้านต่างๆ ดู ไม่ต้องสั่งซื้อมาที่ผมนะครับ ผมไม่มีขาย ไม่เคยขายไอซีครับเคยแต่ซื้อ ส่วนหน้าที่ของไอซีตัวนี้ก็คือ แปลงระดับไฟแบบ RS-232 ของพอร์ทอนุกรมให้กลายเป็นระดับไฟแบบ TTL เพื่อที่เราจะได้สามารถนำไปใช้งานได้สะดวก

ต่อไปมาดูคาปาซิเตอร์ C1 ถึง C8 ถ้าหาค่าที่ระบุไว้ตรงตามนี้ไม่ได้ เอาแค่ใกล้เคียง ไม่ต้องซีเรียส งานนี้ใช้ซี (คาปาซิเตอร์) เปลืองครับ เวลาซื้อเลือกโวลท์ต่ำๆ (12 โวลท์) ราคาจะถูกกว่า และเล็กดีด้วย แต่ C6 ต้องใช้โวลท์สูงหน่อยไม่งั้นจะระเบิด ส่วนรีซิสเตอร์ (R1 และ R2) ใช้ขนาด เศษหนึ่งส่วนสี่วัตต์ ราคาตัวละยี่สิบห้าสตางค์ประหยัดที่สุด ค่าความต้านทาน ถ้าหาค่าที่ผมใส่ไว้ไม่ได้ เอาใกล้เคียงก็ได้ไม่ซีเรียสเช่นกัน

 
 
อิเลคโทรไลติคคอนเด็นเซอร์ ความจุ 10 ไมโครฟาหรัด   คาปาซิเตอร์ความจุ 100 นาโนฟาหรัด เป็นแบบไม่มีขั้ว
   
ทรานซิสเตอร์ในวงจรนี้มีสองตัว คือ TR1 และ TR2 ทำหน้าที่ขับกระแสร์ให้รีเลย์ ถ้าคุณหาสองเบอร์นี้ไม่ได้ ก็ใช้ทรานซิสเตอร์อเนกประสงค์ทั่วไปได้เลย ใช้เป็นชนิด (PNP และ NPN) ที่ตรงกันก็ใช้ได้แล้ว เลือกเอาเบอร์ที่ทนกระแสร์มากเพียงพอที่จะขับโหลด (รีเลย์) ก็แล้วกัน ไม่มีอะไรจิกจุก เพราะเราจะใช้งานทรานซิสเตอร์ในลักษณะเป็นซวิช (switch) ปัญหาสำคัญมีอยู่แค่อย่างเดียวคือขาไหนเป็นขาอะไร เพราะถ้าต่อขาผิดวงจรไม่ทำงานแน่นอน วิธีหาตำแหน่งขาให้ดูในคู่มือ (ที่ซื้อหรือยืมมา) หรือจะคว้ามิเตอร์มาวัดดูก็ได้ถ้าวัดเป็น สำหรับการจัดขาของเบอร์ 2N3904 กับ 2N2905 ผมค้นมาให้แล้วดังรูป
แสดงการจัดขาทรานซิสเตอร์เบอร์ 2N2905
แสดงการจัดขาทรานซิสเตอร์เบอร์ 2N3903

อุปกรณ์ตัวต่อไปคือ IC2 ทำหน้าที่แปลงไฟ 12 โวลท์ให้เป็น 5 โวลท์สำหรับป้อนเป็นอาหารให้ MAX232 เป็นไอซีที่มีหน้าตาเหมือนทรานซิสเตอร์ไม่มีผิด (เพระมีสามขา) มีทั้งแบบตัวเล็กและใหญ่ งานนี้ให้ใช้แบบตัวเล็ก ถ้าคุณมีแบบตัวใหญ่ก็ใช้ได้ แต่ไม่ต้องไปติดแผ่นระบายความร้อนให้เกะกะ เพราะงานนี้ไม่ร้อนเอาเลย เนื่องจากโหลด (ของ IC2) มีแค่ไอซี MAX232 ตัวเดียวที่กินกระแสร์เหมือนแมวดม ไฟ 12 โวลท์ที่มาป้อนให้ 78L05 ต้องเป็นไฟกระแสร์ตรงที่ราบเรียบพอสมควร ผมขอแนะนำให้ซื้อเอซีอะแดปเตอร์ตัวจิ๋ว ที่ใช้กับวอลค์แมนอย่างกระจอกราคาไม่เกิน 80 บาทมาใช้จะประเสริฐกว่าการนั่งประกอบเพาเวอร์ซัพพลายเอาเอง

ตรงรีเลย์จะเห็นมีไดโอดเบอร์ 1N3904 หนึ่งตัว (D2) ต่อคร่อมเอาไว้ ถ้าหาเบอร์นี้ไม่ได้ก็ใช้ไดโอดแรคติไฟร์เบอร์อะไรก็ได้ ขนาดสัก 300 มิลิแอมป์ก็เห็นจะพอแก่การ ส่วนตัวรีเลย์ 12 โวลท์ มีให้เลือกหลายแบบเยอะแยะไปหมด ถ้าไม่อยากเปลืองเงินจะหาแกะเอาจากซากอะไรเก่าๆ ก็ยังได้ รีเลย์ทำหน้าที่เป็นซวิชไฟฟ้า คือแทนที่เราจะกดซวิชก็เปลี่ยนเป็นใช้คอมพิวเตอร์มากดซวิชนี้แทน เดินดูแถวบ้านหม้อหรือคลองถมนะครับ เอาแบบราคาไม่เกิน 100 บาทก็พอ ไม่จำเป็นต้องใช้ของดีมาก เพราะเราจะมาใช้ทดสอบเท่านั้น

รีเลย์สิบสองโวลท์ธรรมดา

ส่วนประกอบสุดท้ายคือ connector1 เป็นหัวคอนเนคเตอร์แบบ DB9 ตัวเมีย เอาไว้เสียบเข้ากับคอมพอร์ทด้านหลังเครื่องพีซีนั่นเอง (ดูการจัดขาและสัญญาณต่างๆ ของพอร์ทอนุกรมในตาราง) งานนี้เราใช้สายแค่สองเส้น คุณจะใช้สายแบบไหนก็ได้ตามสะดวก ผมเองค้นลิ้นชักเจอสายชีลด์หนึ่งเส้นยาวประมาณห้าฟุต เอามาใช้งานได้ไม่มีปัญหาอะไร

การประกอบวงจร

ตอนที่ผมลงมือประกอบก็ใช้อุปกรณ์เท่าที่หาได้รอบๆ ตัว แกะเอาจากโน่นบ้างนี้บ้างไปตามเรื่อง มาบัดกรีลงไปในแผ่นปรินท์อเนกประสงค์ (ใช้หัวแร้งวัตต์ต่ำนะครับ) ถ้าคุณมีแผ่นโพรโต้บอร์ด (เบรดบอร์ด) จะต่อลงในนั้นก็ไม่ผิดกติกา แต่ไม่ขอแนะนำให้ต่อโยงไปมาลอยๆ แบบรังนก เพราะมีอุปกรณ์ค่อนข้างจะมากชิ้นอยู่ ถ้าเกิดพลาดมาชอร์ทกันน่ากลัวว่าจะประสบเภทภัยมากกว่าวาสนา

สำหรับการประกอบไอซี MAX232 ขอแนะนำให้ใส่ซอกเก็ตเสียด้วย เผื่อแกะไปใช้งานโครงงานอื่นจะได้ไม่ต้องมาถอนบัดกรี เดี๋ยวจะพังเสียก่อน ในภาพจะเห็นว่าผมประกอบวงจรและใส่หลอดไฟแบบ LED ด้วย จึงใส่ไอซีอีกตัวหนึ่งเป็นตัวขับกระแสร์ให้ LED ภายหลังผมต่อไอซีตัวไลน์ไดร์ฟเวอร์สำหรับ RS-485 เข้าไปอีกตัวเพื่อการทดลองควบคุมระยะไกล (ไกลได้เป็นกิโล) สายที่ต่อจากคอมพอร์ทมาวงจรไม่ควรต่อยาวเกินสิบเมตร แต่สายที่ต่อไปเข้ารีเลย์ด้านไฟ 220 โวลท์ จะยาวแค่ไหนก็ได้ คือลากไปได้ทั่วบ้านนั่นแหละครับ

วงจรเมื่อประกอบเสร็จแล้วผมประกอบวงจรและใส่ LED ด้วย จึงใส่ไอซีอีกตัวหนึ่งเป็นตัวขับกระแสร์ให้ LED ภายหลังผมต่อไอซีตัวไลน์ไดร์ฟเวอร์สำหรับ RS-485 เข้าไปอีกตัวเพื่อการทดลองควบคุมระยะไกล

การทำงานของวงจร

โดยอาศัยความรู้ที่ว่าคอมพอร์ทนั้น นอกจะมีขาส่งข้อมูลเข้า/ออกแล้ว มันยังมีขาสัญญาณควบคุม (ที่เป็น output) ด้วยสองขา คือ Data Terminal Ready กับ Request to Send สัญญาณสองเส้นนี้ ถ้าคุณเขียนโปรแกรมสั่งให้มัน ON มันก็จะ ON อยู่อย่างนั้นจนกว่าจะสั่งให้ OFF เมื่อเป็นอย่างนี้ก็สบายแล้วสินะ เพราะไม่ต้องสร้างฮาร์ดแวร์หรือซอฟท์แวร์ที่ซับซ้อนอะไร คุณก็สามารถใช้พีซีควบคุมโลกภายนอกได้

ในโครงงานนี้ผมต้องการให้ง่ายที่สุด จึงจะใช้สัญญาณ Request to send (RTS) เส้นเดียวโดยต่อออกมาจากขาเจ็ดของคอนเนคเตอร์ DB9 ตัวเมีย แต่เนื่องจากสัญญาณนี้ยังเป็นระดับ RS-232 อยู่ เราจึงต้องมาแปลงให้เป็น TTL เสียก่อน โดยเข้าที่ขา 12 ของไอซี MAX232 ไปออกเป็น TTL ที่ขา 13 ให้พร้อมใช้งานได้ จากนั้นก็เอาสัญญาณที่แปลงแล้วนี้ไปเข้าวงจรขับรีเลย์ที่ประกอบด้วย TR1 และ TR2

อันที่จริงถ้าต้องการแค่ไปกระตุ้นรีเลย์ คุณจะต่อตรงระหว่าขา 7 ของ DB9 กับ วงจรขับรีเลย์เลยก็ยังได้ (ต้องจัดไบแอสทรานซิสเตอร์เสียใหม่) แต่ผมออกแบบวงจรนี้มาเผื่อไว้เพื่อจะไปควบคุมการทำงานของ PLC (Programmable Logic Controller) หรือวงจรดิจิตอลชนิดอื่นๆ เพื่อการควบคุมที่ซับซ้อนกว่านี้ (จะต้องใช้ขา RX และ TX รับ-ส่งข้อมูลแบบอนุกรมกันเลย) จึงต้องจัดการแปลง RS-232 ให้เป็น TTL เสียกก่อน

การทำงานของวงจรก็มีแค่นี้ อีกสักครู่ผมจะบอกวิธีเขียนโปรแกรมสั่งให้สัญญาณ RTS ของคอมพอร์ททำงาน พอสั่งให้ RTS เป็นลอจิก 1 รีเลย์ก็จะติด ถ้าคุณต่อหลอดไฟ หรือพัดลม (หรือเครื่องใช้ไฟฟ้าอะไรก็ตาม) ไว้กับรีเลย์ เครื่องใช้ไฟฟ้านั้นก็จะทำงานทันที ครั้นสั่งให้ RTS เป็นลอจิก 0 รีเลย์ก็จะจาก เครื่องใช้ไฟฟ้านั้นก็จะหยุดทำงาน

บทความนี้มีสองหน้า หน้าต่อไปเป็นเรื่องซอฟท์แวร์สำหรับควบคุม
สารบัญ