[ บทความ : ขับ stepping motor ด้วย Z80 ] |
ขับ stepping motor ด้วย Z80
พอดีมี e-mail มาถามผมเรื่องนี้ ผมก็เลยทำบทความเป็น Question and Answer ซะเลยครับ ...
Q: อยากให้มีบทความเกี่ยวกับการขับ stepping motor ด้วย Z80 ครับ
A:
การทำงานของ Stepping Motor
Stepping Motor นั้น มีด้วยกันหลายชนิด แต่ผมจะจำแนกมันตาม โครงสร้างของขดลวด ซึ่ง แบ่งได้เป็น 2 ชนิด คือ
- แบบ 2 ขด (Bipolar stepping motor)
- แบบ 4 ขด (Unipolar stepping motor)
แต่ในตัวอย่างบทความนี้เราจะขับ stepping motor แบบ Unipolar กัน วิธีการขับมอเตอร์ชนิด Unipolar นั้น มีด้วยกัน หลายวิธี ดังนี้
- Single step เป็นการส่งกระแสไฟเข้าขดลวดทีละขด ตามลำดับ คือ 1->2->3->4->1->2->... หรือ 4->3->2->1->4->...
- Half step เป็นการส่งกระแสไฟเข้าขอลวดครั้งละ 2 ขด คือ 1:2->2:3->3:4->4:1->... หรือ 4:3->3:2->2:1->1:4->...
- Full step เป็นการส่งกระแสไฟเข้าขอลวดครั้งละ 1 phas ผสมกับ 2 phase 1->1:2->2->2:3->3->3:4->4->4:1->...
วงจร ULN2003
เนื่องจากตัวอย่างในบทความนี้ จะทำการขับมอเตอร์ที่กินกระแสไม่มากนัก ผมเลยเลือกใช้ ULN2003 เป็นตัวขับกระแสให้ Stepping Motor ซึ่งวงจรเป็นดังนี้
ในการทดลอง ผมจะใช้ 8255 PortA บิตที่ 0 ต่อเข้ากับ IN1, บิตที่ 1 ต่อเข้ากับ IN2, บิตที่ 2 ต่อเข้ากับ IN3, บิตที่ 3 ต่อเข้ากับ IN4 ส่วน ขด1-ขด 4 ต่อเข้ากับ Stepping motor (คุณต้องต่อให้ถูกต้องด้วยนะครับ) แล้ว ต่อ 12VDC เข้ากับ ขอลวดที่เหลือของ Motor ด้วย
อุปกรณ์
1. Stepping Motor แบบ Unipolar จำนวน 1 ตัว
2. บอร์ดควบคุม Z80/Z180 (จะเป็น single board หรือ controller board ก็ได้) จำนวน 1 บอร์ด
3. ULN2003 จำนวน 1 ตัว
ตัวอย่างโปรแกรม
ตัวอย่างโปรแกรม จะเป็นการขับแบบ single step โดยเป็นการหมุนแบบตามเข็มนาฬิกา ซอร์สโปรแกรม ก็เป็นดังนี้ครับ
; ; filename : smotor1.asz ; assembler : az80 ; author : Supachai Budsaratij (raek@se-ed.net) ; hardware : et-board V6 ; note : Drive stepping motor. ; ; compile : az80 smotor1.asz -l smotor1.lst -o smotor1.hex ; INCL "etv6.inz" ; Inlude header for ET-V6 P_CTRL EQU U8255_CT P_STEP EQU U8255_PA ORG UMEM_ORG ; Start at UMEM_ORG main: LD SP, UMEM_END LD A,080h OUT (P_CTRL),A CALL delay loop: CALL sStep JP loop ;-- Single step sStep: LD D,01h CALL drive LD D,02h CALL drive LD D,04h CALL drive LD D,08h CALL drive ret ;-- drive Stepping Motor drive: LD A,D OUT (P_STEP),A CALL delay RET ; --- delay function ------------------------------------------- delay: LD B,200 lp_dly1: LD C,10 lp_dly2: LD HL,0 LD HL,0 LD HL,0 LD HL,0 LD HL,0 NOP NOP DEC C JP nz,lp_dly2 DEC B JP nz,lp_dly1 RET ; ----------------------------------------------- END
เอกสารอ้างอิง
1. คู่มือทฤษฎีการทำงาน ET-EXP4 CPU และ I/O 1 (Understanding ET-EXP4 CPU & I/O 1) : ETT
2. คู่มือการทดลอง ET-HARDWARE LAB Experiment for ET-BOARD V3.0,3.5 : ETT