Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 91

บทททที่ 1 บทนนน

1.1 ควนมสน นคคัญและควนมเปป็ นมน (Importance and Background)


ในปปั จจจุบนปั การคอนโทรลมอเตอรร์ กระแสตรงหรรื อดดี ซดีมอเตอรร์ (DC Motor) จะพบไดด้โดย
ทปัวท ไป โดยเฉพาะในงานอจุตสาหกรรมสมปัยใหมมสมวนมาก ดด้วยความเจรริ ญกด้าวหนด้าของเทคโนโลยดี
ทางไมโครอริเลคทรอนริคสร์ (Microelectronic) และ ไมโครโปรเซสเซอรร์ (Microprocessor) ททาใหด้การ
ออกแบบระบบคอนโทรลมอเตอรร์กระแสตรงและการวริเคราะหร์ปปัญหาเปป็ นสริท งทดีทนมาสนใจและมดีความ
สทา คปัญมาก ระบบการคอนโทรลแบบดปัดงเดริ มมดี พลปังจปักรกลทดีท สาท คปัญ ครื อ พวกมอเตอรร์ ไ ฟฟด้ าตม างๆ
Hydraulic และ พวก เบรกและ clutch เปป็ นตด้น แตมดวด้ ยความเจรริ ญของเทคโนโลยดีการสรด้างแมมเหลป็ก
ถาวรทดีท มดีคจุณภาพสสู ง ททา ใหด้มอเตอรร์ กระแสตรงกลายเปป็ นพลปังจปักรกลทดีท สาท คปัญในระบบคอนโทรล
เกรือบทจุกชนริดในปปัจจจุบนปั ซซทงพบเหป็นไดด้ตด งปั แตมการใชด้มอเตอรร์ กระแสตรงในเครรืท องใชด้ไฟฟด้ าภายในบด้าน
โดยปกตริ การใชด้ในรถยนตร์ การใชด้ในเครรืท องคอมพริวเตอรร์ การใชด้ในหจุ ม นยนตร์ตลอดถซงเครรืท องจปักรกลทดีท
ททา งานแบบอปัตโนมปัตริในอจุตสาหกรรมตมางๆ ฯลฯ บวกกปับความกด้าวหนด้าของไมโครโปรเซสเซอรร์
สามารถนทามาประยจุกตร์ใชด้กบปั การคอนโทรลมอเตอรร์ กระแสตรงไดด้ จซ งททา ใหด้ไดด้รปับความนริ ยมอยมาง
มากในปปั จจจุบนปั
มอเตอรร์ กระแสตรงมดีผลการททางานทดีทไมมมดีตาท แหนม งหยจุดทดีทแนม นอน ดปังนปัดนระบบคอนโทรล
มอเตอรร์ กระแสตรงจซงเปป็ นแบบวงรอบปริ ด ตทาแหนม งเอาทร์พจุตหรรื อความเรป็ วเอาทร์พจุทจะถสูกปด้ อนกลปับ
ไปเปรดี ยบเทดียบกปับอรินพจุตอด้างอริงเพรืทอใหด้ไดด้ผลการททางานตามทดีทตอด้ งการ เชมนการบบปังคปับแขนหจุม นยนตร์
เมรืทอจปับวปัตถจุขด ซนมาชริดนหนซท งเราจะควบคจุมใหด้แขนหจุม นยนตร์เคลรืทอนทดีทไปอดีกจจุดหนซท งแลด้ววางวปัตถจุลงหรรื อ
ใชด้ในการสม งของจากทดีทหนซทงไปยปังอดีกทดีทหนซท ง เปป็ นตด้น
ซซท งโครงงานนดีด จะเปป็ นการออกแบบและสรด้างระบบควบคจุมตทาแหนม งของดดี ซดีมอเตอรร์ โดยใชด้
ไมโครคอนโทรลเลอรร์ ตระกสูล 8051 โดยความเรป็ ว และ ตทาแหนม งทดีทตอด้ งการจะถสูกปด้ อนเขด้าไปใหด้ก บปั
ไมโครคอนโทรเลอรร์ ทางพอรร์ ตอนจุ กรม โดยจะใชด้โปรแกรมอริ นเตอรร์ เฟส(Visual Basic) เปป็ นตปัว
ตริดตมอรปับสม งคมา และ ในการควบคจุมใหด้มอเตอรร์ หมจุนตามความเรป็ ว และ ไปยปังตทาแหนม งทดีทตอด้ งการนปัดน
จะผมานวงจรขปับมอเตอรร์ อดีกวงจรในการขปับมอเตอรร์ โดยใชด้ 89C2051 ซซท งจะเปป็ นตปัวสรด้าง Pulse Width
Modulate ในการขปับมอเตอรร์ และ ในสม วนของการตรวจสอบตทาแหนมงจะใชด้เอนโคด้ดเดอรร์ (Encoder)
สม งคมากลปับมายปังไมโครคอนโทรเลอรร์ 8051 จากนปัดนจะสม งคมามาแสดงยปังโปรแกรมอรินเตอรร์ เฟสทาง
คอมพริวเตอรร์

1.2 วคัตถถประสงคค ของโครงงนน (Objectives)


1. เพรืทอศซกษาการควบคจุมแหลมงจมายไฟแบบ PWM โดยใชด้ไมโครคอนโทรลเลอรร์
2. เพรืทอศซกษาการควบคจุมมอเตอรร์โดยใชด้ไมโครคอนโทรลเลอรร์
3. เพรืทอศซกษาการออกแบบโปรแกรมเพรืทอใชด้การควบคจุมตทาแหนมงของมอเตอรร์

1.3 ขอบเขตของโครงงนน (Scope of work)

DC motor Position Control using Microcontroller 1


1. จปัดสรด้างอจุปกรณร์ชจุดควบคจุมมอเตอรร์ โดย Microcontroller เปป็ นตปัวควบคจุม
2. จปัดททาโปรแกรมควบคจุม Motor ทดีทสามารถนทาไปประยจุกตร์ไดด้ โดยมดีผลเปรดี ยบเทดียบใน
เงรืทอนไขตมางๆและทดสอบการควบคจุม Motor ใหด้ถซงตทาแหนมงทดีทตอด้ งการ

1.4 ประโยชนค ททที่คนดวว่ นจะไดด้ รคับ (Expect Results)


เชริงปรริ มาณ
1. ไดด้อจุปกรณร์ชจุดควบคจุมตทาแหนมงดดีซดีมอเตอรร์
เชริงคจุณภาพ
1. ไดด้รปับความรสูด้เพริทมเตริมเกดีทยวกปับการททางานของอจุปกรณร์อริเลคทรอนริ กสร์ตมางๆ
2. ไดด้รปับความรสู ด้เกดีทยวกปับการเขดียนโปรแกรมดด้วยภาษา C เพริม ท ขซดน
3. เปป็ นพรืดนฐานความเขด้าใจในระบบควบคจุม

บทททที่ 2 ขคัขั้นตอนกนรทนนงนน
2.1 คด้ นควด้ นขด้ อมมล
- รวบรวมเนรืด อหาเอกสารทดีทเกดีทยวกปับชริดนงาน
- รวบรวมเอกสารทดีทเกดีทยวของกปับวงจร
- เรดี ยนรสูด้การททางานของอจุปกรณร์ทดีทใชด้
2.2 กนรออกแบบเครรรื่ องมรอ
- ขปัดนตอนออกแบบวงจรอริเลป็กทรอนริ กสร์
1. ออกแบบวงจรอริเลป็กทรอนริ กสร์
2. เลรือกจทานวน INPUT/OUTPUT
3. เลรือกวริธดีการควบคจุม
4. รม างตด้นแบบวงจรไฟฟด้ า

DC motor Position Control using Microcontroller 2


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 ทดสอบ และ สรร ปผล
- ขปัดนตอนทดสอบอดีกครปัดง
1. ทดสอบเหมรือนเดริมอดีกครปัดง
2. ททาซทดาเมรืทอเกริดความผริดพลาดอดีก
- สรจุ ปผล

Mount – year 7 - 45 8 – 45 9 – 45 10 – 45 11 – 45 12 – 45 1 – 46 2 – 46 (ก
step (ก.ค.) (ส.ค.) (ก.ย.) (ต.ค.) (พ.ย.) (ธ.ค.) (ม.ค.) .พ.)
Step1.
Step 2.

DC motor Position Control using Microcontroller 3


Step 3.
Step 4.
Step 5.
Step 6.
2.2.5 ตนรนงแผนงนน

Retail
Step 1 คด้นควด้าขด้อมสูล
Step 2 ออกแบบเครรืท องมรือ
Step 3 จปัดหาอจุปกรณร์
Step 4 สรด้างเครรืท องมรือและทดสอบ
Step 5 ททาการโปรแกรมและทดสอบ
Step 6 ทดสอบ, แกด้ไขปรปับปรจุ ง และ สรจุ ปผล

อถปกรณค ในโครงงนน
- เครรืท องคอมพริวเตอรร์ 1 เครรืท อง
- ดดีซดีมอเตอรร์ 1 ตปัว
- Microprocessor 8051 2 ตปัว
- 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 ตปัว
- ตปัวเกป็บประจจุ 1F 5 ตปัว
- ตปัวตด้านทาน 330 โอหร์ม 8 ตปัว
- MAX232 1 ตปัว
- พอรร์ตอนจุกรม 1 อปัน
- ทรานซริสเตอรร์ TIP 41B 4 ตปัว
- Opto 4n26 4 ตปัว
- DIODE 4 ตปัว

DC motor Position Control using Microcontroller 4


บทททที่ 3 มอเตอรค กระแสตรง
3.1 หลคักกนรทนนงนนของมอเตอรค กระแสตรง
เมรืทอมดีการผมานกระแสไฟฟด้ าเขด้าไปยปังขดลวดในสนามแมมเหลป็กจะททาใหด้เกริดแรงแมมเหลป็กซซท งมดี
สปัดสม วนของแรงขซดนกปับกระแสแรงของสนามแมมเหลป็ก โดยแรงจะเกริดขซดนเปป็ นมจุมฉากกปับกระแสและ
สนามแมมเหลป็ก ขณะทดีททริศทางของแรงกลปับตรงกปันขด้ามกปัน ถด้าหากกระแสของสนามแมมเหลป็กไหล
ยด้อนกลปับจะททาใหด้เกริดการเปลดีทยนแปลงของกระแส และ สนามแมมเหลป็กเปป็ นผลททาใหด้ทริศทางของแรง
เปลดีทยนไป ดด้วยคจุณสมบปัตรินด ดี ทาท ใหด้มอเตอรร์ กระแสตรงกลปับทริศทางการหมจุนไดด้
สนามแมมเหลป็กของมอเตอรร์ สมวนหนซท งเกริดขซดนจากแมมเหลป็กถาวรซซท งจะถสูกยซดตริดกปับแผมนเหลป็ก
หรรื อ เหลป็กกลด้า โดยปกตริสมวนนดีด จะเปป็ นสม วนทดีทยซดอยสูมกบปั ทดีท และ ขดลวดเหนดีท ยวนทาจะพปันอยสูมกบปั สม วนทดีท
เปป็ นแกนหมจุนของมอเตอรร์

3.2 คถณสมบคัตติของมอเตอรค กระแสตรง


ในการอธริบายคจุณสมบปัตริของมอเตอรร์ กระแสตรงใหด้ละเอดียดนปัดนตด้องพริจารณาแรงดปันทดีทปด้อน
และความตด้านทานของโรเตอรร์ดวด้ ย วงจรภายในของมอเตอรร์ เขดียนไดด้ดงปั รสู ปทดีท 3

DC motor Position Control using Microcontroller 5


รม ปททที่ 1 วงจรภายในของมอเตอรร์ กระแสตรง

โดยสมมตริใหด้ทจุมนโรเตอรร์ไมมมดีความตด้านทานอยสูเม ลย อนจุกรมกปับความตด้านทานซซท งในทดีทนด ดี กคป็ รือ


ความตด้านทานของขดลวดนปันท เอง แรงดปันทดีทขด วปั ตมอสายของมอเตอรร์ กป็ครือผลบวกระหวมางแรงดปันทดีททจุมน
โรเตอรร์ (VA) และ แรงดปันตกครม อมความตด้านทานขดลวด (VR)
แรงดปัน VA ถสูกเรดี ยกวมา แรงเคลรืทอนเหนดีท ยวนทาปด้ อนกลปับ (BACK EMF) ซซท งเกริดขซดนในโรเตอรร์
ขณะทดีทหมจุนแรงดปันทดีทเกริดขซดนนดีด เปป็ นไปตากกฎของการเหนดีท ยวนทาแมมเหลป็กไฟฟด้ าจากการเคลรืทอนทดีทของ
ตปัวนทาในสนามแมมเหลป็ก สปัมพปันธร์กบปั แรงเคลรืทอนเหนดีท ยวนทาแมมเหลป็ก และ ความเรป็ วในการเคลรืทอนทดีทของ
ตปัวนทา แรงดปันทดีท เกริ ดขซด นจะมดี ขด วปั ตรงกปันขด้ามกปับแรงดปันทดีท ปด้อนใหด้ก บปั มอเตอรร์ และ แปรผปันตรงกปับ
ความเรป็ วในการหมจุน ผลบวกของแรงดปันทดีททจุมนโรเตอรร์ (VA) และแรงดปันตกครม อมขดลวด (VR) ตด้อง
เทมากปับแรงดปันทดีทปด้อนใหด้กบปั มอเตอรร์ (V)

V = VA + VR (V)

เมรืทอพริจารณาตปัดงแตมมอเตอรร์หยจุดนริท ง ความเรป็ วมดีคมาเปป็ นศสูนยร์ ดปังนปัดน VA = 0, VR = V กระแสทดีท


ไหลในมอเตอรร์หาไดด้จาก

I = VR / R (A)

เมรืทอมอเตอรร์เรริท มหมจุนจะมดีความเรป็ ว และ VA เพริทมขซดนเปป็ นเสด้นตรงตามความเรป็ ว VR ซซท งมดีคมาเทมากปับความ


แตกตมางระหวมาง VA และ V จะเรริท มลดลงกระแส I กป็จะเรริท มลดลงเชมนกปันขณะทดีทมอเตอรร์ ยงปั มดีความเรม ง
อยสูม ความเรป็ วจะเพริทมขซด น แรงบริ ดจะลดลงจนกวมาจะถซ งจจุ ดซซท งแรงบริ ดจองมอเตอรร์ รปับภาระโหลดไดด้
สมดจุลพอดดี ขณะทดีทมอเตอรร์ไมมมดีโหลด และ หมจุนอยมางอริสระจะมดีเพดียงคมาความฝรื ดของแบรริท ง และ แรง
ตด้านอากาศททาใหด้ VA เกรือบเทมากปับคมา V

DC motor Position Control using Microcontroller 6


3.3 โมเดลคณติตศนสตรค ของดทซทมอเตอรค
ดดี ซดีมอเตอรร์ ทดีท ใ ชด้รม ว มกปับ ดดี ซดีแอมปลริ ไ ฟลร์ทด งปั ในระบบการบปังคปับ ตทา แหนม งและการบปังคปับ
ความเรป็ วมปักจะไดด้รปับการประยจุกตร์ใชด้เปป็ นสม วนประกอบสรด้างกทาลปังงานในระบบการนทารม องและระบบ
บปังคปับตมางๆ และเนรืท องจากวริทยาการเกดีท ยวกปับสารแมมเหลป็กและการขยายดด้วยโซลริ คสเตทททา ใหด้ดดีซดี
มอเตอรร์ แบบแมมเหลป็กถาวรไดด้รปับความนริ ยมใชด้เปป็ นสม วนประกอบการขปับเคลรืทอนในระบบการบปังคปับ
แบบปริ ดลสูฟตมางๆ มากขซด น การออกแบบและการชดเชยระบบดปังกลมาวไดด้อยมางเหมาะสมจะตด้องใชด้
โมเดลทางคณริ ตศาสตรร์ของสม วนประกอบทปัดงหมดในระบบ

อารร์มาเจอรร์โวลทร์เตป็จ ความเรป็ วของเพลามอเตอรร์


โมเดลอดีเลป็คโทรแมคคา
นริคอลของมอเตอรร์
แรงบริดโหลด ตทาแหนมงของเพลามอเตอรร์
รม ปททที่ 2 แสดงอรินพจุตและเอาตร์พตจุ ของโมเดลทางคณริ ตศาสตรร์ ของมอเตอรร์

โมเดลอติเลป็คโทรแมคคนนติคอล

สม วนสทาคปัญของดดีซดีมอเตอรร์แบบฟริ ลดร์แยกกระตจุนด้ มดีโมเดลดปังแสดงในรสู ป

รม ปททที่ 3 แสดงโมเดลของดดีซดีมอเตอรร์ แบบฟริ ลดร์แยกกระตจุนด้

Ra: ความตด้านทานของอารร์เมเจอรร์
La: อรินดปัคแตด้นซร์ของอารร์เมเจอรร์
Vg: โวลทร์เตป็จกทาเนริดในอารร์เมเจอรร์ (โวลทร์เตป็จยด้อนกลปับ)
DC motor Position Control using Microcontroller 7
Rf: ความตด้านทานของฟริ ลดร์
Lf: อรินดปัคแตด้นซร์ของฟริ ลดร์
 : ชมองวมางอากาศของเสด้นแรงสนามแมมเหลป็ก
 : ความเรป็ วของเพลาอารร์ เมเจอรร์
Tg: แรงบริดทดีทพฒปั นาขซดนในมอเตอรร์
Tf: แรงบริดเสดี ยดทานของมอเตอรร์
TJ: แรงเฉรืทอยของมอเตอรร์
TL: แรงบริดโหลดบนเพลาของมอเตอรร์

ขปัดนแรกเราจะหาสมการพรืดนฐานโมเดลของดดีซดีมอเตอรร์ ไดด้จากลสูฟของอารร์ เมเจอรร์


di a (t )
Vi(t) = Raia(t) + La dt
+ Vg(t) ----- (1)
เทอมโวลทร์เตป็จ Vg(t) ในสมการ (1) ครือโวลทร์เตป็จยด้อนกลปับของมอเตอรร์ ซท ซ งเกริดขซดนเมรืทอเสด้น
ลวดตปัวนทาของอารร์มาเจอรร์หมจุนตปัดเสด้นแรงแมมเหลป็กซซท งเกริดขซดนในกระแสของฟริ ลดร์ (if) ตามกฎของฟา
ราเดยร์ลสูฟของเสด้นลวดตปัวนทาหมจุนในฟริ ลดร์แมมเหลป็กคงทดีทจะมดีการเหนดีท ยวนทาโวลทร์เตป็จขซด นในขดลวดนปัดน
d (t )
Vi(t) = dt ----- (2)
เมรืทอ  (t ) ครือเสด้นแรงแมมเหลป็กทดีทลริงเคจ(linkages) ไปยปังขดลวดและ t ครือเวลาในการหมจุน
ของคป็อมนริวเทเตอรร์ของมอเตอรร์ การควบคจุมวงจรของแตมละสม วนของตปัวนทาในโรเตอรร์จะเกริดโวลทร์
d (t )
เตป็จขซดนในสม วนของตปัวนทานปัดนตามสมการ (2) เมรืทอ dt จะเปป็ นสปัดสม วนตมอเสด้นแรงแมมเหลป็กในชมอง
วมางอากาศและความเรป็ วเชริงมจุม  (t ) เราจะไดด้วาม
Vg(t) = K (t ) (t ) ----- (3)
สมมตริใหด้กระแสของฟริ ลดร์มดีคมาคงทดีทและไมมคริดถซงสม วนการเปลดีทยนแปลงในเสด้นแรงฟริ ลดร์เนรืท อง
จากอารร์ เมเจอรร์รดีแอคชปันท เสด้นแรงฟริ ลดร์กจป็ ะมดีคมาคงทดีทดงปั นด้นสมการ (3) กป็จะเปป็ น
Vg(t) = K  (t )
e ---- (4)
เมรืทอเราสมมตริใหด้เสด้นแรงของฟริ ลมดีคมาคงทดีท แรงบริดของแมมเหลป็กไฟฟด้ าซซท งเกริดขซดนแกมโรเตอรร์
ของมอเตอรร์จะเปป็ นสปัดสม วนกปับกระแสของอารร์ มาเจอรร์
Tg(t) = Kt ia(t) ---- (5)
เมรืทอ Kt ครือ คมาคงทดีทของแรงบริดของมอเตอรร์
กทาลปังงานเชริงกลทดีทเกริดขซดนในโรเตอรร์ ครือผลคสูณของแรงบริดทดีทเกริดขซดนและความเรป็ วเชริงมจุม
Pg(t) = Tg(t)  (t ) ---- (6)
กทาลปังงานเชริงกลทดีทเกริดขซดนในโรเตอรร์ ทด งปั หมดนดีด จะจมายไปยปังโหลดทดีทตมออยสูกม บปั เพลาของ
มอเตอรร์ แตมกาท ลปังงานนดีด บางสม วนจะสสูญเสดี ยไปในมอเตอรร์ การสสู ญเสดี ยจากแรงเสดี ยดทาน หมายถซง
ความหนมวงเนรืทองจากลมทดีทมดีตมอโรเตอรร์ แรงเสดี ยดทานตปัวรองรปับโรเตอรร์ กระแสทดีทไหลวนในเหลป็ก
ของโรเตอรร์และฮดีสเทรดี ซริส โดยแรงบริดตมางๆแสดงดปังนดีด

DC motor Position Control using Microcontroller 8


รม ปททที่ 4 แสดงถซงแรงบริดตมางๆทดีทเกริดขซดนตมอโหลดของมอเตอรร์

Tg(t): แรงบริดของมอเตอรร์
Tf(t): แรงบริดทดีทตอด้ งชนะการสสูญเสดี ยเนรืทองจากการเสดี ยดทาน
TJ(t): แรงบริดเพรืทอใชด้เพริทมอปัตราเรม งแกมความเฉรืท อยของโหลด
TL(t): แรงบริดโหลด
ในชมวงเวลาใดๆกป็ตาม แรงบริดของมอเตอรร์ จะตด้องเทมากปับและมดีทริศทางตรงขด้ามกปับผลรวม
ของแรงบริด Tf(t) TJ(t) และ TL(t) ดปังนปัดน
d (t )
Tg(t) = Tf(t) + TL(t) + J dt ----- (7)
เมรืทอ J ครือผลรวมของโมเมด้นทร์แรงเฉรืทอยของโรเตอรร์ และโหลดทดีทตมออยสูทม ดีทเพาของมอเตอรร์
ผลรวมของแรงบริดเสดี ยดทานทดีทประกอบกปันขซดนทดีทเพลาของมอเตอรร์ ซท ซ งเปป็ นลริเนดี ยรร์ ฟปังกร์ชนปั กปับ
ความเรป็ วเชริงมจุมของโรเตอรร์เรดี ยกวมา สม วนประกอบของวริสคอสฟรริ คชปันท และมปักจะอยสูใม นเทอมทดีทแยก
ออกจากฟรริ คชปันท อรืทนๆ ซซทงแสดงไดด้ดวด้ ยสมการตมอไปนดีด
d (t )
Tg(t) = Tf(t) + TL(t) + J dt + B (t ) ----- (8)
เมรืทอ B ครือสปัมประสริ ทธริธ ของวริสคอสฟรริ คชปันท ของมอเตอรร์ และโหลดทดีทตมออยสูกม บปั เพลาของมอเตอรร์ Tf(t)
ครือผลรวมของฟรริ คชปันท ของโหลดและมอเตอรร์ ทด งปั หมด มดีแรงตด้านของลมและการสสู ญเสดี ยกทาลปังใน
เหลป็กของเพลามอเตอรร์ยกเวด้นวริสคอสฟรริ คชปันท
สมการ (1) (4) (5) และ (8) เปป็ นชจุดสมการพรืดนฐานของดดีซดีมอเตอรร์ โมเดลและสมการเหลมานดีด
เราสามารถจะหาทรานสเฟอรร์ฟปังกร์ชนปัท ของดดีซดีมอเตอรร์ ไดด้ โดยใสม ลาปลาสทรานสฟอรร์ มทปัดงสองขด้าง
ของชจุดสมการพรืดนฐานไดด้เปป็ น
Vi(s) – Vg(s) = (Ra+sLa) Ia(s) ----- (9)
Vg(s) = K  (s )
e ----- (10)
Tg(s) = Kt Ia(s) ----- (11)
Tg(s) – Tf(s) – TL(s) = (B + sJ)  (s) ----- (12)
สามารถเขดียนเปป็ นบลป็อกไดอะแกรมทดีทแสดงสมการพรืดนฐานเหลมานดีด ไดด้ดงปั นดีด

DC motor Position Control using Microcontroller 9


รม ปททที่ 5 แสดงบลป็อกไดอะแกรมของดดีซดีมอเตอรร์ โมเดล
ขด้ อสคั งเกต
สมมตริวมาโวลทร์เตป็จทดีทปด้อนใหด้กบปั วงจรอารร์ มาเจอรร์ ของมอเตอรร์ มดีคมาคงทดีทดงปั นปัดนมอเตอรร์ จะ
หมจุนดด้วยความเรป็ วคงทดีทครือททางานอยสูทม ดีทสภาวะสงบนริท งดด้วยโหลดทดีทคงทดีท กทาลปังงานเชริงกลทดีทเกริดขซดนโดย
โรเตอรร์ จะหาไดด้จากสมการ (6) จะไดด้
P g = T g  = K t Ia  ---- (13)

เมรืทอทจุกเทอมในสมการสจุ ดทด้ายมดีคมาคงทดีทเนรืท องจากมอเตอรร์ ทาท งานอยสูทม ดีทสภาวะสงบนริท งกทาลปัง


ไฟฟด้ าทดีทถสูกดสูดกลรืนโดยอารร์เมเจอรร์ตอด้ งเทมากปับ
P = V g I a = K e  Ia ---- (14)
ดปังนปัดนเราจะไดด้วาม กทาลปังงานเชริงกลทดีทเกริดขซดนตด้องเทมากปับกทาลปังงานไฟฟด้ าทดีทถสูกดสูดกลรืนในโรเด
อรร์ ครือสรจุ ปไดด้วาม Ke = Kt

ทรานสเฟอรร์ฟปังกร์ชนปัท ของดดีซดีมอเตอรร์
บลป็อกไดอะแกรมของรสู ปทดีท 5 แสดงถซงระบบทดีทมดีสองอรินพจุท และมดีเอาตร์พทจุ เปป็ นความเรป็ วเชริงมจุม
 (s ) และการเคลรืทอนทดีทแบบเชริ งมจุม(s)จากรสู ปทดีท 5 ความเรป็ วเอาทร์พท
จุ ของระบบเขดียนไดด้เปป็ น
 ( s )  G ( s )V ( s )  G ( s )[T ( s )  T ( s )] ---- (15)
1 i 2 f L

เมรืทอ
 (s)
G1 ( s ) 
Vi ( s ) T f ( s ) TL ( s )  0
---- (16)
 (s)
G2 ( s ) 
T f ( s )  TL ( s )
Vi ( s )  0
---- (17)

G1(s) ครือทรานสเฟอรร์ฟปังกร์ชนปัท ระหวมางโวลทร์เตป็จและความเรป็ ว


 (s) Kt
G1 ( s )  
Vi ( s ) ( La s  Ra )( Js  B )  K t K e
K
= S 2  ms  1 ----- (18)
เมรืทอ

DC motor Position Control using Microcontroller 10


Kt
Km 
Ra B  K t K e
La J

Ra B  K t K e
R J  La B
 a
Ra B  K t K e
สมการ (18) เปป็ นโวลทร์เตป็จทรานสเฟอรร์ ฟปังกร์ชนปัท ของดดีซดีมอเตอรร์ ในเมรืทอสมมตริวมา Tf
และ TL มดีคมาเปป็ นศสูนยร์ สมการ (18) สามารถเขดียนใหมมไดด้เปป็ น
Kt
G1 ( s ) 
Ra B(1   e s )(1   m s )  K t K e
La
เมรืทอ e  = ไทมร์คอนสแตด้นทร์ทางไฟฟด้ า
Ra
J
m 
B
= ไทมร์คอนสแตด้นทร์ทางเชริงกล
ถด้าอรินดปัคแตด้นทร์ของอารร์มาเจอรร์มดีคมานด้อย ไทมร์คอนสแตด้นทร์ทางไฟฟด้ าสามารถตปัดทริดงไดด้และ
ไดด้สมการเปป็ น
 (s) Kt
GV ( s )  
Vi ( s ) Ra ( Js  B )  K t K e
K
= s m 1 ----- (19)
R J
เมรืทอ   R B a K K
a t e

ในสมการ (19) คมาคงทดีท Km อาจเรดี ยกไดด้วมาเปป็ นคมาคงทดีทของมอเตอรร์


ทรานสเฟอรร์ฟปังกร์ชนปัท แรงบริดโหลด G2(s) หาไดด้เปป็ น
1

 ( s) Js  B
G2 ( s)  
T f ( s )  TL ( s ) Kt Ke
1
( Js  B )( La s  Ra )
Ra L 
 K m  a s  1
= Kt  Ra  ----- (20)
s   s  1
2

ซซทงถด้าอรินดปัคแตด้นทร์ของอารร์มาเจอรร์ ไมมนาท มาคริด จะททาใหด้ไดด้สมการ ดปังนดีด


Ra
 Km
 (s) Kt
G L (s)  
T f ( s )  TL ( s ) s  1
ซซทงจากสมการทดีท (15) เมรืทอใหด้คมาของ วมา Tf และ TL มดีคมาเปป็ นศสูนยร์จะททาใหด้คมาทรานสเฟอรร์ ฟปัง
กร์ชนปัท มดีคมาดปังนดีด
Km
 ( s )  Gv ( s )Vi ( s )  Vi ( s )
s  1

DC motor Position Control using Microcontroller 11


และจากรสู ปทดีท 5 ตทาแหนมงเอาทร์พทจุ ของระบบเปป็ นดปังนดีด
โมเดลคณริ ตศาสตรร์ ในการควบคจุมตทาแหนมงของมอเตอรร์ จาก transfer function ในหปัวขด้อทดีท
3.3 โมเดลคณริ ตศาสตรร์ของดดีซดีมอเตอรร์ ซซท งจะไดด้ model ของการควบคจุมความเรป็ วของมอเตอรร์ ในรสู ป
ของสมการอปันดปับหนซทงเปป็ นดปังนดีด ครือ
Km
 ( s )  Gv ( s )Vi ( s )  Vi ( s )
s  1

จากสมการขด้างตด้นดปังกลมาวนปัดนจะเหป็นถซงความสปัมพปันธร์ระหวมางความเรป็ วเชริงมจุม (output) และ คมาแรง


ดปันทดีทปด้อน (input)
และในการควบคจุมตทาแหนมงจะมดีการผมานตปัว Integrator (1/s) ททาใหด้ไดด้เอาทร์พตจุ ครือ Ө(s) ซซท ง
จากรสู ปทดีท 5. และ transfer function ทดีทไดด้จากหปัวขด้อทดีท 3.2 ขด้างตด้นนปัดนเมรืทอททาการผมาน Integrator (1/s)
เขด้าไปจะททาใหด้ไดด้คมาของ output เปป็ นมจุมในการเคลรืทอนทดีทของมอเตอรร์ ซซท งเขดียนในรสู ปของสมการไดด้
ดปังนดีด
 ( s )  1   K mVi ( s ) 
 (s)     
s  s   s  1 

สม วนในการหาโมเดลมอเตอรร์ทดีทใชด้ในการทดลองนปัดน เรากทาหนดใหด้โมเดลของมอเตอรร์ เปป็ น


โมเดลมอเตอรร์อนปั ดปับหนซทง (First Order) ซซท งเราไดด้ทาท การทดลองเพรืทอหาโมเดลทดีทเปป็ นลปักษณะอปันดปับ
หนซทงดปังทดีทจะกลมาวถซงในบททดีท 5 หปัวขด้อทดีท 5.5

บทททที่ 4 หลคักกนรควบคถม ควนมเรป็ว และ ตนนแหนว่ ง


ของมอเตอรค กระแสตรง
หลคักกนรควบคถมควนมเรป็ว และ ตนนแหนว่ ง
รสู ปทดีท 6 ครือ บลป็อกไดอะแกรมของระบบควบคจุมความเรป็ วในระบบกลไกแบบเซอรร์ โวนดีด
มอเตอรร์ ถสูกเรดี ยกวมา มอเตอรร์แบบเซอรร์โว (servo motor) เครรืท องวปัดรอบในลสูปแบบปด้ อนกลปับจะวปัด
ความเรป็ วของมอเตอรร์แบบเซอรร์โว และ สม งปด้ อนกลปับมาในรสู ปของสปัญญาณไฟฟด้ า (แรงดปัน หรรื อ กร
พะแส) ซซทง แปลตามความเรป็วเพลาของมอเตอรร์ ในทดีทนดดี ลสูปปด้ อนกลปับจะททาใหด้ความเรป็ วเอาทร์พทจุ ของ
มอเตอรร์ มดีคมาคงทดีทมากขซดน

DC motor Position Control using Microcontroller 12


ระบบแบบ closed loop ถสูกใชด้รวมอยสูใม นระบบเครรืท องมรือ เครรืท องจปักร หรรื อ สวมานกทาลปังเพรืทอ
ชดเชยความแตกตมางของโหลดหรรื อวปัสดจุทดีทถสูกตปัดหรรื อถสูกเจาะ วปัสดจุเนรืด อแขป็งจะหนมวงความเรป็ วของ
สวมาน หรรื อ เครรืท องมรือทดีทใชด้ในการตปัด และ สวมานจะมดีความเรป็ วเพริทมขซดนในวปัสดจุเนรืด ออมอน

รม ปททที่ 6 ระบบควบคจุมความเรป็ ว ทดีทประกอบดด้วยลสูปการควบคจุมปด้ อนกลปับเพดียงลสูปเดดียวเหมาะสทาหรปับ


อจุปกรณร์สวมานไฟฟด้ าเคลรืทอนทดีท

ในลสูปปด้ อนกลปับความเรป็ วของมอเตอรร์ ทดีทประกอบดด้วยเครรืท องวปัดความเรป็ ว ความเรป็ วของ


เครรืท องมรือจะยปังคงมดีคมาคงทดีท เนรืทองจากเมรืทอเครรืท องมรือทดีทใชด้ในการตปัดมดีความเรป็ วลดลง สปัญญาณปด้ อนกลปับ
จะควบคจุมมอเตอรร์ใหด้เพริทมความเรป็ วขซดน ในขณะเดดียวกปัน เมรืทอเครรืท องมรือตปัดชริดนงานทดีทเปป็ นวปัสดจุอมอน ลสูป
ปด้ อนกลปับจะปด้ องกปันไมมใหด้มอเตอรร์เรม งความเรป็ วเกรินขนาด
อยมางไรกป็ตาม ถด้าการประยจุกตร์ใชด้งานมดีความตด้องการ วงจรควบคจุมเพริทมเตริมสามารถถสูกเพริทม
ขซดนมาเพรืทอททาใหด้มอเตอรร์มดีความเรป็ วคมอย ๆ เพริทมขซดน และ คมอย ๆ ลดลงจนกระทปังท หยจุด กราฟของ
ความเรป็ วเขดียนไดด้เปป็ นรสู ปของสามเหลดีทยมทดีทประกอบดด้วยสม วนทดีทลาดขซดน และ สม วนทดีทลาดลง หรรื อ อาจ
เปป็ นรสู ปแทรปซอยดร์ (Trapezoid) ซซทงแบมงเปป็ น 3 สม วนครือ สม วนเพริมท ความเรป็ วขซดน (Ramp up ) สม วน
ความเรป็ วคงทดีทในชมวงเวลาหนซทง และ สม วนความเรป็ วลดลง
รสู ปทดีท 7 ครือ บลป็อกไดอะแกรมของระบบควบคจุมตทาแหนมงนอกจากเครรืท องวปัดความเรป็ วในลสูป
ปด้ อนกลปับความเรป็ วแลด้ว ระบบกลไกแบบเซอรร์ โวนดีด จะมดีลสูปปด้ อนกลปับการกทาหนดตทาแหนมง
ตปัวเซนเซอรร์ในการตรวจจปับตทาแหนมง และ ความเรป็ ว จะรสู ด้วมาเมรืทอใดทดีทเพลาของมอเตอรร์ เซอรร์
โวอยสูใม นตทาแหนมงมจุมทดีทตอด้ งการโดยการนปับสปัญญาณพปัลสร์ และ เปรดี ยบเทดียบพปัลสร์กบปั สปัญญาณอรินพจุท
กมอนทดีทจะหยจุดเพลาเมรืทอนปับไดด้เทมากปัน ซซทงกป็ครือ บลป็อกทดีทชรืทอตปัวอรินทริเกรท (Integrator) ในรสู ปทดีท 5 โดย
ทปัวท ไป จะเปป็ นวงจรอริเลคทรอนริคสร์ควบคจุมตทาแหนมงของเพลา ตปัวเซนเซอรร์ ความเรป็ วในลสูปปด้ อนกลปับ
ของระบบควบคจุมตทาแหนมง ชมวยททาใหด้ระบบเกริดเสถดียรภาพขซดน

รม ปททที่ 7 ระบบควบคจุมตทาแหนมง ประกอบดด้วยลสูปการควบคจุมตทาแหนมงปด้ อนกลปับ และ ลสูปควบคจุม


ความเรป็ วปด้ อนกลปับ

DC motor Position Control using Microcontroller 13


ในระบบควบคจุมกทาลปังบริด (Torque control system) กทาลปังบริดของมอเตอรร์ เซอรร์ โวจะถสูก
รปักษาใหด้มดีคมาคงทดีท เนรืทองจากแรงบริดของมอเตอรร์ แปรตามกระแสของมอเตอรร์ ดปังนปัดน กระแสทดีทปด้อน
ใหด้กบปั มอเตอรร์ เพรืทอรปักษาคมาแรงบริดใหด้คงทดีทเอาไวด้ วริธดีนดดี สามารถททาไดด้ดวด้ ยวงจรทดีททาท การเปรดี ยบเทดียบ
กระแสเอาทร์พทจุ ของมอเตอรร์กบปั กระแสอรินพจุทของมอเตอรร์ และ ขยายผลตมางเพรืทอใชด้เปป็ นวงจรควบคจุม
แรงบริดปด้ อนกลปับ (Torque control feedback circuit )
ระบบควบคจุมการเคลรืทอนทดีทแบบเพริทม (Incremental motion control system) ททาหนด้าทดีทสบปั
เปลดีทยนโหมดควบคจุมจากโหมดหนซทงไปเปป็ นอดีกโหมดหนซท ง เพรืทอใหด้เกริดสมรรถนะการใชด้งานทดีท
ตด้องการ ตปัวอยมางเชมน การควบคจุมความเรป็ วและตทาแหนมง ททาหนด้าทดีทควบคจุมใหด้ไดด้ความเรป็ วทดีทตอด้ งการ
แตมกสป็ ามารถปรปับเปลดีทยนเปป็ นการควบคจุมตทาแหนมง เพรืทอหยจุดเพลาใหด้ไดด้ถสูกตด้องแมมนยทาขซดน

4.1 กนรควบคถมควนมเรป็วของมอเตอรค ขขั้นคั พรนขั้ ฐนน


1. การควบคจุมดด้วยตปัวตด้านทานทดีทปรปับคมาไดด้
เปป็ นรสู ปแบบพรืดนฐานทดีทสจุดของการควบคจุมมอเตอรร์ ครือ ใชด้ตวปั ตด้านทานปรปับคมาไดด้อนจุกรมกปับ
มอเตอรร์ โดยตปัวตด้านทานทดีทปรปับคมาไดด้จะเปป็ นตปัวกทาหนดความเรป็ วในการหมจุนของมอเตอรร์ การบปังคปับ
แบบนดีด ไมมมดีประสริ ทธริ ภาพเพราะกทาลปับไฟสสู ญเสดี ยไปในตปัวความตด้านทาน มปักนริ ยมใชด้ก บปั มอเตอรร์ ตวปั
เลป็กๆ การบปังคปับแบบนดีด ใหด้คจุณสมบปัตริการสตารร์ ทดดี (ใหด้แรงบริดสสู งทดีทความเรป็ วตททา ) แตมจะใหด้ความเรป็ วสสู ง
มากเมรืทอมอเตอรร์ อยสูมในภาวะทดีทมดีโหลดนด้อยๆ ดปังนปัดนการบปังคปับแบบนดีด มดีประโยชนร์เฉพาะภาวะทดีทแรง
ตด้านคงทดีท เชมน การบปังคปับความเรป็ วของเครรืท องจปักรเยป็บผด้า เปป็ นตด้น

DC motor Position Control using Microcontroller 14


รม ปททที่ 8 วงจรควบคจุมความเรป็ วของมอเตอรร์ กระแสตรงแบบใชด้ตวปั ตด้านทานอนจุกรมและกราฟแสดง
คจุณสมบปัตริ

2. การควบคจุมดด้วยวริธดีเปลดีทยนคมาแรงดปัน
วริธดีการนดีด ดดีกวมาวริธดีการแรกแตมจะซปับซด้อนกวมาตด้องใชด้อจุปกรณร์อริเลป็กทรอนริ คสร์ทดีททดีอตปั ราขยาย
กทาลปังสสู ง และ มอเตอรร์ จะถสูกปด้ อนดด้วยแรงดปันทดีท เปลดีทยนแปลงคมาไดด้ จากแหลมงจมายทดีท มดีอริมพดีแดนซร์ตทา
ขด้อดดี ของการควบคจุมวริธดีนดดี ครือ ถด้าความเรป็ วลดลงจากผลของแรงบริด แรงดปันทดีทปด้อนใหด้ก บปั มอเตอรร์ จะ
เพริทมขซดนเพรืทอรปักษาระดปับความเรป็ ว สม วนขด้อเสดี ยจากการควบคจุมวริธดีนดดี ครือ เมรืทอมอเตอรร์ มดีความเรป็ วตททาแรง
ดปันทดีทปด้อนใหด้กบปั มอเตอรร์จะมดีคมาตททาเชมนกปัน

DC motor Position Control using Microcontroller 15


รม ปททที่ 9 การควบคจุมความเรป็ วโดยเปลดีทยนคมาแรงดปัน

3. การควบคจุมดด้วยตปัวตด้านทานทดีทปรปับคมาไดด้
การควบคจุมแบบนดีด สามารถขปับดดีซดีมอเตอรร์ ไดด้ความเรป็ ว 10 : 1 และใหด้การเรป็ คกสูเลททดีทดดีกวมา
กระแสถสูกปลมอยใหด้ฟริลดร์คงทดีท ผลของคจุณสมบปัตริ ความเรป็ วและแรงบริดไดด้รปับการปรปับปรจุ งดดีขดซ นกวมาการ
บปังคปับดด้วยความตด้านทานทดีทปรปับคมาไดด้ และใหด้การเรป็ คกสูเลทความเรป็ วคงทดีทไดด้ดดีขดซ นตลอดชมวงความเรป็ วทดีท
กวด้างกวมา

4. การควบคจุมแบบ PWM (Pulse Width Modulation)


Pulse width modulation (PWM) ครือ เทคนริคสทาหรปับควบคจุมวงจรทางดด้านฮารร์ ดแวรร์ โดยใชด้
สปัญญาณเอาทร์พตจุ แบบดริจริตอลของไมโครโปรเซสเซอรร์ ควบคจุม

กนรทนนงนนของสคั ญญนณ 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 16


รม ปททที่ 10a

รม ปททที่ 10b

รม ปททที่ 10c

รม ปททที่ 10 แสดงสปัญญาณ PWM ซซท งแสดงคมา duty cycles ทดีทตมางๆกปัน

ทนนไมถถึงใชด้ 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 17


4.2 กนรควบคถมตนนแหนว่ งของมอเตอรค
ในโครงงานนดีด ไดด้นาท เอา Rotary Encoder เขด้ามาใชด้ และ อมานคมาออกมาเพรืทอตรวจสอบทริศทาง
และ ตทาแหนมงของการเคลรืทอนทดีท เพรืทอนทามาททาการเปรดี ยบเทดียบตทาแหนมงการเคลรืทอนทดีทกบปั คมา input โดย
หลปักการททางานของ Encoder มดีดงปั นดีด

เอป็นโคด้ ดเดอรค
Rotary Encoder มดีลกปั ษณะเปป็ นแผมนกลมมดีแกนอยสูตม รงกลาง และ ทดีทแผมนกลม จะมดีชมองเลป็ก ทดีท
แสงสามารถ สม องผมานไดด้ เปป็ นจทานวนมากเราเรดี ยกชมองนดีด วมา ชมอง slit ซซท งทดีทดาด้ นหนซท งของ แผมนกลม นดีด
จะมดีตวปั สม งแสง infrared ไปยปังตปัวรปับสปัญญาณแสง infrared ซซท งจะอยสูใม นดด้านตรงกปันขด้าม ดปังรสู ปทดีท 11

รม ปททที่ 11 แสดง Rotary Encoder

DC motor Position Control using Microcontroller 18


เมรืทอหมจุนแกนหมจุนททาใหด้แผมนกลมหมจุนไปตปัดลทาแสง Infrared ดปังนปัดนชจุดรปับแสง infrared จซง
มดีแสงมากระทบเปป็ นชมวงๆ (เปป็ น 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 แบบสองเฟส


หรรื ออาจจะใชด้ชมอง Slit เพดียง 1 ชจุดแตมมดีการจปัดวางชจุดรปับสปัญญาณแสงดปังรสู ปขด้างลมางแตมขอด้
สทาคปัญครือจะตด้องมดี phase ตมางกปัน 90 องศา

DC motor Position Control using Microcontroller 19


รม ปททที่ 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” เราสามารถ
ใชด้คมาดปังกลมาวมาคทานวณหาทติศทนงทดีท motor หมจุนไดด้ดวด้ ยใชด้วริธดีการทาง digital ครือการนทาคมาทดีทอมานไดด้
มาททาการ exclusive OR (XOR) กปันโดยการนทา bit ทางขวาของคมาเกมามา XOR กปับ bit ทางซด้ายของ
คมาใหมมทดีทอมานไดด้ตามตปัวอยมางขด้างลมาง

DC motor Position Control using Microcontroller 20


รม ปททที่ 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
0 0 0
0 1 1
1 0 1
1 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

DC motor Position Control using Microcontroller 21


ในแงมของการใชด้งานแลด้ว motor ทดีทมดี encoder แบบ incremental encoder นปัดนจะใชด้งานยจุงม ยาก
กวมา motor ทดีทมดี encoder แบบ absolute encoder เพราะ output ของ increment encoder นปัดนไมม
สามารถเชรืทอมตมอกปับชจุดควบคจุม motor (controller) ไดด้ทนปั ทดีโดยตด้องตมอผมานวงจรนปับ plus และวงจรคทานวณ
ทดีทยงจุม ยากซปับซด้อนกมอน ถซงจะตมอเขด้ากปับกปับ controller ไดด้ แตมอยมางไรกป็ตาม ในปปั จจจุบนปั เรามดี microprocessor
เชม น microcontroller ตระกสูล PIC เปป็ นตด้น ดปังนปัดนเราจซ งสามารถนทา มาใชด้แทนวงจรนปับ pulse และวงจร
คทานวณไดด้จซงททาใหด้การใชด้งานมดีความงมายขซด น ดปังรสู ปทดีทแสดงไวด้ขาด้ งลมาง

รม ปททที่ 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 22


รม ปททที่ 20 แสดงการเชป็คความกวด้างของ Pulse

บทททที่ 5 รนยละเอทยดและสว่ วนประกอบของโครงงนน


ในโครงงานนดีด มดีสมวนประกอบของระบบการควบคจุมดดีซดีมอเตอรร์ ตามบลป็อกไดอะแกรมของ
รสู ปทดีท 5 ซซทงแบมงเปป็ น 5 สม วนครือ
1. สม วนอรินเตอรร์เฟส บนคอมพริวเตอรร์
2. สม วน Main CPU
3. สม วน Drive Motor
4. สม วน Sampling
5. สม วน Motor

DC motor Position Control using Microcontroller 23


รม ปททที่ 21 บลป็อกไดอะแกรมการควบคจุมดดีซดีมอเตอรร์

5.1 อตินเตอรค เฟส บนคอมพติวเตอรค


ในสม วนนดีด จะประกอบดด้วย โปรแกรมอรินเตอรร์ เฟส โดยใชด้ภาษา Visual Basic จะมดีการรปับ
และ สม งคมา ทริศทาง, ความเรป็ ว และ ตทาแหนมง กปับไมโครคอนโทรลเลอรร์ 89C51 ทางพอรร์ ตอนจุกรม

การกทาหนดคจุณสมบปัตริของ MSComm Control ใหด้สามารถตริดตมอกปับ Microcontroller


ทาง Serial Port ไดด้

1. Property ชรืทอ CommPort ครือ เลรือกคอมพอรร์ ตทดีทเราจะตมอใชด้งาน มาดสูการเขดียนโคค๊ดกปัน


ตปัวอยมาง MSComm1.CommPort=1 ในทดีทนด ดี เลรือกจะใชด้ Com1 อยสูทม ดีทดาด้ นหลปังเครรืท องคอมฯ
2. Property ชรืทอ Settings ครือ การตปัดงคมาของการรปับสม งขด้อมสูล ซซท งจะตด้องรสู ด้ดวด้ ยวมาอปัตราบอดการรปับ
สม งขด้อมสูล ของอจุปกรณร์ทดีทจะตริดตมอดด้วยเปป็ นเทมาไร โดยมดีรายละเอดียดการใสม ตมางๆคมา
ดปังนดีด MSComm1.Settings = "Baud(อปัตราการรปับสม งขด้อมสูล),Parity(ถด้าไมมใชด้ใสม N,จทานวนบริต
ขด้อมสูล,บริตสตค๊อบ" มาดสูการเขดียนโคค๊ดกปัน
DC motor Position Control using Microcontroller 24
ตปัวอยมาง MSComm1.Settings="1200,N,8,1"
3. Property ชรืทอ InputLen ครือ กทาหนดขนาดขณะทดีทมดีขอด้ มสูลเขด้ามาใหด้ไปอมานขด้อมสูลทปัดงหมดทดีทอยสูม
ในบปัพเฟอรร์ มาดสูการเขดียนโคค๊ดกปัน
ตปัวอยมาง MSComm1.InputLen=1
4. Property ชรืทอ PortOpen ครือ จะเปริ ดใหด้พอรร์ ตใชด้งานหรรื อไมม ถด้าเปริ ด =True ถด้าปริ ด =False มาดสู
การเขดียนโคค๊ดกปัน
ตปัวอยมาง MSComm1.PortOpen=True
5. Property ชรืทอ Rthreshold ครือ ททาใหด้เกริดการกระตจุนด้ ดด้วย Event-driven เมรืทอมดีขอด้ มสูลใน
บปัฟเฟอรร์รปับขด้อมสูล(Comport)มปันททาใหด้เกริด CommEvent ใน OnComm Event มาดสูการเขดียน
โคค๊ดกปัน
ตปัวอยมาง MSComm1.Rthreshold =1

ในการรปับสม งคมามดีอยสูสม อง Form


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

DC motor Position Control using Microcontroller 25


รม ปททที่ 22 แสดง Form ในสม วนของการตปัดงคมาการตริดตมอไปยปังอดีก Form หนซท ง

2. Form สม วนของการรปับ และ สม งคมา

DC motor Position Control using Microcontroller 26


Form ในการสม ง
คมาไปยปัง 89C51

Form ในการรปับ
คมาจาก 89C51

รม ปททที่ 23 แสดง Form ในสม วนของการสม งคมาไปยปัง Microcontroller รปับคมาทดีทไดด้จากอดีก Form หนซท ง
รสู ปแบบการตริดตมอการรปับสม งระหวมาง คอมพริวเตอรร์ กบปั Microcontroller ตปัวหลปัก จะสม งอยสูใม น
รสู ปแบบรหปัส Ascii โดยคมาตทาแหนมงทดีทปด้อนจะอยสูใม นชมวย 0-360 องศา แตมคมาทดีทสมงจรริ งจะคทานวณเปป็ นคมา
0- 400 pluse และ ในการสม งมดีจาท นวน 2 Byte โดย Byte แรกเปป็ นคมาตทาแหนมง สม วน Byte สองเปป็ นคมา
ทริศทางกปับ 1 บริต MSB ของคมาตทาแหนมง เพรืทอใหด้ไดด้คมาตทาแหนมง 400 pulse
แสดง Code ของ Form ในสม วนของการแสดงคมาการตริดตมอ
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

5.1.1 การสม งคมา ตทาแหนมง ไปยปังไมโครคอนโทรลเลอรร์ 89C51


แสดง Code ของการสม งคมาออกทางพอรร์ตอนจุกรม

DC motor Position Control using Microcontroller 27


Private Sub Command2_Click()
Dim direct_send As Integer
Dim out As String
Dim a, b, c, d, i As Integer
If Combo1.ListIndex = 0 Then
direct_send = 240
Else
direct_send = 224
End If
d = Int(Text17.Text)
a = (d * 40) / 36
If a > 255 Then
direct_send = direct_send + 1
a = a - 255
End If
MSComm1.PortOpen = False
MSComm1.PortOpen = True
MSComm1.Output = Chr(a)
MSComm1.PortOpen = False
MSComm1.PortOpen = True
MSComm1.Output = Chr(direct_send)
End Sub

5.1.2 การรปับคมา ความเรป็ ว จากไมโครคอนโทรลเลอรร์ 89C51


ในการรปับคมาจากไมโครคอนโทรลเลอรร์ นด นปั ตด้องรปับขด้อมสูลตรงกปับไมโครคอนโทรลเลอรร์ ใน
โครงงานนดีด จะสม งคมาความเรป็ วในการเขด้าถซงตทาแหนมงเพดียง 1 ไบตร์
แสดง Code ของการรปับคมาความเรป็ วทางพอรร์ ตอนจุกรม
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


เปป็ นสม วนประมวลผลหลปัก ซซทงมดีการททางานประสานงานกปับสม วนอรืทน ๆ อปันไดด้แกม

DC motor Position Control using Microcontroller 28


 การรปับคมา ตทาแหนมง และ ทริศทางจาก program Interface บน computer เพรืทอททาการ
ประมวลผลและ สม งตมอการควบคจุมเพรืทอควบคจุมตทาแหนม ง ไปยปังสม วนตมาง ๆ รวมทปัดง
รปับขด้อมสูลดริบเขด้ามาประมวลผล
 สม งคมาความเรป็ ว และ ทริ ศทางทดีท เหมาะสม ใหด้ก บปั Power CPU ดทา เนริ นการควบคจุ ม
ความเรป็ว และ ทริศทางในการหมจุนของ motor ตมอในรสู ปแบบของ PWM
 รปั บ คม า จทา นวน step ของการหมจุ น และ คม า duty ซซท งเปป็ นขด้อ มสู ล ดริ บ ทดีท ใ ชด้ใ นการ
คทา นวณคม า ความเรป็ ว จาก Sampling CPU ซซท งเปป็ น CPU ทดีท ทาท หนด้ า ทดีท นปั บ คม า
step,ทริศทาง และ ความเรป็ วของ motor ณ เวลา นปัดน ๆ ซซท งคมาของ step นปัดนจะเปป็ น
ตปัว บอกวม า motor หมจุ น มากดีท step และ ใชด้ในการเปรดี ย บเทดี ย บวม า ในเวลานปัด น ๆ
ตทาแหนมงทดีทหมจุนมามดีคมาเปป็ นอยมางไรเมรืทอเทดียบกปับตทาแหนมงเปด้ าหมาย
5.2.1 สม วนในการรปับคมาจากคอมพริวเตอรร์
สม วนของการรปับคาจากคอมพริวเตอรร์ ทางพอรร์ ตอนจุกรมนปัดนจะททาการรปับคมาเขด้ามาดปังนดีด ครือ
- ขด้อมสูลทริศทาง 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 ของความเรป็ ว และ ทริศทาง
ในการควบคจุม

DC motor Position Control using Microcontroller 29


 การควบคจุมทริศทาง และ ความเรป็ ว ซซท ง ความเรป็ วนปัดนใชด้หลปักการ Pulse Width
Modulate ซซทง จะไดด้กลมาวตมอไปในสม วนของ Algorithm ของ code program :
Algorithm code – Power CPU

5.4 สว่ วน Sampling


เปป็ นสม วนทดีททาท หนด้าทดีทในการประมวลผลทางดด้านการสจุม มเพรืทอการตรวจจปับคมา ความเรป็ ว
ทริศทาง และ ตทาแหนมง ซซทงมดีการททางานหลปัก ๆ ดปังนดีด
 sampling เพรืทอการตรวจจปับคมาความเรป็ ว ตทาแหนมง และ ทริศทาง ของ motor
 สม งคมาขด้อมสูลดริบทดีทไดด้ใหด้กบปั Main CPU ประมวลผลตมอไป

5.5 มอเตอรค
5.5.1 มอเตอรร์
Block diagram ในกนรควบคถมตนนแหนว่ งและควนมเรป็วของมอเตอรค
r(s) E(s)
G(s) (s) 1/s
c(s)
R(s) C(s)
+
- -

จาก block diagram ดปังกลมาวขด้างตด้นจะใชด้ model ทางคณริ ตศาสตรร์ ของมอเตอรร์ เปป็ นดปังนดีด
G(s) = K/(s+a)

DC motor Position Control using Microcontroller 30


ซซทง model ดปังกลมาวนปัดนเปป็ น model อปันดปับหนซท งซซท งไดด้จากการวริเคราะหร์ model ทางคณริ ตศาสตรร์ทดีทกลมาว
มาแลด้วขด้างตด้นตาม บทททที่ 3 มอเตอรค กระแสตรง

กนรหนคว่ นคถณลคักษณะของมอเตอรค ททที่ใชด้ ในโครงงนน


ในการควบคจุมมอเตอรร์กระแสตรงนปัดนเราจทาเปป็ นตด้องรสู ด้ความสปัมพปันธร์ระหวมางคมาของแรงดปันทดีท
ปด้ อนใหด้กบปั มอเตอรร์และผลลปัพธร์ทดีทไดด้ เชมนการควบคจุมความเรป็ วของมอเตอรร์ เราจทาเปป็ นตด้องทราบความ
สปัมพปันธร์ระหวมางคมาแรงดปันทดีทปด้อนกปับคมาความเรป็ วรอบตมอนาทดีของมอเตอรร์ รวมทปัดงจทานวน pulse / รอบ
ของ encoder ทดีทใชด้เพรืทอการควบคจุมและตรวจสอบความถสูกตด้อง
ในโครงงานนดีด ไดด้ทาท การทดลองวปัดคมาความเรป็ วรอบของมอเตอรร์ โดยใชด้เครรืท องมรือวปัดรอบ ซซท ง
ใชด้หลปักการของแสง และ ททา การตมอผลลปัพธร์จาก encoder เขด้ากปับ oscilloscope เพรืทอดสูคมา pulse ของ
encoder และ คทา นวณ pulse ของ encoder โดยคม าทดีท ปรากฏบน oscilloscope นปัดน จะมดี ลปักษณะเปป็ น
pulse ดปังนปัดนเราจซงอมานคมาความถดีทจาก oscilloscope ออกมาเพรืทอใชด้ในการคทานวณดปังนดีด

P : ครือ pulse / รอบ ของ encoder


S : ครือ ความเรป็ ว (รอบ / นาทดี ) ของมอเตอรร์
F : ครือ ความถดีทของ encoder ทดีทอมานไดด้จาก oscilloscope (pulse / วรินาทดี)
ดปังนปัดนจะไดด้ pulse /รอบ ของ encoder ตามสมการ
P = F*60 / S

ตนรนงแสดงคว่ นตว่ นงๆ ของแรงดคันแตว่ ละคว่ น


แรงดปัน ความเรป็ ว (รอบ/นาทดี ) ความถดีททดีวดปั (Hz) pulse / รอบ ความชปัน a = outpu / input
1 94 310 197.8723 94
2 246 820 200 123
3 399 1350 203.0075 133
4 554 1859 201.3357 138.5
5 706 2350 199.7167 141.2
6 887 2950 199.549 147.8333
7 1047 3470 198.8539 149.5714
8 1211 4050 200.6606 151.375
9 1367 4560 200.1463 151.8889
10 1522 5070 199.8686 152.2
11 1669 5610 201.6777 151.7273
12 1820 6055 199.6154 151.6667
13 1983 6600 199.6974 152.5385
14 2147 7160 200.0932 153.3571
15 2305 7700 200.4338 153.6667
16 2440 8145 200.2869 152.5
17 2613 8750 200.9185 153.7059
18 2778 9270 200.216 154.3333
19 2947 9840 200.3393 155.1053
20 3130 10450 200.3195 156.5
Mean 200.2304 145.8835

DC motor Position Control using Microcontroller 31


F : ความถดีท pulse ทดีทวดปั ไดด้ หนมวย pulse / วรินาทดี
S : ความเรป็ วในการหมจุนของ motor หนมวย รอบ / นาทดี
P : จทานวน pulse / รอบ ของ encoder ทดีทตอด้ งการหา

P = [ 60 x F ] / S

จากตารางจะไดด้ pulse / รอบ เฉลดีทย = 200 pulse / รอบ

กรนฟแสดงควนมสคั มพคันธค ระหวว่ นงควนมเรป็วกคับแรงดคัน


ความเรป็ ว (rpm)

แรงดปัน V

รม ปททที่ 24 กราฟแสดงความสปัมพปันธร์ระหวมางความเรป็ วกปับแรงดปัน

กนรสถว่ มวคัดควนมเรป็วของ motor


ในการควบคจุมการททางาน ความเรป็ ว และ ตทาแหนม ง ของมอเตอรร์ ใหด้มดีประสริ ทธร์ภาพนปัดน ไมม
เพดียงแคมรสูด้ความสปัมพปันธร์ระหวมาง input และ output เทมานปัดน เรายปังจทาเปป็ นจะตด้องรสู ด้คจุณลปักษณะของของ
มอเตอรร์ ดวด้ ยเนรืทองจากมอเตอรร์แตมละตปัวมดีความเรป็ วในการเขด้าสสูม สภาวะ steady ตมาง ๆ กปัน ซซท ง คมาเวลานดีด
มดีผลตมอการควบคจุม โดยในโครงงานนดีด ไดด้ทาท การเขดียน program ขซดนมาเพรืทอททาการวปัดคมาความเรป็ วของ
มอเตอรร์ ทดีทเวลาตมาง ๆ สทาหรปับแรงดปันคมาหนซท งเพรืทอศซกษาถซงการเขด้าสสูม สภาวะ steady ของมอเตอรร์

หลปักการสจุม มเพรืทอตรวจจปับความเรป็ วของ motor ทดีทเวลาตมาง ๆ


ใชด้หลปักการ interrupt ของ timer โดยการรปับคมาสปัญญาณ encoder จาก P11 และททาการสจุม ม
ตรวจวมามดีคมาเปป็ น 0 หรรื อ 1 หากเปป็ น 1 ใหด้ทาท การบวกคมาใหด้กบปั duty อดีก 1 ดทาเนริ นการเชมนนดีด ไปเรรืท อย ๆ
จนกวมา P11 (รปับคมา pulse จาก encoder เขด้ามา ) เปป็ น 0 จซงททาการสม งคมา duty สจุ ดทด้ายเพรืทอมาแสดงผลทดีท
DC motor Position Control using Microcontroller 32
computer โดยรปับเขด้ามาทาง serial port แสดงทดีท VB ซซท ง VB จะสจุม มรปั บคมาทจุก ๆ 1 ms โดยคมาทดีทสมงมา
นปัดนจะเกป็บและเขดียนซทดาลงใน buffer เดริมหากไมมมดีการอมานจาก program interface VB กป็จะมดีการเขดียน
ซทดาไปเรรืท อย ๆ ดปังนปัดนเมรืทอททาการอมานจะไดด้คมาสจุ ดทด้ายทดีทเขดียนลง buffer ซซท ง อธริ บายตามรสู ปขด้างลมางนดีด

รม ปททที่ 25 ตปัวอยมางแสดงการ sampling


จากรสู ปจะเหป็นไดด้วาม จะมดีการสจุม มในชมวงเวลาทดีทเทมา ๆ กปันตลอด โดยในโครงงานนดีด จะสจุม มทจุก ๆ
25 us และกทาหนดคมาเรริท มตด้นใหด้กบปั ตปัวนปับเปป็ น 0 เมรืทอสจุม มคมาจาก port ตามเวลาทดีทกาท หนดแลด้วตรวจพบ
วมามดีคมาเปป็ น logic 1 กป็จะททาการเพริมท คมาใหด้ตวปั นปับครปัดงละ 1 จนกวมาจะสจุม มไดด้คมา logic 0 จะททาการสม งคมาทดีท
นปับ ไดด้อ อกทาง port ไปยปัง program interface เพรืท อ แสดงคม า และ ททา การ set คม า ตปัว นปับ เปป็ น 0 ซซท ง
จทานวนครปัดงทดีทนบปั ไดด้นด ดี ไมมใชด้คมาทดีทใชด้จรริ ง แตมจะนทาไปคทานวณเปป็ นคมา คาบ และ ความถดีท ตมอไป
สม วนของ program ทดีทอยสูมบน micro controller 89c51 ทดีทใชด้ในการ sampling คมาในชม วงทดีท เปป็ น
logic ‘1’ เพรืทอนทามาคทานวณคาบ และ ความถดีท ตมอไป

while(1)
{
while(P11 == 1)
{
duty++;
flag = 1;
TR0 = 1;
}
TR0 = 0;
TI = 1;
if(flag == 1)
sendCharacter ();
}//end of while(1)

ตารางดด้านลมางนดีด แสดงถซงคมาทดีทนบปั ไดด้ในการ sampling คมาความเรป็ วรอบของมอเตอรร์ ทดีทคมาแรง


ดปันตมาง ๆ ทจุก ๆ เวลา 1 ms โดยแตมละคมาแรงดปันจะททาการทดลอง 3 ครปัดง แลด้วนทาคมาทดีทเวลาเดดียวกปัน
ของ แตมละแรงดปันทดีทปด้อนมาททาการเฉลดีทย

DC motor Position Control using Microcontroller 33


ตนรนงททที่ 2 แสดงคว่ นตว่ นง ๆ ททที่ไดด้ จนกกนรสถว่ ม
เวลา\แรงดดัน 3V 6V 9V 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
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/จทานวนครปัดง * 40 us

ตนรนงททที่ 3 แสดงคว่ นควนมถทที่ของมอเตอรค ททที่เวลนตว่ นง ๆ ของแตว่ ละคว่ นแรงดคัน


เวลา\แรงดดัน 3V 6V 9v 12 v
1 ms 0.000172 0.00023 0.000325 0.000333

DC motor Position Control using Microcontroller 34


2 ms 0.000893 0.00125 0.002143 0.000915
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 / รอบ ของ encoder
S : ครือ ความเรป็ วรอบของมอเตอรร์ (รอบ / นาทดี )

S = F*60 / P

ตนรนงททที่ 4 แสดงคว่ นควนมเรป็วของมอเตอรค ททที่เวลนตว่ นง ๆ ของแตว่ ละแรงดคัน


เวลา\แรงดดัน 3v 6v 9v 12 v
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

DC motor Position Control using Microcontroller 35


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)
ความเรป็ ว (rpm)

เวลา (s)

รม ปททที่ 26 กราฟแสดงความสปัมพปันธร์ระหวมางความเรป็ ว (rpm) กปับเวลา (s)

DC motor Position Control using Microcontroller 36


รม ปททที่ 27 กราฟแสดงความสปัมพปันธร์ระหวมางความเรป็ วกปับเวลา แบบครม าว ๆ

รม ปททที่ 28 กราฟแสดงความสปัมพปันธร์ระหวมางความเรป็ วกปับเวลา เทดียบอปัตราสม วน 1


จะไดด้คมา time constant = 4.2 ms
a = 1/0.0042 = 238.1

DC motor Position Control using Microcontroller 37


ในระบบควบคจุมทดีทเขดียนอยสูใม นรสู ปของความสปัมพปันธร์ของ 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 แลด้วนทามาพริจารณาโดยสมมตริใหด้คมาตปัวแปรตมาง
ๆ เปป็ นดปังนดีด
K : ครือ อปัตราขยาย
t : ครือ คมา time constant ซซทงเทมากปับเวลาทดีท output = 63 % ของคมาทดีท steady state
a : ครือ คมาคงทดีท ซซทงเทมากปับ 1/t
s : ครือ คมา output ทดีท steady state ซซท ง กป็ครือทดีทเวลาเขด้าใกลด้ infinity หรรื อ คมา s เขด้าใกลด้ 0
Input : ครือ คมาแรงดปัน input ทดีทปด้อน
ดปังนปัดนจาก
G(s) = Input*K/(s+a)
เมรืทอ s-->0 จะไดด้วมา
s = K*Input/a
ดปังนปัดนเราสามารถหาคมา K ไดด้จาก
K= s*a/Input

หนคว่ น K ททที่ input เทว่ นกคับ 3 Volt

DC motor Position Control using Microcontroller 38


//code simulate with scilab 2.7
s = 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))

รม ปททที่ 29 แสดง transfer function ทดีท input = 3 volt


t = 0.008
a = 1/0.008 = 125
3K/a = 0.0125
K = (0.0125*a)/ 3 = 0.5208

หนคว่ น K ททที่ input เทว่ นกคับ 6 Volt

DC motor Position Control using Microcontroller 39


//code simulate with scilab 2.7
s = 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))

รม ปททที่ 30 แสดง transfer function ทดีท input = 6 volt


t = 0.008
a = 1/0.008 = 125
6K/a = 0.0245
K = (0. 0245 * a) /6 = 0.5104

หนคว่ น K ททที่ input เทว่ นกคับ 9 Volt

DC motor Position Control using Microcontroller 40


//code simulate with scilab 2.7
s = 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))

รม ปททที่ 31 แสดง transfer function ทดีท input = 9 volt

t = 0.008
a = 1/0.008 = 125
9K/a = 0.0370
K = (0.0370* a)/9 = 0.5139

หนคว่ น K ททที่ input เทว่ นกคับ 12 Volt

DC motor Position Control using Microcontroller 41


//code simulate with scilab 2.7
s = 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))

รม ปททที่ 32 แสดง transfer function ทดีท input = 12 volt


t = 0.008
a = 1/0.008 = 125
12K/a = 0.048
K = (0.048*a) / 12 = 0.500
ตนรนงททที่ 5 สรถ ปของคว่ น K
Input (v) K
3 0.5208
6 0.5104
9 0.5139
12 0.500
เฉลลลี่ย 0.5113
เพราะฉะนปัดน transfer function ของ motor เปป็ นดปังนดีด
K = 0.58, a = 238.1

DC motor Position Control using Microcontroller 42


r(s) E(s) (s) c(s)
R(s) G(s) 1/s C(s)
+
-

G(s) = 0.51/(s+238.1)
เมมมื่อเราทราบคบ่าตบ่าง ๆ ของ transfer function แลห้ ว กป็ ททา การ plot กราฟความสศัมพศัน ธธ
ระหวบ่าง output () กศับ เวลา (t (s)) ทศังนน ขึ้ ขึ้เพมมื่อใชห้ ขห้อมมูลจากกราฟเพมมื่อททาการเปรน ยบเทนยบกศับคบ่าทนมื่ไดห้
จากการทดลองวศัดคบ่าจรริ งวบ่ามนความใกลห้ เคนยงกศัน หรม อ ไมบ่ และ มนความผริดพลาดอยมูบ่ในชบ่วงทนมื่ยอมรศับ
ไดห้ หรม อไมบ่ โดยททาการ plot ทนมื่คาบ่ input ตบ่าง ๆ ดศังนน ขึ้
Input 3 volt
//code simulate with scilab 2.7
s = 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 volt


Input 6 volt

DC motor Position Control using Microcontroller 43


//code simulate with scilab 2.7
s = poly(0,'s');
t = 0:0.01:0.1
input = 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 44


//code simulate with scilab 2.7
s = poly(0,'s');
t = 0:0.01:0.1
input = 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 45


//code simulate with scilab 2.7
s = poly(0,'s');
t = 0:0.01:0.1
input = 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

จากกราฟทนมื่ ไดห้ นศันขึ้ จะเหป็ น วบ่า w มน คบ่า ไมบ่เกริ น 1 ทศังขึ้ นน เขึ้ นมมื่ องจาก input ทนมื่ ปห้อนนศันขึ้ เปป็ น step
input (0,1) ดศังนศันขึ้  ดศังกลบ่าวจขงไมบ่ใชบ่คบ่าความเรป็ วจรริ งในทางปฏริบตศั ริ แตบ่เราตห้ องททาการหาคบ่าอห้ างอริง

DC motor Position Control using Microcontroller 46


เพมมื่อ อห้ างอริง และ หาอศัตราสบ่วนตบ่อหนบ่วยของ  ในกราฟ เพมมื่อเทนยบใหห้ อยมูบ่ในรมู ปของคบ่าความเรป็ วจรริ ง
ของมอเตอรธ ในเวลานศันขึ้ ๆ ซขงมื่ การพริจารณาคบ่าอห้ างอริงสามารถพริจารณาไดด้ 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 รอบ/นาทดี
ทดีท 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 รอบ/นาทดี
ทดีท 9 v คมาสสูงสจุ ดทดีทไดด้ครือ 0.0190 จะไดด้ความเรป็ วเทมากปับ (0.0190 *2250)/0.0250 = 1710 รอบ/นาทดี
ทดีท 12 v คมาสสูงสจุ ดทดีทไดด้ครือ 0.0250 จะไดด้ความเรป็ วเทมากปับ (0.0250 *2250)/0.0250 = 2250 รอบ/นาทดี

DC motor Position Control using Microcontroller 47


สรถ ปกนรประมนณควนมเรป็ว
คมาทดีทมดีคมาใกลด้เคดียงกปับคมาทดีทวดปั ไดด้ทดีทสจุดครือ กรณดี ทดีท 3 ครือ ใหด้ input ทดีท 9 volt เปป็ น Reference
ตนรนงททที่ 6 แสดงการเปรดี ยบเทดียบความเรป็วของมอเตอรร์ทดีทไดด้จากการทดลอง
Input ควนมเรป็วททที่วดคั ไดด้ จรติง ควนมเรป็วททที่ไดด้ จนกกนร simulate (อด้นงอติงททที่ 9 V)
(รอบ/นาทดี) (รอบ/นาทดี)
3 V. 399 452
6 V. 887 871
9 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.7
s = 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)

ซขมื่งจากตศัวอยบ่างของชชุดคทาสศังมื่ ดศังกลบ่าวเปป็ นการ simulation คบ่าทนมื่ input 12 v สบ่วนคบ่า input ทนมื่แรงดศัน


อมมื่น ๆ สามารถททาไดห้ เชบ่นเดนยวกศันนน ขึ้โดยการเปลนมื่ยนคบ่า input เปป็ นคบ่าแรงดศันนศันขึ้ ๆ
เมมมื่อไดห้ คบ่า output ของแตบ่ละคบ่าแรงดศันออกมาแลห้ วกป็ททาการหารดห้ วยคบ่าสมูงสชุดของ output ทนมื่
ไดห้ ของแตบ่ละคบ่าแรงดศันนศันขึ้ ๆ เพมมื่อททา ใหห้ อศัตราสบ่วนเปป็ น 1 แลห้ วนทา คบ่านศันขึ้ ๆ มาททา การ plot เพมมื่ อดมู
คชุณลศักษณะของ output กศับ เวลา ซขมื่งเมมมื่อเปป็ นอศัตราสบ่วนเดนยวกศัน (1) แลห้ ว กราฟทนมื่ plot ไดห้ ในทาง
ทฤษฎนแลห้ วนศันควรจะเปป็
ขึ้ นเสห้ นเดนยวกศัน หรม อ ทศับกศันสนริท แตบ่ เนมมื่องจากอาจมนคบ่า error อยมูบ่บห้างอาจจะ
ททาใหห้ กราฟทศับกศันไมบ่สนริท แตบ่ถขงอยบ่างไร กป็นบ่าจะหบ่างกศันไมบ่มาก

ตนรนงททที่ 7 แสดงคว่ นททที่ไดด้ จรติง และ คว่ นททที่เททยบเปป็ น 1 ของคว่ น  ในเวลนตว่ นงๆ ทถกๆ 1 ms
1v 3v 6v 9v 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

DC motor Position Control using Microcontroller 48


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.0019408 0.908104 0.0058035 0.909013 0.0115509 0.910387 0.0172428 0.911743 0.02288 0.913085
11 ms 0.0019825 0.927616 0.0059273 0.928404 0.0117947 0.929602 0.0176027 0.930774 0.0233522 0.93193
12 ms 0.0020154 0.94301 0.0060248 0.943675 0.0119862 0.944695 0.0178851 0.945706 0.0237221 0.946691
13 ms 0.0020413 0.955128 0.0061015 0.955689 0.0121368 0.956565 0.0181066 0.957418 0.0240119 0.958257
14 ms 0.0020617 0.964673 0.0061619 0.965149 0.012255 0.965881 0.0182804 0.966608 0.0242389 0.967316
15 ms 0.0020777 0.97216 0.0062094 0.972589 0.012348 0.973211 0.0184167 0.973815 0.0244167 0.974411
16 ms 0.0020904 0.978102 0.0062468 0.978447 0.012421 0.978964 0.0185236 0.979468 0.0245559 0.979966
17 ms 0.0021004 0.982781 0.0062762 0.983052 0.0124783 0.98348 0.0186075 0.983904 0.024665 0.98432
18 ms 0.0021082 0.986431 0.0062994 0.986686 0.0125234 0.987035 0.0186734 0.987389 0.0247505 0.987732
19 ms 0.0021144 0.989332 0.0063176 0.989537 0.0125588 0.989825 0.018725 0.990117 0.0248174 0.990402
20 ms 0.0021193 0.991625 0.0063319 0.991777 0.0125866 0.992016 0.0187655 0.992259 0.0248698 0.992493
21 ms 0.0021231 0.993403 0.0063432 0.993547 0.0126085 0.993742 0.0187973 0.99394 0.0249109 0.994134
22 ms 0.0021262 0.994853 0.0063521 0.994941 0.0126257 0.995098 0.0188222 0.995257 0.0249431 0.995419
23 ms 0.0021285 0.995929 0.006359 0.996022 0.0126392 0.996162 0.0188418 0.996293 0.0249683 0.996424
24 ms 0.0021304 0.996818 0.0063645 0.996883 0.0126498 0.996997 0.0188572 0.997108 0.024988 0.99721
25 ms 0.0021319 0.99752 0.0063689 0.997572 0.0126581 0.997651 0.0188692 0.997742 0.0250035 0.997829
26 ms 0.0021331 0.998082 0.0063723 0.998105 0.0126647 0.998171 0.0188786 0.998239 0.0250156 0.998312
27 ms 0.002134 0.998503 0.0063749 0.998512 0.0126698 0.998573 0.018886 0.99863 0.0250251 0.998691
28 ms 0.0021347 0.99883 0.0063771 0.998857 0.0126739 0.998897 0.0188919 0.998942 0.0250325 0.998986
29 ms 0.0021353 0.999111 0.0063787 0.999107 0.012677 0.999141 0.0188964 0.99918 0.0250383 0.999218
30 ms 0.0021357 0.999298 0.00638 0.999311 0.0126795 0.999338 0.0189 0.999371 0.0250429 0.999401
31 ms 0.0021361 0.999485 0.0063811 0.999483 0.0126815 0.999496 0.0189028 0.999519 0.0250465 0.999545
32 ms 0.0021363 0.999579 0.0063819 0.999608 0.012683 0.999614 0.018905 0.999635 0.0250493 0.999657
33 ms 0.0021366 0.999719 0.0063825 0.999702 0.0126842 0.999708 0.0189067 0.999725 0.0250515 0.999745
34 ms 0.0021367 0.999766 0.006383 0.999781 0.0126852 0.999787 0.0189081 0.999799 0.0250532 0.999812
35 ms 0.0021369 0.99986 0.0063834 0.999843 0.0126859 0.999842 0.0189091 0.999852 0.0250545 0.999864
36 ms 0.002137 0.999906 0.0063837 0.99989 0.0126865 0.99989 0.01891 0.9999 0.0250556 0.999908
37 ms 0.0021371 0.999953 0.0063839 0.999922 0.012687 0.999929 0.0189106 0.999931 0.0250564 0.99994
38 ms 0.0021371 0.999953 0.0063841 0.999953 0.0126873 0.999953 0.0189111 0.999958 0.025057 0.999964
39 ms 0.0021372 1 0.0063843 0.999984 0.0126876 0.999976 0.0189116 0.999984 0.0250575 0.999984
40 ms 0.0021372 1 0.0063844 1 0.0126879 1 0.0189119 1 0.0250579 1

DC motor Position Control using Microcontroller 49


กรนฟแสดงควนมสคั มพคันธค ระหวว่ นง  กคับ t โดยเททยบอคัตรนสว่ วนเทว่ นกคับ 1
กรนฟททที่ไดด้จนกคว่ นททที่ทดลองจรติง

รม ปททที่ 37 กราฟทดีทไดด้จากคมาทดีททดลองจรริ ง

กรนฟททที่ไดด้จนกกนร simulate ในโปรแกรม scilab 2.7

DC motor Position Control using Microcontroller 50


รม ปททที่ 38 กราฟทดีทไดด้จากการ simulate ในโปรแกรม scilab 2.7

รม ปททที่ 39 กราฟแสดงความสปัมพปันธร์ระหวมาง  กปับ t เทดียบอปัตราสม วน 1

สรถ ป

DC motor Position Control using Microcontroller 51


จากกราฟแสดงความสปัมพปันธร์ระหวมาง  กปับ t ทดีทไดด้จากการปด้ อน input เขด้าสสูม transfer function แลด้ว
เทดียบอปัตราสม วนเปป็ น 1 แลด้วจะเหป็นไดด้วมาคมา time constant อยสูทม ดีทประมาณ 4 ms ซซท งมดีคมาใกลด้เคดียงกปับ
กราฟทดีทไดด้จากการทดลองจรริ ง แสดงวมาคมาทดีทไดด้มดีความสอดคลด้องกปัน

บทททที่ 6 กนรทนนงนนของโปรแกรมควบคถม
6.1 วติธทกนรควบคถมใหด้ เขด้ นสมว่ ตนนแหนว่ ง
a. เปด้ าหมายหลปักในการดทาเนรินการครืออะไร
 วปัตถจุประสงคร์หลปักของโครงงานนดีด ครือ การควบคจุมการหมจุนของ motor ใหด้เขด้าสสูม
ตทาแหนมงทดีทตอด้ งการ (position) ซซท ง ตด้องการความแมมนยทา และ ความเรดี ยบในการ
เขด้าสสูม ตาท แหนมง ซซทง ความเรป็ ว ในการเขด้าสสูม ตาท แหนมงนปัดนควรจะมดีความรวดเรป็ วพอ
สมควร
b. กระบวนวริธดี และ แนวคริด ในการควบคจุม ททาไมตด้องใชด้วริธดีการเหลมานดีด
 ในการเขด้าสสูตาท แหนมงใหด้เรป็ ว แมมนยทา และ เรดี ยบทดีทสจุดนปัดน แนมนอนวมาจะตด้อง
ประกอบดด้วยองคร์ประกอบทดีทเหมาะสมดปังนดีด ครือ
o ความเรป็ วเรริท มตด้นทดีทเหมาะสมเพรืทอใหด้การเรริท มหมจุนใชด้เวลานด้อยทดีทสจุด
o ความเรป็ วปลายกมอนการหยจุดเพรืทอใหด้การเขด้าสสูม ตาท แหนมงมดีความนริท ง
ซซทงวริธดีในการควบคจุมนปัดน จะเปป็ นแบบความเรป็ วในการหมจุนสามารถเปลดีทยนแปลงไดด้ขดซ นกปับระยะ
ทางของตทาแหนมงเปด้ าหมาย ซซทงแสดงดปังรสู ปทดีท 1 และ รสู ปทดีท 2

DC motor Position Control using Microcontroller 52


รม ปททที่ 40 แสดงการปรปับเปลดีทยนวามเรป็ วโดยเรริท มจากคมาความเรป็ วตททา

จากรสู ปทดีท 40 เปป็ นการเรริท มหมจุนจากคมาความเรป็ วตททา และ ททาการปรปับความเรป็ วสสู งขซด นหากระยะทาง
ยปังไกลอยสูม และ ปรปับลงอดีกครปัดงเมรืทอเขด้าใกลด้เปด้ าหมาย

รม ปททที่ 41 แสดงการปรปับเปลดีทยนวามเรป็ วโดยเรริท มจากคมาความเรป็ วสสู ง


จากรสู ปทดีท 41 เปป็ นการเรริท มหมจุนจากคมาความเรป็ วสสู ง (ระยะไกล)และ ททาการปรปับความเรป็ วลงเรรืท อย ๆ
เมรืทอเขด้าใกลด้เปด้ าหมาย
Algorithm ของกนรควบใหด้ เขด้ นสมว่ ตนนแหนว่ ง
 Algorithm ในการเขด้าสสูม ตาท แหนมงอยมางแมมนยทา และ เรดี ยบทดีทสจุดเทมาทดีทจะททาไดด้
 คมาจากการทดลอง ระดปับคมาแรงดปันตมาง ๆ ในการเขด้าสสูม ตาท แหนมงจากระยะตมาง ๆ กปัน
จากการดทาเนรินการทดลองจรริ งนปัดนพบวมาคมาความเรป็ วแตมละคมาจะมดีความแมมนนทาในการเขด้าสสูม
ตทาแหนม งทดีทตมางกปัน และ ความเรป็ วในการตอบสนองตมางกปันดด้วย ซซท งในโดรงงานนดีด ใชด้การควบคจุม
แบบการปรปับเปลดีทยนวามเรป็ วโดยเรริท มจากคมาความเรป็ วสสู งไปสสูม คมาความเรป็ วตททา ดปังแสดงในรสู ปทดีท 2.
ซซท งในการเปลดีทยนความเรป็ วนปัดนจะเปป็ นการเปลดีทยนคมาแรงดปันทดีทปด้อนเขด้าสสูม motor ซซท ง จะใชด้หลปักการ
pulse width modulate ในการควบคจุม ซซท งคมาความเรป็ วในการควบคจุมจรริ งนปัดนไมมไดด้เปลดีทยนแปลง
อยสูใม นรสู ปของเสด้นตรงตามรสู ปทดีท 2. แตมจะเปป็ นการควบคจุมความเรป็ วแบบขปัดนบปันได โดยทดีทระยะทาง
ชม วงหนซท ง ๆ จะมดีการควบคจุมความเรป็ วเปป็ นคมา ๆ หนซท ง และ มดีการปรปับเปลดีทยนความเรป็ วตามชม วง
ของระยะทางในการเขด้าสสูม เปด้ าหมายดปังรสู ปทดีท 42

DC motor Position Control using Microcontroller 53


ในการดทาเนริ นการควบคจุมจรริ งนปัดน ไดด้ทาท การแบมง case ความเรป็ วออกเปป็ นหลาย ๆ case ซซท ง
แตมละ case นปัดนจะมดีการสรด้าง PWM ทดีททาท ใหด้จมายแรงดปันตมางกปัน ททาใหด้มดีความเรป็ วตมางกปันดด้วย ซซท ง
วริธดีการนปัดนจะไดด้กลมาวถซงตมอไปในสม วนของ Algorithm ของ code program : Algorithm code –
Power CPU

รม ปททที่ 42 แสดงการปรปับเปลดีทยนวามเรป็ วทดีทดาท เนริ นการจรริ งในรสู ปแบบของลทาดปับขปัดน


6.2 กนรควบคถมแบบปด้ อนกลคับทคัขั้งควนมเรป็ว และ ตนนแหนว่ ง

r(s) E(s)
G(s) (s) 1/s
c(s)
R(s) C(s)
+
-

ในการควบคจุมของโครงงานนดีด นด นปั วปัตถจุประสงคร์หลปัก ครือ การควบคจุมการหมจุนของมอเตอรร์


ใหด้เขด้าสสูม ตาท แหนมงทดีทตอด้ งการอยมางแมมนยทา และ มดีความนริท งในการเขด้าสสูม ตาท แหนมง ซซท ง การควบคจุมการเขด้า
สสูม ตาท แหนมงนปัดนททาไดด้โดยการททาการปด้ อนกลปับคมาตทาแหนมงในการเคลรืทอนทดีทมาเทดียบกปับคมา input ซซท งทาง
อจุดมคตริ เมรืทอ คมาปด้ อนกลปับมดีคมาเทมากปับคมา input แลด้ว การหมจุนของมอเตอรร์ จะหยจุด และ คมา error ใน
การหมจุนจะมดีคมาเทมากปับ 0 แตมในการควบคจุมจรริ งนปัดนไมมเปป็ นเชมนนปัดน เนรืท องจากในการหมจุน และ การ
หยจุดของมอเตอรร์ นด นปั จะมดีคมาความเฉรืท อยในการหมจุนอยสูดม วด้ ยททาใหด้การเคลรืทอนทดีทเขด้าสสูม ตาท แหนม งในความ
เปป็ นจรริ งนปัดนจะมดีคมาความคลาดเคลรืทอนสสูง ดปังนปัดนในการควบคจุมเพรืทอใหด้มดีการเขด้าสสูม ตาท แหนมงทดีทแมมนยทาใน
การดทาเนริ นการจรริ งจะตด้องททาการปด้ อนกลปับความเรป็ วดด้วยเพรืทอควบคจุมความเรป็ วในการหมจุนของแตมละ
ชมวงของระยะทาง ซซทง จะมดีการพริจารณาตามระยะทางโดยหากระยะทางในการเขด้าถซงมดีค มามากกป็จะใชด้
ความเรป็ วสสูง และ ลดลง เมรืทอเขด้าใกลด้เปด้ าหมายมากขซดน

DC motor Position Control using Microcontroller 54


6.3 Flow Chart ของ โปรแกรมควบคถม
ในโครงงานนดีด มดีหลปักการททางานของโปรแกรมควบคจุมอยสูม 3 สม วน ดปังนดีด
1. Flow chart Main CPU

รรปทท43
ท แสดงFlow chart Main CPU

DC motor Position Control using Microcontroller 55


 จะททาการรปับคมา จทานวน pulse และ ทริศทาง จากคอมพริวเตอรร์ ทางพอรร์ ตอนจุกรมตมอเมรืทอมดี
ขด้อมสูลมาทางพอรร์ตอนจุกรม
 จะททาการเชป็ครปับคมา จทานวน pulse ทดีทไดด้จากการ Sampling แบบ วนลสูป
 ตรวจสอบ Error ของจทานวน pulse วมาอยสูใม นกรณดี ใด กป็จะสม งใหด้สมวนขปับมอเตอรร์ ขปับมอเตอรร์
ตามกรณดี Error ทดีทไดด้
2. Flow chart Sampling CPU

DC motor Position Control using Microcontroller 56


รรปทท44
ท Flow chart Sampling CPU
* ททาการรปับคมาจาก Encoder ทจุกๆ 20 ไมโครวรินาทดี
3. Flow chart Power CPU

DC motor Position Control using Microcontroller 57


รรปทท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

รม ปททที่ 10a

รม ปททที่ 10b

รม ปททที่ 10c
รม ปททที่ 46 แสดงสปัญญาณ PWM ซซท งแสดงคมา duty cycles ทดีทตมางๆกปัน
4. Flow Chart การควบคจุมทริศทาง

DC motor Position Control using Microcontroller 58


รม ปททที่ 47 แสดง Flow Chart การควบคจุมทริศทาง

5. Flow Chart การควบคจุมตทาแหนมง

DC motor Position Control using Microcontroller 59


รม ปททที่ 48 แสดง Flow Chart การควบคจุมตทาแหนมง

6. Flow Chart การควบคจุมทปัดงโครงงาน

DC motor Position Control using Microcontroller 60


รม ปททที่ 49 แสดง Flow Chart การควบคจุมทปัดงโครงงาน

บทททที่ 7 กนรทดสอบและบทสรถ ป
กนรทดสอบควนมคลนดเคลรอที่ นในกนรเคลรอที่ นททที่

DC motor Position Control using Microcontroller 61


จากทดีทเราทราบวมาโครงงานนดีด ทาท การควบคจุมตทาแหนมง และ ความเรป็ วของมอเตอรร์ โดยมดี
parameter ควบคจุมดปังนดีด
 Motor
o แรงดปันสสูงสจุ ด 14.8 v
o กทาลปังสสูงสจุ ด 25.9 w
o Encoder 200 pulse / รอบ
o เรริท มหมจุนทดีทแรงดปัน 1 v.

 power supply
o ปจุม มปรปับแรงดปัน fixed +15 v,+12 v, +5 v , -15 v, -12 v, 0 v
o ปจุม มปรปับแรงดปันสามารถปรปับแรงดปันไดด้ในชมวง 0 – 30 v

กนรทดสอบ
ในการทดสอบในสม วนของความคลาดเคลรืทอนในการเคลรืทอนทดีทนด ปันจะใชด้หลปักการในการสจุม ม
ทดสอบเปป็ นกรณดี ๆ ไป โดยจะเปรดี ยบเทดียบคมาทดีทไดด้จรริ ง กปับ ตทาแหนม งทดีทตอด้ งการทดีทปด้อนเขด้ามา ซซท งใน
โครงงานนดีด encoder ทดีทตมออยสูมกบปั motor นปัดนมดีความละเอดี ยด 200 pulse / รอบ และเปป็ นแบบ 2 phase
ซซท งจะททาใหด้สามารถปรปับความละเอดียดไดด้สสูงสจุ ด 4 เทมาครือ 800 pulse / รอบ และ สามารถตรวจสอบ
ทริศทางการหมจุนไดด้ดวด้ ย แตม เนรืท องจากความละเอดียด 800 pulse / รอบ มดีความละเอดียดสสู งเกรินไป ซซท ง
อาจจะททาใหด้มดีความคลาดเคลรืทอนสสูง และ การททางานอาจจะไมมทนปั ในเวลาเนรืท องจากมดีความเรป็ วสสู งมาก
จซงเลรือกใชด้ความละเอดียดทดีท 400 pulse / รอบ
การทดสอบนปัดนจะททาการทดลองการหมจุนในแตมละทริศทาง และ แตมละกรณดี ของ pulse เปด้ า
หมายทดีทปด้อนตมาง ๆ แยกกปัน ทปัดงนดีด เนรืท องจากความเรป็ วของทริศทางตามเขป็มนาฬริกา เรป็ วกวมา ทริศทางทวน
เขป็มนาฬริกาเลป็กนด้อย (จากการทดลอง) ททาใหด้คมา ความเรป็ วในการเขด้าถซงตทาแหนม ง และ คมา error ของ 2
ทริศทางในแตมละ case ของแรงดปันเดดียวกปัน มดีคมาตมางกปัน

ตนรนงททที่ 8 ผลกนรทดสอบ
Input Output
จจจนวน หมมนตจมเขขม หมมนทวนเขขม
pulse ครรงร ททท ครรงร ททท ครรงร ททท Pulse Error ครรงร ททท ครรงร ททท ครรงร ททท Pulse Error
1 2 3 เฉลทย
ท (pulse) 1 2 3 เฉลทย
ท (pulse)
1 1 1 1 1.00 0.00 1 1 1 1.00 0.00
5 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.00
20 19 20 18 19.00 1.00 20 19 20 19.67 0.33
30 32 30 31 31.00 -1.00 30 29 30 29.67 0.33
40 39 38 40 39.00 1.00 40 39 39 39.33 0.67
50 49 48 50 49.00 1.00 48 49 49 48.67 1.33

DC motor Position Control using Microcontroller 62


60 60 60 60 60.00 0.00 60 60 60 60.00 0.00
80 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.67
120 119 118 120 119.00 1.00 119 119 120 119.33 0.67
140 139 140 138 139.00 1.00 140 139 140 139.67 0.33
160 159 160 158 159.00 1.00 160 158 160 159.33 0.67
180 182 180 180 180.67 -0.67 182 182 180 181.33 -1.33
200 196 198 198 197.33 2.67 200 202 200 200.67 -0.67
220 222 222 220 221.33 -1.33 218 219 220 219.00 1.00
240 242 240 242 241.33 -1.33 244 240 242 242.00 -2.00
260 256 258 259 257.67 2.33 264 262 262 262.67 -2.67
280 284 282 280 282.00 -2.00 282 280 281 281.00 -1.00
300 306 306 304 305.33 -5.33 301 300 302 301.00 -1.00
320 324 322 322 322.67 -2.67 320 319 320 319.67 0.33
340 340 342 340 340.67 -0.67 339 339 340 339.33 0.67
360 366 362 362 363.33 -3.33 366 363 364 364.33 -4.33
380 386 386 386 386.00 -6.00 386 386 386 386.00 -6.00
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 นศันขึ้ การหมชุนในทริศทางทวนเขป็มนาฬริกาจะมนความแมบ่นยทา สมูงกวบ่า คมอ คบ่า

DC motor Position Control using Microcontroller 63


error อยมูบ่ในชบ่วงไมบ่เกรินบวกลบ 2.7 pulse และ ในชบ่วง 280 – 400 pulse นศันทศั
ขึ้ งสองทริ
ขึ้ ศทางในการ
หมชุนมนคบ่า error เฉลนมื่ยใกลห้ เคนยงกศันคมอ 6.00 pulse

สรถ ปผลกนรทดสอบ
จากผลการทดลองเหป็ นไดด้วมาทปัดงการหมจุนทวนเขป็มนาฬริ กา และ ตามเขป็มนาฬริ กานปัด นในชม วง
ของ 1 – 180 pulse แรกนปัดนจะมดีความแมมนยทาสสู ง สม วนคมา input ทดีทสสูงกวมานปัดนจะเรริท มมดีคมา error สสู งขซดน
ทปัดงนดีด เนรืท องจากกระบวนการควบคจุมความเรป็ ว เมรืทอระยะทางยริ ทงไกลจะมดีการใชด้ความเรป็ วสสู งในการเขด้า
ถซงททาใหด้เกริด error เนรืท องจากแรงเฉรืท อยในการเคลรืทอนทดีทบาด้ ง ดปังนปัด นระยะทางตมาง ๆ จะมดีความเรป็ วชมวง
หนซท งทดีทเหมาะสมในการเขด้าถซงโดยระยะทางทดีทไกล ๆ จะตด้องมดีการปรปับลดความเรป็ วในชมวงสจุ ดทด้ายใหด้
เรป็ วกวมาการเคลรืทอนทดีทระยะทางใกลด้ ๆ เพรืทอใหด้การเขด้าถซงตทาแหนมงมดีความแมมน

แนวคติดในกนรดนนเนตินงนน และ ปรคับปรถ งตว่ อไป


จากการททา โครงงานการควบคจุ มตทา แหนม ง และ ความเรป็ วของดดี ซดีมอเตอรร์ โดยใชด้ไมโคร
คอนโทรลเลอรร์ 8051 สามารถสรจุ ปและเสนอแนะแนวทางในการปรปับปรจุ งใหด้ดดีขดซนดปังตมอไปนดีด
 ดด้าน Hardware
o ในโครงงานมดีการใชด้ไมโครคอนโทรลเลอรร์ 3 ตปัวในการททางานในแตมละสม วนแยก
กปัน ซซท ง ททาใหด้การททา งานของแตมละสม วนรวดเรป็ ว และเปป็ นอริ สระตมอกปัน แตมกป็ทาท ใหด้
เกริดปปัญหาเรรืท องของความไมมพอเพดียงของพอรร์ ตใชด้งานไดด้หากตด้องการใหด้การสม งคมา
ตทาแหนม งและทริศทางมดีความละเอดียดสสู งขซด น แตมกป็วามารถแกด้ไขไดด้โดยการแกด้ไขใน
สม วนของ Software ในการรปับสม งคมาแทนไดด้
o การกทา หนดจจุ ดเรริท มตด้นของการเคลรืท อนทดีท ยงปั ไมม มดีจจุดเรริท มตด้นทดีท แนม นอนเพราะใชด้มรือ
เลรืทอนมายปังจจุดเรริท มตด้นเอง ซซท งอาจแกด้ไขโดยเพริทมวงจร Hardware ใหด้มอเตอรร์ หมจุนไป
ยปังจจุดเรริท มตด้นทจุกครปัดงทดีทเรริท มการควบคจุม
 ดด้าน Software
o ในสม วนของ software นปัดนพบวมา สามารถททา งานไดด้ต ามทดีท ต ด้อ งการโดยสามารถ
ททาการควบคจุมการหมจุน การหยจุดของมอเตอรร์ ไดด้แมมนยทา พอสมควร ทปัดงนดีด ในสม วน
ของ software ในการ sampling ตทาแหนมงการหมจุนของมอเตอรร์ ในสม วนของการอมาน
คม าจาก Encoder ซซท งมดี ข นาด 200 pulse / รอบ แบบ 2 phase นปัดน สามารถททา ใหด้มดี

DC motor Position Control using Microcontroller 64


ความละเอดียดไดด้สสูงสจุ ดทดีท 800 pulse / รอบ โดยการโปรแกรมใหด้อมานคมาใน 1 ชม วง
คาบเปป็ น 4 step ไดด้ ซซทงจะททาใหด้ไดด้ตาท แหนมงทดีทมดีความละเอดียดสสู งขซดน

บรรณนนถกรม
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 65


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 66


DC motor Position Control using Microcontroller 67
ภาคผนวก ข
ไมโครคอนโทรลเลอรร์ ตระกสูล 8051

Microprocessor 8051
ในไมโครคอนโทรลเลอรร์เบอรร์ 8051 ประกอบดด้วยพอรร์ ตอรินพจุตเอาทร์พตจุ แบบ 2 ทริศทาง
(Bidirectional) จทานวน 4 พอรร์ต แตมละพอรร์ ตมดีอจุปกรณร์แลทซร์ขอด้ มสูล และเอาทร์พตจุ ไดรเวอรร์ ประกอบ
อยสูทม างดด้านเอาทร์พตจุ และทางดด้านอรินพจุตจะมดีบฟปั เฟอรร์ (พอรร์ ตทปัดง 4 เปป็ นรดี จดีสเตอรร์ พริเศษชรืทอ P0, P1, P2

DC motor Position Control using Microcontroller 8051 68


และ 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 ซซท งสามารถรปับและสม งขด้อมสูลพรด้อมกปันไดด้
6 พอรร์ตขนานสทาหรปับตริดตมอกปับอจุปกรณร์ภายนอกจทานวน 4 พอรร์ ตๆ ละ 8 บริต
7 วงจรผลริตสปัญญาณนาฬริกาภายใน

ตปัวตปัดงเวลาและตปัวนปับ (Timer/Counter)
ไมโครคอนโทรลเลอรร์เบอรร์ 8051 ประกอบดด้วยรดี จดีสเตอรร์ ตปัวตปัดงเวลา/ตปัวนปับ ขนาด 16 บริต
จทานวน 2 ชจุด ครือ Timer0 และ Timer1 โดย Timer ทปัดงหมดสามารถกทาหนดใหด้ทาท งานในลปักษณะ
ของตปัวนปับหรรื อตปัวจปับเวลากป็ไดด้
การททางานในโหมดของตปัวตปัดงเวลา คมาของรดี จดีสเตอรร์ จะเพริมท ขซดนทจุกๆ แมชชดีนไซเคริลโดย 1
แมชชดีนไซเคริล ประกอบดด้วยสปัญญาณนาฬริกา 12 ลสูก ดปังนปัดนอปัตราการจปับเวลาจะเปป็ น 1/12 เทมาของ
ความถดีทสญ ปั ญาณนาฬริกา ของระบบ คมาสสูงสจุ ดทดีทตด งปั ไดด้ครือ 2 ยกกทาลปัง 16

DC motor Position Control using Microcontroller 8051 69


การททางานในโหมดการนปับ คมาของการนปับจะเพริทมขซดน เมรืทอสปัญญาณเขด้ามาทดีทขา 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 ของระบบ ไดด้ ภายใน 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
หรรื อขาสปัญญาณสทาหรปับการหยจุดหรรื อททางานของวงจรนปับ
การททางานเปป็ นตปัวจปับเวลาตด้องมดีการกทาหนดคมาใหด้อยสูใม นสภาวะดปังตารางกมอน

กนรกนนหนดคว่ น bit Register ควนมหมนย


C/T = 0 TMOD กทาหนดใหด้เปป็ นการจปับเวลา
TR1 หรรื อ TR0 = 1 TCON กทาหนดสภาวะใหด้มดีการททางาน

DC motor Position Control using Microcontroller 8051 70


GATE = 0 หรรื อระดปับขาสปัญญาณทดีท
ขา INT0 หรรื อ INT1 เปป็ นสภาวะ logic TMOD กทาหนดสภาวะควบคจุมการททางาน
สสู ง

8051 Timer/Counter
TMOD and TCON Registers
Timer/Counter 0Timer/Counter 1C/T#M1M0GATE#C/T#M1M0GATE#TMOD
Timer/Counter 0Timer/Counter 1TF1TR1TF0TR0IE1IT1IE0IT0TCON

Baud Rate
Baud Rate = 2SMOD x f
384 x (256 – TH1)

กนร Initial คว่น Baud rate


Set baud rate to 9600 for 11.0592 Crystal
mov TMOD, #20h ; set timer 1 for auto reload
mov TCON, #41h ; run counter 1 edge trig
mov TH1, #0FDh ; 9600 baud
mov SCON, #50h ; 8-bit data mode 1
Sending and Receiving Subroutines
sndchr: getchr:
clr TI jnb RI, getchr
mov SBUF, A mov A, SBUF
DC motor Position Control using Microcontroller 8051 71
txloop: jnb TI, txloop clr RI
ret 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 จะ
ถสูกกทาหนดใหด้ทาท งานในแบบ ของตปัวจปับเวลาภายใตด้การควบคจุมของ 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 ถสูกนทาไปใสม (Capture) ใหด้กบปั register
RCAP2L และ RCAP2H ซซทงเปป็ น register หนด้าทดีทพริเศษ หรรื อ SFR ทดีทมดีใน Microcontroller เบอรร์ 8052
DC motor Position Control using Microcontroller 8051 72
เทมานปัดน นอกจากนดีดจะมดีผลททาใหด้ 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 ซซท งมดีการเตรดี ยมคมาลมวงหนด้าแลด้วโดยอปัตโนมปัตริ

ภาคผนวก ค
การสรืท อสารทางพอรร์ตอนจุกรมแบบ RS-232 กปับ ไมโครคอนโทรลเลอรร์ ตระกสูล 8051

DC motor Position Control using Microcontroller 8051 73


SERIAL PORT COMMUNICATION
การสรืท อสารขด้อมสูลอนจุกรมเปป็ นการรปับหรรื อสม งขด้อมสูลในลปักษณะของบริตหรรื อกลจุมมของบริต
คราวละหนซทงบริตเปป็ นลทาดปับเรรืท อยไปจนสริด นสจุ ด
จปังหวะเวลาของการสรืท อสารขด้อมสูลอนจุกรม
โดยทปัวท ไปมปักจะระบจุกนปั ในหนมวยของจทานวนบริตขด้อมสูลภายในเวลาหนซท งวรินาทดี เรดี ยกวมา อปัตรา
บอด ตามคมามาตรฐานเหลมานดีด ไดด้แกม 110, 150, 300, 1200, 2400, 4800, และ 9600 จากรสู ปทดีท 20 แสดง
ใหด้เหป็นลปักษณะของรสู ปแบบสปัญญาณขด้อมสูลอนจุกรมทดีทปรากฏในสายสม งสปัญญาณ ขด้อมสูลทปัดง 8 บริตนดีด
หากวมาถสูกสม งออกมาดด้วยอปัตรา 2400 บอดจะใชด้เวลาในการสม งขด้อมสูลหนซท งบริตมดีคมาเทมากปับ 1/2400 หรรื อ
416 ไมโครวรินาทดี และเวลาในการสม งขด้อมสูลทปัดง 8 บริตมดีคมาเทมากปับ 8x416 หรรื อ 3,328 ไมโครวรินาทดี

รม ปททที่ 50 รสู ปแบบสปัญญาณไฟฟด้ าของขด้อมสูล ซซท งเปป็ นการสม งขด้อมสูลแบบอนจุกรมดด้วยอปัตราเรป็ ว 2400 บริต/
วรินาทดี (สปังเกตวมาจะเรริท มสม งจากบริต D0 ซซท งเปป็ นบริตนปัยสทาคปัญตททาออกมากมอนเปป็ นลทาดปับแรก)

รสู ปแบบของขด้อมสูลอนจุกรม
วริธดีการทดีทจะททาใหด้ขอด้ มสูลสรืท อสารอนจุกรมมดีความถสูกตด้องมากยริงท ขซดน จะใชด้การเพริทมเตริมบริตขด้อมสูลบาง
อยมางรม วมไปกปับการสม งขด้อมสูลจรริ ง ไดด้แกม
DC motor Position Control using Microcontroller 8051 74
1. บริตเรริท มตด้น (Start Bit)
มดีหนด้าทดีทสาท หรปับการบมงบอกใหด้วงจรฮารร์ ดแวรร์ ทางดด้านรปับทราบถซง ตทาแหนมงจจุดเรริท มตด้นของบริต
ขด้อมสูลกลจุมมใหมม เพรืทอทดีทจะททาการปรปับจปังหวะของสปัญญาณการรปับขด้อมสูลใหด้ตรงกปัน ดปังนปัดนบริตเรริท มตด้นนดีด
จซงจะถสูกเพริทมเขด้าไปกมอนระดปับลอจริกของสภาวะของสายสรืท อสาร ขณะเมรืทอไมมมดีการสม งขด้อมสูล
2. บริตแสดงภาวะความเปป็ นเลขคสูมหรรื อเลขคดีท (Parity Bit)
มดีหนด้าทดีทเพรืทอตรวจสอบความถสูกตด้องของขด้อมสูล โดยทปัวท ไปมปักเรดี ยกวมา บริตพารริ ตด ดีและจะนทาไป
แทรกตมอทด้ายบริตขด้อมสูล คมาของบริตนดีด ขด ซนอยสูกม บปั จทานวนคมาของบริตขด้อมสูลทดีทเปป็ น 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 ททาหนด้าทดีทเกป็บขด้อมสูลทดีทจะสม งออกการใชด้
คทาสปังท เขดียนหรรื อโอนยด้ายขด้อมสูลมายปังรดี จริสเตอรร์ นดดี จะเปป็ นการสม งขด้อมสูลนปัดนออกไปยปังพอรร์ ตอนจุกรมทาง
ขาสปัญญาณ TxD โดยอปัตโนมปัตริ สม วนวงจรดด้านตปัวรปับ (Reciever) ประกอบดด้วยรดี จริสเตอรร์ SBUF เชมน
เดดียวกปัน แตมทาท หนด้าทดีทเกป็บขด้อมสูลทดีทนาท มาจากสม วนวงจรเลรืทอนบริตหรรื อชริพรดี จริสเตอรร์ (Shift Register) ของ
วงจรจปัดการขด้อมสูลอนจุกรมภายใน สปัญญาณขด้อมสูลอนจุกรมทดีทรปับเขด้าจะผมานมาทางขาสปัญญาณ RxD

DC motor Position Control using Microcontroller 8051 75


รม ปททที่ 52 แผนภาพแสดงการททางานของวงจรสม วนการรปับและสม งขด้อมสูลอนจุกรมของ 8051
พอรร์ตอนจุกรมของ 8051 สามารถโปรแกรมใหด้ทาท หนด้าทดีทในรสู ปแบบตมางๆ กปันสดีท แบบ โดยการ
กทาหนดคมาบริต SM0 กปับ SM1 ซซทงอยสูภม ายในรดี จริสเตอรร์ ควบคจุมและบอกสถานะ SCON

ซซทงโหมดการททางานทปัดง 4 แบบของพอรร์ ตอนจุกรม มดีดงปั นดีด


โหมดการททางาน คทาอธริบาย
โหมด 0 เปป็ นการขยายพอรร์ตอรินพจุตเอาตร์พตจุ โดยททางานรม วมกปับไอซดี ชริพรดี จริสเตอรร์
ภายนอกประเภททดีทดีแอลหรรื อซดี มอส
โหมด 1 ใชด้สาท หรปับการเชรืทอมตมออนจุกรมแบบ UART (Universal Asynchronous receiver/
Transmitter) โดยการใชด้กลจุมมขด้อมสูลแบบ 10 บริตและสามารถเปลดีทยนแปลงอปัตรา
ความเรป็วในการสม งขด้อมสูลไดด้
โหมด 2 ใชด้สาท หรปับการเชรืทอมตมออนจุกรมแบบ UART โดยการใชด้กลจุมมขด้อมสูลแบบ 11 บริต
และกทาหนดอปัตราความเรป็ วในการสม งขด้อมสูลคงทดีท
โหมด 3 ใชด้สาท หรปับการเชรืทอมตมออนจุกรมแบบ UART โดยการใชด้กลจุมมขด้อมสูลแบบ 11 บริต
และสามารถเปลดีทยนแปลงอปัตราความเรป็ วในการสม งขด้อมสูลไดด้

กระบวนการรปับและสม งขด้อมสูลอนจุกรมของ 8051


การสม งขด้อมสูลออกทางพอรร์ตอนจุกรมของ 8051 จะเรริท มตด้นขซดน ภายหลปังเมรืทอมดีการเขดียนขด้อมสูล
ลงในรดี จริสเตอรร์ SBUF ขด้อมสูลนดีด จะถสูกจปัดการดด้วยวริธดีการทางดด้านฮารร์ ดแวรร์ ในการเลรืทอนบริตและสม ง

DC motor Position Control using Microcontroller 8051 76


สปัญญาณออกไปภายนอกโดยอปัตโนมปัตริ เมรืทอขด้อมสูลเหลมานดีด ไดด้สมงออกครบถด้วนแลด้ว จซงจะททาการ
กทาหนดคมาของแฟลป็ก TI ใหด้เปป็ น 1 เพรืทอแจด้งใหด้ทราบวมาขณะนดีด รดีจริสเตอรร์ SBUF วมาง และพรด้อมทดีทจะสม ง
ขด้อมสูลไบตร์ตมอไปแลด้ว ในกรณดี ทดีทผใสูด้ ชด้เขดียนขด้อมสูลใหมมลงในรดี จริสเตอรร์ SBUF โดยไมมรอใหด้แฟลป็ก TI มดี
คมาเปป็ น 1 กมอนจะมดีผลททาใหด้ขอด้ มสูลทดีทสมงออกไปผริดพลาดไดด้
สทาหรปับการรปับขด้อมสูลจากพอรร์ตอนจุกรมจะตด้องเรริท มตด้นโดยการกทาหนดคมาบริต REN ใหด้มดีคมา
เปป็ น 1 กมอน หลปังจากนปัดนเมรืทอมดีบริตของขด้อมสูลถสูกสม งเขด้ามาจากภายนอกระบบฮารร์ ดแวรร์ ของ 8051 จซงจะ
ททาการเลรืทอนบริตเหลมานดีด เขด้ามาโดยอปัตโนมปัตริ และ เมรืทอบริตสจุ ดทด้ายถสูกเลรืทอนเขด้ามาเรดี ยบรด้อยแลด้ว ขด้อมสูล
นปัดนจะถสูกยด้ายมาเกป็บไวด้ยงปั รดี จริสเตอรร์ SBUF และททาการกทาหนดใหด้แฟลป็ก RI ใหด้มดีคมาเปป็ น 1 ซดีท งมดีผล
ททาใหด้เกริดการอรินเตอรร์รปัปตร์โปรแกรมขซดน

การเชรืทอมตมอแบบมาตรฐาน RS-232C
ในการเชรืทอมตมอแบบอนจุกรมเขด้ากปับอจุปกรณร์คอมพริวเตอรร์ ตมางๆ เชมน คอมพริวเตอรร์ เทเลกซร์
หรรื อ โทรพริมพร์ เปป็ นตด้น มปักจะกทาหนดใชด้การเชรืทอมตมอตามมาตรฐาน RS-232C ทปัดงนดีด เพรืทอใหด้มดีการใชด้
งานเสด้นสปัญญาณหรรื อรสู ปแบบของตปัวเชรืทอมตมอทดีทสอดคลด้องกปัน จะไดด้ลดปปั ญหาการเขด้ากปันไมมไดด้
ระหวมางสปัญญาณของอจุปกรณร์ทดีทมาเชรืทอมตมอกปันทปัดงสองดด้านใหด้นอด้ ยลง เนรืท องจากระดปับโวลเตจทดีทใชด้
และการแทนความหมายของระดปับลอจริกตามาตรฐานนดีด แตกตมางไปจากทดีทใชด้งานกปันในระบบดริจริตอล
ทปัวท ไปโดยระดปับสปัญญาณของ RS-232C เปป็ นแบบไบโพลารร์ ระดปับโวลเตจทางดด้านลบชมวง -3V ถซง
-20V แทนคมาลอจริก 1 และโวลเตจทางดด้านบวกชมวง +3V ถซง +20V แทนคมาลอจริก 0 ดปังนปัดนจะเหป็นไดด้
วมามดีความจทาเปป็ นตด้องเพริมท เตริมอจุปกรณร์หรรื อวงจรพริเศษเขด้าไป เพรืทอเปลดีทยนระดปับโวลเตจจากระบบ 0V
ถซง +5V จากขาสปัญญาณของ 8051 เปป็ นระดปับโวลเตจทดีทสสูงกวมาคมา +3.0V หรรื อตททากวมา -3.0V

รม ปททที่ 53 ไอซดีเบอรร์ MAX232 ซซทงเปป็ นวงจรเชรืทอมตมอแบบ RS-232C โดยการใชด้ไฟเลดีดยง +5 เพดียงชจุด


เดดียว
วงจรการเชรืทอมตมอระหวมาง 8051 กปับ PC ทาง Serial Port
การตมอสปัญญาณ Serial Port

DC motor Position Control using Microcontroller 8051 77


(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 2
Receive Data 2 3 Transmit Data
Transmit Data 3 2 Receive Data
Data Terminal Ready 4 6+1 Data Set Ready + Carrier Detect
System Ground 5 5 System Ground
Data Set Ready + Carrier Detect 6+1 4 Data Terminal Ready
Request to Send 7 8 Clear to Send
Clear to Send 8 7 Request to Send

รม ปททที่ 54 แสดงวงจรภายใน Max232

DC motor Position Control using Microcontroller 8051 78


การตมอสายอรินเตอรร์เฟส RS232 ระหวมางเครรืท องคอมพริวเตอรร์ กปับ MAX232

รม ปททที่ 55 การเชรืทอมตมอขาสปัญญาณ

ภาคผนวก ง
โปรแกรมการททางานของ สม วน Main CPU , Drive Motor และ Sampling

DC motor Position Control using Microcontroller 8051 79


//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();นนสคั ญญนณ Encoder ใน Main CPU
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-clockwise


unsigned 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 interrupt
while(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 interrupt
EA = 1; // enable interrupt
TMOD=0x20; //set timer0 mode 1 (ignored upper 4 bits of TMOD)
//initial the serial port
SCON=0x50; // set for receive
TH1=0xFD;
TL1=0xFD;
TR1=1;
P1 = 0x00;
P0 = 0xFF;
P2 = 0xFF;
buf_step DC motor Position Control using Microcontroller
= 0xFF; 8051 80
}
//Function receive
void getCharacter (void)
{
duty_time = 0x0000;
while (RI!=1);
RI=0; // it receive interrupt
// move data to variable
chr = SBUF;
if(chr != 0xFF)
DPL = chr; // ********* position from Computer
if(chr != 0x00)
DPL = chr;
while (RI!=1);
RI=0; // it receive interrupt
buffer = SBUF;
if(buffer == 0xF0 || buffer == 0xF1) direction = 1; // left
else if(buffer == 0xE0 || buffer == 0xE1) direction = 0; // right
else 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)


DC=motor
Error_pos positionPosition
- buf_step; Control using Microcontroller 8051 81
else
{
Error_pos = buf_step - position;
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;} // 0x06
else
{ 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;} // 0x07
else
{ 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;} // 0x08
else
{ 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;} // 0x08
else
{ P10 = 1; P11 = 0; P12 = 0; P13 = 1;} // 0x09
}
}

DC motor Position Control using Microcontroller 8051 82


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;} // 0x05
else
{ 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;} // 0x06
else
{ 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;} // 0x07
else
{ 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;} // 0x07
else
{ P10 = 0; P11 = 0; P12 = 0; P13 = 1;} // 0x08
}
}
}

DC motor Position Control using Microcontroller 8051 83


//work with 8x51 series microcontroller
#include <stdio.h>
#include "reg51.h"

void timer_count();
void send();
unsigned char duty = 0x00;
โปรแกรมอว่ นนสคั ญญนณ Encoder ใน
unsigned char duty_times = 0x00;
Drive Motor
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 Interrupt
EX0 = 1; // enable INT0
IT0 = 1; // using active low interrupt
PX0 = 1; // set prioty first
*/
//initial the serial port
SCON=0x50;
TH1=0xFD;
TL1=0xFD;
TR1=1;

P1 = 0xFF;
// loop for check direction , speed and step
while(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;
else
direction = 0;

if(direction == 0)
step++; // step = pulse count
DC motor Position
else Control using Microcontroller 8051 84
step1++;

duty_times = duty;
duty = 0;
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
else
step1++;
// ******************** end check
}//end of while(1)
}//end of main

//interrupt service routine for timer0


void timer_count()
{
//over flow every 50 -> FFCEus | 25 -> FFE7 | 100 -> FF9C
// 10 -> FFF6| 5 -> FFFB | 20 -> FFEC
TH0 = 0xFF;
TL0 = 0xEC;
//start timer again
TR0 = 1;
while(!TF0); // wait overflow
TF0 = 0;
}
void send()
{
DPTR = 0x0000;
P0 = duty_times; // for speed
if(step > step1)
DPTR = step - step1; // for position
else
DPTR = step1 - step; // for position

if(DPH == 0x01) P32 = 1;


else P32 = 0;

P2 = DPL;
// P15 = direction; // for direction
}

DC motor Position Control using Microcontroller 8051 85


#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
โปรแกรมอว่นนสคั ญญนณ Encoder ใน Sampling
int high_count = 0;
int low_count = 0;
void initial();
void init_timer(); // initial the timer0
void 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 bit


switch(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 pulse


if(low_period0 == 0)
{
P1 = 0xF0;
}
DC motor Position Control using Microcontroller 8051 86
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 period
P1 = 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 87


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 88


ภาคผนวก จ
โปรแกรมอรินเตอรร์ เฟส(Visual Basic)

DC motor Position Control using Microcontroller 8051 89


สม วนในการสม งคมา ตทาแหนมงไปยปัง Microcontroller
Private Sub Command2_Click()
Dim direct_send As Integer
Dim out As String
Dim a, b, c, i As Integer

If Combo1.ListIndex = 0 Then
direct_send = 240
Else
direct_send = 224
End If

a = Int(Text17.Text)

If a > 255 Then


direct_send = direct_send + 1
a = a - 255
End If
MsgBox a & " di=" & direct_send
MSComm1.PortOpen = False
MSComm1.PortOpen = True
MSComm1.Output = Chr(a)
MSComm1.PortOpen = False
MSComm1.PortOpen = True
MSComm1.Output = Chr(direct_send)

'Combo1.ListIndex
Text19.Text = "¤èÒ Ascii " & Chr(a) & ", ·ÔÈ·Ò§ " & direct_send
End Sub

สม วนในการรปับคมาจาก Microcontroller

DC motor Position Control using Microcontroller 8051 90


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 = True
End Sub

DC motor Position Control using Microcontroller 8051 91

You might also like