[ บทความ : ขับ stepping motor ด้วย Z80 ]

ขับ stepping motor ด้วย Z80

พอดีมี e-mail มาถามผมเรื่องนี้ ผมก็เลยทำบทความเป็น Question and Answer ซะเลยครับ ...

Q: อยากให้มีบทความเกี่ยวกับการขับ stepping motor ด้วย Z80 ครับ

A:

การทำงานของ Stepping Motor

Stepping Motor นั้น มีด้วยกันหลายชนิด แต่ผมจะจำแนกมันตาม โครงสร้างของขดลวด ซึ่ง แบ่งได้เป็น 2 ชนิด คือ

แต่ในตัวอย่างบทความนี้เราจะขับ stepping motor แบบ Unipolar กัน วิธีการขับมอเตอร์ชนิด Unipolar นั้น มีด้วยกัน หลายวิธี ดังนี้

วงจร ULN2003

เนื่องจากตัวอย่างในบทความนี้ จะทำการขับมอเตอร์ที่กินกระแสไม่มากนัก ผมเลยเลือกใช้ ULN2003 เป็นตัวขับกระแสให้ Stepping Motor ซึ่งวงจรเป็นดังนี้

ในการทดลอง ผมจะใช้ 8255 PortA บิตที่ 0 ต่อเข้ากับ IN1, บิตที่ 1 ต่อเข้ากับ IN2, บิตที่ 2 ต่อเข้ากับ IN3, บิตที่ 3 ต่อเข้ากับ IN4 ส่วน ขด1-ขด 4 ต่อเข้ากับ Stepping motor (คุณต้องต่อให้ถูกต้องด้วยนะครับ) แล้ว ต่อ 12VDC เข้ากับ ขอลวดที่เหลือของ Motor ด้วย

อุปกรณ์

ตัวอย่างโปรแกรม

ตัวอย่างโปรแกรม จะเป็นการขับแบบ 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


เขียนโดย : ศุภชัย บุศราทิจ
Author : Supachai Budsaratij
e-mail : raek@se-ed.net
วันที่ทำการปรับปรุง : ๖ ส.ค. ๒๕๔๔