Upload
vonhan
View
220
Download
4
Embed Size (px)
Citation preview
บทท 1 บทนำ�
1.1 คว�มสำ�คญและคว�มเปนม� (Importance and Background)
ในป จจ บ น การคอนโทรลมอเตอรกระแสตรงหรอด ซ มอเตอร (DC Motor) จะพบได โดยท ว ไป โดยเฉพาะ ในงานอตสาหกรรมสมยใหมสวนมาก ด วยความเจรญกาวหนาของเทคโนโลยทางไมโครอเลคทรอนคส (Microelectronic) และ ไมโครโปรเซสเซอร (Microprocessor) ทำาใหการออกแบบระบบคอนโทรลมอเตอรกระแสตรงและการวเคราะหปญหาเปนสงทนาสนใจและมความสำาคญมาก ระบบการคอนโทรลแบบดงเดมมพลงจกรกลทสำาคญ คอ พวกมอเตอรไฟฟาตางๆ Hydraulic และ พวก เบรกและ clutch เปนตน แตดวยความเจรญของเทคโนโลยการสรางแมเหลกถาวรทมคณภาพสง ทำาใหมอเตอรกระแสตรงกลายเปนพลงจกรกลทสำาคญในระบบคอนโทรลเกอบทกชนดในปจจบนซงพบเหนไดตงแตการใชมอเตอรกระแสตรงในเครองใชไฟฟาภายในบานโดยปกต การใชในรถยนต การใชในเครองคอมพวเตอร การใชในห นยนต ต ลอ ด ถ ง เคร อ ง จ กรกล ท ท ำา ง า นแ บ บ อ ต โ นมต ในอตสาหกรรมต างๆ ฯลฯ บวกก บความก าวหน าของไมโครโปรเซสเซอร สามารถนำามาประยกตใชกบการคอนโทรลมอเตอร กระแสตรงได จงทำาใหไดรบความนยมอยางมากในปจจบน
มอเตอรกระแสตรงมผลการทำางานทไมมต ำาแหนงหยดทแนนอน ดงนนระบบคอนโทรลมอเตอรกระแสตรงจงเปนแบบวงรอบปด ตำาแหนงเอาทพตหรอความเรวเอาทพทจะถกปอนกลบไปเปรยบเทยบกบอนพตอางองเพอใหไดผลการทำางานตามทตองการ เชนการบบงคบแขนหนยนต เมอจบวตถขนมาชนหนงเราจะควบคมใหแขนหนยนตเคลอนทไปอกจดหนงแลววางวตถลงหรอใชในการสงของจากทหนงไปยงอกทหนง เปนตน
DC motor Position Control using Microcontroller 1
ซ งโครงงานนจะเปนการออกแบบและสรางระบบควบคมตำาแหนงของดซมอเตอรโดยใชไมโครคอนโทรลเลอร ตระกล 8051 โดยความเรว และ ตำาแหนงทตองการจะถกปอนเขาไปใหกบไมโครค อ น โ ท ร เ ล อ ร ท า ง พ อ ร ต อ น ก ร ม โ ด ย จ ะ ใ ช โ ป ร แ ก ร มอนเตอรเฟส(Visual Basic) เปนตวตดตอรบสงคา และ ในการควบคมใหมอเตอรหมนตามความเรว และ ไปยงตำาแหนงทตองการนนจะผ านวงจรขบมอเตอรอ กวงจรในการขบมอเตอรโดยใช 89C2051 ซงจะเปนตวสราง Pulse Width Modulate ในการขบมอเตอร และ ในสวนของการตรวจสอบตำาแหนงจะใชเอนโคดเดอร (Encoder) สงคากลบมายงไมโครคอนโทรเลอร 8051 จากนนจะสงคามาแสดงยงโปรแกรมอนเตอรเฟสทางคอมพวเตอร
1.2 วตถประสงค ของโครงง�น (Objectives) 1. เพอศกษาการควบคมแหลงจายไฟแบบ PWM โดยใชไมโคร
คอนโทรลเลอร2. เพอศกษาการควบคมมอเตอรโดยใชไมโครคอนโทรลเลอร3. เพอศกษาการออกแบบโปรแกรมเพอใชการควบคมตำาแหนง
ของมอเตอร
1.3 ขอบเขตของโครงง�น (Scope of work) 1. จดสรางอปกรณชดควบคมมอเตอร โดย Microcontroller
เปนตวควบคม2. จดทำาโปรแกรมควบคม Motor ทสามารถนำาไปประยกตได
โดยมผลเปรยบเทยบในเงอนไขตางๆและทดสอบการควบคม Motor ใหถงตำาแหนงทตองการ
1.4 ประโยชนทค�ดว�จะไดรบ (Expect Results) เชงปรมาณ
DC motor Position Control using Microcontroller 2
1. ไดอปกรณชดควบคมตำาแหนงดซมอเตอรเชงคณภาพ1. ไดรบความรเพมเตมเกยวกบการทำางานของอปกรณอเลคทรอ
นกสตางๆ2. ไดรบความรเกยวกบการเขยนโปรแกรมดวยภาษา C เพมขน3. เปนพนฐานความเขาใจในระบบควบคม
บทท 2 ขนตอนก�รทำ�ง�น
2.1 คนคว�ขอมล- รวบรวมเนอหาเอกสารทเกยวกบชนงาน- รวบรวมเอกสารทเกยวของกบวงจร- เรยนรการทำางานของอปกรณทใช
2.2 ก�รออกแบบเครองมอ- ขนตอนออกแบบวงจรอเลกทรอนกส
1. ออกแบบวงจรอเลกทรอนกส2. เลอกจำานวน INPUT/OUTPUT3. เลอกวธการควบคม4. รางตนแบบวงจรไฟฟา
DC motor Position Control using Microcontroller 3
5. ตรวจสอบกำาลงไฟฟาทใช6. ออกแบบ Power Supply
2.2.1 จดห�อปกรณ2.2.2 สร�งเครองมอและทดสอบ
- ขนตอนออกแบบการทดสอบ1. ออกแบบการทดสอบกบวงจร2. ออกแบบตรวจสอบสญญาณเขาออก3. ออกแบบ เมอมสญญาณรบกวน4. จำาลองสถานะภาพแลวสงเกตความเปลยนแปลง5. กำาหนดวธการทดสอบ
- ขนตอนสรางวงจร1. สรางวงจรตามทไดออกแบบไว
- ขนตอนทดสอบ1. ทดสอบตามทไดออกแบบไว2. ตรวจสอบขอผดพลาด
2.2.3 ก�รออกแบบในท�งโปรแกรม(Software Design)
- รวบรวมเนอหาเอกสารทเกยวของ- ขนตอนออกแบบสรางโปรแกรมในการคำานวณ- ขนตอนออกแบบการทดสอบ- ขนตอนการเขยนโปรแกรม- ขนตอนการทดสอบโปรแกรม- ขนตอนการแกไขปรบปรง- ขนตอนทดสอบอกครง
2.2.4 ทดสอบ และ สรปผล- ขนตอนทดสอบอกครง
DC motor Position Control using Microcontroller 4
1. ทดสอบเหมอนเดมอกครง2. ทำาซำาเมอเกดความผดพลาดอก
- สรปผลMount –
year step7 - 45
(ก.ค.)
8 – 45
(ส.ค.)
9 – 45
(ก.ย.)
10 – 45
(ต.ค.)
11 – 45
(พ.ย.)
12 – 45
(ธ.ค.)
1 – 46
(ม.ค.)
2 – 46
(ก .พ.)
Step1.Step 2.Step 3.Step 4.Step 5.Step 6.
2.2.5 ต�ร�งแผนง�น
อปกรณในโครงง�น- เครองคอมพวเตอร 1 เครอง- ดซมอเตอร 1 ตว- Microprocessor 8051 2 ตว
DC motor Position Control using Microcontroller
RetailStep 1
คนควาขอมล
Step 2
ออกแบบเครองมอ
Step 3
จดหาอปกรณ
Step 4
สรางเครองมอและทดสอบ
Step 5
ทำาการโปรแกรมและทดสอบ
Step 6
ทดสอบ, แกไขปรบปรง และ สรปผล
5
- Microprocessor 89C2051 1 ตว- Rotary Encoder 1 ตว- วงจร Reset 1 วงจร
o ตวตานทาน 5 k 1 ตวo ตวเกบประจ 10 F 1 ตวo Switch 1 อน
- วงจร Crystal 3 วงจรo Crystal 11.0592 MHz 1 ตวo ตวเกบประจ 33 pF 2 ตว
- ตวเกบประจ 1F 5 ตว- ตวตานทาน 330 โอหม 8 ตว- MAX232 1 ตว- พอรตอนกรม 1 อน- ทรานซสเตอร TIP 41B 4 ตว- Opto 4n26 4 ตว- DIODE 4 ตว
DC motor Position Control using Microcontroller 6
บทท 3 มอเตอรกระแสตรง
3.1 หลกก�รทำ�ง�นของมอเตอรกระแสตรงเมอมการผานกระแสไฟฟาเขาไปยงขดลวดในสนามแมเหลกจะ
ทำาใหเกดแรงแมเหลกซงมสดสวนของแรงขนกบกระแสแรงของสนามแมเหลก โดยแรงจะเกดขนเปนมมฉากกบกระแสและสนามแมเหลก ขณะททศทางของแรงกลบตรงกนขามกน ถาหากกระแสของสนามแมเหลกไหลยอนกลบจะทำาใหเกดการเปลยนแปลงของกระแส และ สนามแมเหลกเปนผลทำาใหทศทางของแรงเปลยนไป ดวยคณสมบตนทำาใหมอเตอรกระแสตรงกลบทศทางการหมนได
สนามแมเหลกของมอเตอรสวนหนงเกดขนจากแมเหลกถาวรซงจะถกยดตดกบแผนเหลก หรอ เหลกกลา โดยปกตสวนนจะเปนสวนทยดอยกบท และ ขดลวดเหนยวนำาจะพนอยกบสวนทเปนแกนหมนของมอเตอร
3.2 คณสมบตของมอเตอรกระแสตรงในการอธบายคณสมบตของมอเตอรกระแสตรงใหละเอยดนน
ตองพจารณาแรงดนทปอนและความตานทานของโรเตอรดวย วงจรภายในของมอเตอรเขยนไดดงรปท 3
รปท 1 วงจรภายในของมอเตอรกระแสตรง
DC motor Position Control using Microcontroller 7
โดยสมมตใหทนโรเตอรไมมความตานทานอยเลย อนกรมกบความตานทานซงในทนกคอความตานทานของขดลวดนนเอง แรงดนทขวตอสายของมอเตอรกคอผลบวกระหวางแรงดนททนโรเตอร (VA) และ แรงดนตกครอมความตานทานขดลวด (VR)
แรงดน VA ถกเรยกวา แรงเคลอนเหนยวนำาปอนกลบ (BACK EMF) ซงเกดขนในโรเตอรขณะทหมนแรงดนทเกดขนนเปนไปตากกฎของการเหนยวนำาแมเหลกไฟฟาจากการเคลอนทของตวนำาในสนามแมเหลก สมพนธก บแรงเคลอนเหนยวน ำาแมเหลก และ ความเรวในการเคลอนทของตวนำา แรงดนทเกดขนจะมขวตรงกนขามกบแรงดนทปอนใหกบมอเตอร และ แปรผนตรงกบความเรวในการหมน ผลบวกของแรงดนททนโรเตอร (VA) และแรงดนตกครอมขดลวด (VR) ตองเทากบแรงดนทปอนใหกบมอเตอร (V)
เมอพจารณาตงแตมอเตอรหยดนง ความเรวมคาเปนศนย ดงนน VA = 0, VR = V กระแสทไหลในมอเตอรหาไดจาก
I = VR / R (A)
เมอมอเตอรเร มหมนจะมความเรว และ VA เพมขนเปนเสนตรงตามความเรว VR ซงมคาเทากบความแตกตางระหวาง VA และ V จะเร มลดลงกระแส I กจะเรมลดลงเชนกนขณะทมอเตอรยงมความเรงอย ความเรวจะเพมขน แรงบดจะลดลงจนกวาจะถงจดซงแรงบดจองมอเตอรรบภาระโหลดไดสมดลพอด ขณะทมอเตอรไมมโหลด และ หมนอยางอสระจะมเพยงคาความฝดของแบรง และ แรงตานอากาศทำาให VA เกอบเทากบคา V
DC motor Position Control using Microcontroller 8
V = VA + VR (V)
3.3 โมเดลคณตศ�สตรของดซมอเตอรดซมอเตอรทใชรวมกบดซแอมปลไฟลทงในระบบการบงคบ
ตำาแหนงและการบงคบความเรวมกจะไดรบการประยกตใชเปนสวนประกอบสรางกำาลงงานในระบบการนำารองและระบบบงคบตางๆ และเนองจากวทยาการเกยวกบสารแมเหลกและการขยายดวยโซลคสเตททำาใหดซมอเตอรแบบแมเหลกถาวรไดรบความนยมใชเปนสวนประกอบการขบเคลอนในระบบการบงคบแบบปดลฟตางๆ มากขน การออกแบบและการชดเชยระบบดงกลาวไดอยางเหมาะสมจะตองใชโมเดลทางคณตศาสตรของสวนประกอบทงหมดในระบบ
รปท 2 แสดงอนพตและเอาตพตของโมเดลทางคณตศาสตรของมอเตอร
โมเดลอเลคโทรแมคค�นคอล
DC motor Position Control using Microcontroller 9
โมเดลอเลคโทรแมคคานคอลของมอเตอร
อารมาเจอรโวลทเตจ
แรงบดโหลด
ความเรวของเพลามอเตอร
ตำาแหนงของเพลามอเตอร
สวนสำาคญของดซมอเตอรแบบฟลดแยกกระตนมโมเดลดงแสดงในรป
รปท 3 แสดงโมเดลของดซมอเตอรแบบฟลดแยกกระตน
Ra: ความตานทานของอารเมเจอรLa: อนดคแตนซของอารเมเจอรVg: โวลทเตจกำาเนดในอารเมเจอร(โวลทเตจยอนกลบ)Rf: ความตานทานของฟลดLf: อนดคแตนซของฟลด: ชองวางอากาศของเสนแรงสนามแมเหลก: ความเรวของเพลาอารเมเจอร
Tg: แรงบดทพฒนาขนในมอเตอรTf: แรงบดเสยดทานของมอเตอรTJ: แรงเฉอยของมอเตอรTL: แรงบดโหลดบนเพลาของมอเตอร
ขนแรกเราจะหาสมการพนฐานโมเดลของดซมอเตอรไดจากลฟของอารเมเจอร
Vi(t) = Raia(t) + La + Vg(t) ----- (1)
DC motor Position Control using Microcontroller 10
เทอมโวลทเตจ Vg(t) ในสมการ (1) คอโวลทเตจยอนกลบของมอเตอรซงเกดขนเมอเสนลวดตวนำาของอารมาเจอรหมนตดเสนแรงแมเหลกซงเกดขนในกระแสของฟลด (if) ตามกฎของฟาราเดยลฟของเสนลวดตวนำาหมนในฟลดแมเหลกคงทจะมการเหนยวนำาโวลทเตจขนในขดลวดนน
Vi(t) = ----- (2)เมอ คอเสนแรงแมเหลกทลงเคจ(linkages) ไปยงขด
ลวดและ t คอเวลาในการหมนของคอมนวเทเตอรของมอเตอร การควบคมวงจรของแตละสวนของตวนำาในโรเตอรจะเกดโวลทเตจขนในสวนของตวนำานนตามสมการ (2) เมอ จะเปนสดสวนตอเสนแรงแมเหลกในชองวางอากาศและความเรวเชงมม เราจะไดวา
Vg(t) = ----- (3)สมมตใหกระแสของฟลดมคาคงทและไมคดถงสวนการ
เปลยนแปลงในเสนแรงฟลดเนองจากอารเมเจอรรแอคชนเสนแรงฟลดกจะมคาคงทดงนนสมการ (3) กจะเปน
Vg(t) = ---- (4)เมอเราสมมตใหเสนแรงของฟลมคาคงท แรงบดของแมเหลก
ไฟฟาซงเกดขนแกโรเตอรของมอเตอรจะเปนสดสวนกบกระแสของอารมาเจอร
Tg(t) = Kt ia(t) ---- (5)เมอ Kt คอ คาคงทของแรงบดของมอเตอร
กำาลงงานเชงกลทเกดขนในโรเตอรคอผลคณของแรงบดทเกดขนและความเรวเชงมม
Pg(t) = Tg(t) ---- (6)กำาลงงานเชงกลทเกดขนในโรเตอรทงหมดนจะจายไปยงโหลด
ทตออยกบเพลาของมอเตอรแตกำาลงงานนบางสวนจะสญเสยไปในมอเตอร การสญเสยจากแรงเสยดทาน หมายถงความหนวงเนองจากลมทมตอโรเตอร แรงเสยดทานตวรองรบโรเตอร กระแสทไหลวนในเหลกของโรเตอรและฮสเทรซส โดยแรงบดตางๆแสดงดงน
DC motor Position Control using Microcontroller 11
รปท 4 แสดงถงแรงบดตางๆทเกดขนตอโหลดของมอเตอร
Tg(t): แรงบดของมอเตอรTf(t): แรงบดทตองชนะการสญเสยเนองจากการเสยดทานTJ(t): แรงบดเพอใชเพมอตราเรงแกความเฉอยของโหลดTL(t): แรงบดโหลด
ในชวงเวลาใดๆกตาม แรงบดของมอเตอรจะตองเทากบและมทศทางตรงขามกบผลรวมของแรงบด Tf(t) TJ(t) และ TL(t) ดงนน
Tg(t) = Tf(t) + TL(t) + ----- (7)
เมอ J คอผลรวมของโมเมนทแรงเฉอยของโรเตอรและโหลดทตออยทเพาของมอเตอร
ผลรวมของแรงบดเสยดทานทประกอบกนขนทเพลาของมอเตอรซงเปนลเนยรฟงกชนกบความเรวเชงมมของโรเตอรเรยกวา สวนประกอบของวสคอสฟรคชนและมกจะอยในเทอมทแยกออกจากฟรคชนอนๆ ซงแสดงไดดวยสมการตอไปน
Tg(t) = Tf(t) + TL(t) + +----- (8)
เมอ B คอสมประสทธของวสคอสฟรคชนของมอเตอรและโหลดทตออยกบเพลาของมอเตอร Tf(t) คอผลรวมของฟรคชนของโหลดและมอเตอรทงหมด มแรงตานของลมและการสญเสยกำาลงในเหลกของเพลามอเตอรยกเวนวสคอสฟรคชน
สมการ (1) (4) (5) และ (8) เปนชดสมการพนฐานของดซมอเตอรโมเดลและสมการเหลานเราสามารถจะหาทรานสเฟอรฟงกช
DC motor Position Control using Microcontroller 12
นของดซมอเตอรได โดยใสลาปลาสทรานสฟอรมทงสองขางของชดสมการพนฐานไดเปน
Vi(s) – Vg(s) = (Ra+sLa) Ia(s) ----- (9)
Vg(s) = ----- (10)Tg(s) = Kt Ia(s) -----
(11)Tg(s) – Tf(s) – TL(s) = (B + sJ)
----- (12)สามารถเขยนเปนบลอกไดอะแกรมทแสดงสมการพนฐานเหลานไดดงน
รปท 5 แสดงบลอกไดอะแกรมของดซมอเตอรโมเดลขอสงเกต
สมมตวาโวลทเตจทปอนใหกบวงจรอารมาเจอรของมอเตอรมคาคงทดงนนมอเตอรจะหมนดวยความเรวคงทคอทำางานอยทสภาวะสงบนงดวยโหลดทคงท กำาลงงานเชงกลทเกดขนโดยโรเตอรจะหาไดจากสมการ (6) จะได
Pg = Tg = Kt Ia ---- (13)
เมอทกเทอมในสมการสดทายมคาคงทเนองจากมอเตอรทำางานอยทสภาวะสงบนงกำาลงไฟฟาทถกดดกลนโดยอารเมเจอรตองเทากบ
P = Vg Ia = Ke Ia ---- (14)
DC motor Position Control using Microcontroller 13
ดงนนเราจะไดวากำาลงงานเชงกลทเกดขนตองเทากบกำาลงงานไฟฟาทถกดดกลนในโรเดอรคอสรปไดวา Ke = Kt
ทรานสเฟอรฟงกชนของดซมอเตอรบลอกไดอะแกรมของรปท 5 แสดงถงระบบทมสองอนพท และมเอาตพทเปนความเรวเชงมม และการเคลอนทแบบเชงมม(s)จากรปท 5 ความเรวเอาทพทของระบบเขยนไดเปน
---- (15)เมอ
---- (16)---- (17)
G1(s) คอทรานสเฟอรฟงกชนระหวางโวลทเตจและความเรว
= ----- (18)เมอ
สมการ (18) เปนโวลทเตจทรานสเฟอรฟงกชนของดซมอเตอรในเมอสมมตวา Tf และ TL มคาเปนศนย สมการ (18) สามารถเขยนใหมไดเปน
เมอ = ไทมคอนสแตนททางไฟฟา
= ไทมคอนสแตนททางเชงกล
DC motor Position Control using Microcontroller 14
ถาอนดคแตนทของอารมาเจอรมคานอย ไทมคอนสแตนททางไฟฟาสามารถตดทงไดและไดสมการเปน
= ----- (19)เมอ
ในสมการ (19) คาคงท Km อาจเรยกไดวาเปนคาคงทของมอเตอร ทรานสเฟอรฟงกชนแรงบดโหลด G2(s) หาไดเปน
= ----- (20)
ซงถาอนดคแตนทของอารมาเจอรไมนำามาคด จะทำาใหไดสมการ ดงน
ซงจากสมการท (15) เมอใหคาของ วา Tf และ TL มคาเปนศนยจะทำาใหคาทรานสเฟอรฟงกชนมคาดงน
และจากรปท 5 ตำาแหนงเอาทพทของระบบเปนดงนโมเดลคณตศาสตรในการควบคมตำาแหนงของมอเตอร จาก
transfer function ในหวขอท 3.3 โมเดลคณตศาสตรของดซมอเตอร ซงจะได model ของการควบคมความเรวของมอเตอรในรปของสมการอนดบหนงเปนดงน คอ
DC motor Position Control using Microcontroller 15
จากสมการขางตนดงกลาวนนจะเหนถงความสมพนธระหวางความเรวเชงมม (output) และ คาแรงดนทปอน (input)
และในการควบคมตำาแหนงจะมการผานตว Integrator (1/s) ทำาใหไดเอาทพตคอ Ө(s) ซงจากรปท 5. และ transfer function ทไดจากหวขอท 3.2 ขางตนนนเมอทำาการผาน Integrator (1/s) เขาไปจะทำาใหไดคาของ output เปนมมในการเคลอนทของมอเตอร ซงเขยนในรปของสมการไดดงน
สวนในการหาโมเดลมอเตอรทใชในการทดลองนน เรากำาหนดใหโมเดลของมอเตอรเปนโมเดลมอเตอรอนดบหนง (First Order) ซงเราไดทำาการทดลองเพอหาโมเดลทเปนลกษณะอนดบหนงดงทจะกลาวถงในบทท 5 หวขอท 5.5
บทท 4 หลกก�รควบคม คว�มเรว และ ตำ�แหนง
ของมอเตอรกระแสตรง
หลกก�รควบคมคว�มเรว และ ตำ�แหนงรปท 6 คอ บลอกไดอะแกรมของระบบควบคมความเรวใน
ระบบกลไกแบบเซอรโวนมอเตอรถกเรยกวา มอเตอรแบบเซอรโว
DC motor Position Control using Microcontroller 16
(servo motor) เครองวดรอบในลปแบบปอนกลบจะวดความเรวของมอเตอรแบบเซอรโว และ สงปอนกลบมาในรปของสญญาณไฟฟา (แรงดน หรอ กรพะแส) ซง แปลตามความเรวเพลาของมอเตอร ในทนลปปอนกลบจะทำาใหความเรวเอาทพทของมอเตอรมคาคงทมากขน
ระบบแบบ closed loop ถกใชรวมอยในระบบเครองมอ เครองจกร หรอ สวานกำาลงเพอชดเชยความแตกตางของโหลดหรอวสดทถกตดหรอถกเจาะ วสดเนอแขงจะหนวงความเรวของสวาน หรอ เครองมอทใชในการตด และ สวานจะมความเรวเพมขนในวสดเนอออน
รปท 6 ระบบควบคมความเรว ทประกอบดวยลปการควบคมปอนกลบเพยงลปเดยวเหมาะสำาหรบอปกรณสวานไฟฟาเคลอนท
ในลปปอนกลบความเรวของมอเตอร ทประกอบดวยเครองวดความเรว ความเรวของเครองมอจะยงคงมคาคงท เนองจากเมอเครองมอทใชในการตดมความเรวลดลง สญญาณปอนกลบจะควบคมมอเตอรใหเพมความเรวขน ในขณะเดยวกน เมอเครองมอตดชนงานทเปนวสดออน ลปปอนกลบจะปองกนไมใหมอเตอรเรงความเรวเกนขนาด
อยางไรกตาม ถาการประยกตใชงานมความตองการ วงจรควบคมเพมเตมสามารถถกเพมขนมาเพอทำาใหมอเตอรมความเรวคอย ๆ เพมขน และ คอย ๆ ลดลงจนกระทงหยด กราฟของความเรวเขยนไดเปนรปของสามเหลยมทประกอบดวยสวนทลาดขน และ สวนทลาดลง หรอ อาจเปนรปแทรปซอยด (Trapezoid) ซงแบงเปน 3
DC motor Position Control using Microcontroller 17
สวนคอ สวนเพมความเรวขน (Ramp up ) สวนความเรวคงทในชวงเวลาหนง และ สวนความเรวลดลง
รปท 7 คอ บลอกไดอะแกรมของระบบควบคมตำาแหนงนอกจากเครองวดความเรวในลปปอนกลบความเรวแลว ระบบกลไกแบบเซอรโวนจะมลปปอนกลบการกำาหนดตำาแหนง
ตวเซนเซอรในการตรวจจบตำาแหนง และ ความเรว จะรวาเมอใดทเพลาของมอเตอรเซอรโวอยในตำาแหนงมมทตองการโดยการนบสญญาณพลส และ เปรยบเทยบพลสกบสญญาณอนพท กอนทจะหยดเพลาเมอนบไดเทากน ซงกคอ บลอกทชอตวอนทเกรท (Integrator) ในรปท 5 โดยทวไป จะเปนวงจรอเลคทรอนคสควบคมตำาแหนงของเพลา ตวเซนเซอรความเรวในลปปอนกลบของระบบควบคมตำาแหนง ชวยทำาใหระบบเกดเสถยรภาพขน
รปท 7 ระบบควบคมตำาแหนง ประกอบดวยลปการควบคมตำาแหนงปอนกลบ และ ลปควบคมความเรวปอนกลบ
ในระบบควบคมกำาลงบด (Torque control system) กำาลงบดของมอเตอรเซอรโวจะถกรกษาใหมคาคงท เนองจากแรงบดของมอเตอรแปรตามกระแสของมอเตอร ดงนน กระแสทปอนใหกบมอเตอร เพอรกษาคาแรงบดใหคงทเอาไว วธนสามารถทำาไดดวยวงจรททำาการเปรยบเทยบกระแสเอาทพทของมอเตอรกบกระแสอนพทของมอเตอร และ ขยายผลตางเพอใชเปนวงจรควบคมแรงบดปอนกลบ (Torque control feedback circuit )
DC motor Position Control using Microcontroller 18
ระบบควบคมการเคลอนทแบบเพม (Incremental motion control system) ทำาหนาทสบเปลยนโหมดควบคมจากโหมดหนงไปเปนอกโหมดหนง เพอใหเกดสมรรถนะการใชงานทตองการ ตวอยางเชน การควบคมความเรวและตำาแหนง ทำาหนาทควบคมใหไดความเรวทตองการ แตกสามารถปรบเปลยนเปนการควบคมตำาแหนง เพอหยดเพลาใหไดถกตองแมนยำาขน
4.1 ก�รควบคมคว�มเรวของมอเตอรขนพนฐ�น1. การควบคมดวยตวตานทานทปรบคาได
เปนรปแบบพนฐานทสดของการควบคมมอเตอรคอ ใชตวตานทานปรบคาไดอนกรมกบมอเตอร โดยตวตานทานทปรบคาไดจะเปนตวกำาหนดความเรวในการหมนของมอเตอร การบงคบแบบนไมมประสทธภาพเพราะกำาลบไฟสญเสยไปในตวความตานทาน มกนยมใชกบมอเตอรตวเลกๆ การบงคบแบบนใหคณสมบตการสตารทด (ใหแรงบดสงทความเรวตำา) แตจะใหความเรวสงมากเมอมอเตอรอยในภาวะทมโหลดนอยๆ ดงนนการบงคบแบบนมประโยชนเฉพาะภาวะทแรงตานคงท เชน การบงคบความเรวของเครองจกรเยบผา เปนตน
DC motor Position Control using Microcontroller 19
รปท 8 วงจรควบคมความเรวของมอเตอรกระแสตรงแบบใชตวตานทานอนกรมและกราฟแสดงคณสมบต
2. การควบคมดวยวธเปลยนคาแรงดนวธการนดกวาวธการแรกแตจะซบซอนกวาตองใชอปกรณอ
เลกทรอนคสททอตราขยายกำาลงสง และ มอเตอรจะถกปอนดวยแรงดนทเปลยนแปลงคาได จากแหลงจายทมอมพแดนซตำา ขอดของการควบคมวธนคอ ถาความเรวลดลงจากผลของแรงบด แรงดนทปอนใหกบมอเตอรจะเพมขนเพอรกษาระดบความเรว สวนขอเสยจากการควบคมวธนคอ เมอมอเตอรมความเรวตำาแรงดนทปอนใหกบมอเตอรจะมคาตำาเชนกน
DC motor Position Control using Microcontroller 20
รปท 9 การควบคมความเรวโดยเปลยนคาแรงดน
3. การควบคมดวยตวตานทานทปรบคาไดการควบคมแบบนสามารถขบดซมอเตอรไดความเรว 10 : 1
และใหการเรคกเลททดกวากระแสถกปลอยใหฟลดคงท ผลของคณสมบต ความเรวและแรงบดไดรบการปรบปรงดขนกวาการบงคบดวยความตานทานทปรบคาได และใหการเรคกเลทความเรวคงทไดดขนตลอดชวงความเรวทกวางกวา
4. การควบคมแบบ PWM (Pulse Width Modulation)Pulse width modulation (PWM) คอ เทคนคสำาหรบ
ควบคมวงจรทางดานฮารดแวรโดยใชสญญาณเอาทพตแบบดจตอลของไมโครโปรเซสเซอรควบคม
DC motor Position Control using Microcontroller 21
ก�รทำ�ง�นของสญญ�ณ PWM รปท 1 แสดงสญญาณ PWM ทแตกตางกน 3 สญญาณ
- โดย 10a แสดงสญญาณ PWM ท 10% duty cycle คอ สญญาณในการออนจะเปน 10% ของคาบสญญาณ และ จะออฟเปน 90% ของคาบสญญาณ
- โดย 10b แสดงสญญาณ PWM ท 50% duty cycle คอ สญญาณในการออนจะเปน 10% ของคาบสญญาณ และ จะออฟเปน 50% ของคาบสญญาณ
- โดย 10c แสดงสญญาณ PWM ท 90% duty cycle คอ สญญาณในการออนจะเปน 10% ของคาบสญญาณ และ จะออฟเปน 10% ของคาบสญญาณ
เชน ถา Power Supply ม 9V และ duty cycle เปน 10% จะไดเอาทพต 0.9V
รปท 10 แสดงสญญาณ PWM ซงแสดงคา duty cycles ทตางๆกน
DC motor Position Control using Microcontroller 22
รปท 10a
รปท
รปท
ทำ�ไมถงใช PWM ในก�รควบคมคว�มเรวมอเตอร มหลายเหตผลวาทำาไม PWM ถงถกเลอกใชในการควบคมความเรวของมอเตอร เชน :
- PWM งายในการอนเตอรเฟสกบไมโครคอนโทรลเลอร และ ใชเพยงแคเอาทพตสญญาณเดยวในการควบคมความเรว
- PWM มประสทธภาพ คอ Power Supply จะจายกำาลงไดเตมททง ON และ OFF(FULL ON and FULL OFF)
- PWM ทำาใหไดคา ทอรค และ ความเรวสงสดของมอเตอร เปนเพราะ Power Supply จะจายกำาลงไดเตมททง ON และ OFF(FULL ON and FULL OFF)
ซงในโครงงานนทใชทรานซสเตอรเปนตวตดตอวงจร เราสามารถจะควบคมจงหวะในการจายกระแสได การ on และ off ในสดสวนตางๆกน ดวยความถทเหมาะสมกจะทำาให motor หมนทความเรวตางๆ กนตามความตองการได ถาความถตำาไป motor ก จะหมนแบบกระตกๆ ไมเรยบ และ อาจจะไดยนเสยง จากการสนของ ขดลวดทองแดง ถาความถสงกวา 20 kHz หเรากจะไมไดยนเสยงขดลวดสนอกตอไป และ ทความถสงขนไป มากๆ กจะเกดการสญเสย พลงงาน ในวงจรมากเกนความจำาเปน
DC motor Position Control using Microcontroller 23
4.2 ก�รควบคมตำ�แหนงของมอเตอร ในโครงงานนไดนำาเอา Rotary Encoder เขามาใช และ อานคาออกมาเพอตรวจสอบทศทาง และ ตำาแหนงของการเคลอนท เพอนำามาทำาการเปรยบเทยบตำาแหนงการเคลอนทกบคา input โดยหลกการทำางานของ Encoder มดงน
เอนโคดเดอรRotary Encoder มลกษณะเปนแผนกลมมแกนอยตรง
กลาง และ ทแผนกลม จะมชองเลก ทแสงสามารถ สองผานได เปนจำานวนมากเราเรยกชองนวา ชอง slit ซงทดานหนงของ แผนกลม น จะมตวสงแสง infrared ไปยงตวรบสญญาณแสง infrared ซงจะอยในดานตรงกนขาม ดงรปท 11
รปท 11 แสดง Rotary Encoder
เมอหมนแกนหมนทำาใหแผนกลมหมนไปตดลำาแสง Infrared ดงนนชดรบแสง infrared จงมแสงมากระทบเปนชวงๆ (เปน
DC motor Position Control using Microcontroller 24
pulse) ตามจงหวะทแสงผานชอง slit จงทำาให สญญาณ out put ของ ชดรบแสง infrared มลกษณะเปน plus ดงรปท 12
รปท 12 แสดงการสราง pulse ของ Rotary Encoder
จำานวน pulse ทไดออกมาน จะเปนตวทชบงวา motor หมนไปกองศา หรอกรอบ ซงเราสามารถคำานวณไดจาก สตร จำานวนรอบท motor หมนไป = จำานวน plus คาความละเอยดของ rotary encoder โดยท คาความละเอยดของ rotary encoder นนนยมใชหนวยเปน plus/ round หรอ ppr เชน 1000 ppr กหมายถงวาเมอ motor หมนไป 1 รอบจะม plus ออกมา 1000 plus เปนตน สวนในเรองทวาเราจะทราบไดอยางไรวา motor หมนไปทศทางใดนน สวนใหญแลวจะใชวธสราง ชอง slit เปน 2 ชดเหลอมกน 90 องศา ดงรปท
รปท 13 แสดง Pulse ของ Rotary แบบสองเฟส
DC motor Position Control using Microcontroller 25
หรออาจจะใชชอง Slit เพยง 1 ชดแตมการจดวางชดรบสญญาณแสงดงรปขางลางแตขอสำาคญคอจะตองม phase ตางกน 90 องศา
รปท 14 แสดงการตรวจเชคสญญาณ pulse ของ Rotary Encoder
ดงนนสญญาณ output จาก motor จงม 2 ชด คอ A และ B โดยทสญญาณ pulse จาก A และ B กจะเหลอมกน 90 องศาดวย อาจกลาว ไดวาสญญาณ output จาก motor มคาเทากบ 2 bit คอหนง bit มาจาก A และอกหนง bit มาจาก B ดงรปท 15
รปท 15 ลกษณะ pulse ของ Rotary Encoder ทง สองเฟส
ถาเราให Pulse ในชวง high มคาเปน “1” และ pulse ในชวง low มคาเปน “0” เราสามารถใชคาดงกลาวมาคำานวณหา
DC motor Position Control using Microcontroller 26
ทศท�งท motor หมนไดดวยใชวธการทาง digital คอการนำาคาทอานไดมาทำาการ exclusive OR (XOR) กนโดยการนำา bit ทางขวาของคาเกามา XOR กบ bit ทางซายของคาใหมทอานไดตามตวอยางขางลาง
รปท 16 แสดงความละเอยดของ pluse
สมมตในตอนแรก motor อยทตำาแหนง P1 เพราะฉะนนคาของตวเลข binary ทอานไดจาก encoder จะมคาเปน 11 ถา servo motor หมนไปท ต ำาแหน ง P3 จะท ำา ใหค าของต วเลข binary ทอานไดจาก encoder จะมคาเปน 10 ดงนนถาเรานำาเอาคาทางขวา จากคาทอานไดในครงแรก ( 11 ) ซงกคอ 1 มา XOR กบคาทางซายทอานไดในครงตอมา ( 10 ) ซงกคอ 1 จะไดผลลพธเทากบ 0 เพราะฉะนนคา 0 จงเปนคาทบอกวา motor หมนไปทางขวา ในทางกลบกนถาในตอนแรก motor อยทตำาแหนง P1 และตอมา motor หมนไปทตำาแหนง P2 ถาเรานำาเอา คาทางขวา จากคาทอานไดในครงแรก ( 11 ) ซงกคอ 1 มา XOR กบคาทางซายทอานไดในคร งตอมา ( 01 ) ซงกคอ 0 จะไดผลลพธเทากบ 1 เพราะฉะนนคา 1 จงเปนคาทบอกวา motor หมนไปทางซาย และการ XOR คาตางๆไดแสดงไวดงตารางดานลาง
ต�ร�งท 1 แสดงการ XOR ดวยคาตางๆ
A B A X OR B
DC motor Position Control using Microcontroller 27
0 0 00 1 11 0 11 1 0
Pulse ทไดจาก rotary encoder จะถกนำาไปเชอมตอเขากบวงจรนบ pulse
หรอวงจรคำานวณเพอทจะตรวจสอบวา motor หมนไปทศทางใดและอย ท ตำาแหนงใด ตามวธทไดกลาวไวขางตน โดยสวนมากแลว motor ทใช rotary
encoder แบบน จะมจำานวนรอบ ของการหมน ทไมจำากด โดยจะหมนไปกรอบ กได ขนอย กบ ความสามารถของวงจรนบ plus และ วงจรคำานวณ
ดงนนเราอาจจะกลาวไดวา encoder ทใชกนอยโดยทวไปนนมอย 2 แบบใหญๆคอเปนแบบมคา output ทไมจ ำากด(incremental encoder) และแบบทมคา output ทจำากด( absolute encoder)
Incremental encoder มกจะเปน encoder แบบ rotary encoder ดงทไดกลาวไวในตอนตนแลววาขนาดของ output ของ encoder แบบนขนอยกบการออกแบบวงจรนบและวงจรคำานวณ
Absolute encoder ทพบเหนสวนใหญจะเปนแบบ potentiometer แตในบางครงกอาจเปนแบบ rotary encoder กไดแตจะมการออกแบบลกษณะของชอง slit
ทตางไปจาก rotary encoder ทไดไวในตอนตนโดยอาจจะมคาของ output ตงแต 4
bit ถง 16 bit
ในแงของการใชงานแลว motor ทม encoder แบบ incremental encoder นนจะใชงานยงยากกวา motor ทม encoder แบบ absolute encoder เพราะ output ของ increment encoder นนไมสามารถเชอมตอกบชดควบคม motor (controller) ไดทนทโดยตองตอผานวงจรนบ plus และวงจรคำานวณทยงยากซบซอนกอน ถงจะตอเขากบกบ controller ได แตอยางไรกตาม ในปจจบนเราม microprocessor
เชน microcontroller ตระกล PIC เปนตน ดงนนเราจงสามารถนำามาใชแทนวงจรนบ pulse และวงจรคำานวณไดจงทำาใหการใชงานมความงายขน ดงรปทแสดงไวขางลาง
DC motor Position Control using Microcontroller 28
รปท 17 แสดง Block Diagram ของ Rotary Encoder
ในโครงงานอาศยการตรวจจบขอบขาขนและขาลงของทงเฟส A และเฟส B ทำาใหสามารถแบง 1 Pulse เปน 4 สวน
รปท 18 รปแสดงการตรวจจบขอบขาขน และขอบขาลงของทง 2
เฟสรปท 19 รปแสดงวธการตรวจจบทศทางการหมนของ Rotary
Encoder โดยอานคาเขามาทาง Port 1- ในการนบจำานวน Pulse จะทำาการนบขอบขาขนของ Pulse
A วาเทาไร- ในการหาความกวางของ Pulse จะทำาการเชคขอบขาขน
ของ A กบขอบขาลงของ A วามระยะหางระหวางกนเทาไร โดยใช Timer เปนตวจบ
DC motor Position Control using Microcontroller 29
รปท 20 แสดงการเชคความกวางของ Pulse
บทท 5 ร�ยละเอยดและสวนประกอบของโครงง�น
ในโครงงานนมสวนประกอบของระบบการควบคมดซมอเตอร ตามบลอกไดอะแกรมของรปท 5 ซงแบงเปน 5 สวนคอ
1. สวนอนเตอรเฟส บนคอมพวเตอร2. สวน Main CPU 3. สวน Drive Motor4. สวน Sampling5. สวน Motor
DC motor Position Control using Microcontroller 30
รปท 21 บลอกไดอะแกรมการควบคมดซมอเตอร
5.1 อนเตอรเฟส บนคอมพวเตอรในสวนนจะประกอบดวย โปรแกรมอนเตอรเฟส โดยใชภาษา
Visual Basic จะมการรบ และ สงคา ทศทาง, ความเรว และ ตำาแหนง กบไมโครคอนโทรลเลอร 89C51 ทางพอรตอนกรม
การกำาหนดคณสมบตของ MSComm Control ใหสามารถตดตอกบ Microcontroller ทาง Serial Port ได
1. Property ชอ CommPort คอ เลอกคอมพอรตทเราจะตอใชงาน มาดการเขยนโคดกน ตวอยาง
DC motor Position Control using Microcontroller 31
MSComm1.CommPort=1 ในทนเลอกจะใช Com1 อยทดานหลงเครองคอมฯ
2. Property ชอ Settings คอ การตงคาของการรบสงขอมล ซงจะตองรดวยวาอตราบอดการรบสงขอมล ของอปกรณทจะตดตอดวยเปนเทาไร โดยมรายละเอยดการใสตางๆคาดงนMSComm1.Settings = "Baud(อตราการรบสงขอมล),Parity(ถาไมใชใส N,จำานวนบตขอมล,บตสตอบ" มาดการเขยนโคดกนตวอยาง MSComm1.Settings="1200,N,8,1"
3. Property ชอ InputLen คอ กำาหนดขนาดขณะทมขอมลเขามาใหไปอานขอมลทงหมดทอยในบพเฟอร มาดการเขยนโคดกน
ตวอยาง MSComm1.InputLen=14. Property ชอ PortOpen คอ จะเปดใหพอรตใชงานหรอไม
ถาเปด =True ถาปด =False มาดการเขยนโคดกนตวอยาง MSComm1.PortOpen=True
5. Property ชอ Rthreshold คอ ทำาใหเกดการกระตนดวย Event-driven เมอมขอมลในบฟเฟอรรบขอมล(Comport)มนทำาใหเกด CommEvent ใน OnComm Event มาดการเขยนโคดกน
ตวอยาง MSComm1.Rthreshold =1
ในการรบสงคามอยสอง Form
DC motor Position Control using Microcontroller 32
1. Form สวนของการ Set property การตดตอPrivate Sub Prise_Compte_Paramètres() Choix_Vitesse = Combo1.ListIndex Choix_Parite = Combo2.ListIndex Choix_Bit_Donnee = Combo3.ListIndex Choix_Bit_Arret = Combo4.ListIndex Choix_Flux = Combo5.ListIndex If (Option1.Value = True) Then Choix_Port = 1 Else Choix_Port = 2 End If Time_Out_Debut = Int(Val(Text1.Text)) Time_Out_Fin = Int(Val(Text2.Text))End Sub
รปท 22 แสดง Form ในสวนของการตงคาการตดตอไปยงอก Form หนง
2. Form สวนของการรบ และ สงคา
DC motor Position Control using Microcontroller 33
รปท 23 แสดง Form ในสวนของการสงคาไปยง Microcontroller รบคาทไดจากอก Form หนง
รปแบบการตดตอการรบสงระหวาง คอมพวเตอรกบ Microcontroller ตวหลก จะสงอยในรปแบบรหส Ascii โดยคาตำาแหนงทปอนจะอยในชวย 0-360 องศา แตคาทสงจรงจะคำานวณเปนคา 0- 400 pluse และ ในการสงมจำานวน 2 Byte โดย Byte แรกเปนคาตำาแหนง สวน Byte สองเปนคาทศทางกบ 1 บต MSB ของคาตำาแหนง เพอใหไดคาตำาแหนง 400 pulseแสดง Code ของ Form ในสวนของการแสดงคาการตดตอ
DC motor Position Control using Microcontroller 34
Form ในการรบคาจาก 89C51
Form ในการสงคาไปยง 89C51
MSComm1.CommPort = Choix_PortMSComm1.Settings = Vitesse(Choix_Vitesse) + "," +
Parite(Choix_Parite) + "," + Bit_Donnee(Choix_Bit_Donnee) + "," + Bit_Arret(Choix_Bit_Arret) MSComm1.Handshaking = Choix_Flux MSComm1.InputLen = 0 MSComm1.PortOpen = True
5.1.1 การสงคา ตำาแหนง ไปยงไมโครคอนโทรลเลอร 89C51แสดง Code ของการสงคาออกทางพอรตอนกรม
Private Sub Command2_Click()Dim direct_send As IntegerDim out As StringDim a, b, c, d, i As IntegerIf Combo1.ListIndex = 0 Thendirect_send = 240Elsedirect_send = 224End Ifd = Int(Text17.Text)a = (d * 40) / 36If a > 255 Thendirect_send = direct_send + 1a = a - 255End IfMSComm1.PortOpen = FalseMSComm1.PortOpen = TrueMSComm1.Output = Chr(a)MSComm1.PortOpen = FalseMSComm1.PortOpen = TrueMSComm1.Output = Chr(direct_send)End Sub
5.1.2 การรบคา ความเรว จากไมโครคอนโทรลเลอร 89C51ในการรบคาจากไมโครคอนโทรลเลอรนนตองรบขอมลตรงกบ
ไมโครคอนโทรลเลอรในโครงงานนจะสงคาความเรวในการเขาถงตำาแหนงเพยง 1 ไบตแสดง Code ของการรบคาความเรวทางพอรตอนกรม
DC motor Position Control using Microcontroller 35
If (MSComm1.InBufferCount > 0) Then Chaine = MSComm1.Input End If For i = 1 To Len(Chaine) Caractere = Mid(Chaine, i, 1) CodeCaractere = Asc(Caractere) Text1.Text = Chaine Text2.Text = CodeCaractere Text3.Text = Int(CodeCaractere) Next
5.2 สวน Main CPU เปนสวนประมวลผลหลก ซงมการทำางานประสานงานกบสวน
อน ๆ อนไดแก การรบค า ต ำาแหน ง และ ท ศทางจาก program
Interface บน computer เพอทำาการประมวลผลและ สงตอการควบคมเพอควบคมตำาแหนง ไปยงสวนตาง ๆ รวมทงรบขอมลดบเขามาประมวลผล
สงคาความเรว และ ทศทางทเหมาะสม ใหกบ Power CPU ดำาเนนการควบคมความเรว และ ทศทางในการหมนของ motor ตอในรปแบบของ PWM
รบคาจำานวน step ของการหมน และ คา duty ซงเปนข อ ม ล ด บ ท ใ ช ใ น ก า ร ค ำา น ว ณ ค า ค ว า ม เ ร ว จ า ก Sampling CPU ซ ง เป น CPU ท ท ำาหน าท น บค า step,ทศทาง และ ความเรวของ motor ณ เวลา นน ๆ ซงคาของ step นนจะเปนตวบอกวา motor หมนมาก step และ ใชในการเปรยบเทยบวาในเวลานน ๆ ตำาแหนงทหมนมามคาเปนอยางไรเมอเทยบกบตำาแหนงเปาหมาย
5.2.1 สวนในการรบคาจากคอมพวเตอรสวนของการรบคาจากคอมพวเตอรทางพอรตอนกรมนนจะทำาการรบคาเขามาดงนคอ
DC motor Position Control using Microcontroller 36
- ขอมลทศทาง 8 bit โดยจะม bit MSB ของตำาแหนงเพมเขามาท LSB ของขอมลทศทาง เนองจากขอมลตำาแหนงตองการใหมขนาด 9 bit เพอใหความละเอยดสงพอ (400 step )
- ขอมลตำาแหนง 8 bit ซงจะถกสงมาในรปของรหส ASCII
5.2.2 สวนทสงคาไปยงไมโครคอนโทรลเลอร 89C2051- มการสงขอมลทศทางขนาด 1 bit และ ความเรวขนาด 8 bit
5.2.3 สวนในรบคาจากสวน Sampling - การรบคาจากสวน sampling นนจะมการรบคาดงนคอ
ทศทาง 1 bit ตำาแหนง 9 bit ความเรว 8 bit ในรปของคาบเวลา
5.2.4 สวนสงคาความเรวในการเขาถงไปยงคอมพวเตอรมการสงคาของเวลาในการเขาถงจากจดเรมตน ไปยงจดเปาหมาย
เพอใชในการเปรยบเทยบเวลา และ ความเรวในการเขาถงเปาหมาย
5.3 สวน Drive Motorเปนสวนททำาหนาทในการประมวลผลทางดานการควบคมความเรว และ ทศทาง เพยงอยางเดยว ซงมการทำางานหลก ๆ ดงน
รบคาสญญาณควบคมจาก Main CPU และ ทำาการแปลงคาทรบมาเพอประมวลผล
เปรยบเทยบคาสญญาณควบคมทรบมาเพอแยก case ของความเรว และ ทศทางในการควบคม
การควบคมทศทาง และ ความเรว ซง ความเรวนนใชหลกการ Pulse Width Modulate ซง จะไดกลาว
DC motor Position Control using Microcontroller 37
ตอไปในสวนของ Algorithm ของ code program : Algorithm code – Power CPU
5.4 สวน Samplingเปนสวนททำาหนาทในการประมวลผลทางดานการสมเพอการตรวจจบคา ความเรว ทศทาง และ ตำาแหนง ซงมการทำางานหลก ๆ ดงน
sampling เพอการตรวจจบคาความเรว ตำาแหนง และ ทศทาง ของ motor
สงคาขอมลดบทไดใหกบ Main CPU ประมวลผลตอไป
5.5 มอเตอร5.5.1 มอเตอรBlock diagram ในก�รควบคมตำ�แหนงและคว�มเรวของ มอเตอร
DC motor Position Control using Microcontroller 38
จาก block diagram ดงกลาวขางตนจะใช model ทางคณตศาสตรของมอเตอรเปนดงน
ซง model ดงกลาวนนเปน model อนดบหนงซงไดจากการวเคราะห model ทางคณตศาสตรทกลาวมาแลวขางตนตาม บทท 3 มอเตอรกระแสตรง
ก�รห�ค�คณลกษณะของมอเตอรทใชในโครงง�นในการควบคมมอเตอรกระแสตรงนนเราจำาเปนตองรความ
สมพนธระหวางคาของแรงดนทปอนใหกบมอเตอรและผลลพธทได เชนการควบคมความเรวของมอเตอร เราจ ำาเปนตองทราบความสมพนธระหวางคาแรงดนทปอนกบคาความเรวรอบตอนาทของมอเตอรรวมทงจำานวน pulse / รอบ ของ encoder ทใชเพอการควบคมและตรวจสอบความถกตอง
ในโครงงานนไดทำาการทดลองวดคาความเรวรอบของมอเตอรโดยใชเคร องมอวดรอบ ซ ง ใชหลกการของแสง และ ท ำาการตอผลลพธจาก encoder เขากบ oscilloscope เพอดค า pulse ของ encoder และ ค ำานวณ pulse ของ encoder โดยคาท ปรากฏบน oscilloscope นนจะมลกษณะเปน pulse ดงนนเราจงอานคาความถจาก oscilloscope ออกมาเพอใชในการคำานวณดงน
P : คอ pulse / รอบ ของ encoderS : คอ ความเรว (รอบ / นาท ) ของมอเตอร
DC motor Position Control using Microcontroller
G(s)r(s) c(s)E(s)
R(s)+
-
1/s C(s)(s)
-
39
G(s) = K/(s+a)
F : คอ ความถของ encoder ทอานไดจาก oscilloscope (pulse / วนาท)ดงนนจะได pulse /รอบ ของ encoder ตามสมการ
ต�ร�งแสดง ค�ต�งๆ ของ แรงดน แตละค�
แรงดนความเรว
(รอบ/นาท )ความถทวด
(Hz)pulse /
รอบความชน a =
outpu / input
1 94310 197.87
23 942 246 820 200 123
3 3991350 203.00
75 133
4 5541859 201.33
57 138.5
5 7062350 199.71
67 141.2
6 8872950 199.54
9 147.8333
7 10473470 198.85
39 149.5714
8 12114050 200.66
06 151.375
9 13674560 200.14
63 151.8889
10 15225070 199.86
86 152.2
11 16695610 201.67
77 151.7273
12 18206055 199.61
54 151.6667
13 19836600 199.69
74 152.5385
14 21477160 200.09
32 153.3571
15 23057700 200.43
38 153.6667
16 24408145 200.28
69 152.5
17 26138750 200.91
85 153.7059
18 27789270 200.21
6 154.333319 2947 9840 200.33 155.1053
DC motor Position Control using Microcontroller 40
P = F*60 / S
93
20 313010450 200.31
95 156.5
Mean200.2
304 145.8835
F : ความถ pulse ทวดได หนวย pulse / วนาทS : ความเรวในการหมนของ motor หนวย รอบ / นาทP : จำานวน pulse / รอบ ของ encoder ทตองการหา
P = [ 60 x F ] / S
จากตารางจะได pulse / รอบ เฉลย = 200 pulse / รอบ
กร�ฟแสดงคว�มสมพนธระหว�งคว�มเรวกบแรงดน
0
5001000
15002000
25003000
3500
1 3 5 7 9 11 13 15 17 19 21
ชดขอมล1
รปท 24 กราฟแสดงความสมพนธระหวางความเรวกบแรงดน
ก�รสมวดคว�มเรวของ motor ในการควบคมการทำางาน ความเรว และ ตำาแหนง ของมอเตอร
ใหมประสทธภาพนน ไมเพยงแครความสมพนธระหวาง input และ
DC motor Position Control using Microcontroller 41
แรงดน V
ความเรว (rpm)
output เทานน เรายงจำาเปนจะตองรคณลกษณะของของมอเตอรดวยเนองจากมอเตอรแตละตวมความเรวในการเขาสสภาวะ steady ตาง ๆ กน ซง คาเวลานมผลตอการควบคม โดยในโครงงานนไดท ำาการเขยน program ข นมาเพ อท ำาการวดค าความเรวของมอเตอรทเวลาตาง ๆ สำาหรบแรงดนคาหนงเพอศกษาถงการเขาสสภาวะ steady ของมอเตอร
หลกการสมเพอตรวจจบความเรวของ motor ทเวลาตาง ๆ ใชหลกการ interrupt ของ timer โดยการรบคาสญญาณ
encoder จาก P11 และทำาการสมตรวจวามคาเปน 0 หรอ 1 หากเปน 1 ใหทำาการบวกคาใหกบ duty อก 1 ดำาเนนการเชนนไปเรอย ๆ จนกวา P11 (รบคา pulse จาก encoder เขามา ) เปน 0 จงทำาการสงคา duty สดทายเพอมาแสดงผลท computer โดยรบเขามาทาง serial port แสดงท VB ซง VB จะสมรบคาทก ๆ 1 ms โดยคาทสงมานนจะเกบและเขยนซำาลงใน buffer เดมหากไมมการอานจาก program interface VB กจะมการเขยนซำาไปเร อย ๆ ดงนนเมอทำาการอานจะไดคาสดทายทเขยนลง buffer ซง อธบายตามรปขางลางน
รปท 25 ตวอยางแสดงการ samplingจากรปจะเหนไดวาจะมการสมในชวงเวลาทเทา ๆ กนตลอด โดย
ในโครงงานนจะสมทก ๆ 25 us และกำาหนดคาเร มตนใหกบตวนบเปน 0 เมอสมคาจาก port ตามเวลาทกำาหนดแลวตรวจพบวามคาเปน logic 1 กจะทำาการเพมคาใหตวนบครงละ 1 จนกวาจะสมไดคา
DC motor Position Control using Microcontroller 42
logic 0 จะทำาการสงคาทนบไดออกทาง port ไปยง program interface เพ อแสดงคา และ ท ำาการ set คาตวนบเป น 0 ซ งจำานวนครงทนบไดนไมใชคาทใชจรง แตจะนำาไปคำานวณเปนคา คาบ และ ความถ ตอไป
สวนของ program ทอยบน micro controller 89c51 ทใชในการ sampling คาในชวงทเปน logic ‘1’ เพอนำามาคำานวณคาบ และ ความถ ตอไป
ตารางดานลางนแสดงถงคาทนบไดในการ sampling คาความเรวรอบของมอเตอรทคาแรงดนตาง ๆ ทก ๆ เวลา 1 ms โดยแตละคาแรงดนจะทำาการทดลอง 3 ครง แลวนำาคาทเวลาเดยวกน ของ แตละแรงดนทปอนมาทำาการเฉลย
ต�ร�ง ท 2 แสดงค�ต�ง ๆ ทไดจ�กก�รสม เวล�\แรงดน
3 V 6 V 9 V 12 V
1 ms 145.67 108.67 77 75
2 ms 28 20 11.67 27.34
3 ms 22 9.34 7.34 8
4 ms 22 7.34 6.34 5.67
DC motor Position Control using Microcontroller 43
while(1){
while(P11 == 1){
duty++;flag = 1;TR0 = 1;
}TR0 = 0;TI = 1;if(flag == 1)
sendCharacter (); }//end of while(1)
5 ms 21.334 6.34 6.34 3.67
6 ms 20.67 6.67 5.34 3.67
7 ms 20.34 6.67 5.67 3.34
8 ms 20 6.34 5.67 3.67
9 ms 20.34 6.34 6 3.34
10 ms 20.34 6.34 5.67 3.34
11 ms 20.34 6.34 6 3.34
12 ms 20 5.67 5.34 3
13 ms 20 6 6 3.34
14 ms 20 6.34 5.34 3.34
15 ms 20 6.334 5.67 3.34
16 ms 20.34 6.67 6 3.34
17 ms 20.34 5.67 5.67 3.34
18 ms 20 6.34 5.67 3.34
19 ms 20 6.67 5.67 3.34
** จำานวนครงท sampling เปน 1 (แตละครง 20 us) เฉลย
เนองจากทำาการสมทก ๆ 20 us ดงนนคา คาบ = จำานวนครง*2*20 us เนองจากในการสมนนทำาเฉพาะ logic 1 ดงนนทงเวลาทงคาบจงตองคณดวย 2 และคาความถหาไดจากคา 1/คาบ
ความถ = 1/จำานวน
ต�ร�ง ท 3 แสดงค�คว�มถของมอเตอรทเวล�ต�ง ๆ ของแตละ ค�แรงดน
เวล�\แรงดน
3 V 6 V 9 v 12 v
1 ms 0.000172 0.00023 0.000325 0.000333
2 ms 0.000893 0.00125 0.002143 0.000915
DC motor Position Control using Microcontroller 44
3 ms 0.001136 0.002679 0.003409 0.003125
4 ms 0.001136 0.003409 0.003947 0.004412
5 ms 0.001172 0.003947 0.003947 0.006818
6 ms 0.00121 0.00375 0.004688 0.006818
7 ms 0.00123 0.00375 0.004412 0.0075
8 ms 0.00125 0.003947 0.004412 0.006818
9 ms 0.00123 0.003947 0.004167 0.0075
10 ms 0.00123 0.003947 0.004412 0.0075
11 ms 0.00123 0.003947 0.004167 0.0075
12 ms 0.00125 0.004412 0.004688 0.008333
13 ms 0.00125 0.004167 0.004167 0.0075
14 ms 0.00125 0.003947 0.004688 0.0075
15 ms 0.00125 0.003947 0.004412 0.0075
16 ms 0.00123 0.00375 0.004167 0.0075
17 ms 0.00123 0.004412 0.004412 0.0075
18 ms 0.00125 0.003947 0.004412 0.0075
19 ms 0.00125 0.00375 0.004412 0.0075
เมอเราไดคาของความถมาแลวเราสามารถทำาการคำานวณคาความเรวไดจาก เมอ F : คอ ความถ pulse / วนาทP : คอ pulse / รอบ ของ encoderS : คอ ความเรวรอบของมอเตอร (รอบ / นาท )
S = F*60 / P
ต�ร�ง ท 4 แสดงค�คว�มเรวของมอเตอรทเวล�ต�ง ๆ ของ แตละแรงดน
เวล�\แรงดน
3 v 6 v 9 v 12 v
DC motor Position Control using Microcontroller 45
1 ms 51.48741 69.0184 97.4026 100
2 ms 267.8571 375 642.8571 274.3902
3 ms 340.9091 803.5714 1022.727 937.5
4 ms 340.9091 1022.727 1184.211 1323.529
5 ms 351.5625 1184.211 1184.211 2045.455
6 ms 362.9032 1125 1406.25 2045.455
7 ms 368.8525 1125 1323.529 2250
8 ms 375 1184.211 1323.529 2045.455
9 ms 368.8525 1184.211 1250 2250
10 ms 368.8525 1184.211 1323.529 2250
11 ms 368.8525 1184.211 1250 2250
12 ms 375 1323.529 1406.25 2500
13 ms 375 1250 1250 2250
14 ms 375 1184.211 1406.25 2250
15 ms 375 1184.211 1323.529 2250
16 ms 368.8525 1125 1250 2250
17 ms 368.8525 1323.529 1323.529 2250
18 ms 375 1184.211 1323.529 2250
19 ms 375 1125 1323.529 2250
จะไดกราฟดงนคอกร�ฟแสดงคว�มสมพนธระหว�งคว�มเรว (rpm) กบเวล� (s)
0
500
1000
1500
2000
2500
3000
1 3 5 7 9 11 13 15 17 19
ชดขอมล1ชดขอมล2ชดขอมล3ชดขอมล4
รปท 26 กราฟแสดงความสมพนธระหวางความเรว (rpm) กบเวลา (s)
DC motor Position Control using Microcontroller 46
ความเรว (rpm)
เวลา (s)
รปท 2 7 กราฟแสดงความสมพนธระหวางความเรวกบเวลา แบบคราว ๆ
รปท 2 8 กราฟแสดงความสมพนธระหวางความเรวกบเวลา เทยบอตราสวน 1
DC motor Position Control using Microcontroller 47
จะไดคา time constant = 4.2 msa = 1/0.0042 = 238.1ในระบบควบคมท เขยนอย ในร ปของความสมพนธของ
output กบ input ซงเขยนในรปของ transfer function นน เม อพจารณาในร ปแบบของหลกความเป นจรงในการควบคมสญญาณ input ทเราปอนเขาไปกบสญญาณ output ทออกมานนอาจจะไมใชขอมลรปแบบเดยวกน แตถงอยางไรในการปอนกลบคาของ output มาทำาการเปรยบเทยบนนจะตองผานกระบวนการแปลงขอมลใหอยในรปแบบเดยวกนเพอใหงายตอการเปรยบเทยบ และ เปนมาตรฐานเดยวกน ซ ง กแนนอนวาสญญาณ output ททำาการแปลงมานนจะตองมการคณดวยคาคงทคาหนงเพอปรบคาดงกลาวเพอนำามาใชเปรยบเทยบ ซง ในสมการของการควบคมของ transfer function นนกคอ คา K นนเองดงนนเราจงมความจำาเปนตองทราบคา K (อตราขยาย) เพอใหไดคาความสมพนธทถกตองระหวางคา input และ output ในการเปรยบเทยบ
ก�รห�ค� K จาก transfer function ของ DC motor
G(s) = K/(s+a)จากคา a และ time constant ทได มาในตอนตนเราจะ
ท ำาการหาค าอ ตราขยายหรอค า K โดยการท ำาการ transfer function ในรปของ 1/(s+a) จากนนทำาการปอน input ซงกคอค าแรงด น input น น เอง โดยการเอาค า input คณเขาก บ transfer function แ ล ว ท ำา ก า ร แ ป ล ง เ ป น close loop transfer function แล ว ท ำา กา ร plot กรา ฟขอ ง transfer function โดยปอน input แบบ step input
เมอไดกราฟความสมพนธระหวาง กบ t แลวนำามาพจารณาโดยสมมตใหคาตวแปรตาง ๆ เปนดงน
DC motor Position Control using Microcontroller 48
K : คอ อตราขยายt : คอ คา time constant ซงเทากบเวลาท output = 63 % ของคาท steady statea : คอ คาคงท ซงเทากบ 1/ts : คอ คา output ท steady state ซง กคอทเวลาเขาใกล infinity หรอ คา s เขาใกล 0Input : คอ คาแรงดน input ทปอนดงนนจาก
G(s) = Input*K/(s+a)เมอ s-->0 จะไดวา
s = K*Input/aดงนนเราสามารถหาคา K ไดจาก
K = s*a/Input
ห�ค� K ท input เท�กบ 3 Volt //code simulate with scilab 2.7s = poly(0,'s');t = 0:0.01:0.2;input = 3;trans = 1/(s+238.1);trans1 = trans*input;close_loop = trans1/(1+trans1);lin = syslin('c',close_loop);plot(t,csim('step',t,lin))
DC motor Position Control using Microcontroller 49
รป ท 29 แสดง transfer function ท input = 3 voltt = 0.008a = 1/0.008 = 1253K/a = 0.0125K = (0.0125*a)/ 3 = 0.5208
ห�ค� K ท input เท�กบ 6 Volt //code simulate with scilab 2.7s = poly(0,'s');t = 0:0.01:0.2;input = 6;trans = 1/(s+238.1);trans1 = trans*input;close_loop = trans1/(1+trans1);lin = syslin('c',close_loop);plot(t,csim('step',t,lin))
DC motor Position Control using Microcontroller 50
รป ท 30 แสดง transfer function ท input = 6 voltt = 0.008a = 1/0.008 = 1256K/a = 0.0245K = (0. 0245 * a) /6 = 0.5104
ห�ค� K ท input เท�กบ 9 Volt //code simulate with scilab 2.7s = poly(0,'s');t = 0:0.01:0.2;input = 9;trans = 1/(s+238.1);trans1 = trans*input;close_loop = trans1/(1+trans1);lin = syslin('c',close_loop);plot(t,csim('step',t,lin))
DC motor Position Control using Microcontroller 51
รป ท 31 แสดง transfer function ท input = 9 volt
t = 0.008a = 1/0.008 = 1259K/a = 0.0370K = (0.0370* a)/9 = 0.5139
ห�ค� K ท input เท�กบ 12 Volt //code simulate with scilab 2.7s = poly(0,'s');t = 0:0.01:0.2;input = 12;trans = 1/(s+238.1);trans1 = trans*input;close_loop = trans1/(1+trans1);lin = syslin('c',close_loop);plot(t,csim('step',t,lin))
DC motor Position Control using Microcontroller 52
รป ท 32 แสดง transfer function ท input = 12 voltt = 0.008a = 1/0.008 = 12512K/a = 0.048K = (0.048*a) / 12 = 0.500ต�ร�ง ท 5 สรปของค� K
Input (v) K3 0.52086 0.51049 0.5139
12 0.500เฉลย 0.5113
เพราะฉะนน transfer function ของ motor เปนดงน K = 0.58, a = 238.1
DC motor Position Control using Microcontroller
G(s)r(s) c(s)E(s)
R(s)+
-
1/s C(s)(s)
53
G(s) = 0.51/(s+238.1)เม อเราทราบคาตาง ๆ ของ transfer function แลว ก
ทำาการ plot กราฟความสมพนธระหวาง output () กบ เวลา (t (s)) ทงนเพอใชขอมลจากกราฟเพอทำาการเปรยบเทยบกบคาทไดจากการทดลองวดคาจรงวามความใกลเคยงกน หรอ ไม และ มความผดพลาดอยในชวงทยอมรบไดหรอไม โดยทำาการ plot ทคา input ตาง ๆ ดงนInput 3 volt
//code simulate with scilab 2.7s = poly(0,'s');t = 0:0.01:0.1;input = 3;trans = 0.51/(s+238.1);trans1 = trans*input;close_loop = trans1/(1+trans1);lin = syslin('c',close_loop);plot(t,csim('step',t,lin),"t(s)","w(r/s)")
รป ท 33 แสดง transfer function ท input = 3 voltInput 6 volt
DC motor Position Control using Microcontroller 54
//code simulate with scilab 2.7s = poly(0,'s');t = 0:0.01:0.1input = 6;trans = 0.51/(s+238.1);trans1 = trans*input;close_loop = trans1/(1+trans1);lin = syslin('c',close_loop);plot(t,csim('step',t,lin),"t(s)","w(r/s)")
รป ท 34 แสดง transfer function ท input = 6 volt
Input 9 volt
DC motor Position Control using Microcontroller 55
//code simulate with scilab 2.7s = poly(0,'s');t = 0:0.01:0.1input = 9;trans = 0.51/(s+238.1);trans1 = trans*input;close_loop = trans1/(1+trans1);lin = syslin('c',close_loop);plot(t,csim('step',t,lin),"t(s)","w(r/s)")
รป ท 35 แสดง transfer function ท input = 9 volt
Input 12 volt
DC motor Position Control using Microcontroller 56
//code simulate with scilab 2.7s = poly(0,'s');t = 0:0.01:0.1input = 12;trans = 0.51/(s+238.1);trans1 = trans*input;close_loop = trans1/(1+trans1);lin = syslin('c',close_loop);plot(t,csim('step',t,lin),"t(s)","w(r/s)")
รป ท 36 แสดง transfer function ท input = 12 volt
DC motor Position Control using Microcontroller 57
จากกราฟทไดนนจะเหนวา w มคาไมเกน 1 ทงนเนองจาก input ทป อนนนเปน step input (0,1) ดงนน ดงกลาวจงไมใชคาความเรวจรงในทางปฏบต แตเราตองทำาการหาคาอางอง เพอ อางอง และ หาอตราสวนตอหนวยของ ในกราฟ เพอเทยบใหอยในรปของคาความเรวจรงของมอเตอรในเวลานน ๆ ซ ง การพจารณาคาอางองสามารถพจารณาได 4 กรณ ดงน
กรณท 1 ให input ท 3 volt เปนตวอางอง (input reference)คาสงสดทไดคอ 0.0065 ใหเปนความเรวท 375 รอบ/นาท เพราะฉะนนท 3 v คาสงสดทไดคอ 0.0065 จะไดความเรวเทากบ (0.0065 *375)/0.0065 = 375 รอบ/นาทท 6 v คาสงสดทไดคอ 0.0125 จะไดความเรวเทากบ (0.0125 *375)/0.0065 = 721 รอบ/นาทท 9 v คาสงสดทไดคอ 0.0190 จะไดความเรวเทากบ (0.0190 *375)/0.0065 = 1096 รอบ/นาทท 12 v คาสงสดทไดคอ 0.0250 จะไดความเรวเทากบ (0.0250 *375)/0.0065 = 1442 รอบ/นาท
กรณท 2 ให input ท 6 volt เปนตวอางอง (input reference)คาสงสดทไดคอ 0.0125 ใหเปนความเรวท 1125 รอบ/นาท เพราะฉะนนท 3 v คาสงสดทไดคอ 0.0065 จะไดความเรวเทากบ (0.0065 *1125)/0.0125 = 585 รอบ/นาทท 6 v คาสงสดทไดคอ 0.0125 จะไดความเรวเทากบ (0.0125 *1125)/0.0125 = 1125 รอบ/นาท
DC motor Position Control using Microcontroller 58
ท 9 v คาสงสดทไดคอ 0.0190 จะไดความเรวเทากบ (0.0190 *1125)/0.0125 = 1710 รอบ/นาทท 12 v คาสงสดทไดคอ 0.0250 จะไดความเรวเทากบ (0.0250 *1125)/0.0125 = 2250 รอบ/นาท
กรณท 3 ให input ท 9 volt เปนตวอางอง (input reference)คาสงสดทไดคอ 0.0190 ใหเปนความเรวท 1324 รอบ/นาท เพราะฉะนนท 3 v คาสงสดทไดคอ 0.0065 จะไดความเรวเทากบ (0.0065 *1324)/0.0190 = 452 รอบ/นาทท 6 v คาสงสดทไดคอ 0.0125 จะไดความเรวเทากบ (0.0125 *1324)/0.0190 = 871 รอบ/นาทท 9 v คาสงสดทไดคอ 0.0190 จะไดความเรวเทากบ (0.0190 *1324)/0.0190 = 1324 รอบ/นาทท 12 v คาสงสดทไดคอ 0.0250 จะไดความเรวเทากบ (0.0250 *1324)/0.0190 = 1742 รอบ/นาท
กรณท 4 ให input ท 12 volt เปนตวอางอง (input reference)คาสงสดทไดคอ 0.0250 ใหเปนความเรวท 2250 รอบ/นาท เพราะฉะนนท 3 v คาสงสดทไดคอ 0.0065 จะไดความเรวเทากบ (0.0065 *2250)/0.0250 = 585 รอบ/นาทท 6 v คาสงสดทไดคอ 0.0125 จะไดความเรวเทากบ (0.0125 *2250)/0.0250 = 1125 รอบ/นาท
DC motor Position Control using Microcontroller 59
ท 9 v คาสงสดทไดคอ 0.0190 จะไดความเรวเทากบ (0.0190 *2250)/0.0250 = 1710 รอบ/นาทท 12 v คาสงสดทไดคอ 0.0250 จะไดความเรวเทากบ (0.0250 *2250)/0.0250 = 2250 รอบ/นาท
สรป ก�รประม�ณคว�มเรว คาทมคาใกลเคยงกบคาทวดไดทสดคอ กรณท 3 คอ ให input ท 9 volt เปน Referenceต�ร�งท 6 แสดงการเปรยบเทยบความเรวของมอเตอรทไดจากการทดลอง
Input คว�มเรวทวดไดจรง (รอบ/นาท)
คว�มเรวทไดจ�กก�ร simulate (อ�งองท 9 V)
(รอบ/นาท)3 V. 399 4526 V. 887 8719 V. 1367 1324
12 V. 1820 1742
จากคาสงสดทไดคอ 0.0190 ใหเปนความเรวท 1324 รอบ/นาท เพราะฉะนน ทแตละชวง 0.001 บนแกน w จะมความเรวเทากบ (0.001*1324)/0.0190 = 69.68 รอบ/นาท
การพจารณาคาทไดจากการเกบคา output ของ transfer function ของแตละคา input (แรงดน) ทเวลาตาง ๆ โดยการใช function csim ใน scilab เพอทำาการ simulation ผลในรปของชดขอมลทตอเนองทก ๆ ชวงเวลาทกำาหนด โดยสามารถ เขยนคำาสงในการดำาเนนการไดดงน
//code simulate with scilab 2.7s = poly(0,'s');t = 0:0.001:0.04;input = 12;trans = 0.51/(s+238.1);trans1 = trans*input;close_loop = trans1/(1+trans1);lin = syslin('c',close_loop);c = csim('step',t,lin)
DC motor Position Control using Microcontroller 60
ซงจากตวอยางของชดคำาสงดงกลาวเปนการ simulation คาท input 12 v สวนคา input ทแรงดนอน ๆ สามารถท ำาได เชนเดยวกนนโดยการเปลยนคา input เปนคาแรงดนนน ๆ
เมอไดคา output ของแตละคาแรงดนออกมาแลวกทำาการหารดวยคาสงสดของ output ทไดของแตละคาแรงดนนน ๆ เพอท ำาใหอ ตราสวนเป น 1 แลวน ำาค าน น ๆ มาท ำาการ plot เพ อด คณลกษณะของ output กบ เวลา ซงเมอเปนอตราสวนเดยวกน (1) แลว กราฟท plot ได ในทางทฤษฎแลวน นควรจะเป นเสนเดยวกน หรอ ทบกนสนท แต เนองจากอาจมคา error อยบางอาจจะทำาใหกราฟทบกนไมสนท แตถงอยางไร กนาจะหางกนไมมาก
ต�ร�งท 7 แสดงค�ทไดจรง และ ค�ทเทยบเปน 1 ของค� ใน เวล�ต�งๆ ทกๆ 1 ms
เวลา
1 v 3 v 6 v 9 v 12 vวดไดจรง
เทยบเปน 1
วดไดจรง
เทยบเปน 1
วดไดจรง
เทยบเปน 1
วดไดจรง
เทยบเปน 1
วดไดจรง
เทยบเปน 1
0 ms 0 0 0 0 0 0 0 0 0 0
1 ms 0.0004537
0.212287
0.0013605
0.213098
0.002719
0.214299
0.0040755
0.215499
0.00543
0.216698
2 ms 0.0008111
0.379515
0.0024311
0.380788
0.0048553
0.382672
0.0072727
0.384557
0.0096834
0.386441
3 ms 0.0010927
0.511276
0.0032736
0.51275
0.0065339
0.514971
0.009781
0.517188
0.0130151
0.519401
4 ms 0.0013144
0.61501
0.0039365
0.616581
0.0078528
0.61892
0.0117489
0.621244
0.0156249
0.623552
5 ms 0.0014891
0.696753
0.0044582
0.698296
0.008889
0.700589
0.0132926
0.70287
0.0176692
0.705135
6 ms 0.0016267
0.761136
0.0048687
0.762593
0.0097032
0.76476
0.0145037
0.766909
0.0192706
0.769043
7 ms 0.0017351
0.811857
0.0051918
0.813201
0.010343
0.815186
0.0154539
0.817152
0.0205249
0.819099
8 ms 0.0018205
0.851815
0.005446
0.853017
0.0108456
0.854799
0.0161993
0.856567
0.0215075
0.858312
9 ms 0.0018878
0.883305
0.005646
0.884343
0.0112405
0.885923
0.016784
0.887484
0.0222771
0.889025
10 ms 0.001
94080.9081
040.0058
0350.9090
130.0115
5090.9103
870.0172
4280.9117
430.0228
80.9130
8511 ms 0.001
98250.9276
160.0059
2730.9284
040.0117
9470.9296
020.0176
0270.9307
740.0233
5220.9319
312 ms 0.002
01540.9430
10.0060
2480.9436
750.0119
8620.9446
950.0178
8510.9457
060.0237
2210.9466
9113 0.002 0.9551 0.0061 0.9556 0.0121 0.9565 0.0181 0.9574 0.0240 0.9582
DC motor Position Control using Microcontroller 61
ms 0413 28 015 89 368 65 066 18 119 5714 ms 0.002
06170.9646
730.0061
6190.9651
490.0122
550.9658
810.0182
8040.9666
080.0242
3890.9673
1615 ms 0.002
07770.9721
60.0062
0940.9725
890.0123
480.9732
110.0184
1670.9738
150.0244
1670.9744
1116 ms 0.002
09040.9781
020.0062
4680.9784
470.0124
210.9789
640.0185
2360.9794
680.0245
5590.9799
6617 ms 0.002
10040.9827
810.0062
7620.9830
520.0124
7830.9834
80.0186
0750.9839
040.0246
650.9843
218 ms 0.002
10820.9864
310.0062
9940.9866
860.0125
2340.9870
350.0186
7340.9873
890.0247
5050.9877
3219 ms 0.002
11440.9893
320.0063
1760.9895
370.0125
5880.9898
250.0187
250.9901
170.0248
1740.9904
0220 ms 0.002
11930.9916
250.0063
3190.9917
770.0125
8660.9920
160.0187
6550.9922
590.0248
6980.9924
9321 ms 0.002
12310.9934
030.0063
4320.9935
470.0126
0850.9937
420.0187
9730.9939
40.0249
1090.9941
3422 ms 0.002
12620.9948
530.0063
5210.9949
410.0126
2570.9950
980.0188
2220.9952
570.0249
4310.9954
1923 ms 0.002
12850.9959
290.0063
590.9960
220.0126
3920.9961
620.0188
4180.9962
930.0249
6830.9964
2424 ms 0.002
13040.9968
180.0063
6450.9968
830.0126
4980.9969
970.0188
5720.9971
080.0249
880.9972
125 ms 0.002
13190.9975
20.0063
6890.9975
720.0126
5810.9976
510.0188
6920.9977
420.0250
0350.9978
2926 ms 0.002
13310.9980
820.0063
7230.9981
050.0126
6470.9981
710.0188
7860.9982
390.0250
1560.9983
1227 ms 0.002
1340.9985
030.0063
7490.9985
120.0126
6980.9985
730.0188
860.9986
30.0250
2510.9986
9128 ms 0.002
13470.9988
30.0063
7710.9988
570.0126
7390.9988
970.0188
9190.9989
420.0250
3250.9989
8629 ms 0.002
13530.9991
110.0063
7870.9991
070.0126
770.9991
410.0188
9640.9991
80.0250
3830.9992
1830 ms 0.002
13570.9992
980.0063
80.9993
110.0126
7950.9993
38 0.01890.9993
710.0250
4290.9994
0131 ms 0.002
13610.9994
850.0063
8110.9994
830.0126
8150.9994
960.0189
0280.9995
190.0250
4650.9995
4532 ms 0.002
13630.9995
790.0063
8190.9996
080.0126
830.9996
140.0189
050.9996
350.0250
4930.9996
5733 ms 0.002
13660.9997
190.0063
8250.9997
020.0126
8420.9997
080.0189
0670.9997
250.0250
5150.9997
4534 ms 0.002
13670.9997
660.0063
830.9997
810.0126
8520.9997
870.0189
0810.9997
990.0250
5320.9998
1235 ms 0.002
13690.9998
60.0063
8340.9998
430.0126
8590.9998
420.0189
0910.9998
520.0250
5450.9998
6436 ms 0.002
1370.9999
060.0063
8370.9998
90.0126
8650.9998
90.0189
1 0.99990.0250
5560.9999
0837 0.002 0.9999 0.0063 0.9999 0.0126 0.9999 0.0189 0.9999 0.0250 0.9999
DC motor Position Control using Microcontroller 62
ms 1371 53 839 22 87 29 106 31 564 438 ms 0.002
13710.9999
530.0063
8410.9999
530.0126
8730.9999
530.0189
1110.9999
580.0250
570.9999
6439 ms 0.002
1372 10.0063
8430.9999
840.0126
8760.9999
760.0189
1160.9999
840.0250
5750.9999
8440 ms 0.002
1372 10.0063
844 10.0126
879 10.0189
119 10.0250
579 1
กร�ฟแสดงคว�มสมพนธระหว�ง กบ t โดยเทยบ อตร�สวนเท�กบ 1 กร�ฟทไดจ�กค�ททดลองจรง
DC motor Position Control using Microcontroller 63
รปท 37 กราฟทไดจากคาททดลองจรง
กร�ฟทไดจ�กก�ร simulate ในโปรแกรม scilab 2.7
รปท 38 กราฟทไดจากการ simulate ในโปรแกรม scilab 2.7
DC motor Position Control using Microcontroller 64
รปท 39 กราฟแสดงความสมพนธระหวาง กบ t เทยบอตราสวน 1
สรปจากกราฟแสดงความสมพนธระหวาง กบ t ทไดจากการปอน input เขาส transfer function แลวเทยบอตราสวนเปน 1 แลวจะเหนไดวาคา time constant อยทประมาณ 4 ms ซงมคาใกลเคยงกบกราฟทไดจากการทดลองจรง แสดงวาคาทไดมความสอดคลองกน
DC motor Position Control using Microcontroller 65
บทท 6 ก�รทำ�ง�นของโปรแกรมควบคม
6.1 วธก�รควบคมใหเข�สตำ�แหนงa. เปาหมายหลกในการดำาเนนการคออะไร
วตถประสงคหลกของโครงงานนคอ การควบคมการหมนของ motor ใหเขาสตำาแหนงทตองการ (position) ซง ตองการความแมนยำา และ ความเรยบในการเขาสตำาแหนง ซง ความเรว ในการเขาสตำาแหนงนนควรจะมความรวดเรวพอสมควร
b. กระบวนวธ และ แนวคด ในการควบคม ทำาไมตองใชวธการเหลาน
ในการเขาสตำาแหนงใหเรว แมนยำา และ เรยบทสดนน แนนอนวาจะตองประกอบดวยองคประกอบทเหมาะสมดงนคอo ความเรวเรมตนทเหมาะสมเพอใหการเรมหมนใชเวลา
นอยทสดo ความเรวปลายกอนการหยดเพอใหการเขาสตำาแหนง
มความนงซงวธในการควบคมนน จะเปนแบบความเรวในการหมนสามารถเปลยนแปลงไดขนกบระยะทางของตำาแหนงเปาหมาย ซงแสดงดงรปท 1 และ รปท 2
DC motor Position Control using Microcontroller 66
รปท 40 แสดงการปรบเปลยนวามเรวโดยเรมจากคาความเรวตำา
จากรปท 40 เปนการเรมหมนจากคาความเรวตำา และ ทำาการปรบความเรวสงขนหากระยะทางยงไกลอย และ ปรบลงอกครงเมอเขาใกลเปาหมาย
รปท 41 แสดงการปรบเปลยนวามเรวโดยเรมจากคาความเรวสง
จากรปท 41 เปนการเรมหมนจากคาความเรวสง (ระยะไกล)และ ทำาการปรบความเรวลงเรอย ๆ เมอเขาใกลเปาหมาย
Algorithm ของก�รควบใหเข�สตำ�แหนง Algorithm ในการเขาสตำาแหนงอยางแมนยำา และ เรยบทสด
เทาทจะทำาได คาจากการทดลอง ระดบคาแรงดนตาง ๆ ในการเขาสตำาแหนง
จากระยะตาง ๆ กน
DC motor Position Control using Microcontroller 67
จากการดำาเนนการทดลองจรงนนพบวาคาความเรวแตละคาจะมความแมนนำาในการเขาสตำาแหนงทตางกน และ ความเรวในการตอบสนองตางกนดวย ซงในโดรงงานนใชการควบคมแบบการปรบเปลยนวามเรวโดยเรมจากคาความเรวสงไปสคาความเรวตำาดงแสดงในรปท 2. ซ งในการเปลยนความเรวนนจะเปนการเปลยนคาแรงดนทปอนเขาส motor ซง จะใชหลกการ pulse width modulate ในการควบคม ซงคาความเรวในการควบคมจรงนนไมไดเปลยนแปลงอยในรปของเสนตรงตามรปท 2. แตจะเปนการควบคมความเรวแบบขนบนได โดยทระยะทางชวงหนง ๆ จะมการควบคมความเรวเปนคา ๆ หนง และ มการปรบเปลยนความเรวตามชวงของระยะทางในการเขาสเปาหมายดงรปท 42
ในการด ำา เน นการควบคมจรงน น ได ท ำาการแบง case ความเรวออกเปนหลาย ๆ case ซงแตละ case นนจะมการสราง PWM ททำาใหจายแรงดนตางกน ทำาใหมความเรวตางกนดวย ซงวธการนนจะไดกลาวถงตอไปในสวนของ Algorithm ของ code program : Algorithm code – Power CPU
รปท 42 แสดงการปรบเปลยนวามเรวทดำาเนนการจรงในรปแบบของลำาดบขน
6.2 ก�รควบคมแบบปอนกลบทงคว�มเรว และ ตำ�แหนง
DC motor Position Control using Microcontroller 68
ในการควบคมของโครงงานนนนวตถประสงคหลก คอ การควบคมการหมนของมอเตอรใหเขาสตำาแหนงทตองการอยางแมนยำา และ มความนงในการเขาสตำาแหนง ซง การควบคมการเขาสตำาแหนงนนทำาไดโดยการทำาการปอนกลบคาตำาแหนงในการเคลอนทมาเทยบกบคา input ซงทางอดมคต เมอ คาปอนกลบมคาเทากบคา input แลว การหมนของมอเตอรจะหยด และ คา error ในการหมนจะมคาเทากบ 0 แตในการควบคมจรงนนไมเปนเชนนน เนองจากในการหมน และ การหยดของมอเตอรนนจะมคาความเฉอยในการหมนอยดวยทำาใหการเคลอนทเขาส ต ำาแหนงในความเปนจรงนนจะมค าความคลาดเคลอนสง ดงนนในการควบคมเพอใหมการเขาสตำาแหนงทแมนยำาในการดำาเนนการจรงจะตองทำาการปอนกลบความเรวดวยเพอควบคมความเรวในการหมนของแตละชวงของระยะทาง ซง จะมการพจารณาตามระยะทางโดยหากระยะทางในการเขาถงมคามากกจะใชความเรวสง และ ลดลง เมอเขาใกลเปาหมายมากขน
DC motor Position Control using Microcontroller
G(s)r(s) c(s)E(s)
R(s)+
-
1/s C(s)(s)
69
6.3 Flow Chart ของ โปรแกรมควบคมในโครงงานนมหลกการทำางานของโปรแกรมควบคมอย 3 สวน ดงน
1. Flow chart Main CPU
รรรรรร 43รรรรFlow chart Main CPU จะทำาการรบคา จำานวน pulse และ ทศทาง จากคอมพวเตอร
ทางพอรตอนกรมตอเมอมขอมลมาทางพอรตอนกรม
DC motor Position Control using Microcontroller 70
จะทำาการเชครบคา จำานวน pulse ทไดจากการ Sampling แบบ วนลป
ตรวจสอบ Error ของจำานวน pulse วาอยในกรณใด กจะสงใหสวนขบมอเตอร ขบมอเตอรตามกรณ Error ทได
2. Flow chart Sampling CPU
DC motor Position Control using Microcontroller 71
รรรรรร 44 Flow chart Sampling CPU* ทำาการรบคาจาก Encoder ทกๆ 20 ไมโครวนาท
3. Flow chart Power CPU
DC motor Position Control using Microcontroller 72
รรรรรร 45 Flow chart Power CPUก�รทำ�ง�นของสญญ�ณ PWM รปท 1 แสดงสญญาณ PWM ทแตกตางกน 3 สญญาณ
- โดย 10a แสดงสญญาณ PWM ท 10% duty cycle คอ สญญาณในการออนจะเปน 10% ของคาบสญญาณ และ จะออฟเปน 90% ของคาบสญญาณ
- โดย 10b แสดงสญญาณ PWM ท 50% duty cycle คอ สญญาณในการออนจะเปน 10% ของคาบสญญาณ และ จะออฟเปน 50% ของคาบสญญาณ
- โดย 10c แสดงสญญาณ PWM ท 90% duty cycle คอ สญญาณในการออนจะเปน 10% ของคาบสญญาณ และ จะออฟเปน 10% ของคาบสญญาณ
เชน ถา Power Supply ม 9V และ duty cycle เปน 10% จะไดเอาทพต 0.9V
DC motor Position Control using Microcontroller 73
รปท 46 แสดงสญญาณ PWM ซงแสดงคา duty cycles ทตางๆกน
4. Flow Chart การควบคมทศทาง
รปท 47 แสดง Flow Chart การควบคมทศทาง
DC motor Position Control using Microcontroller 74
รปท 10a
รปท
รปท
5. Flow Chart การควบคมตำาแหนง
รปท 48 แสดง Flow Chart การควบคมตำาแหนง
DC motor Position Control using Microcontroller 75
6. Flow Chart การควบคมทงโครงงาน
รปท 49 แสดง Flow Chart การควบคมทงโครงงาน
DC motor Position Control using Microcontroller 76
บทท 7 ก�รทดสอบและบทสรป
ก�รทดสอบคว�มคล�ดเคลอนในก�รเคลอนทจากทเราทราบวาโครงงานนทำาการควบคมตำาแหนง และ
ความเรวของมอเตอรโดยม parameter ควบคมดงน Motor
o แรงดนสงสด 14.8 vo กำาลงสงสด 25.9 wo Encoder 200 pulse / รอบo เรมหมนทแรงดน1 v.
power supplyo ปมปรบแรงดน fixed +15 v,+12 v, +5 v , -15
v, -12 v, 0 vo ปมปรบแรงดนสามารถปรบแรงดนไดในชวง 0 – 30 v
ก�รทดสอบในการทดสอบในสวนของความคลาดเคลอนในการเคลอนทนน
จะใชหลกการในการสมทดสอบเปนกรณ ๆ ไป โดยจะเปรยบเทยบคาทไดจรง กบ ตำาแหนงทตองการทปอนเขามา ซ งในโครงงานน encoder ทตออยก บ motor นนมความละเอยด 200 pulse / รอบ และเปนแบบ 2 phase ซงจะทำาใหสามารถปรบความละเอยดไดสงสด 4 เทาคอ 800 pulse / รอบ และ สามารถตรวจสอบทศทางการหมนไดดวย แต เนองจากความละเอยด 800 pulse / รอบ ม
DC motor Position Control using Microcontroller 77
ความละเอยดสงเกนไป ซง อาจจะทำาใหมความคลาดเคลอนสง และ การทำางานอาจจะไมทนในเวลาเนองจากมความเรวสงมาก จงเลอกใชความละเอยดท 400 pulse / รอบ
การทดสอบนนจะทำาการทดลองการหมนในแตละทศทาง และ แตละกรณของ pulse เป าหมายท ป อนตาง ๆ แยกกน ท งน เนองจากความเรวของทศทางตามเขมนาฬกา เรวกวา ทศทางทวนเขมนาฬกาเลกนอย (จากการทดลอง) ทำาใหคา ความเรวในการเขาถงตำาแหนง และ คา error ของ 2 ทศทางในแตละ case ของแรงดนเดยวกน มคาตางกน
ต�ร�ง ท 8 ผล ก�รทดสอบ Input Output
จำานวน pulse
หมนตามเขม
หมนทวนเขมครงท
1ครงท
2ครงท
3Pulse เฉลย
Error (pulse)
ครงท 1
ครงท 2
ครงท 3
Pulse เฉลย
Error (pulse)
1 1 1 1 1.00 0.00 1 1 1 1.00 0.005 4 5 4 4.33 0.67 5 4 5 4.67 0.33
10 12 10 8 10.00 0.00 8 10 9 9.00 1.0020 19 20 18 19.00 1.00 20 19 20 19.67 0.3330 32 30 31 31.00 -1.00 30 29 30 29.67 0.3340 39 38 40 39.00 1.00 40 39 39 39.33 0.6750 49 48 50 49.00 1.00 48 49 49 48.67 1.3360 60 60 60 60.00 0.00 60 60 60 60.00 0.0080 78 80 82 80.00 0.00 82 81 80 81.00 -1.00
100 100 100 100 100.00 0.00 96 98 98 97.33 2.67120 119 118 120 119.00 1.00 119 119 120 119.33 0.67140 139 140 138 139.00 1.00 140 139 140 139.67 0.33160 159 160 158 159.00 1.00 160 158 160 159.33 0.67180 182 180 180 180.67 -0.67 182 182 180 181.33 -1.33200 196 198 198 197.33 2.67 200 202 200 200.67 -0.67220 222 222 220 221.33 -1.33 218 219 220 219.00 1.00240 242 240 242 241.33 -1.33 244 240 242 242.00 -2.00260 256 258 259 257.67 2.33 264 262 262 262.67 -2.67280 284 282 280 282.00 -2.00 282 280 281 281.00 -1.00300 306 306 304 305.33 -5.33 301 300 302 301.00 -1.00320 324 322 322 322.67 -2.67 320 319 320 319.67 0.33340 340 342 340 340.67 -0.67 339 339 340 339.33 0.67360 366 362 362 363.33 -3.33 366 363 364 364.33 -4.33380 386 386 386 386.00 -6.00 386 386 386 386.00 -6.00
DC motor Position Control using Microcontroller 78
400 406 404 404 404.67 -4.67 404 406 404 404.67 -4.67
วเคร�ะหผลก�รทดสอบ ทศตามเขมนาฬกาจากผลการทดสอบการหมนในชวง input ในชวง 1-180 pulse
จะเหนไดวามคา error เฉลยสงสดในการเคลอนทไมเกน 1 pulse และ ในชวง input 180 – 280 pulse นนจะมคา error สงสดไมเกน 5.33 pulse และ ในชวง input 280-400 pulse มคา error สงสดไมเกน 6.00 pulse
ทศทวนเขมนาฬกาจากผลการทดสอบการหมนในชวง input ในชวง 1-180 pulse
จะเหนไดวามคา error เฉลยสงสดในการเคลอนทไมเกน 2.67 pulse และ ในชวง input 180 – 280 pulse นนจะมคา error สงสดไมเกน 2.67 pulse และ ในชวง input 280-400 pulse มคา error สงสดไมเกน 6.00 pulse
จากผลการทดสอบดงกลาวจะเหนไดวาการหมนในชวง input 1 – 180 ของทศทางตามเขมจะมความแมนยำาสงกวาทศทางทวนเขม คอ ม error อยในชวงไมเกน 1 pulse เทานน สวนการหมนในชวง 180 -280 pulse นนการหมนในทศทางทวนเขมนาฬกาจะมความแมนยำาสงกวา คอ คา error อยในชวงไมเกนบวกลบ 2.7 pulse
DC motor Position Control using Microcontroller 79
และ ในชวง 280 – 400 pulse นนทงสองทศทางในการหมนมคา error เฉลยใกลเคยงกนคอ 6.00 pulse
สรปผลก�รทดสอบจากผลการทดลองเหนไดวาทงการหมนทวนเขมนาฬกา และ
ตามเขมนาฬกานนในชวงของ 1 – 180 pulse แรกนนจะมความแมนยำาสง สวนคา input ทสงกวานนจะเรมมคา error สงขนทงนเนองจากกระบวนการควบคมความเรว เมอระยะทางยงไกลจะมการใชความเรวสงในการเขาถงทำาใหเกด error เนองจากแรงเฉอยในการเคลอนทบาง ดงนนระยะทางตาง ๆ จะมความเรวชวงหนงทเหมาะสมในการเขาถงโดยระยะทางทไกล ๆ จะตองมการปรบลดความเรวในชวงสดทายใหเรวกวาการเคลอนทระยะทางใกล ๆ เพอใหการเขาถงตำาแหนงมความแมน
แนวคดในก�รดำ�เนนง�น และ ปรบปรงตอไปจากการทำาโครงงานการควบคมตำาแหนง และ ความเรวของดซ
มอเตอร โดยใชไมโครคอนโทรลเลอร 8051 สามารถสรปและเสนอแนะแนวทางในการปรบปรงใหดขนดงตอไปน
ดาน Hardwareo ในโครงงานมการใชไมโครคอนโทรลเลอร 3 ตวในการ
ทำางานในแตละสวนแยกกน ซ ง ทำาใหการทำางานของแตละสวนรวดเรว และเปนอสระตอกน แตกทำาใหเกด
DC motor Position Control using Microcontroller 80
ปญหาเรองของความไมพอเพยงของพอรตใชงานไดหากตองการใหการสงคาตำาแหนงและทศทางมความละเอยดสงขน แตกวามารถแกไขไดโดยการแกไขในสวนของ Software ในการรบสงคาแทนได
o การกำาหนดจดเรมตนของการเคลอนทยงไมมจดเรมตนทแนนอนเพราะใชมอเลอนมายงจดเร มตนเอง ซงอาจแกไขโดยเพมวงจร Hardware ใหมอเตอรหมนไปยงจดเรมตนทกครงทเรมการควบคม
ดาน Softwareo ในสวนของ software นนพบวาสามารถทำางานไดตาม
ทตองการโดยสามารถทำาการควบคมการหมน การหยดของมอเตอรไดแมนย ำาพอสมควร ท งน ในสวนของ software ในการ sampling ตำาแหนงการหมนของมอเตอรในสวนของการอานคาจาก Encoder ซ งม ขนาด 200 pulse / รอบ แบบ 2 phase นนสามารถทำาใหมความละเอยดไดสงสดท 800 pulse / รอบ โดยการโปรแกรมใหอานคาใน 1 ชวงคาบเปน 4 step ได ซงจะทำาใหไดตำาแหนงทมความละเอยดสงขน
DC motor Position Control using Microcontroller 81
บรรณ�นกรม1. E.H. Werninck. 1978, Electric Motor Handbook,
McGraw – Hill Book Company United states.2. Electro Craft Corpn, DC Motor Speed Control and
Servo Systems, Engineering Handbook, 3rd ed., 1975.
3. Schwarzenbach, J. and Gill, K.F. , System modeling and Control, Second Edition, Routledge, Chapman and Hall, Inc, New York: 1984.
4. Robotics and automation , Proceedings., 1988 IEEE International conference on, 24-29 Apr. 1988, Page: 1511-1519 vol.3
5. โยธน เปรมปราณรชต. 2526. วเคราะหและออกแบบระบบควบคมมอเตอร . กรงเทพฯ : สถาบนเทคโนโลยพระจอมเกลา วทยาเขตเจาคณทหารลาดกระบง
6. ศภชย สรนทรวงศ. 2535. มอเตอรไฟฟากระแสตรง . กรงเทพฯ: สมาคมสงเสรมเทคโนโลย(ไทย-ญปน)
7. สนทร วทสรพจน. 2537, การใชงานไมโครคอนโทรลเลอร ตระกล 8051 . กรงเทพฯ : พมพท บรษท เอช.เอน. กรป จำากด โทร.2953544-46
8. ประมวล หนราช. 2534, มอเตอรกระแสตรง . เซมคอนดกเตอรอเลกทรอนกส ฉ.104 (ม.ค. 2534 – ก.พ. 2534): 265-271.
9. ไชยนต สวรรณชวะศร. 2535, เจาะกน ... หนยนต ตอน ควบคม ความเรว DC มอเตอร ดวยระบบดจตอล . เซมคอนดกเตอรอเลกทรอนกส ฉ.114 (ก.พ. 2535): 143-148.
10. MCS 51 . (online) Available : http://www.kmitl.ac.th/~s2015401/index1.html
11. Motion Control. (online) Available: http://www.panmanee.com/step_article3.htm
12. Visual Basic Programming Interface Hardware(online) Available: http://www.thaiio.com/Programing/Vbpage.htm
DC motor Position Control using Microcontroller 82
13. โครงงานการใช Visual Basic ตดตอควบคม MicroController 8051(online) Available: http://www.thaiio.com/Project/MCU51C.htm
14. Available: http://www.keil.com/download/c51.asp
15. MCS-51 Processor Application (online) Available: http://home.postech.ac.kr/~oyz/mcs51/
16. Robots:Stepper Motors (online) Available: http://www.cctc.demon.co.uk/stepper.htm
17. Increased benefit/cost ratio for motor control (online) Available: www.embedded-control-europe.com/pdf/
18. Pulse Width Modulate Available: http://www.thewindmill.freeserve.co.uk/bugbot/pulse_width_modulation.htm
19. Pulse Width Modulate Available: http://www.cpemma.co.uk/pwm.html
ภาคผนวก กรายละเอยดเกยวกบวงจรทางดานฮารดแวร
DC motor Position Control using Microcontroller 83
DC motor Position Control using Microcontroller 84
DC motor Position Control using Microcontroller 85
ภาคผนวก ขไมโครคอนโทรลเลอรตระกล 8051
Microprocessor 8051ในไมโครคอนโทรลเลอรเบอร 8051 ประกอบดวยพอรต
อนพตเอาทพตแบบ 2 ทศทาง (Bidirectional) จำานวน 4 พอรต
DC motor Position Control using Microcontroller 8051 86
แตละพอรตมอปกรณแลทซขอมล และเอาทพตไดรเวอรประกอบอยทางดานเอาทพต และทางดานอนพตจะมบฟเฟอร (พอรตทง 4 เปนรจสเตอรพเศษชอ P0, P1, P2 และ P3) เราสามารถใชงานแตละพอรตเปนอนพต หรอเอาทพตไดตามตองการ แตละบตของพอรตสามารถเชอมตอกบสญญาณ TTL ไดโดยตรง
ในการตดตอกบหนวยความจำาภายนอกพอรต P0 และ P2 จะใชสำาหรบกำาหนดตำาแหนงของหนวยความจำาภายนอก โดยพอรต P0 จะทำางานในลกษณะของมลตเพลก คอเปนทงพอรตตำาแหนงและ พอรตขอมล โดย P0 จะเปนตำาแหนงของหนวยความจำาดานตำา (Low byte) และ P2 จะเปนตำาแหนงของหนวยความจำาดานสง (High byte)สญญาณตางๆ ของไมโครคอนโทรลเลอรเบอร 8051 สามารถจำาแนกตามการทำางานเปน 3 กลมคอ
กลมสญญาณตำาแหนง : เปนตวกำาหนดตำาแหนงของหนวยความจำา
กลมสญญาณควบคม : เปนสญญาณควบคมการทำางานของไมโครคอนโทรลเลอร
กลมสญญาณขอมล : เปนทางผานของขอมลระหวางไมโครคอนโทรลเลอรกบหนวยความจำา
โครงสรางภายในไมโครคอนโทรลเลอรเบอร 8051
1 หนวยความจำาภายในสำาหรบขอมลขนาด 128 ไบต 2 หนวยความจำาสำาหรบเกบโปรแกรมขนาด 4 กโลไบต 3 อปกรณควบคมอนเตอรรพท 4 ตวตงเวลาและตวนบขนาด 16 บต 2 ชด
5 พอรตควบคมการสอสารอนกรมแบบ Full Duplex ซง สามารถรบและสงขอมลพรอมกนได
DC motor Position Control using Microcontroller 8051 87
6 พอรตขนานสำาหรบตดตอกบอปกรณภายนอกจำานวน 4 พอรตๆ ละ 8 บต
7 วงจรผลตสญญาณนาฬกาภายใน
ตวตงเวลาและตวนบ (Timer/Counter) ไมโครคอนโทรลเลอรเบอร 8051 ประกอบดวยรจสเตอร ตว
ตงเวลา/ตวนบ ขนาด 16 บต จำานวน 2 ชด คอ Timer0 และ Timer1 โดย Timer ทงหมดสามารถกำาหนดใหทำางานในลกษณะ ของตวนบหรอตวจบเวลากได
การทำางานในโหมดของตวตงเวลา คาของรจสเตอรจะเพมขนทกๆ แมชชนไซเคลโดย 1 แมชชนไซเคล ประกอบดวยสญญาณนาฬกา 12 ลก ดงนนอตราการจบเวลาจะเปน 1/12 เทาของความถสญญาณนาฬกา ของระบบ คาสงสดทตงไดคอ 2 ยกกำาลง 16
การทำางานในโหมดการนบ คาของการนบจะเพมขน เมอสญญาณเขามาทขา T0 และ T1 เปลยนจาก 1 เปน 0 ความเรวในการนบสงสดคอ 1/24 เทาของสญญาณนาฬกา โดยสญญาณทเขามาทขา T0 หรอ T1 จะม Duty Cycle เทาใดกได
8051 กบการ interrupt วงจรนบ / จบเวลา วงจรนบ / จบเวลา 8051 ประกอบดวย register ขนาด 16 bit จำานวน 2 ตว คอ T0 (Timer0) และ T1 (Timer1) ซงสามารถนำาไปใชงานไดอยางอสระ โดยสามารถควบคมใหทำาหนาทเปนตวจบเวลา(Timer) เพอนบจำานวน plus สญญาณนาฬกาภายใน หรอควบคมใหทำาหนาทเปนตวนบ(Counter) เพอนบจำานวน plus ของ
DC motor Position Control using Microcontroller 8051 88
ระบบ ได ภายใน register แตละตวยงสามารถแยกออกไดเปน register ขนาด 8 bit คอ TH0, TL0, TH1 และ TL1 โดยการทำางานของ register ทง 2 ตวนมผลมาจากการกำาหนดคาของ bit ทอยภายใน TMOD (Timer mode control register) และ TCON (Timer/Counter control register), bit ตางๆภายใน register TMOD, bit ตางๆภายใน register TCON
การ Interrupt วงจรนบตรวจ / จบเวลา จากกระบวนการทำางานของวงจรนบ/จบเวลาของ 8051 จำาเปนตองกำาหนดคาเรมตนใหกบ register T0 หรอ T1 คานเปนคาจำานวน plus ภายในทจะตองนบหรอคาของจำานวน plus ภายนอก ทเขามาทางขาสญญาณสญญาณ T0 หรอ T1 คาตวเลขภายใน register นจะตองลดใหมคาทนอยกวา คาทตองการอยหนงคา ทงนเนองจากการทำางานของ register จะเพมคาจากทกำาหนดไปเรอยๆ จนถง คาสงสดของ register และกลบไปเปนคา 0 เมอมการเกด Overflow เกดขน ทำาใหเกดการกำาหนดคา flag เพอแจงให CPU ไดรบทราบ ดงนนโปรแกรมทวไปจงมกใชสภาวะของ flag น( TF0 และ TF1 ) ซงเปน bit อยภายใน register TCON เพอตรวจสอบวากระบวนการนนไดเสรจสนลงแลว หรอใชเพอ ทำาการ interrupt program ตอไป
สวนควบคมการทำางานของวงจรนบ / จบเวลา ซงประกอบดวยสวนของการกำาหนดทมาของสญญาณ
(Timer) หรอ (Counter) และ bit หรอขาสญญาณสำาหรบการหยดหรอทำางานของวงจรนบการทำางานเปนตวจบเวลาตองมการกำาหนดคาใหอยในสภาวะดงตารางกอน
DC motor Position Control using Microcontroller 8051 89
ก�รกำ�หนดค� bit Register คว�มหม�ย
C/T = 0 TMOD กำาหนดใหเปนการจบเวลา
TR1 หรอ TR0 = 1 TCON กำาหนดสภาวะใหมการทำางาน
GATE = 0 หรอระดบขาสญญาณทขา INT0 หรอ INT1 เปนสภาวะ logic สง
TMOD กำาหนดสภาวะควบคมการทำางาน
Baud RateBaud Rate = 2 SMOD x f
384 x (256 – TH1)
ก�ร Initial ค� Baud rate
DC motor Position Control using Microcontroller 8051
8051 Timer/CounterTMOD and TCON Registers
Timer/Counter 0Timer/Counter 1C/T#M1M0GATE#C/T#M1M0GATE#TMOD
Timer/Counter 0Timer/Counter 1TF1TR1TF0TR0IE1IT1IE0IT0TCON
90
Set baud rate to 9600 for 11.0592 Crystalmov TMOD, #20h ; set timer 1 for auto reloadmov TCON, #41h ; run counter 1 edge trigmov TH1, #0FDh ; 9600 baudmov SCON, #50h ; 8-bit data mode 1
Sending and Receiving Subroutinessndchr: getchr:
clr TI jnb RI, getchrmov SBUF, A mov A, SBUFtxloop: jnb TI, txloop clr RIret ret
ก�รจบเวล�ใน Mode 0: การทำางานใน mode 0 วงจรนบจบเวลาจะทำาหนาทเปนตวนบขนาด 13 bit( โดยใช register TH0 หรอ TH1 เปนตวนบขนาด 8 bit และ register TL0 หรอ TL1 มขนาด 5 bit ) ตามลกษณะของ แผนภาพในรป ก�รจบเวล�ใน Mode 1: การทำางานใน mode 1 มความคลายคลงใน mode 0 มาก แตกตางกนท mode 1 เปนตวนบขนาด 16 bit เตม ดงรป ก�รจบเวล�ใน Mode 2: การทำางานใน mode 2 ของวงจรนบ/จบเวลาแตกตางกนออกไปเพยงใช register TL0 (TL1) เปน ตวนบขนาด 8 bit สวน register TH0 (TH1) เกบคาเรมตนของการนบไว ก�รจบเวล�ใน mode 3 : การทำางานใน mode 3 จะสามารถใชไดเฉพาะกบ Timer 0 เทานน หากวานำาไปกำาหนดใหกบ Timer 1 จะทำาใหหยดการทำางานไป เมอ Timer 0 ไดรบการกำาหนดทำางานใน mode 3 จะมผลทำาให register ของมนแยกการทำางานเปนอสระ โดย register TL0 จะถกควบคมจาก bit ภายใน register TCON และ ขาสญญาณ INT0 ดงแสดงในรป และเมอมการ Overflow เกดขน จากคา 0FFH เปน 00H ก จะมผลให flag TF0 มการเปลยนแปลงเกดขน สำาหรบ register TH0 จะถก
DC motor Position Control using Microcontroller 8051 91
กำาหนดใหทำางานในแบบ ของตวจบเวลาภายใตการควบคมของ bit TR1 ใน register TCON เทานน และหากเกด Overflow จะมผลเฉพาะตอ flag TF1 ในสวน Timer 1 ขณะเมอ Timer 0 ถกกำาหนดใหทำางาน mode 3 กยงจะสามารถทำางานใน mode อนๆ ทไมใช mode 3 ได เชนเดม ยกเวนจะไมมการ interrupt เกดขนเทานน (เนองจาก flag TF1 ถก ใชโดย Timer 0 ไปแลว) รปการทำางานใน mode 3
การทำางานเปนตวนบสญญาณ การใชงานในลกษณะตวนบ(Counter) โดยหลกแลวจะเหมอนกบลกษณะการทำางานเปน ตวจบเวลา (Timer) ดงไดกลาวในหวขอทผานมา ขอแตกตางประการเดยวคอ แทนทจะนบ plus สญญาณภายในและผานวงจรหาร 12 มาเปนการนบ plus สญญาณทางขาสญญาณ T0 (P3.4) ให กบ Timer0 หรอขาสญญาณ T1 (P3.5) ใหกบ Timer1 เทานน นอกจากนกอนการเรมตนใชงานจะ ตองกำาหนดคาของ bit C/T ภายใน register TCON ใหมคาเปน 1 เสยกอน
วงจรนบ / จบเวลา 2(Timer2) Mode การทำางานของ Timer2 ประกอบดวยCapture mode: สามารถเลอกใชงานได 2 ลกษณะ ดวยการกำาหนดใหกบ bit EXEN2 ของ register T2CON ดงน 1. เมอกำาหนด bit EXEN2 เปน 0 Timer 2 ยงทำางานเปนวงจรนบ/ตรวจจบเวลา เมอมการ overflow ขน bit ใน register TF2 จะถกเซต และสามารถนำาไปสรางการ interrupt ขนได 2. เมอกำาหนดคา bit EXEN2 เปน 1 การทำางานจะครอบคลมการทำางานลกษณะขางตน แตจะเพมเมอมการเปลยนแปลงระดบ สญญาณทางขาสญญาณ T2EX จาก logic สง ไปเปน logic ตำา จะมผลทำาใหคาขอมลภายใน register ของ Timer2 คอ TL2 และ TH2 ถกนำาไป
DC motor Position Control using Microcontroller 8051 92
ใส(Capture) ใหกบ register RCAP2L และ RCAP2H ซงเปน register หนาทพเศษ หรอ SFR ทมใน Microcontroller เบอร 8052 เทานน นอกจากนจะมผลทำาให bit EXF2 ภายใน register T2CON มคาเปน 1 สามารถนำาไปใชงานในการ interrupt ไดเชนกน Auto-reload mode: สามารถทำางานได 2 ลกษณะเชนเดยวกนBaud rate Generator: ของ Timer 2 จะมความแตกตางจาก Timer 0 และ Timer 1 โดยวงจรรบ และการสง สามารถเปนคาทตางกนได ขนอยกบการกำาหนดคาใหกบ bit TCLK และ RCLK ของ Timer 2 ดงแสดงใหเหนจากภาพการทำางาน
การทำางานของโหมดนคลายคลงกบการทำางานใน Auto-reload mode กลาวคอคาใน register TH2 เปลยนแปลงจากคา 0FFH ไปเปนคา 0 หรอทเรยกวา overflow จะมผลใหมการโหลดขอมลขนาด 16 bit จาก register RCAP2H และ RCAP2L ซงมการเตรยมคาลวงหนาแลวโดยอตโนมต
DC motor Position Control using Microcontroller 8051 93
ภาคผนวก คการสอสารทางพอรตอนกรมแบบ RS-232 กบ ไมโคร
คอนโทรลเลอรตระกล 8051
SERIAL PORT COMMUNICATIONการสอสารขอมลอนกรมเปนการรบหรอสงขอมลในลกษณะ
ของบตหรอกลมของบต คราวละหนงบตเปนลำาดบเรอยไปจนสนสด จงหวะเวลาของการสอสารขอมลอนกรม
โดยทวไปมกจะระบกนในหนวยของจำานวนบตขอมลภายในเวลาหนงวนาท เรยกวา อตราบอด ตามคามาตรฐานเหลาน ไดแก 110, 150, 300, 1200, 2400, 4800, และ 9600 จากรปท 20 แสดงใหเหนลกษณะของรปแบบสญญาณขอมลอนกรมทปรากฏในสายสงสญญาณ ขอมลทง 8 บตนหากวาถกสงออกมาดวยอตรา
DC motor Position Control using Microcontroller 8051 94
2400 บอดจะใชเวลาในการสงขอมลหนงบตมคาเทากบ 1/2400 หรอ 416 ไมโครวนาท และเวลาในการสงขอมลทง 8 บตมคาเทากบ 8x416 หรอ 3,328 ไมโครวนาท
รปท 50 รปแบบสญญาณไฟฟาของขอมล ซงเปนการสงขอมลแบบอนกรมดวยอตราเรว 2400 บต/วนาท (สงเกตวาจะเรมสงจากบต
D0 ซงเปนบตนยสำาคญตำาออกมากอนเปนลำาดบแรก)
รปแบบของขอมลอนกรมวธการทจะทำาใหขอมลสอสารอนกรมมความถกตองมากยงขน จะ
ใชการเพมเตมบตขอมลบางอยางรวมไปกบการสงขอมลจรง ไดแก 1. บตเรมตน (Start Bit)มหนาทสำาหรบการบงบอกใหวงจรฮารดแวรทางดานรบทราบถง
ตำาแหนงจดเรมตนของบตขอมลกลมใหม เพอทจะทำาการปรบจงหวะของสญญาณการรบขอมลใหตรงกน ดงนนบตเรมตนนจงจะถกเพมเขาไปกอนระดบลอจกของสภาวะของสายสอสาร ขณะเมอไมมการสงขอมล
2. บตแสดงภาวะความเปนเลขคหรอเลขค (Parity Bit)มหนาทเพอตรวจสอบความถกตองของขอมล โดยทวไปมกเรยก
วา บตพารตและจะนำาไปแทรกตอทายบตขอมล คาของบตนขนอยกบ
DC motor Position Control using Microcontroller 8051
1/2400 ไมโครวนาท
8 x (1/2400) = 3.3 มลลวนาท
D0 D1 D2 D3 D4 D5 D6 D7
95
จำานวนคาของบตขอมลทเปน 1 ซงจะเปนไดสองลกษณะ คอ พารตค (Even Parity) หรอ พารตค (Odd Parity)
3. บตสดทาย (Stop Bit)เปนบตทเพมเตมขนเพอระบถงขอบเขตการสนสดของกลมบต
ขอมล บตสดทายนอาจจะมจำานวนมากกวาหนงบตได คอ 1.5 บต และ 2 บต ดงนนกรณของการสงขอมล 8 บตพรอมบตทเพมเตมเขาไปโดยสมบรณ คอ บตเรมตน บตพารต และ บตสดทาย รวมทงสน 12 บต ตามแผนภาพสญญาณเวลาในรปท 2 หากขอมลถกสงออกไปดวยอตราเรว 2400 บอด เวลาโดยรวมในการสงขอมลหนงไบตจะมคาเปน 12 x 416 ไมโครวนาท หรอ 4.99 มลลวนาท
รปท 51 แผนภาพสญญาณเวลาของขอมลแบบอนกรมจำานวน 8 บต
พรอมดวยบตเรมตนบตพารต และ บตสดทาย
การจดการขอมลอนกรมของ 8051 พอรตอนกรมของ 8051 มโครงสรางการทำางานในแบบท
เรยกวา ฟลดเพลกซ (Full Duplex) ซงหมายถงความสามารถในการรบและสงขอมลอนกรมไดในเวลาเดยวกน โดยทางดานวงจรของตวสง (Transmitter) ประกอบดวยรจสเตอร SBUF ทำาหนาทเกบขอมลทจะสงออกการใช คำาสงเขยนหรอโอนยายขอมลมายงรจส
DC motor Position Control using Microcontroller 8051
1/2400 ไมโครวนาท
12 x (1/2400) = 4.9 มลลวนาท
D0 D1 D2 D3 D4 D5 D6 D7StartBit
ParityBit
StopBit
2 3 4 5 6 7 8 91 10 11 12
96
เตอรน จะเปนการสงขอมลนนออกไปยงพอรตอนกรมทางขาสญญาณ TxD โดยอตโนมต สวนวงจรดานตวรบ (Reciever) ประกอบดวยรจสเตอร SBUF เชนเดยวกน แตทำาหนาทเกบขอมลทนำามาจากสวนวงจรเลอนบตหรอชพรจสเตอร (Shift Register) ของวงจรจดการขอมลอนกรมภายใน สญญาณขอมลอนกรมทรบเขาจะผานมาทางขาสญญาณ RxD
รปท 52 แผนภาพแสดงการทำางานของวงจรสวนการรบและสงขอมลอนกรมของ 8051
พอรตอนกรมของ 8051 สามารถโปรแกรมใหทำาหนาทในรปแบบตางๆ กนสแบบ โดยการกำาหนดคาบต SM0 กบ SM1 ซงอยภายในรจสเตอรควบคมและบอกสถานะ SCON
ซงโหมดการทำางานทง 4 แบบของพอรตอนกรม มดงนโหมดการทำางาน
คำาอธบาย
โหมด 0 เปนการขยายพอรตอนพตเอาตพต โดยทำางานรวมกบไอซชพรจสเตอรภายนอกประเภทททแอลหรอซมอส
โหมด 1 ใชสำาหรบการเชอมตออนกรมแบบ UART
DC motor Position Control using Microcontroller 8051
SCON SBUF ดานสง
SBUF ดานรบ
ชพรจสเตอรดานรบ
TB8
RB81/2
1/2
1/21/16
บสขอมลภายใน
สญญาณนาฬกาดานสง
สญญาณนาฬกาดานรบ
XTAL
Timer 1
ควบคมสถานะTxD
RxD
97
(Universal Asynchronous receiver/ Transmitter) โดยการใชกลมขอมลแบบ 10 บตและสามารถเปลยนแปลงอตราความเรวในการสงขอมลได
โหมด 2 ใชสำาหรบการเชอมตออนกรมแบบ UART โดยการใชกลมขอมลแบบ 11 บต และกำาหนดอตราความเรวในการสงขอมลคงท
โหมด 3 ใชสำาหรบการเชอมตออนกรมแบบ UART โดยการใชกลมขอมลแบบ 11 บต และสามารถเปลยนแปลงอตราความเรวในการสงขอมลได
กระบวนการรบและสงขอมลอนกรมของ 8051 การสงขอมลออกทางพอรตอนกรมของ 8051 จะเรมตนขน
ภายหลงเมอมการเขยนขอมลลงในรจสเตอร SBUF ขอมลนจะถกจดการดวยวธการทางดานฮารดแวรในการเลอนบตและสงสญญาณออกไปภายนอกโดยอตโนมต เมอขอมลเหลานไดสงออกครบถวนแลว จงจะทำาการกำาหนดคาของแฟลก TI ใหเปน 1 เพอแจงใหทราบวาขณะนรจสเตอร SBUF วาง และพรอมทจะสงขอมลไบตตอไปแลว ในกรณทผใชเขยนขอมลใหมลงในรจสเตอร SBUF โดยไมรอใหแฟลก TI มคาเปน 1 กอนจะมผลทำาใหขอมลทสงออกไปผดพลาดได
สำาหรบการรบขอมลจากพอรตอนกรมจะตองเรมตนโดยการกำาหนดคาบต REN ใหมคาเปน 1 กอน หลงจากนนเมอมบตของขอมลถกสงเขามาจากภายนอกระบบฮารดแวรของ 8051 จงจะทำาการเลอนบตเหลานเขามาโดยอตโนมต และ เมอบตสดทายถกเลอนเขามาเรยบรอยแลว ขอมลนนจะถกยายมาเกบไวยงรจสเตอร
DC motor Position Control using Microcontroller 8051 98
SBUF และทำาการกำาหนดใหแฟลก RI ใหมคาเปน 1 ซงมผลทำาใหเกดการอนเตอรรปตโปรแกรมขน
การเชอมตอแบบมาตรฐาน RS-232C ในการเชอมตอแบบอนกรมเขากบอปกรณคอมพวเตอรตางๆ
เชน คอมพวเตอร เทเลกซ หรอ โทรพมพ เปนตน มกจะกำาหนดใชการเชอมตอตามมาตรฐาน RS-232C ทงนเพอใหมการใชงานเสนสญญาณหรอรปแบบของตวเชอมตอทสอดคลองกน จะไดลดปญหาการเขากนไมไดระหวางสญญาณของอปกรณทมาเชอมตอกนทงสองดานใหนอยลง เนองจากระดบโวลเตจทใชและการแทนความหมายของระดบลอจกตามาตรฐานนแตกตางไปจากทใชงานกนในระบบดจตอลทวไปโดยระดบสญญาณของ RS-232C เปนแบบไบโพลาร ระดบโวลเตจทางดานลบชวง -3V ถง -20V แทนคาลอจก 1 และโวลเตจทางดานบวกชวง +3V ถง +20V แทนคาลอจก 0 ดงนนจะเหนไดวามความจำาเปนตองเพมเตมอปกรณหรอวงจรพเศษเขาไป เพอเปลยนระดบโวลเตจจากระบบ 0V ถง +5V จากขาสญญาณของ 8051 เปนระดบโวลเตจทสงกวาคา +3.0V หรอตำากวา -3.0V
DC motor Position Control using Microcontroller 8051 99
รปท 53 ไอซเบอรMAX232 ซงเปนวงจรเชอมตอแบบ RS-232C โดยการใชไฟเลยง +5 เพยงชดเดยววงจรการเชอมตอระหวาง 8051 กบ PC ทาง Serial Port การตอสญญาณ Serial Port
(To Computer 1). (To Computer 2).
9 PIN D-SUB FEMALE to Computer 1. 9 PIN D-SUB FEMALE to Computer 2.
D-Sub
1
D-Sub
2Receive Data 2 3 Transmit DataTransmit Data 3 2 Receive DataData Terminal Ready 4 6+1 Data Set Ready
+ Carrier DetectSystem Ground 5 5 System GroundData Set Ready + Carrier Detect 6+1 4 Data Terminal
ReadyRequest to Send 7 8 Clear to SendClear to Send 8 7 Request to Send
DC motor Position Control using Microcontroller 8051 100
รปท 54 แสดงวงจรภายใน Max232
การตอสายอนเตอรเฟส RS232 ระหวางเครองคอมพวเตอร กบ MAX232
DC motor Position Control using Microcontroller 8051
TxD
RxD
RTS
CTS
DSR
DCD
DTR
SG
TxD
RxD
RTS
CTS
DSR
DCD
DTR
SG
DTE ( )เครองคอมพวเตอร DTE (MAX232)
101
รปท 55 การเชอมตอขาสญญาณ
ภาคผนวก งโปรแกรมการทำางานของ สวน Main CPU , Drive Motor และ
Sampling
โปรแกรมอ�นสญญ�ณ Encoder ใน Main CPU
DC motor Position Control using Microcontroller 8051 102
//work with 8x51 series microcontroller#include <stdio.h>#include "reg51.h"
void getCharacter (void); /* read a character from the serial port */void sendCharacter(void);void initial();void getData();void check();
int flagsend = 0;unsigned int duty = 0;unsigned int step = 0;unsigned char buf_duty,true_duty,duty_send;//bit buf_direct;/* variable to hold the new character */unsigned char chr = 0x00;unsigned char buffer = 0x00;
bit direction; //if direction is 0, clockwise. 1, counter-clockwiseunsigned int position,buf_step,Error_pos,duty_time; // variable to hold position - from COM
int flag0 = 0,flag1 = 0;int flag = 0;
void main (void){
initial(); // initial port P16 for interruptwhile(1){
if(RI == 1){getCharacter();P15 = 0; flag=0;flagsend = 1;}if(flag == 0)getData();check();
}//end of while(1)}//end of main
void initial(){
//initial timer 0 and assign timer registers//ES = 1; // enable serial interruptEA = 1; // enable interruptTMOD=0x20; //set timer0 mode 1 (ignored upper 4 bits of TMOD)//initial the serial portSCON=0x50; // set for receiveTH1=0xFD;TL1=0xFD;TR1=1;
P1 = 0x00;P0 = 0xFF;P2 = 0xFF;buf_step = 0xFF;
}
DC motor Position Control using Microcontroller 8051 103
//Function receivevoid getCharacter (void) {
duty_time = 0x0000; while (RI!=1);
RI=0; // it receive interrupt// move data to variablechr = SBUF;if(chr != 0xFF)
DPL = chr; // ********* position from Computerif(chr != 0x00)
DPL = chr;while (RI!=1);
RI=0; // it receive interruptbuffer = SBUF;if(buffer == 0xF0 || buffer == 0xF1) direction = 1; // leftelse if(buffer == 0xE0 || buffer == 0xE1) direction = 0; // rightelse direction = 0;
if(buffer == 0xF1 || buffer == 0xE1)DPH = 0x01;
position = DPTR; }
void sendCharacter (void) {
unsigned char chr;flagsend = 0;chr = duty_time/4;duty_time = 0x0000;
SBUF = chr;TI = 0;while (TI != 1);
}
void getData(){
DPTR = 0x0000;buf_duty = (P0&0xFF);DPL = (P2&0xFF);
if(P32 == 1)DPH = 0x01;
else DPH = 0x00;
buf_step = DPTR;
// if(buf_step > 0x0190) // 400 step// buf_step = position;
if(position >= buf_step)Error_pos = position - buf_step;else
{ Error_pos = buf_step - position;
DC motor Position Control using Microcontroller 8051 104
position = Error_pos; direction = !direction;
buf_step = 0x0000;P15 = 1;
} // error of position
}
void check(){
duty_time = duty_time + buf_duty;P14 = direction;//if(position <= buf_step) // 0 st// { P10 = 0; P11 = 0; P12 = 0; P13 = 0; P15 = 1; flag=1;} // 0 v. P15
for reset count//else if(direction == 1){
if(Error_pos == 0x0000) // 0 st{ P10 = 0; P11 = 0; P12 = 0; P13 = 0; P15 = 1; flag=1; if(flagsend == 1)sendCharacter();} // 2 v.
else if(Error_pos <= 0x0003) // 3 st{ P10 = 0; P11 = 1; P12 = 1; P13 = 0;} // 0x05
else if(Error_pos <= 0x0032) // 50 st{ true_duty = 0x16;
if(buf_duty <= true_duty){ P10 = 0; P11 = 1; P12 = 1; P13 = 0;} // 0x06else{ P10 = 1; P11 = 1; P12 = 1; P13 = 0;} // 0x07
}else if(Error_pos <= 0x0064) // 100 st
{ true_duty = 0x13;if(buf_duty <= true_duty){ P10 = 1; P11 = 1; P12 = 1; P13 = 0;} // 0x07else{ P10 = 0; P11 = 0; P12 = 0; P13 = 1;} // 0x08
}else if(Error_pos <= 0x0104) // 260 st{ true_duty = 0x11;
if(buf_duty <= true_duty){ P10 = 0; P11 = 0; P12 = 0; P13 = 1;} // 0x08else{ P10 = 1; P11 = 0; P12 = 0; P13 = 1;} // 0x09
}else if(Error_pos <= 0x0190) // 400 st
{ true_duty = 0x11;if(buf_duty <= true_duty){ P10 = 0; P11 = 0; P12 = 0; P13 = 1;} // 0x08else{ P10 = 1; P11 = 0; P12 = 0; P13 = 1;} // 0x09
}}
DC motor Position Control using Microcontroller 8051 105
else{
if(Error_pos == 0x0000) // 5 st{ P10 = 0; P11 = 0; P12 = 0; P13 = 0; P15 = 1; flag=1; if(flagsend == 1)sendCharacter();} // 2 v.
else if(Error_pos <= 0x0006) // 6 st{ P10 = 0; P11 = 0; P12 = 1; P13 = 0;} // 0x04
else if(Error_pos <= 0x0014) // 20 st{ true_duty = 0x1C;
if(buf_duty <= true_duty){ P10 = 1; P11 = 0; P12 = 1; P13 = 0;} // 0x05else{ P10 = 0; P11 = 1; P12 = 1; P13 = 0;} // 0x06
}else if(Error_pos <= 0x0064) // 100 st
{ true_duty = 0x1D;if(buf_duty <= true_duty){ P10 = 0; P11 = 1; P12 = 1; P13 = 0;} // 0x06else{ P10 = 1; P11 = 1; P12 = 1; P13 = 0;} // 0x07
}else if(Error_pos <= 0x0104) // 260 st
{ true_duty = 0x13;if(buf_duty <= true_duty){ P10 = 1; P11 = 1; P12 = 1; P13 = 0;} // 0x07else{ P10 = 0; P11 = 0; P12 = 0; P13 = 1;} // 0x08
}else if(Error_pos <= 0x0190) // 400 st{ true_duty = 0x13;
if(buf_duty <= true_duty){ P10 = 1; P11 = 1; P12 = 1; P13 = 0;} // 0x07else{ P10 = 0; P11 = 0; P12 = 0; P13 = 1;} // 0x08
}}
}
โปรแกรมอ�นสญญ�ณ Encoder ใน Drive Motor
DC motor Position Control using Microcontroller 8051 106
//work with 8x51 series microcontroller#include <stdio.h>#include "reg51.h"
void timer_count();void send();unsigned char duty = 0x00;unsigned char duty_times = 0x00;unsigned int step = 0x0000;unsigned int step1 = 0x0000;bit direction = 0;int flag = 0;
void main (void){
//initial timer 0 and assign timer registers EA = 1;ET0 = 1;TMOD=0x20; //set timer0 mode 1 (ignored upper 4 bits of TMOD)
/* // Initial External InterruptEX0 = 1; // enable INT0IT0 = 1; // using active low interruptPX0 = 1; // set prioty first
*///initial the serial portSCON=0x50;TH1=0xFD;TL1=0xFD;TR1=1;
P1 = 0xFF;// loop for check direction , speed and stepwhile(1){
send();
if(P15 == 1) // condition clear{step = 0x0000;step1 = 0x0000;}
while(P11 == 1) // pulse is logic 1{
duty++;flag = 1;timer_count();
}if(flag == 1) // if pulse P11 change we can check P10 state for specify direction{
if(P10 == 1)direction = 1;elsedirection = 0;
if(direction == 0)step++; // step = pulse count
elsestep1++;
duty_times = duty;duty = 0;
DC motor Position Control using Microcontroller 8051 107
while(P11 == 0 && flag == 1){
duty++; // duty is used to calculate velocity (speed)timer_count();
}duty_times = duty;duty = 0;flag = 0;
if(direction == 0)step++; // step = pulse count
elsestep1++;
// ******************** end check }//end of while(1)}//end of main
//interrupt service routine for timer0void timer_count(){
//over flow every 50 -> FFCEus | 25 -> FFE7 | 100 -> FF9C // 10 -> FFF6| 5 -> FFFB | 20 -> FFEC
TH0 = 0xFF;TL0 = 0xEC;//start timer againTR0 = 1;
while(!TF0); // wait overflow TF0 = 0;}void send(){
DPTR = 0x0000;P0 = duty_times; // for speedif(step > step1)
DPTR = step - step1; // for positionelse
DPTR = step1 - step; // for position
if(DPH == 0x01) P32 = 1;else P32 = 0;
P2 = DPL;// P15 = direction; // for direction}
โปรแกรมอ�นสญญ�ณ Encoder ใน Sampling
DC motor Position Control using Microcontroller 8051 108
#include<stdio.h>#include"reg51.h" //reg51.h is in the same directory with this file
#define pulse0 P17 // define pulse Forward#define pulse1 P15 // define pulse Forward#define pulse2 P16 // define pulse Reword#define pulse3 P14 // define pulse Reword
int high_count = 0;int low_count = 0;void initial();void init_timer(); // initial the timer0void high_period();void low_period();int round = 0;int rol = 0;
int high_period1; // period for logic '1'int low_period0; // period for logic '0'int speed = 0;
bit direction = 1;unsigned char con; // construction from port
void main(void){ initial(); init_timer(); while(1) { direction = P37;
con = (P3&0x0F); // use lower 4 bitswitch(con){ case 0x00 :
case 0x0F : low_period0 = 0;break; // stop case 0x01 : low_period0 = 4; break; // every 4*500 = 2000 us = 2 ms ~
1.16 V case 0x02 : low_period0 = 5; break; // 2.32 v case 0x03 : low_period0 = 6; break; // 3.48 v case 0x04 : low_period0 = 7; break; // 4.64 v case 0x05 : low_period0 = 8; break; // 5.8 v case 0x06 : low_period0 = 9; break; // 6.96 v case 0x07 : low_period0 = 10; break; // 8.12 v case 0x08 : low_period0 = 11; break; // 9.28 v case 0x09 : low_period0 = 12; break; // 10.44 v case 0x0A : low_period0 = 40; break; // 11.6 v default: ;}
high_period1 = 40 - low_period0;
// this section for generate pulseif(low_period0 == 0){
P1 = 0xF0;}
DC motor Position Control using Microcontroller 8051 109
else{
if(direction == 1) // direction{
P17 = 1;P16 = 0;P15 = 1;P14 = 0;
}else if(direction == 0){
P17 = 0;P16 = 1;P15 = 0;P14 = 1;
} //end direction}
while(low_count < low_period0) low_period(); // call for wait from interrupt timer low_count = 0;
// high periodP1 = 0xF0; while(high_count < high_period1)
high_period(); high_count = 0;
// end high period
} // end while} // end main
void initial(){ EA = 1; // enable overall interrupt ET0 = 1; // enable the timer0 interrupt P1 = 0xF0; P3 = 0x8F;}
void init_timer(){
TMOD=0x20;; //set timer0 mode 1 (ignored upper 4 bits of TMOD)}
void low_period(){ TH0 = 0xFE; //TL0 = 0x0C; // 500 us TL0 = 0xCE; // 50 us TR0 = 1; // timer work count while(!TF0); // wait overflow 20 us for over flow low_count++; high_count = 0; TF0 = 0;}
DC motor Position Control using Microcontroller 8051 110
void high_period(){ TH0= 0xFE; //TL0= 0x0C; // overflow every 500 us TL0 = 0xCE; // 50 us TR0=1; // timer work count while(!TF0); // wait overflow low_count = 0; high_count++; TF0 = 0;}
DC motor Position Control using Microcontroller 8051 111
ภาคผนวก จโปรแกรมอนเตอรเฟส(Visual Basic)
สวนในการสงคา ตำาแหนงไปยง Microcontroller
DC motor Position Control using Microcontroller 8051 112
Private Sub Command2_Click()Dim direct_send As IntegerDim out As StringDim a, b, c, i As Integer
If Combo1.ListIndex = 0 Thendirect_send = 240Elsedirect_send = 224End If
a = Int(Text17.Text)
If a > 255 Thendirect_send = direct_send + 1a = a - 255End IfMsgBox a & " di=" & direct_sendMSComm1.PortOpen = FalseMSComm1.PortOpen = TrueMSComm1.Output = Chr(a)MSComm1.PortOpen = FalseMSComm1.PortOpen = TrueMSComm1.Output = Chr(direct_send)
'Combo1.ListIndexText19.Text = "¤èÒ Ascii " & Chr(a) & ", ·ÔÈ·Ò§ " & direct_sendEnd Sub
สวนในการรบคาจาก Microcontroller Public Sub Initialisation_Affichage_Page() Rem Ecriture sur l'écran des paramètres de configuration
Rem Effacement des zones d'édition
Rem Ouverture du Port MSComm1.CommPort = Choix_Port MSComm1.Settings = Vitesse(Choix_Vitesse) + "," + Parite(Choix_Parite) + "," + Bit_Donnee(Choix_Bit_Donnee) + "," + Bit_Arret(Choix_Bit_Arret) MSComm1.Handshaking = Choix_Flux MSComm1.InputLen = 0 MSComm1.PortOpen = True Rem Vidage du buffer du Port Série Dim Chaine As String
If (MSComm1.InBufferCount > 0) Then Chaine = MSComm1.Input End If For i = 1 To Len(Chaine) Caractere = Mid(Chaine, i, 1) CodeCaractere = Asc(Caractere) Text1.Text = Chaine Text2.Text = CodeCaractere Text3.Text = Int(CodeCaractere) Next Rem Lancement du Timer de scrutation du port Série frm_Analyse_Bas_Niveau.Timer1.Enabled = TrueEnd Sub
DC motor Position Control using Microcontroller 8051 113