ภาคคอนโทรน
มาถึงภาคนี้เป็นอีกภาคที่ สำคัญเปรียบเหมือนสมองที่คอยคิดและสั่งการให้ทุกส่วนทำงานได้สอดคล้องและทำให้หุ่นยนต์ของเรามีความฉลาดนั้นเองนะครับ โดยในภาคนี้เราจะใช้ไมโครคอนโทรนเลอร์มาทำการประมวลผลดังนั้นเรามารู้จักไมโครคอนโทรนเลอร์กันก่อนนะครับ
ไมโครคอนโทรนเลอร์ (Microcontronller) คืออะไร สำหรับคนที่เคยศึกษาใช้งานมาก่อน ก็คงจะพอเข้าใจมาบ้างนะครับ แต่สำหรับ คนที่เพิ่งรู้จักกับไมโครคอนโทรนเลอร์ อาจจะงงนิดนึงว่า มันคืออะไรใช้งานอย่างไร มีความสามารถอย่างไรบ้าง ทำไมเราถึงต้องใช้คอนโทรนเลอร์ ผมคิดว่าพวกเราน่าจะมีความรู้ทางด้านดิจิตอลกันมาบ้างพอสมควรนะครับ ในเรื่อง เกทต่าง ๆ ฟลิบฟลอบ การคิดสมการทางตรรกะเพื่อสร้างวงจรลอจิกดิจิตอล ในการควบคุมเป็นตัวประมวลผลตัดสินใจว่า ถ้าเราเลือกเกท แบบนี้ ฟลิบฟลอบต่อ กันลักษณะอย่างนี้ แล้วเมื่ออินพุทเข้ามาอย่างนี้ วงจรที่เราออกแบบไว้ ก็จะให้เอาต์พุตตามที่เราคำนวณไว้ในตอนแรกก่อนที่สร้างวงจร เราจะเห็นว่าในงานที่มีเงื่อนไขการตัดสินใจน้อย ๆ มีตัวแปรอินพุทน้อย ๆ เราก็สามารถที่จะออกแบบลอจิก ด้วยการตั้งสมการเงื่อนไขการรับอินพุทอย่างนี้แล้วขับเอาต์พุตออกตามที่ต้องการ แล้วก็ทำการลดรูปสมการให้สั้นที่สุดด้วยวิธีใดก็แล้วแต่ เมื่อออกมาแล้วก็ต่อวงจรด้วยเกทต่าง ๆ ได้ไม่ยากนัก แต่สำหรับงานที่มีความซับซ้อนในการคำนวณ มีตัวแปรอินพุตเข้ามาให้พิจารณา หลาย ๆ ตัว มีการตัดสินใจในหลาย ๆ เงื่อนไข มีการนับ มีการเก็บค่า ต่าง ๆ ไว้เพื่อพิจารณา ถ้าเราคิดจะออกแบบลอจิกก็ได้แต่จะเป็นการยากเป็นอย่างยิ่ง และเมื่อออกแบบเสร็จ ระบบจะเป็นระบบที่ใหญ่ ยุ่งยาก ซับซ้อน เป็นอย่างมาก แต่ถ้าเราเลือกใช้การควบคุม ด้วย คอนโทรเลอร์ ก็จะง่ายขึ้น เพราะ ไมโครคอนโทรนเลอร์ คือชื่อของอุปกรณ์อิเล็กทรอนิกส์แบบหนึ่งที่รวมเอาหน่วยประมวลผล หน่วยคำนวณทางคณิตศาสตร์และลอจิก มีวงจรรับสัญญาณอินพุต วงจรขับสัญญาณเอาต์พุต หน่วยความจำ วงจรกำเนิดสัญญาณนาฬิกาไว้ด้วยกัน ทำให้สามารถนำไปใช้งานแทนวงจรอิเล็กทอรนิกส์ที่ซับซ้อน ได้เป็นอย่างดี ช่วยลดจำนวนอุปกรณ์และขนาดของระบบ ในขณะที่มีขีดความสามารถสูงขึ้น
รูปที่ 1 ตัวอย่างตำแหน่งขาของไมโครคอนโทรนเลอร์
เป็นไงครับ เริ่มจะสนใจการใช้คอนโทรนเลอร์ขึ้นมาบ้างหรือยังครับ คงจะเข้าใจนะครับว่า อุปกรณ์ ดิจิตอล ทำงานอย่างไรในการตัดสินใจ แต่คงไม่เข้าใจว่า ทำไมคอนโทรนเลอร์ ถึงสามารถทำงานได้ เหมือน กับการต่อวงจรด้วยอุปกรณ์มากมาย เพียงแค่ใช้ ตัวไอซี แค่ตัวเดียว แต่ขอกล่าวให้เข้าใจในขั้นพื้นฐานกันก่อน ขอให้เข้าใจว่า เราจะใช้โปรแกรม (จะขอกล่าวภายหลัง) บนคอมพิวเตอร์ PC นี้แหละครับ เขียน เงื่อนไขการตัดสินใจ การนับ การเก็บค่า คิดคำนวณสมการที่ยาก ๆ ต่าง ๆ มาเขียนตามหลักการ ที่เราเรียกว่าการเขียนโปรแกรมนั่นเองครับ สำหรับการเขียนโปรแกรมก็ มีภาษาสำหรับการเขียน ซึ่งมีให้เราเลือกศึกษา เยอะแยะ มากมายครับ เช่น แอสแซมบลี ภาษาเบสิค หรือ ภาษาซี เราก็ เขียน โปรแกรมตามหลักการเขียนของแต่ละ ภาษา ซึ่งจะมีหนังสือให้เราศึกษาหลักการเขียน คำสั่งที่ใช้ในการเขียนมากมาย (ในโครงงานนี้จะใช้ ภาษาซี ซึ่งจะกล่าวหลักการพื้นฐานให้) เมื่อเราเขียนเสร็จให้เราเข้าใจว่าโปรแกรมจะทำการออกแบบลอจิกให้เราเองโดยอัตโนมัติ โดยจะสร้างไฟด์ ใหม่ขึ้นมา หลังจากนั้น เราจะนำไฟด์ที่ได้นี้ โหลดลงให้กับ ตัวชิปคอนโทรนเลอร์ครับ และให้เราเข้าใจว่า ตัวชิปจะสร้าง วงจรลอจิกตามที่เราออกแบบไว้ โดยการเขียนโปรแกรมนั้นเองครับ ก็ คือแทนที่เราจะมากออกแบบวงจรลอจิก ตั้งสมการ ลดรูปสมการและต่อวงจร เราก็ไม่ต้องคิดมาก แค่เขียนโปรแกรม คอมพิวเตอร์ก็จะออกแบบให้เราเอง นี่คือ หลักการคร่าว ๆ นะครับส่วนการที่เราจะกำหนด ว่าเราจะใช้ขาไหน ของชิปคอนโทรนเลอร์ เป็น อินพุท หรือ เอาต์พุต การใช้หน่วยความจำ การทำให้ชิปคอนโทรนเลอร์ทำงาน เราสามารถทำได้โดยการดู จากสถาปัตยกรรม ของคอนโทรนเลอร์แต่ละตัว ซึ่งจะขอกล่าวภายหลังครับ
เป็นไงครับ ง่ายหรือเปล่าครับ ไม่ต้องมานั่งคิดออกแบบลอจิกในการคอนโทรน แค่ศึกษาหลักการเขียน โปรแกรม แค่นั้นเองเราก็สามารถออกแบบระบบการควบคุมที่มีขนาดไม่ใหญ่มากนักได้แล้ว สำหรับตระกูล ของไมโครคอนโทรเลอร์ ก็ มีให้เราเลือกใช้มากมายในตลาดปัจจุบัน ซึ่งโดยทั่วไปก็จะมีหลักการเหมือน ๆ กับที่กล่าวมาข้างต้น เพียงว่า แต่ละตระกูล แต่ละรุ่นจะเลือกใช้ การเขียนโปรแกมที่ต่างกัน บ้าง หรือว่าการอัดโปรแกรมลงในตัวชิปจะมีกรรมวิธีที่แตกต่างกันบ้าง หรือความสามารถของ แต่ละตระกูล แต่ละรุ่น จะมีความสามารถที่แตกต่างกันบ้าง เช่น ฟังชั่นเสริมในการประมวลผล ขนาดหน่วยความจำ ความเร็วในการประมวลผล เป็นต้น มีตระกูลของคอนโทรเลอร์ ให้เราเลือกใช้มากมายในปัจจุบัน เช่น PIC AVR MCS-51 (8051) เป็นต้น สำหรับการเขียนโปรแกรมในโครงงานนี้ ผมจะแนะนำการเขียนโปรแกรมให้กับคอนโทรนเลอร์ ตระกูล 8051 นะครับ โดยจะใช้ เบอร์ AT89C2051 ซึ่งมีขา 20 ขา มีขาให้ใช้งาน 15 ขาหรือ 2 พอร์ต โดยจะใช้ภาษา C for MCS ในการเขียนนะครับ สำหรับคนที่มีพื้นฐานการเขียนโปรแกรม ภาษา ซี อยู่บ้างแล้ว และ พอจะมีพื้นฐานการใช้ไมโครคอนโทรนเลอร์มาบ้างแล้วก็ คงจะเข้าใจง่ายขึ้นนะครับ ส่วนน้อง ๆ ที่เพิ่ง หัดเล่นก็ ไม่ต้องกลัวนะครับ ลองอ่านสถาปัตยกรรมของ ไมโครคอนโทรเลอร์ ศึกษาการเขียนโปรแกรมภาษา ซี ไม่ได้ยากอย่างที่คิด หรอกครับ ขอให้ตั้งใจและพยายาม ศึกษาไว้เถอะครับ ส่วนในตอนนี้ ผมจะขอกล่าวถึงการเขียนโปรแกรมภาษาซี เบื้องต้น เกี่ยวกับคำสั่งที่ใช้ บ่อย ๆ รวมไปถึงการใช้งาน ซี คอมไพเลอร์ และ การใช้บอร์ตอัด เพื่อนำไปใช้งานจริง สำหรับวงจรภาคคอนโทรนก็จะออกแบบไว้ดังนี้นะครับ
รูปที่ 2 วงจรภาคคอนโทรน
ในวงจรรูปที่ 2 เป็นไมคอนโทรนเลอร์ เบอร์ AT89C2051 ซึ่งมีขา 20 ขา มีขาให้ใช้งาน 15 ขาหรือ 2 พอร์ต โดยในไมโครคอนโทรนเลอร์เบอร์นี้ เราจะได้ Op Amp เปรียบเทียบแรงดันไว้ใช้งานอีกตัวที่ ขา P1.0 และ P1.1 มีเอาพุต อยู่ที่ P3.6 วงจรก็ มีวงจร รีเซต และ วงจร ผลิตความถี่เพื่อเป็นฐานเวลาให้กับ ไมโครคอนโทรนเลอร์ และ R Pull up เพื่อช่วยขับกระแสให้กับ Port 1 สามารถนำไปเป็น เอาพุตได้ นั้นเอง จากตรงนี้ เราก็จะได้วงจรที่ทำให้ ไมโครคอนโทรนเลอร์ทำงานได้สามารถที่จะประมวลผลตามโปรแกรมที่เขียนเอาไว้ได้นั้นเองนะครับ
ดังนั้นเราพึงเข้าใจไว้นะครับว่า การสร้างวงจรภาคนี้นั้นเป็นเพียงแค่การทำให้คอนโทรนเลอร์ทำงานได้เท่านั้น ไม่ใช่ว่าสร้างเสร็จแล้วหาซื้อ IC ไมโครคอนโทรนเลอร์มาใช้ได้เลยนะครับเราจะต้องนำไมโครคอนโทรนเลอร์นั้นไป เขียนโปรแกรมเสียก่อนนั่นเองครับ ส่วนการเขียนโปรแกรมและการ อัดโปรแกรมลงตัวไมโครคอนโทรนเลอร์นั้นจะขอกล่าวอีกที ภายหลังครับ..