Professional Documents
Culture Documents
NASA - Stepmotor For Vic-20
NASA - Stepmotor For Vic-20
NASA - Stepmotor For Vic-20
Technical
Memorandum
NASA TM -
86574
SMALL
By
Fred
Space
Science
December
(NASA-T_-86574)
A S_E_
_O_C_
_ALL
(_SA)
COMPUTER
A.
Berry,
INTERFACE
TO
STEPPER
MOTOR
Jr.
Sciences
Laboratory
and
Engineering
Directorate
1986
C0_PU_EB
13 p
I_2ERFACE
CSC
_fO
09C
N87-16_70
Unclas
3/J3
NASA
National
Space
Aeronautics
Administration
George
MSFC-
and
C. Marshall
Form
3190
(Rev.
Space
May
1983)
Flight
Center
43846
TECHNICAL
_i.
REPORT
TITLE
AND
Small
STANDARD
31
RECIPIENT'S
5.
REPORT
TITLE
CATALOG
PAGE
NO.
2. GOVERNMENT ACCESSIONNO.
REPORT
NO.
SUBTITLE
Interface
Computer
to a Stepper
DATE
December
Motor
6.
1986
PERFORMING
ORGANIZATION
CODE
ES62
7.
8.
AUTHOR(S)
Fred A. Berry,
9.
PERFORMING
SPONSORING
ORGANIZATION
NAME
AND
ADDRESS
AGENCY
NAME
AND
10.
35812
WORK
UNIT
1.
CONTRACT
3.
TYPE
NO.
OR
OF
GRANT
REPOR',
Technical
16.
SUPPLEMENTARY
NOTES
Prepared
by Science
&
NO.
PERIOD
COVERED
ADDRESS
REPDRF
Jr.
ORGANIZATION
PERFORMING
Memorandum
Administration
14.
and Engineering
Directorate,
Space
SPONSORING
Sciences
AGENCY
CODE
Laboratory
ABSTRACT
A Commodore
VIC-20 computer has been interfaced with a stepper motor to provide an
inexpensive stepper motor controller. Only eight transistorsand two integrated circuits
compose the interface. The software controls the parallelinterface of the computer and
provides the four phase drive signals for the motor. Optical sensors control the zeroing of the
12-inch turntable positioned by the controller. The computer calculates the position
information and movement
of the table and may be programmed
in BASIC to execute automatic
sequences.
17.
KEY
18.
WORDS
19.
SECURITY
CLASSIF.
(of this
Unclassified
MSFC
- Form
3292
repoet_
DISTRIBUTION
Computer
SECURITY
CLASSIF.
(of this
page)
Uncl a ss i fi ed
(May
STATEMENT
[2,.NO.
[
OF
z3
PAGES
[22.
PRICE
NTIS
1969)
For
sale
by
National
Technical
Information
Service,
Springfield,
Virginia
221
51
i[
TABLE
OF
CONTENTS
Page
T
II.
Introduction
Description
1
1
Ae
II[.
B.
C.
Application
LIST
OF
Figure
Title
1.
Octal
2,
Stepper
3.
Sensor
buffer
interface
motor
interface
3
4
o'oeee,oooaoeooe,Dioeooeooo
..................................
Table
2.
Page
eDoeto,oeoooeooo*le,eoooeoo
interface
LIST
i.
ILLUSTRATIONS
OF
TABLES
Ti tle
Program
Li st ing
Program
Listing
Comp u t e r s
for
VIC-20
for
Commodore
Page
Computer
iii
64
oeoooooomteeeoo
and
128
..........
TECHNICAL MEMORANDUM
SMALL COMPUTERINTERFACETO A STEPPERMOTOR
I. INTRODUCTION
In the past, stepper motors have been controlled by expensive dedicated electronics with
littleor no programmability or flexibility.A Commodore
VIC-20 computer was interfaced with
a controller to provide an inexpensive programmable stepper motor controller (see Table 1). A
Commodore
64 version of the program is available and may be run on either a C-64 or a C-128
computer operated in C-64 mode (see Table 2). The computer program is written in BASIC and
may be adapted to any small computer with a parallelinterface. This controller allows the user
to both interact with the stepper motor and program in a special sequence of steps for the
motor to perform.
The drive circuitsof the motor controller,originallydesigned by Guy N. Brown, serve to
control current to the motor and provide level shiftingfor the computer interface. An
interface integrated circuit (IC)provides isolationand line driving capabilitiesto the circuit.
The computer provides both the four phase drive signals for the motor and maintains the
position information of the table. The computer may be separated from the motor controller by
a distance of twenty or more meters without resorting to special line driver electronics.
The parallelport of the computer is isolated from the line by an identical interface IC.
This IC provides the line driving and receiving functions for the VIC-20 parallelport. Two sets
of infrared positionsensors, coarse and fine, are used by the computer to detect the zero
setting of the stepper motor. The coarse sensor detects the zero position of the table while the
fine sensor defines the zero positionof the drive motor shaft. Two comparator circuitsare used
to condition the optical sensor outputs for the computer.
II.
DESCRIPTION
A. Motor Interface
The computer controls the octal buffer interface and line drivers (see Figure 1). Cables
coanect the computer interface to the controller containing the other 74LS244 octal buffer IC
(see Figure 2). The 2N2222 switching transistorsare controlled by tlleoctal buffer. The
2N2222 transistorscontrol the high current motor switching transistorsto buffer the motor
from the TTL electronics. The field coilsof the stepper motor, in turn, are switched directly by
2N6191 high current capacity transistors. Other output transistorsmay be required to interface
to the particular stepping motor used. The 2N6191's may be used safely to switch the phase
current for up to 2 amperes.
B. Sensor Interface
The sensors used for this project are infrared emitter LED's and photo-transistors
packaged together (see Figure 3). The outputs of the photo-transistors are fed into LM111
comparators. These comparators detect a threshold when a sensor is either blocked or
activated. Then the comparator outputs a logic pulse to the buffer which is then sent to the
parallelport of the computer for use in the program.
OF POOR QUALITY
C.
Computer
Program
III.APPLICATION
The controller is now being used to command
a 12-inch turntable. By controllingthe
stepper motor to within one step, a positionalaccuracy of +_0.01,has been achieved. This is
consistent with the accuracy of the turntable being controlled. Further modifications of the
program would allow the user to move the stepper motor in half-steps and increase the accuracy
of the positioner. Also, the motor is turned off after each operation to conserve power and
allow for cooling. If it is necessary to hold something in position,a holding current could be
implemented simply by omitting statements 85, 185,385, and 450. One may modify the
program to include linear and other positional variations. Various sequences might be as easily
programmed
in so that the motor would carry out a listof instructions. Further enhancements
could include an acceleration/deceleration routine,programmed
sequences, and motor feedback
to the computer.
BIT
74LS244
I
C
PB0
PB1
iVALUE
12
I
>>
I
12
J
2>
PB3
>>
A_14
PB4
f8 b.1218
PB5
+5VDC
I 9
>>
N/GND
13132
10,1 '1
L ....
_>
16
5>
17
>>
,, 11
6>
> /
tJ
i.
_1__9__
JI
N CABLE
>
Figure
E]
N
4..
>>
3>
R,
1 PiN
PB2
I16
I
1,A
I1
b18
Octal
Buffer
Interface.
+5 P/S
VDC
1K
BIT
2N2222
2N6191
1/8 74LS244
(9
2N6191
74LS244
33O
lw
1K
330
lw
2N2222
14
(_)
1N4001
[]
3o_.
2N2222
BIT
1/8 74LS244
(_)
1K
2N2222
330
33o
lw
lk
WH
_191
2N6191
I+5
ON
74LS244
VDC
P/S
PIN
20
10,1,15
+5
GND
Fig.
2.
Stepper
Motor
Interface.
lw
1K
+5
RED
OPTICAL
SENSOR
+5 VDC
/
WHITE
+5
GREEN
_G
_>E
<_
":
74LS244
'
.o
+5 VDC
+5 VDC
ORANGE
WHITE
74LS244
8
1K
11 _9
.o,_
._50k
CABLE
CONN
PIN
CABLE
FOR
SENSORS
COLOR
SENSOR
WHITE/BLUE
GREEN
ORANGE/WHITE
WHITE
BLUE/WHITE
BLUE
WHITE/ORANGE
ORANGE
ORANGE/WHITE
GREEN
WHITE/ORANGE
WHITE
BLUE/WHITE
BLACK
WHITE/BLUE
RED
Fig.
3.
Sensor
Interface
COLOR
TABLE
i.
PROGRAM
LISTING
I P=37136:D=3'7138:PA=I:Q=IS:
2 POKED,
15
_OR
VIC-20
COMPUTER
PO%=0
3 POKEP,
0
I0 GOSUB
8O0
ii
INPUT"WHICH
DIR";DIS
12
IFD[$="ZERO"THENPO%=0:GOTO600
13
14
15
16
22
IFDI $="E"THENI000
PRINT"ROTATION
IS
IN
DECIMAL
INPUT"#
OF
DEGREES";W:T=INT(W*I00)
IFT<4TH_N25
1PDI $ =" CW"THENGOS
U8391
23 1 _'0 [ $ ="CCW"THENGOS
UB 331
25 C=(T/4-1NT(T/4))*4
26 IPT>4AND
C=0THENC=4
2 8 1 _'D[ S="CCW"THENPO%=PO%-C
29
"TABLE
AT";XO/100;"DEG"
IFDI S="CW"THENPO%=PO%+C
30
31
"TABLE
GOTOI
RE_
40
POKEP,
QA_D5
50
60
POKBP,
POKEP,
QAND6
QANDI0
70
85
90
POKEP,
POKEP,
RETURN
QAND9
0
DEGREES
:ONCGOS
'XXX.XX'"
:Z=T/4-1
UB70,60,50,40
:ONCGOSUBI70,160,
: XO=PO%
150,140
: XO=PO%
AT";XO/100;"DEG"
1
140
150
160
170
1195
190
331
335
POKEP,
QAND9
POKED,
QANDI
POKEP,
_AND6
POKEP,
QAND5
POKEP,
0
RETURN
REM
PORX=ITOZ
340
350
360
POKEP,
QAND5
POKE P, QAND6
POKEP,
QANDI
370
3 75
377
380
381
POKE P, QAND9
PO%=PO%-4
: XO=PO%
: PRINTXO/I
IF(PEEK(198)
)>0THENX=Z
NEXT
REM
385
390
POK_]P,0
PRINT""
437
440
IF(PEEK(198))>0THENX=Z
N_XT
450
500
600
610
POKEP,
0
PRINT"
{CLR}EMD"
:RETURN
INPUT"BEST
D[R";DIS
[ _"DI ,q=" CW" THEN 700
0
00 ; "DEGREES"
ORIGL_)_L
OF POOR
QUALITY
ORIGINAl,,PAGE. 13
OF POO_
'FABLE
QUALITY
(concluded)
620
625
630.
632
635
640
DI $=" CCW"
REMPRINT(PEEK(P)AND32)
[F(PEEK(P)AND32)<>0THENGOSUB40:GOTO625
IF ( PEEK (P)AND16
)=0THENGOSU840
[F(PEEK(P)ANDI6)=0THEN632
GOTOI
1
700
710
REMPRINT(PEEK(P)AND32)
IF(PEEK(P)AND32)<>0THENGO_UBI40:GOTO700
715
725
740
IF (PEEK
(P)AND16
)=0THENGOSUBI40
IF(PEEK(P)A'NDI6)=0THEN715
GOTOI
1
800
835
PRIN'F."{CLR}INSTRUCTfONS
FOR
USE
OF
VIC
20 STEPI?ER
r4OTOR
I NT E R_AC E "
PRINT"
IN PUT
'CW'
TO
MOVE
THE
TARLE
CLOCKWISE"
PRINT"INPUT
'CCW'
TO
MOVE
THE
TAF{LE
COUNTERCLOCKWISE"
PRINT"INPUT
'ZERO'
TO MOVE
THE
".PASLE TO
IT'S
INITIAL
POS IT ION"
PRI_T"A
PREFERRED
DIRECTION
SHOULD
RE
INP_ITTED
TO
AID
THE
840
850
ZEROING
ROUTINE"
PRINT"INPUT
'E'
PRINT
890
i000
RETURN
END
8i0
820
830
TO
END
[010
1015
1020
10.%0
OPEN15,8,15,"S0:OS"
C LO.SEI 5
SAVE"OS",8
OPEN15,8,
15,"S0:ODOSTEPPER"
1035
1060
1080
SAVE"ODOSTEPPER",8
CLOSE15
END
THE
PROGRAM
TABLE 2.
RETURN
POKEP,
POKEP,
POKEP,
QAND9
QANDI
QAND6
170
POKEP,
QAND5
[,%5 POKEP,
0
190
RETURN
331
REM
335
PORX=ITOZ
340
350
360
POKEP,
QAND 5
POKE P, QAND6
POKEP,
QANDI0
370
375
377
380
POKE P, QAND9
PO%=PO%-4:XO=PO%:PRINTXO/100;"DEGREES"
IP(PEEK(198))>0THENX=Z
NEXT
381
REM
385
390
POKEP,0
PRINT""
437
440
I_'(PEEK(198))>0THENX=Z
NEXT
450
500
600
610
POKEP,
0
_]
PRINT"
{CLR}
,NO " :RETURN
INPUT"BEST
DIR";DI$
lffDIS="CW"THEN700
620
DI S:"CCW"
OF PO0_
TABLE
625
REMPRINT(PE_K(P)AND32)
630
632
6.35
64 0
IF(PEEK(P)AND32)<>0THENGOSUB40:GOTO625
IF(PEEK(P)ANDI6)=0THENGO._UB40
IF (PEEK
(P)AND16
)=0THEN632
GO']?O 1 .l
700
710
715
725
740
REMPRINT(PEEK(P)AND32)
IF(PEEK(P)AND32)<>0THENGOSUBI40:GOTO700
IF(PEEK(P)ANDI6)=0THENGOSUBI40
IF ( PEEK (P)AND16
) =0THEN715
GOTOI
1
800
PRINT"{CLR}INS'FRUCTIONS
INTERFACE"
810
820
830
PRfNT"INPUT
PRINT"
INPUT
PRINT"
INPUT
POS IT ION"
835
PRINT"A
ZEROING
840
850
890
i000
PRINT"INPUT
PRINT
RETURN
END
[010
1015
OPEN15,8,
C LO._E 15
[020
1030
SAVE"OS",8
OPEN15,8,
1035
1060
1080
SAVE"ODOSTEPPER",8
C LO.q E 15
END
FOR
QUALU'
(concluded)
USE
OF
VIC
20
sr._JPPER'
E
MOTOR
'CW'
TO MOVE
THE
TABLE
CLOCKWISE"
'CCW'
TO
MOVE
THE
TABLE
COUNTERCLOCKWISE"
'ZERO'
TO MOVE
THE
TABLE
TO
IT'S
INITIAL
PREPERRED
ROUTINE"
'E'
DIRECTION
TO
END
THE
SHOULD
BE
INPUT'fED
TO
AID
THE
PROGRAM
15,"S0:ODOSTEPPER"
APPROVAL
SMALL
COMPUTER
INTERFACE
TO A STEPPER
MOTOR
The information in this report has been reviewed for technical content. Review of
any information concerning Department of Defense or nuclear energy activitiesor
programs has been made by the MSFC Security ClassificationOfficer. This report, in its
entirety,has been determined to be unclassified.
)/
E. A. TANDBERG-HANSSEN
Deputy Director, Space Science Laboratory
10
_U.S.
GOVERNMENT
PRINTING
OFFICE
1987
730-067/40051