ไมโครคอนโทรลเลอร์

   ความรู้เกี่ยวกับไมโครคอนโทรลเลอร์เบื้องต้น ไมโครคอนโทรลเลอร์ (อังกฤษ: Microcontroller มักย่อว่า µC, uC หรือ MCU) คือ อุปกรณ์ ควบคุมขนาดเล็ก ซึ่งบรรจุความสามารถที่คล้ายคลึงกับระบบคอมพิวเตอร์ โดยในไมโครคอนโทรลเลอร์ได้รวม เอาซีพียูหน่วยความจำ และพอร์ต ซึ่งเป็นส่วนประกอบหลักสำคัญของระบบคอมพิวเตอร์เข้าไว้ด้วยกัน โดย ทำการบรรจุเข้าไว้ในตัวถังเดียวกัน ไมโครคอนโทรลเลอร์ถ้าแปลความหมายแบบตรงตัวก็คือ ระบบคอนโทรลขนาดเล็กเรียกอีกอย่าง หนึ่งคือเป็นระบบคอมพิวเตอร์ขนาดเล็ก ที่สามารถนำมาประยุกต์ใช้งานได้หลากหลาย โดยผ่านการออกแบบ วงจรให้เหมาะกับงานต่างๆ และยังสามารถโปรแกรมคำสั่งเพื่อควบคุมขา Input / Output เพื่อสั่งงานให้ไป ควบคุมอุปกรณ์ต่างๆ ได้อีกด้วย ซึ่งก็นับว่าเป็นระบบที่สามารถนำมาประยุคใช้งานได้หลากหลาย ทั้งทางด้าน Digital และ Analog ยกตัวอย่างเช่น ระบบสัญญาณตอบรับอัตโนมัต, ระบบบัตรคิว, ระบบตอกบัตร พนักงาน และอื่นๆ ยิ่งระบบไมโครคอนโทรลเลอร์ในยุคปัจจุบันนั้นสามารถทำการเชื่อต่อกับระบบ Network ของคอมพิวเตอร์ทั่วไปได้อีกด้วย ดังนั้นการสั่งงานจึงไม่ใช่แค่หน้าแผงวงจร แต่อาจจะเป็นการสั่งงานอยู่คนละ ซีกโลกผ่านเครือข่ายอินเตอร์เน็ตก็ได้

 โครงสร้างโดยทั่วไปของไมโครคอนโทรลเลอร์

   ไมโครคอนโทรลเลอร์ตระกูลต่างๆ ที่ได้รับความนิยมและมีพัฒนาการมาจนถึงปัจจุบันมีดังนี้

   1. Z-80 ไมโครคอนโทรลเลอร์ที่นิยมใช้กัน เริ่มตั้งแต่ตัวแรกที่เป็นลักษณะของ CPU ไม่ถึงขั้นเรียกว่า ไมโครคอนโทรลเลอร์ ก็คือ ตระกูล Z80 เป็นลักษณะของ CPU เล็กๆ ที่ต้องอาศัย IO ต่างๆ เพิ่มเติมเข้ามามาก จึงทำให้บอร์ดมีขนาดค่อนข้างใหญ่ จัดได้ว่าเป็นการเริ่มต้นการเรียนรู้ที่ดีของยุคสมัยนั้น ทำให้ได้เรียนรู้ ชุดคำสั่งที่เป็น Op Code

ไมโครคอนโทรลเลอร์ Z-80
ตัวอย่างการใช้งาน Z-80 บนบอร์ดทดลองจริง

   2. MCS-51 บริษัทที่สร้างไมโครคอนโทรลเลอร์ตระกูล MCS-51 เป็นบริษัทแรกคือบริษัท Intel ตระกูล MCS-51 เป็นตระกูลที่พัฒนาต่อจาก Z80 ทำให้การศึกษาเรียนรู้ไมโครคอนโทรลเลอร์ง่ายขึ้นกว่าเดิม ไม่ว่า จะเป็นการเขียนโปรแกรมในลักษณะของ Assembly Code แล้วโหลดลงบอร์ดเพื่อใช้งาน ตลอดจน สถาปัตยกรรมในการออกแบบ ไมโครคอนโทรลเลอร์รุ่นนี้จะช่วยลดอุปกรณ์รอบข้างลงไปได้มาก เหมาะที่จะ นำไปใช้งานจริง
ไมโครคอนโทรลเลอร์ MCS-51
   ตัวอย่างการต่อใช้งาน MCS-51 บนบอร์ดทดลองจริง อุปกรณ์รอบข้างจะน้อยกว่า Z-80 มากทำให้ ออกแบบวงจรได้ง่ายขึ้นมาก
ตัวอย่างการต่อใช้งาน MCS-51 บนบอร์ดทดลอง

   3. PIC บริษัท Microchip Technology เป็นผู้สร้างและผลิต PIC เป็นไมโครคอนโทรลเลอร์ยุคต่อมาที่ ได้รับความนิยมสูงอีกตระกูลหนึ่ง ตั้งแต่อดีตจนถึงปัจจุบัน คำว่า PIC ย่อมาจากคำว่า (Peripheral Interface Controller) ไมโครคอนโทรลเลอร์ตระกูลนี้ มีการพัฒนาเทคโนโลยีขึ้นในทุกด้าน ทำให้ได้รับความนิยมกว่า ไมโครคอนโทรลเลอร์ยุคเก่า เพราะในเรื่องของอุปกรณ์ต่อพ่วงที่มีน้อย ประกอบกับมีหน่วยความจ า EEPROM ในตัว จึงทำให้ง่ายต่อการบันทึกและจัดก็บข้อมูล และ PORT ต่างๆ ได้มีการ latch ในตัว IC อยู่ แล้ว จึงสามารถต่อออกมาใช้งานภายนอกได้โดยตรง มีกระแสและแรงดันที่เพียงพอ และอีกความสามารถ หนึ่ง คือสามารถโปรแกรมตัว Boot Loader เข้าไปในตัวไมโครคอนโทรลเลอร์ได้ จึงทำให้ง่ายในการโหลด โปรแกรมเข้าไปจากคอมพิวเตอร์โดยผ่านทาง Serial Port และกดปุ่ม Reset เพียงอย่างเดียว ไม่ต้องการ เครื่องโปรแกรม IC เพิ่มเติม อย่างที่ต้องมีกับระบบไมโครคอนโทรลเลอร์รุ่นเก่าอย่าง MCS-51

ไมโครคอนโทรลเลอร์ PIC

ตัวอย่างการต่อใช้งาน PIC กับบอร์ดทดลองจริง ฟังก์ชั่นการใช้งานค่อนข้างครบ และโปรแกรมง่าย โดย CCS, HI-TECH C Compiler, C18 C Compile, C30 C Compiler, MPLAB เป็นต้น
ตัวอย่างการต่อใช้งาน PIC บนบอร์ดทดลอง

   4. AVR AVR เป็นไมโครคอนโทรลเลอร์รุ่นต่อมาที่มีการพัฒนาต่อมาจาก MCS-51 โดยบริษัท ATMEL อัน เนื่องมาจากว่า MCS-51 ยุคหลังนี้ไม่ค่อยมีคนใช้งานจริง และมีใช้งานแต่เฉพาะในสถาบันการศึกษา เป็นเช่นนี้ก็เพราะว่าการออกออกแบบวงจรที่ค่อนข้างยุ่งยาก และต้องอาศัยการต่ออุปกรณ์ร่วมเยอะนั้นเอง ดังนั้น AVR จึงเข้ามาเป็นที่นิยมในการท างานด้านนี้ โดยคุณสมบัติหลักที่น่าสนใจก็คือ สามารถ Interface ผ่าน USB ได้โดยตรง ซึ่งไมโครคอนโทรลเลอร์ยุคเก่าทำได้โดยต่อผ่านพอร์ต RS-232 แต่เนื่องด้วย คอมพิวเตอร์ยุคใหม่ พอร์ต RS-232 เริ่มหายาก ดังนั้น AVR จึงได้รับความนิยม

ไมโครคอนโทรลเลอร์ AVR
ตัวอย่างการต่อ AVR ใช้งานบนเบอร์ดที่มีลักษณะใกล้เคียงกับไมโครคอมพิวเตอร์
ตัวอย่างการต่อใช้งาน AVR

   5. Arduino Arduino เป็นไมโครคอนโทรลเลอร์บอร์ดแบบสำเร็จรูปในยุคปัจจุบัน ซึ่งถูกสร้างมาจาก Controller ตระกูล ARM ของ ATMEL ข้อดีของไมโครคอนโทรลเลอร์บอร์ดคือเรื่องของ Open Source ที่สามารถนำไป พัฒนาต่อเป็นอุปกรณ์ต่างๆได้และความสามารถในการเพิ่ม Boot Loader เข้าไปที่ตัว ARM จึงทำให้การ Upload Code เข้าตัวบอร์ดสามารถทำได้ง่ายขึ้น และยังมีการพัฒนา Software ที่ใช้ในการควบคุมตัวบอร์ด ของ Arduino มีลักษณะเป็นภาษา C++ ที่โปรแกรมเมอร์มีความคุ้นเคยในการใช้งาน ตัวบอร์ดสามารถนำ โมดูลมาต่อเพิ่ม ซึ่งทาง Arduino เรียกว่าเป็น shield เพื่อเพิ่มความสามารถเพิ่มขึ้น

ไมโครคอนโทรลเลอร์Arduino



   หน้าที่ส่วนต่างๆ ของไมโครคอนโทรลเลอร์ โครงสร้างโดยทั่วไปของไมโครคอนโทรลเลอร์สามารถแบ่งออกมาได้เป็น 5 ส่วนใหญ่ๆ ดังต่อไปนี้

1. หน่วยประมวลผลกลางหรือซีพียู (CPU : Central Processing Unit)

2. หน่วยความจำ (Memory) สามารถแบ่งออกเป็น 2 ส่วน คือหน่วยความจำที่มีไว้สำหรับเก็บ โปรแกรมหลัก (Program Memory) เช่น Flash Memory ลักษณะการทำงานของหน่วยความจำนี้ เป็น หน่วยความจำที่อ่าน-เขียนได้ด้วยไฟฟ้า เปรียบเสมือนฮาร์ดดิสก์ของเครื่องคอมพิวเตอร์ตั้งโต๊ะ คือข้อมูลใดๆ ที่ถูกเก็บไว้ในนี้จะไม่สูญหายไปแม้ไม่มีไฟเลี้ยง อีกส่วนหนึ่งคือหน่วยความจำข้อมูล (Data Memory) ใช้เป็น เหมือนกับกระดาษทดในการคำนวณของซีพียู และเป็นที่พักข้อมูลชั่วคราวขณะทำงาน แต่หากไม่มีไฟเลี้ยง ในการทำงานข้อมูลจะหายไปคล้ายกับหน่วยความจำแรม (RAM) ในเครื่องคอมพิวเตอร์ทั่วๆไป แต่สำหรับ ไมโครคอนโทรลเลอร์สมัยใหม่ หน่วยความจำข้อมูลมีทั้งที่เป็นหน่วยความจำแรม ซึ่งข้อมูลจะหายไปเมื่อไม่มี ไฟเลี้ยง และเป็นอีอีพรอม (EEPROM : Erasable Electrically Read-Only Memory) ซึ่งสามารถเก็บ ข้อมูลได้แม้ไม่มีไฟเลี้ยงก็ตาม ในอดีตเป็นหน่วยความจำโปรแกรมแบบ EPROM หน่วยความจำที่ลบด้วยแสง

3. ส่วนติดต่อกับอุปกรณ์ภายนอก หรือพอร์ต (Port) มี 2 ลักษณะคือ พอร์ตอินพุต (Input Port) และพอร์ตส่งสัญญาณหรือพอร์ตเอาต์พุต (Output Port) ส่วนนี้จะใช้ในการเชื่อมต่อกับอุปกรณ์ภายนอก ถือ ว่าเป็นส่วนที่ส าคัญมาก พอร์ตอินพุตรับสัญญาณเพื่อนำไปประมวลผลและส่งไปแสดงผลที่พอร์ตเอาต์พุต เช่น การติดสว่างของหลอดไฟ เป็นต้น

4. ช่องทางเดินของสัญญาณ หรือบัส (BUS) คือเส้นทางการแลกเปลี่ยนสัญญาณข้อมูลระหว่าง ซีพียู หน่วยความจำและพอร์ต เป็นลักษณะของสายสัญญาณจำนวนมากอยู่ภายในตัวไมโครคอนโทรลเลอร์ โดย แบ่งเป็นบัสข้อมูล (Data Bus) บัสแอดเดรส (Address Bus) และบัสควบคุม (Control Bus)

5. วงจรกำเนิดสัญญาณนาฬิกา นับเป็นส่วนประกอบที่สำคัญมากอีกส่วนหนึ่ง เนื่องจากการทำงานที่ เกิดขึ้นในตัวไมโครคอนโทรลเลอร์ จะขึ้นอยู่กับการกำหนดจังหวะ หากสัญญาณนาฬิกามีความถี่สูง จังหวะ การทำงานก็จะสามารถทำได้ถี่ขึ้น ส่งผลให้ไมโครคอนโทรลเลอร์ตัวนั้น มีความเร็วในการประมวลผลสูงตามไปด้วย

การเขียนโปรแกรมไมโครคอนโทรลเลอร์ภาษาซี ถือว่าเป็นภาษาระดับกลางที่ใช้กันมาก