การประยุกต์ใช้งาน absolute encoder ด้วย mcs-51...
DESCRIPTION
การประยุกต์ใช้งาน Absolute Encoder ด้วย MCS-51 MicrocontrollerTRANSCRIPT
เอกสารเผย งานไดกอุปกรณความเร็วออกแบบรอบ อุปออกไป ใ (Optical) การปยแพรเพ่ือการศึกษ เอนโคดเดอรกวางขวางหลตรวจจับระยวรอบหรือระยบวงจรภายในปกรณที่เปนเอในที่น้ีจะกลาAbsolute Enc) โดยประกอ ประยุกตษาเทานั้น ร (Encoder) ายประเภท เยะทางและบยะทาง ออกมนของเอนโคดอนโคดเดอรวถึงเฉพาะกาcoder เปนดิจิบดวยตัวกําเนิตใชงาน Absolu เปนอุปกรณชน เปนอุปกบอกตําแหนงาเปนสัญญาณดเดอรวาจะสารน้ันสามารถารใชงาน Absจิตอลเอนโคนดิแสง, ตัวจับภาพที่ 1 โน Absolute Encoder หน่ึงที่ใชงานกรณสงสัญญการหมุนขอณพัลซ (Pulseามารถสรางสัถแบงออกเปนsolute Encodคดเดอรชนิดบแสง และจา ครงสราง Ab lute En
Application นแพรหลายในาณปอนกลับงแกนเพลา e Digital Signสัญญาณพัลซนหลายชนิดder เทานั้น ดหนึ่งท่ีอาศัยานเขารหัสดังbsolute Encodcoder ดPoolsak Ko
King Mongku
Applied to Mนเครื่องจักรทั่บ (Feedback)โดยที่เอนโคnal) ซึ่งมีความ มีความถี่มากตามลักษณะยหลักการขอภาพท่ี 1 der ดวย oseeyaporn,Ph.Dut’s Institute of T
MCS‐51 Microท่ัวไป สามาร ของมอเตคดเดอรจะแปมละเอียดสูง กนอยเทาไรตโครงสรางแองแสงหรืออD and Nattaphol JTechnology Nort
ocontroller รถประยุกตใชตอร หรือเปนปลงสัญญาณข้ึนอยูกับการตอการหมุน 1แบบตางๆกันออพติคอล Jasungnuenth Bangkok.
1 ชนณร1 น
เอกสารเผยแพรเพ่ือการศึกษาเทานั้น 2Absolute Encoder Application Applied to MCS‐51 Microcontrollerการทดลองเพื่อศึกษาการทํางานของ Absolute Encoder จะประยุกตการทํางานของดิจิตอลเอนโคดเดอรใหเปนอุปกรณสําหรับบอกคาตําแหนง เนื่องจากการหมุนของแกนเพลาในแตละตําแหนงของเอนโคดเดอร จะสงขอมูลดิจิตอลขนาด 6 บิตเปนสัญญาณเอาตพุต ซึ่งสัญญาณเอาตพุตนี้สามารถคํานวณหาคาตําแหนงการเคลื่อนท่ีไดโดยใชไมโครคอนโทรลเลอร เปนตัวประมวลผลสัญญาณดิจิตอลท่ีไดจากเอาตพุตของเอนโคดเดอร และแสดงผลขอมูลที่จอแอลซีดี (LCD) ดังนั้นในโครงงานนี้จะทดลองอานขอมูลจากเอนโคดเดอรขนาด 6 บิต และทําการแปลงคาเอาตพุตของเอนโคดเดอร เปนคาตําแหนง(Step) และแสดงขอมูลดิจิตอลที่อานไดจากเอนโคดเดอรในรูปแบบไบนารี่เลขฐานสอง และเลขฐานสิบหก และใหสามารถประยุกตใชดิจิตอลเอนโคดเดอรเปนตวับอกตําแหนงของแกนหมุนได องคประกอบของการทํางานแสดงดังภาพที่ 2 ภาพที่ 2 องคประกอบของโครงงาน ภาพท่ี 3 สัญญาณเอาตพุตของ Absolute Encoder
เอกสารเผยแพรเพ่ือการศึกษาเทานั้น 3Absolute Encoder Application Applied to MCS‐51 Microcontrollerการใชงานคอมไฟลเลอร Keil C51 เบื้องตน โปรแกรม Keil C51 เปนโปรแกรมคอมไฟลเลอร (complier) ภาษาซี พัฒนาโดยบริษัท Keil Software ตัวโปรแกรมนี้มีช่ือวา uVision 3 ซึ่งเปนคอมไฟลเลอรที่ชวยในการพัฒนาโปรแกรมภาษาซีสําหรับควบคุมการทํางานของไมโครคอนโทรลเลอร ซึ่งสามารถแปลงโคดภาษาซี เปน HEX ไฟล เพื่อใชในการโปรแกรมลงหนวยความจําของไมโครคอนโทรลเลอร ใหทํางานตามที่ตองการ ภาพที่ 4 สภาพแวดลอมของโปรแกรม Keil (uVersion 3) ขั้นตอนการสรางโปรเจก็ตใหม ชื่อ Encoder_omron ดังตอไปนี ้1. เลือก Project > New Project จะปรากฏไดอะล็อก สําหรบัการกําหนดชื่อโปรเจ็กต ดงัภาพท่ี 5 ภาพที่ 5 กําหนดชื่อโปรเจ็กตใหม Project Workspace Workspace Text Editor
Output Window
เอกสารเผยแพรเพ่ือการศึกษาเทานั้น 4Absolute Encoder Application Applied to MCS‐51 Microcontroller เมื่อทําการตั้งชื่อโปรเจ็กตแลว จะปรากฏไดอะล็อกสําหรับเลือกรุน Microcontroller ในโครงงานนี้ทดสอบดวยไมโครคอนโทรลเลอรของบริษัท ATMEL เบอร AT89S8252 ซึ่งเปนไมโครคอนโทรลเลอรตระกลู MCS-51 ใหทําการเลือกเบอรไอซีดังภาพที่ 6 ภาพที่ 6 การเลือกไอซ ีATMEL เบอร AT89S8252 หลังจากกําหนดเบอรไอซีที่ตองการเรยีบรอยแลว ในสวนของคอมไฟลเลอรจะทําการคัดลอกไลบรารี่คําสั่งสําหรับชวยในการคอมไฟลโปรแกรม จะปรากฏไดอะล็อก ใหเลอืก Yes ดังภาพที่ 7 ภาพที่ 7 การคัดลอกไฟลไลบรารีล่งในโปรเจก็ตอัตโนมัติ
เอกสารเผยแพรเพ่ือการศึกษาเทานั้น 5Absolute Encoder Application Applied to MCS‐51 Microcontroller2. ใหเลือกคําสั่ง New สําหรับสรางเอกสารใหม เพื่อเขียนโคดโปรแกรม ดังภาพที่ 8 ภาพท่ี 8 การสรางเอกสารใหม 3. เมื่อทําการเพิ่มโคดโปรแกรมเรยีบรอยแลว ใหบันทึกไฟลที่เปนนามสกลุ .c เชน main.c ดังภาพที่ 9 ภาพท่ี 9 การบนัทึกไฟล พ้ืนที่สําหรับเขียนโคดโปรแกรม บันทึกไฟล main.c
เอกสารเผยแพรเพ่ือการศึกษาเทานั้น 6Absolute Encoder Application Applied to MCS‐51 Microcontroller4. เลือกท่ี “Source Group”ใน Project Workspace ทําการคลกิขวาเลือกเพื่อ Add Files to Group “Source Group 1” ดังภาพที่ 10 ภาพท่ี 10 Add Files to Group “Source Group 1” 5. คลิกขวาที่ Target 1 กําหนดคา Options for Target “Target 1” ดังภาพที ่11 ภาพท่ี 11 กําหนดคา Option ของโปรเจ็กต กําหนดความถี ่11.0592MHz
เอกสารเผยแพรเพ่ือการศึกษาเทานั้น 7Absolute Encoder Application Applied to MCS‐51 Microcontrollerเลือกท่ี Tap “Output” เพื่อกาํหนดใหมีการสราง Hex file เมื่อทําการ Build โปรแกรมสําเร็จ โดยจะใช Hex file ในการโปรแกรมลงในหนวยความจําของไมโครคอนโทรลเลอร ดังภาพที่ 12 ภาพท่ี 12 การกําหนด Output ใหมีการสราง Hex file 6. ใหทําการคัดลอกไฟลไลบรารี่ mrt_lcd_v1.lib และ mrt_lcd_v1.h จํานวน 2 ไฟล ไวในไดเร็กทอรี่เดียวกกับโปรเจ็กต เพ่ือใชในการลิงค (link) ขณะคอมไฟลโปรแกรม โดยไลบรารี่สวนนี้ทําหนาที่ควบคุมการแสดงผลบนจอ LCD ทําใหพัฒนาโปรแกรมไดงายและสะดวกมากยิ่งขึน้ ภาพท่ี 13 การเพิ่มไลบรารี่ใน Project Workspace กําหนดชือ่ของ Hex file เลือก Create Hex file format ทําการเพิ่มไฟลไลบรารี่ mrt_lcd_v1.lib เขามายัง Project Workspace ดังในขั้นตอนที่ 4 เพียงเทานี้ ก็สามารถเรียกใชฟงกชนัตางๆภายในไลบรารี่ได ไลบรารีท่ี่เพิ่มเขามา
เอกสารเผยแพรเพ่ือการศึกษาเทานั้น 8Absolute Encoder Application Applied to MCS‐51 Microcontroller7. ข้ันตอนการคอมไฟลโปรแกรม ใหเลือกที่เครื่องมือ Build ดังภาพที1่4 ภาพท่ี 14 การคอมไฟลโปรแกรม 8. ผลของการคอมไฟลโปรแกรม จะไดไฟลที่มีนามสกุล .HEX ซึ่งจะอยูในไดเร็กทอรี่ของโปรเจ็กต ดังภาพท่ี 15 ไฟล .HEX ใชสําหรับโปรแกรมลงในหนวยความจําของไมโครคอนโทรลเลอร ภาพท่ี 15 ผลการคอมไฟลโปรแกรม เมนู Build แสดงรายละเอียดการคอมไฟลโปรแกรม
เอกสารเผยการดาวโ port) ในResearch1. 2. ยแพรเพ่ือการศึกษโหลดโปรแกรการโหลดขอที่น้ีจะดาวโหh Thailand กาทําการเชื่อมต ภาพที่ 16 กา เปดโปรแกรม ภาพษาเทานั้น รมลงหนวยควอมูลลงในหนวหลดขอมูลดวยารใชงานเบื้องตอไมโครคอนรเชื่อมตอไมโม Mพท่ี 17 หนาตาพอรตสหนวย3. Absoluวามจําไมโครวยความจําขอยโปรแกรม MงตนจะกลาวดนโทรลเลอรเโครคอนโทรMRT-ISP V2.1างโปรแกรม Mสาํหรับ Downloadยความจาํไมโครคอ เลือกการโปรแกรมแ1. เลือกไฟล .Hex ที่ตute Encoder รคอนโทรลเลอองไมโครคอนMRT-ISP V2.ดังขั้นตอนตอขากบัพอรตข ลเลอรเขากับ1 ดังภาพที ่17MRT-ISP V2d โปรแกรมลงอนโทรลเลอร แบบอัตโนมัต ิตองการ 2. เลือกApplication อร นโทรลเลอร จ.1 ซ่ึงเปนโปรอไปนี ้ขนาน (Paralle บคอมพิวเตอร7 2.1 กรุน IC MicrocontrolApplied to Mจะสงขอมูลผารแกรมที่พัฒนel Port) ของค พอรตขller MCS‐51 Microานพอรตขนานาโดยทีมงานคอมพิวเตอรดั ขนานของคอมพวิocontrollerาน (Parallel น Micro-ดงัภาพท่ี 16 วเตอร 9
เอกสารเผยแพรเพ่ือการศึกษาเทานั้น 10Absolute Encoder Application Applied to MCS‐51 Microcontrollerอุปกรณทดสอบการทํางานของ Absolute Encoder การทดสอบการทํางานของ Absolute Encoder ประกอบดวยสวนตางๆที่สําคัญคือ 1. สวนการแสดงผล LCD Display 2. สวนประมวลผลกลาง (MCS-51 Microcontroller) 3. Absolute Encoder 4. Power Supply 1. สวนการแสดงผล LCD Display ภาพที่ 18 LCD Display 2. ตัวประมวลผลกลาง MCS-51 Microcontroller ภาพที่ 19 MCS-51 Microcontroller รุน EMB-2000 3. Absolute Encoder (Model: E6C-AN4C , OMRON) ภาพที่ 20 Absolute Encoder MCS-51 Microcontroller Board รุน MEB-2000 Micro-Research (MRT) Thailand ดานหนา ดานหลัง IDC ชนิด 10 PIN แรงดนั 12-24 V สญัญาณเอาตพุต D0 – D6 LSB MSB VS
เอกสารเผยแพรเพ่ือการศึกษาเทานั้น 11Absolute Encoder Application Applied to MCS‐51 Microcontroller4. แหลงจายแรงดันไฟฟากระแสตรง ภาพที่ 21 แหลงจายแรงดนัไฟกระแสตรง (DC Power Supply) ขั้นตอนการทดลองอานขอมูลจาก Absolute Encoder 1. เชื่อมตออุปกรณท้ังหมดคือ Absolute Encoder, LCD Display และ Power Supply เขากับบอรดทอลองไมโครคอนโทรลเลอร MEB-2000 ดังภาพที่ 22 ภาพที่ 22 แสดงการเชื่อมตออุปกรณทดสอบทั้งหมด หมอแปลงไฟฟากระแสสลับ 220/15V 1A 5V-DC จายใหบอรดไมโครคอนโทรลเลอร สวิตซ ON-OFF 12 V-DC จายให Absolute Encoder 5V-DC เชื่อมตอกับพอรตขนานของคอมพิวเตอร 12V-DC เชื่อมตอ LCD เชื่อมตอ Encoder
เอกสารเผยแพรเพ่ือการศึกษาเทานั้น 12Absolute Encoder Application Applied to MCS‐51 Microcontroller2. ทําการเขยีนโปรแกรม ลงในไฟล main.c ดังตอไปนี ้ // main.c #include <REG52.H> #include <absacc.h> #include "mrt_lcd_v1_0.h" // เรียกใชงานไลบรารี่สําหรับจัดการแสดงผล LCD Display #define Sec 1 // กําหนดตัวคูณคาหนวงเวลา #define Time_Base 200 // ฐานเวลาเร่ิมตน #define Counter ((5000)*Sec) // กําหนดตัวนับเพ่ือคูณฐานเวลา ใชสําหรับสรางฐานเวลาจริง 1ms char _DelTim_(unsigned char _DelTim_,unsigned long int _DelCnt_) {
static _DelRun_=0; if(!_DelRun_) { if(_DelCnt_<1||_DelCnt_>0xFFFFFFFF)
return(0); _DelRun_=1; TMOD=0x02; TF0=0;TR0=0; //Stop TR0, TF0 Register switch(_DelTim_) { case 50 :TH0=0xD2; TL0=0xD2;break; case 100:TH0=0xA4; TL0=0xA4;break; case 200:TH0=0x48; TL0=0x48;break; default :return(0); break; } TR0=1; //On TR0 Register } while(_DelCnt_‐‐) { while(!TF0); TF0=0; //Clear Flag } TR0=0; _DelRun_=0; return(1); } char _InpPrtByt_(char _PrtNum_) { unsigned char _PrtDat_; if(_PrtNum_>3) return(0xFF); switch(_PrtNum_) { case 0: _PrtDat_=P0; break; case 1: _PrtDat_=P1; break; case 2: _PrtDat_=P2; break; case 3: _PrtDat_=P3; break; }return(_PrtDat_); } void print_digit(unsigned char dec_hex) { unsigned int x; x = dec_hex; lcd_dprint((x/100),nsign) ; x%=100; lcd_dprint((x/10),nsign) ; x%=10; lcd_dprint(x,nsign) ; }
…………………………………..มีตอหนาถัดไป………………………………ฟงกชัน InpPrtByt ใชอานขอมูลจากพอรตที่ตองการ เชน Port0, Port 1 เปนตน ฟงกชัน print_digit สําหรับแปลงขอมูลเลขฐานสิบหกเปนเลขฐานสิบและแสดงผลที่ LCD เรียกใชงานไลบรารี่สําหรับกําหนดคา Register ของ MCU- AT89S8252ฟงกชัน _DelTim_ เปนการคํานวณคาหนวงเวลาดวย Timer0 ใชฟงกช่ันน้ีสําหรับการหนวงเวลาการทํางานของ MCU ไดตามตองการ
เอกสารเผยแพรเพ่ือการศึกษาเทานั้น 13Absolute Encoder Application Applied to MCS‐51 Microcontroller (ตัวอยางโปรแกรมทั้งหมดสามารถศึกษาไดจากโปรเจก็ต Encoder_omron ในแผน CD ) ………………………………………………………………….. // Main Loop void main(void) { unsigned char temp; unsigned char A; lcd_init(); lcd_disp(cursor,off); lcd_disp(blink,off); lcd_comd(LCD_LINE1); lcd_sprint("*OMRON E6C‐AN4C*"); _DelTim_( Time_Base,Counter); lcd_comd(LCD_LINE2); lcd_sprint("‐ROTARY ENCODER‐"); _DelTim_( Time_Base,Counter); lcd_comd(LCD_LINE3); lcd_sprint(" WITH MCS‐51 "); _DelTim_( Time_Base,Counter); lcd_comd(LCD_LINE4); lcd_sprint("Micro‐controller"); _DelTim_( Time_Base,Counter*3); lcd_clear(); while(1) { temp = _InpPrtByt_(0) | 11000000; lcd_comd(LCD_LINE1); lcd_sprint("*Output Encoder*"); lcd_comd(LCD_LINE2); lcd_sprint("Binary= "); lcd_bprint(temp); lcd_comd(LCD_LINE3); lcd_sprint(" Hex= "); lcd_sprint("0x"); lcd_hprint(temp,2); if((temp<=0xFE)&&(temp>=0xD7)); { A = temp; A = (A‐0xD7); lcd_comd(LCD_LINE4); lcd_sprint(" STEP= "); print_digit(A); } _DelTim_(50,2000); //1 ms LCD Display delaying. } }
ประกาศตัวแปรเก็บผลของการกําหนดคาเริ่มตนของจอ LCD ปดการแสดง Cursor และการกระพริบ เขียนขอความบรรทัดที่ 1 แลวหนวงเวลา 1 S เขียนขอความบรรทัดที่ 2 แลวหนวงเวลา 1 S เขียนขอความบรรทัดที่ 3แลวหนวงเวลา 1 S เขียนขอความบรรทัดที่ 4 แลวหนวงเวลา 3 S ลบขอความบนจอ LCD ทั้งหมด อานขอมูลจาก Encoder ท่ีตอกับ Port 0 นําขอมูลที่อานไดเขียนลง LCD เปนเลขฐานสอง นําขอมูลที่อานไดเขียนลง LCD เปนเลขฐานสิบหก ตรวจสอบขอมูลท่ีอานจาก Encoder ตองอยูในระหวาง 0xFE ถึง 0xD7 คํานวณหา Step ของการหมุนเปลี่ยนตําแหนงซาย-ขวา และแสดงตําแหนง Step การหมุนบน LCD
เอกสารเผยแพรเพ่ือการศึกษาเทานั้น 14Absolute Encoder Application Applied to MCS‐51 Microcontroller3. ทําการคอมไฟลโปรแกรมดวย Keil C51 ตามขั้นตอนของการใชงาน Keil C51 เบ้ืองตน 4. ทําการดาวโหลดโปรแกรม .HEX ลงหนวยความจําไมโครคอนโทรลเลอร ตามขั้นตอนการดาวโหลดโปรแกรม 5. แสดงผลการทดลอง ดังภาพท่ี 23 ภาพที ่23 ผลกาทดสอบอานขอมูลจาก Absolute Encoder Step เริ่มตนของ Encoder หมนุเคลือ่นที่จํานวน 12 Step
เอกสารเผยแพรเพ่ือการศึกษาเทานั้น 15Absolute Encoder Application Applied to MCS‐51 Microcontrollerตารางที่ 1 ทดสอบขอมูลเอาตพุตของ Absolute Encoder Step Hex มุมองศา 1 0xD7 0 2 0xD8 9 3 0xD9 18 4 0xDA 27 5 0xDB 36 6 0xDC 45 7 0xDD 54 8 0xDE 63 9 0xDF 72 10 0xE0 81 11 0xE1 90 12 0xE2 99 13 0xE3 108 14 0xE4 117 15 0xE5 126 16 0xE6 135 17 0xE7 144 18 0xE8 153 19 0xE9 162 20 0xEA 171 21 0xEB 180 22 0xEC 189 23 0xED 198 24 0xEE 207 25 0xEF 216 26 0xF0 225 27 0xF1 234 28 0xF2 243 29 0xF3 252 30 0xF4 261 31 0xF5 270 32 0xF6 279 33 0xF7 288 34 0xF8 297 35 0xF9 306 36 0xFA 315 37 0xFB 324 38 0xFC 333 39 0xFD 342 40 0xFE 351 จากตารางที่ 1 เปนขอมูลเอาตพุตดิจิตอลเอนโคดเดอร แบบ Absolute ทดสอบจากการหมุนครบ 1 รอบ [0-360 องศา] โดยการหมุน 1 รอบ จะสามารถแบงขอมูลออกเปน 40 ชุดขอมูล (40 Step) ดังนั้นจะไดคามุมองศาเทากับ 9 องศา ตอ Step