วันพุธที่ 2 มีนาคม พ.ศ. 2554

การตรวจสอบลำดับเฟสโดยใช้ Input Capture

สมชาย เบียนสูงเนิน
ภาควิชาวิศวกรรมไฟฟ้า คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเทคโนโลยีราชมงคลธัญบุรี

          วัตถุประสงค์ของบทความนี้เพื่อให้เกิดความเข้าใจการทำงานของโมดูลตรวจจับสัญญาณอินพุต (Input Capture, IC) ซึ่งไมโครคอนโทรลเลอร์สมัยไหม่ต้องมี การใช้งานโมดูลตรวจจับสัญญาณอินพุตจะใช้ร่วมกับโมดูลจับเวลา (Timer) หลักการทำงานคือเมื่อไมโครคอนโทรลเลอร์ตรวจพบขอบขาของสัญญาณตรงตามที่กำหนด จะนำค่าเวลาของ Timer ณ ตำแหน่งที่ตรวจพบขอบขาของสัญญาณเข้าเก็บที่รีจีสเตอร์ของโมดูลตรวจจับสัญญาณอินพุตตัวนั้นๆ รูปที่ 3.27 กำหนดให้ตรวจจับสัญญาณขอบขาขึ้น รีจีสเตอร์ของโมดูล IC0 เก็บค่า 00:00:30 รีจีสเตอร์ของโมดูล IC1 ก็จะเก็บค่า 00:00:10 และรีจีสเตอร์ของโมดูล IC2 ก็จะเก็บค่า 00:00:50 (ในทางปฏิบัติจะเก็บเป็นตัวเลขซึ่งเริ่มนับตั้งแต่ 0, 1, 2 … ไปเรื่อยๆ โดยผู้พัฒนาโปรแกรมต้องนำตัวเลขที่ได้ไปคำนวณค่าเวลาจากความถี่ของสัญญาณนาฬิกาหลักที่ใช้) นอกจากการเก็บค่าเวลาแล้ว โมดูลตรวจจับสัญญาณอินพุตยังสามารถระบุจำนวนครั้งของการตรวจจับเพื่อให้เกิดการอินเตอร์รัพท์ได้ด้วย ถ้านำสัญญาณที่เข้าโมดูล IC ทั้งสามมาเรียงลำดับเฟสก็จะได้เป็น IC1-IC0-IC2









การตราจสอบลำดับโดยใช้โมดูลตรวจจับสัญญาณอินพุตจะเริ่มจากการตรวจจับสัญญาณที่เฟส A (IC1) ให้พบก่อน เมื่อพบแล้วจึงสั่งให้อีกสองโมดูลคือ IC7 และ IC8 เริ่มตรวจจับสัญญาณแล้วเก็บค่าเวลาของทั้งสองโมดูล ถ้าเวลาที่เก็บได้ IC7 น้อยกว่า IC8 แสดงว่าลำดับเฟสเป็น A-B-C แต่ถ้า IC7 มากกว่า IC8 ลำดับเฟสเป็น A-C-B ตั้งค่าโมดูลตรวจจับสัญญาณ(Input Capture) ได้ดังนี้ (รีจีสเตอร์ที่ระบุเป็นของไมโครคอนโทรลเลอร์ dsPIC30Fxxxx)
            1) เลือกรูปแบบการตรวจจับสัญญาณ (ICxCONbits.ICM)
            2) เลือก Timer ที่จะใช้งานร่วมกับโมดุลตรวจจับสัญญาณ (ICxCONbits.ICTMR)
            3) กำหนดจำนวนครั้งการตรวจจับสัญญาณต่อการอินเตอร์รัฟ (ICxCONbits.ICI)
เมื่อเกิดการตรวจจับสัญญาณตามเงื่อนไขที่กำหนด ค่าเวลาของ Timer จะถูกส่งไปเก็บที่ส่วนพักข้อมูลของโมดูลตรวจจับสัญญาณ (ICxBUF)





                                                               รูปการแสดงผลลำดับเฟส








ปฐมบท : ไมโครคอนโทรลเลอร์

สมชาย เบียนสูงเนิน
ภาควิชาวิศวกรรมไฟฟ้า คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเทคโนโลยีราชมงคลธัญบุรี

ไมโครคอนโทรลเลอร์(Microcontroller) หมายถึงอุปกรณ์ควบคุมขนาดเล็ก โดยความหมายนั้นมาจากคำว่าไมโคร (Micro) ที่หมายถึงขนาดเล็ก และคำว่าคอนโทรลเลอร์ (Controller) ที่หมายถึงตัวควบคุมหรืออุปกรณ์ควบคุม โดยในตัวควบคุมขนาดเล็กนี้ ได้บรรจุความสามารถที่คล้ายกับระบบคอมพิวเตอร์ กล่าวคือภายใน ไมโครคอนโทรลเลอร์ ได้รวมเอาหน่วยประมวลผลกลาง หน่วยความจำ และส่วนติดต่อกับอุปกรณ์ภายนอก ซึ่งเป็นส่วนประกอบหลักสำคัญของระบบคอมพิวเตอร์บรรจุเข้าไว้ด้วยกัน ในปัจจุบันหลายคนมีความสับสนระหว่างไมโครคอนโทรลเลอร์กับไมโครโปรเซสเซอรมีความแตกต่างกันอย่างไร โครงสร้างของไมโครโปรเซสเซอรจะประกอบไปด้วย หน่วยประมวลผลกลาง หน่วยคํานวณทางคณิตศาสตร์และลอจิก บัสข้อมูลและบัสตำแหน่งสําหรับติดต่อกับหน่วยความจําภายนอก และวงจรกําเนิดสัญญาณนาฬิกา ในการใชงานไมโครโปรเซสเซอรจะตองเชื่อมต่อกับหน่วยความจําโปรแกรมจากภายนอก ซึ่งหากต้องการติดต่อกับอุปกรณ์ภายนอกไม่ว่าจะเป็นส่วนอินพุตหรือส่วนเอาต์พุต ต้องอาศัยอุปกรณ์ภายนอกมาช่วยขยายจุดต่อใช้งาน ทําใหการสร้างระบบควบคุมใช้อุปกรณ์จํานวนมากส่งผลให้ระบบมีขนาดใหญ่ ในขณะที่โครงสร้างของไมโครคอนโทรลเลอร์จะมีอุปกรณ์พื้นฐานเหมือนกับไมโครโปรเซสเซอร์หากแต่จะบรรจุหน่วยความจําโปรแกรม หน่วยความจําข้อมูลและจุดต่ออินพุตและเอาต์พุตไวภายใน ผูใช้งานจึงเพียงแตเขียนโปรแกรมควบคุมลงบนตัวไมโครคอนโทรลเลอรเท่านั้นก็พอ ดังนั้นไมโครคอนโทรลเลอร์จึงถูกสร้างมาเพื่อรองรับการออกแบบระบบให้มีขนาดเล็กและสามารถป้อนชุดคำสั่งให้สามารถทำงานได้อย่างอัตโนมัติ ด้วยรูปแบบการเขียนโปรแกรมภาษาต่างๆ ตามความถนัด
            ด้วยความก้าวหน้าของเทคโนโลยีด้านการผลิตตัวไมโครคอนโทรลเลอร์ในปัจจุบัน ทำให้ไมโครคอนโทรลเลอร์ถูกบรรจุวงจรการทำงานพิเศษ เช่น วงจรแปลงสัญญาณแอนะล็อกเป็นดิจิตอล วงจรสร้างสัญญาณควบคุมแบบ PWM วงจรส่งข้อมูลแบบอนุกรม เป็นต้น นอกจากนั้นยังมีการเพิ่มขีดความสามารถของหน่วยประมวลผลกลางในด้านการคำนวณทางคณิศาสตร์และเพิ่มความเร็วในการประมวลผล โดยเฉพาะการประมวลผลได้พัฒนาตั้งแต่ 8 บิต 16 บิต และ 32 บิต ทำให้การเรียนรู้และการประยุกต์ใช้งานไมโครคอนโทรลเลอร์ทำได้ง่ายและหลากหลายมากขึ้น

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

โครงสร้างทั่วไปของไมโครคอนโทรลเลอร์นั้น สามารถแบ่งออกมาได้เป็นส่วนใหญ่ๆ ดังต่อไปนี้
-หน่วยประมวลผลกลางหรือซีพียู (CPU:Central Processing Unit)   เป็นหน่วยประมวล ผลกลางซึ่งภายในมีหน่วยพื้นฐานต่างๆ อันได้แก่
หน่วยควบคุม(Control Unit) เป็นหน่วยที่ใช้สร้างสัญญาณเพื่อควบคุมการทำงานภายในไมโครคอนโทรลเลอร์ให้ทำงานอย่างมีระเบียบและสัมพันธ์กัน
หน่วยกระทำทางคณิตศาสตร์และลอจิก(Arithmetic Logical Unit : ALU)  ใช้ทำหน้าที่ทางคณิตศาสตร์และลอจิก เช่น การบวก การลบ ลอจิก AND ลอจิก OR ลอจิก EX-OR การเปรียบเทียบ การเลื่อนบิต การเพิ่มค่า การลดค่า การเซตบิต การรีเซตบิต เป็นต้น  โดยมีรีจิสเตอร์หลักที่เรียกว่า แอคคิวมูเลเตอร์ (Accumulator Register)
-หน่วยความจำ ( Memory ) สามารถแบ่งออกเป็น 2 ส่วน คือ หน่วยความจำที่มีไว้สำหรับเก็บโปรแกรมหลัก ( Program Memory) เปรียบเสมือนฮาร์ดดิสก์ของเครื่องคอมพิวเตอร์ คือข้อมูลใดๆ ที่ถูกเก็บไว้ในนี้จะไม่สูญหายแม้ไม่มีไฟเลี้ยง อีกส่วนหนึ่งคือหน่วยความจำข้อมูล ( Data Memory ) ใช้เป็นเหมือนกกระดาษทดในการคำนวณของซีพียู และเป็นที่พักข้อมูลชั่วคราวขณะทำงาน แต่หากไม่มีไฟเลี้ยง ข้อมูลก็จะหายคล้ายกับหน่วยความแรม (RAM) ในเครื่องคอมพิวเตอร์ แต่สำหรับไมโครคอนโทรลเลอร์สมัยใหม่ หน่วยความจำข้อมูลจะมีทั้งที่เป็นหน่วยความจำแรม ซึ่งข้อมูลจะหายไปเมื่อไม่มีไฟเลี้ยง และเป็นอีอีพรอม (EEPROM : Erasable Electrically Read-Only Memory ) ซึ่งสามารถเก็บข้อมูลได้แม้ไม่มีไฟเลี้ยง
-ส่วนติดต่อกับอุปกรณ์ภายนอกหรือพอร์ต (Port) มี 2 ลักษณะคือ พอร์ตอินพุต (Input Port) และพอร์ตส่งสัญญาณหรือพอร์ตเอาต์พุต (Output Port) ส่วนนี้จะใช้ในการเชื่อมต่อกับอุปกรณ์ภายนอก ถือว่าเป็นส่วนที่สำคัญมาก โดยที่พอร์ตอินพุตจะใช้เพื่อรับสัญญาณ อาจจะด้วยการกดสวิตช์ เพื่อนำไปประมวลผลและส่งไปพอร์ตเอาต์พุต เพื่อแสดงผลเช่น การติดสว่างของหลอดไฟ เป็นต้น
-ช่องทางเดินของสัญญาณหรือบัส (BUS) คือเส้นทางการแลกเปลี่ยนสัญญาณข้อมูลระหว่าง ซีพียู หน่วยความจำและพอร์ต เป็นลักษณะของสายสัญญาณ จำนวนมากอยู่ภายในตัวไมโครคอนโทรลเลอร์ โดยแบ่งเป็นบัสข้อมูล (Data Bus) บัสแอดเดรส (Address Bus) และบัสควบคุม (Control Bus)
บัสข้อมูล เป็นสายสัญญาณที่บรรจุข้อมูล เพื่อการประมวลผลทั้งหมด ขนาดของบัสจะขึ้นอยู่กับความสามารถการประมวลผลของซีพียู สำหรับในงานทั่วๆ ไป ขนาดของบัสข้อมูลจะเป็น 8 บิต และในปัจจุบันได้มีการพัฒนาขึ้นมาจนถึง 16, 32 และ 64 บิต
บัสแอดเดรส เป็นสายสัญญาณที่บรรจุค่าตำแหน่งของหน่วยความจำ โดยการติดต่อกับหน่วยความจำนั้น ซีพียู ต้องกำหนดตำแหน่งที่ต้องการอ่านหรือเขียนก่อน ดังนั้นจำนวนสายสัญญาณของแอดเดรสจึงต้องมีจำนวนมาก ยิ่งมากเท่าไหร่ ก็จะเป็นการแสดง ขนาดของหน่วยความจำที่ไมโครคอนโทรลเลอร์สามารถติดต่อได้
บัสควบคุม เป็นกลุ่มของสายสัญญาณควบคุมการติดต่อทั้งหมดของซีพียูกับหน่วยความจำและพอร์ต
-วงจรควบคุมสัญญาณนาฬิกา นับเป็นส่วนประกอบที่สำคัญมากอีกส่วนหนึ่ง เนื่องจากการทำงานที่เกิดขึ้นในตัวไมโครคอนโทรลเลอร์ จะขึ้นอยู่กับการกำหนดจังหวะ หากสัญญาณนาฬิกามีความถี่สูง จังหวะการทำงานก็จะสามารถทำได้ถี่ขึ้นส่งผลให้ไมโครคอนโทรลเลอร์ตัวนั้น มีความเร็วในการประมวลผลสูงตามไปด้วย
         -โมดูลสำหรับงานพิเศษ ไมโครคอนโทรลเลอร์จะถูกบรรจุวงจรการทำงานพิเศษ เช่น วงจรแปลงสัญญาณแอนะล็อกเป็นดิจิตอล วงจรสร้างสัญญาณควบคุมแบบ PWM วงจรส่งข้อมูลแบบอนุกรม วงจรตรวจจับสัญญาณอินพุต เป็นต้น ทำให้การประยุกต์ใช้งานไมโครคอนโทรลเลอร์ทำได้ง่ายขึ้น

บทความต่อๆ ไป จะเป็นการประยุกต์ใช้งาน คอยติดตามนะครับ