0% found this document useful (0 votes)
124 views

Playstation Servo Controller Interface PDF

This document describes a circuit board interface that allows a Playstation 2 (PS2) controller to control up to six hobby servomotors. It discusses how the PS2 controller communicates and provides technical specifications from online sources. The document then provides step-by-step instructions to build the circuit board, including component list, schematic diagram, and soldering guide. It explains how to connect and power the circuit board and PS2 controller to control the servomotors.

Uploaded by

Carlos Velasquez
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
124 views

Playstation Servo Controller Interface PDF

This document describes a circuit board interface that allows a Playstation 2 (PS2) controller to control up to six hobby servomotors. It discusses how the PS2 controller communicates and provides technical specifications from online sources. The document then provides step-by-step instructions to build the circuit board, including component list, schematic diagram, and soldering guide. It explains how to connect and power the circuit board and PS2 controller to control the servomotors.

Uploaded by

Carlos Velasquez
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Iovine - Servo Controller.

qxd 12/28/2010 11:15 AM Page 57

Playstation
Servomotor
Controller
Interface
As of 2009, the PS2 has sold over 140 million units. With the PS2 still in
production and so many controllers available, it’s a natural to apply
this controller for more than games. This makes it an excellent
controller for servomotors and robotics.

The PS2 SMC (Servo Motor Controller) interface allows you to control six
hobby servomotors using the Playstation controller (also called the Dual
Shock 2 [DS2]). Both corded and cordless versions are supported. Therefore,
the wireless SMC can be used for remote control of your moving platform.

by John Iovine

T
he PS2’s analog sticks give precise
servomotor movements with speed
control. Rumble feedback occurs
when the servomotor is instructed to
move out of range (stalling).
Sony has not released the communication
protocol of its PlayStation controller, however,
there are a few Internet sites that have teased
out enough of the details for us to work with.

The technical specifications I used were from: FIGURE 1. The PS2 interface controller.

• mikroElektronika
www.mikroe.com/forum/viewtopic.php?t=8792 I will not repeat the communication protocol
• Nuts & Volts September ‘03 column information available on these sites, except to discuss how
by Jon Williams it relates to our current project. If you want to dig deeper
• Curious Inventor into the PlayStation controllers communication, you can use
http://store.curiousinventor.com/guides/PS2 those references cited.

SERVO 02.2011 57
Iovine - Servo Controller.qxd 12/28/2010 11:15 AM Page 58

Unknown; and 9-Green is Acknowledge.


We use seven of the nine wires off the connector with
the exceptions being the green and white wires. These are
fine wires which are a little difficult to strip and solder. My
fingers are a little clumsy for this detail work, so I prefer to
use a pre-made PS2 interface cable with a seven-position
socket that plugs onto a header. The schematic for our
circuit is shown in Figure 4. You can hardwire and
build this circuit on a prototyping breadboard (see
Figure 5) or purchase the kit.
To build the kit, we start with the PCB (Figure 6).
The kit is available in three versions that have different
power supply ratings of either one ampere, three
ampere, or five ampere. The higher amps can supply
more power to the servomotors without overheating.
Begin construction by mounting components and
parts on the silkscreen side of the PCB. R1 and
R2 are 1K resistors (color bands are brown,
black, red). R3 is a 4.7K resistor (color bands
are yellow, purple, red); R4 is a 10K resistor
FIGURE 2. PS2 with wireless Playstation controller connected to six servos.
(color bands are brown, black, orange).
Check this out in Figure 7.
Construction Next, mount and solder the ICS-18 microcontroller
socket labeled U2. Then, mount and solder the 1N5402X
The PS2 controller has a nine-pin connector shown in diodes labeled D3–D7. Keep the line on the diode
Figure 3. If you are hardwiring this circuit from scratch, you orientated to the line of the silkscreen outline of the diode.
need to obtain a PS2 extension cable. Leave about 4-5 Next, mount the two colored LEDs. The red LED is labeled
inches of cable attached to the female connector also Power LED; the green LED is labeled Status LED. Orientate
shown in Figure 3. Cut and strip the wires inside the cable the LEDs properly. The longer lead of the LED is positive.
to attach to your circuit. This faces the round portion of the LED outline. The shorter
Wire definitions are: 1-Brown is Data; 2-Orange is lead of the LED is negative; it faces the flat side of the LED
Command; 3-Grey is Vibration; 4-Black is Ground; 5-Red is silkscreen outline as shown in Figure 8.
Power; 6-Yellow is Attention; 7-Blue is Clock; 8-White is Now, mount and solder the round pushbutton switch

FIGURE 4.
Circuit
schematic.

58 SERVO 02.2011
Iovine - Servo Controller.qxd 12/28/2010 11:16 AM Page 59

www.servomagazine.com/index.php?/magazine/article/february2011_Iovine

* Depending on which version of the PS2 controller you


purchased, this regulator may be changed to the three amp
or five amp version.

and the toggle switch labeled S1. Mount and solder the
power supply jack labeled P1. When mounting capacitors,
the longer lead is the positive lead. Capacitors C2 and C6
are 1,000 µf. C5 and C7 are 10 µf capacitors. The following
capacitors are non-polarized and may go in with the leads
facing either way. Capacitor C4 is a 0.1 µf 100V. C1 and C3
are small 22 pF capacitors. Next, mount and solder the 8
MHz crystal labeled Y1. Now, mount the SMH-03’s labeled
P2-P7, then mount the seven-pin header P8 and the
LM2937 labeled U1. Before mounting the 7805* voltage
regulator, first attach it to the heatsink (heatsink is included
with the three and five amp versions only) and then mount
it to the PCB in the position labeled U3 (see Figure 9).
When mounting voltage regulators LM2937 and 7805*
to the PCB, the flat side must be aligned with the small FIGURE 3. Playstation nine-pin connector with wires out.
rectangle printed on the board.
Plug the PS2 connector into the P8 connector. The
black wire of the connector faces toward the right, with the
PS2-SMC-06 facing you. Secure the PS2 connector to the
top side of the PCB as in Figure 10.
The hex file for programming the 16F88 accompanies
this article. If you purchased the kit, the PIC microcontroller
is pre-programmed.

Power Supply
The PS2 SMC can use a variety of power supplies from FIGURE 5. Prototype PS2 interface controller.
6V to 9V (AC/DC, one Amp, or more) thanks to the
onboard rectifiers. You don’t have to worry about DC
supply polarity. On my prototype, power is supplied to the
board through the 2.1 mm DC barrel jack. The circuit can
be reset anytime using a momentary contact reset switch.

PS2 SMC Operation


Begin by plugging in nine-pin male connector of your
PS2 controller or wireless receiver into the female connector
on the circuit board.

Servomotor Connectors
There are six standard three-pin male headers for
connecting hobby servomotors Servomotor 1 to Servomotor
6. Connect one to six servomotors as shown in Figure 11.
FIGURE 6. PCB for interface controller.
Power-Up
Plug in the PS2 controller, connect the servomotors, the PS2 is in analog mode. All six servomotors in normal
and toggle the on/off switch to the “on” position. The Independent mode will move to the center neutral position
green LED will light indicating that power is on. The amber on power-up.
LED (status LED will go on after a couple of seconds) When using the cordless PS2, make sure the
indicates a communication link has been established communication link between the PS2 and its wireless
successfully with the PS2 and that the servomotors are now receiver is established. Pressing any of the action buttons
ready to be controlled. This amber LED will stay on. At the on the PS2 will help establish the wireless link on power-up.
same time, the red LED on your PS2 will go on, indicating When a proper link between the PS2 and its wireless
SERVO 02.2011 59
Iovine - Servo Controller.qxd 12/28/2010 11:17 AM Page 60

FIGURES 7-10. PCB construction.

FIGURE 7. FIGURE 8.

FIGURE 9. FIGURE 10.

receiver is established, pressing the action button will result joysticks (thumb sticks) on the PS2 controller; see Figure
in the LED blinking on the wireless receiver. 12. Servomotor 1 and Servomotor 2 are controlled by the
left analog joystick. The X axis of the left analog joystick
Controller Map controls Servomotor 1 and the Y axis controls Servomotor
2. Tilting the joystick along any axis will result in motion of
The six servomotors are controlled by the two analog the servomotor associated with that axis. Tilting the joystick
in the opposite direction along the same axis will result in
servomotor motion in the opposite direction.
Servomotor speed is proportional to the tilt angle of
the joystick. Tilting the joystick slightly will result in the
slowest servomotor motion. Tilting the joystick all the way
will result in fastest servomotor motion. There are three
levels of servomotor speed along one direction of the axis.
Releasing the joysticks will bring it to center position
and the servo will stop at its current position.
Since sticks may not always return to the center neutral
position, there is a dead band around the center of the
stick which results in no movement. This ensures the
servomotor doesn’t keep moving in case the stick has not
returned to the neutral position.
Servomotor 3 and Servomotor 4 are controlled by the
right analog stick in the same manner as described for the
left analog stick. Pressing Left 1 (shoulder button) in front
FIGURE 11. Servomotor connections. of the PS2 will shift control of the right analog stick from
60 SERVO 02.2011
Iovine - Servo Controller.qxd 1/4/2011 5:52 PM Page 61

Servomotor 3 – Servomotor 4 to Servomotor 5 –


Servomotor 6. Servomotor 5 and 6 are controlled by the
right analog stick as long as the left 1 button is pressed.
Releasing the left 1 button will shift control of the right
analog stick back to Servomotor 3 and 4.

Rumble
The servomotor has a maximum limit in both directions
and driving it beyond these limits will cause damage to the
servomotor and drain heavy current from the power supply.
To avoid this, servomotors are not allowed to be driven
beyond their Pulse Width (PW) limits, as determined by the
manufacturer’s recommendation for PW signals sent to the
servomotor. When any of the servomotors have reached FIGURE 12. Servomotors mapped to PlayStation controller.
their limit and the user continues trying to move it by tilting
the corresponding analog stick, the servomotor will not
move and this condition will be indicated by a Rumble
(force feedback) feature. Rumble will stay on as long as the
user keeps the stick tilted.

Programmable
Configuration Modes
The PS2 SMC can be configured in three different
operating modes. These modes can be changed “on-the-fly” FIGURE 13. Mobile test platform.
during normal operation. New mode selection is stored in
the non-volatile memory of the PIC. The stored mode will
automatically load the next time the PS2 SMC is turned on.

1.) Mobile Platform Mode – MPM


(Circle and Square Buttons)

In this mode, Servomotor 1 and Servomotor 2 are


configured as differential drive in a moving platform (for
continuous rotation servomotors). To activate the MPM,
press the Circle button.
Pressing the Square button will select the Normal
Independent Mode (NIM) for servomotor control. This
mode is for standard servomotors and not continuous
rotation ones.
In MPM mode, the left analog stick will act as a
navigation control with built-in speed control. Tilting the
stick upwards will result in forward motion; downwards is FIGURE 14. Reduced size PCB for mobile
for reverse motion; left is for left turn; and right is for right operations on robots.

Parts List (1)


(1)
12 mm Momentary Switch Tact (SW-25)
Toggle Switch SPDT On-On PCM (SW-07)
QTY ITEM (2) 10 μF Capacitor, 16V
(1) Printed Circuit Board (1) 0.1 μF Capacitor, 100V
(1) ICS-18 (2) 22 pF Capacitor, 50V
(5) 1N5401-!N5402 (2) 1,000 μF Capacitor, 10V
(1) Sub-min LED (1) LM2937
(1) Green LED (1) PIC16F88 Microcontroller
(6) Three-Pin Straight Male Header (1) Seven-Position Modular to CS Connector
(1) Seven-Pin Straight Male Header (Cable-PS2)
(1) 8.0 MHz Crystal (1) Jack-09
(1) 7805 (Voltage Regulator) (1) 9 VDC 300 mA. (or greater) Power Supply
(1) HeatSink-03
(2) 1K ohm 1/4 watt Resistor A complete or partial kit to go with this article can be
(2) 4.7K ohm 1/4 watt Resistor purchased online from the SERVO Webstore www.servomagazine.com
(1) 10K ohm 1/4 watt Resistor
(1) 2.5 mm PC Power Jack Connector (PJ-102B) or call our order desk at 800-783-4624.

SERVO 02.2011 61
Iovine - Servo Controller.qxd 12/28/2010 11:18 AM Page 62

Technical Supplement PS2 and data returned is not used.


Commands to the controller should be separated by five to
PS2 Controller 10 msecs. However, there is no delay between bytes used in a
Before going further, we need to first look into the details of command.
what the SPI interface will be communicating to the host. This Next, the digital button’s polling command of five bytes is
involves the PS2 control buttons and analog joysticks. sent to the PS2, for which the PS2 returns the button states in
The PS2 has 16 buttons: four Directional Pad (Dpad) buttons; packets of five bytes. Here, the second data byte from the PS2 is a
four Action buttons (circle, triangle, etc.); and four Shoulder mode of operation byte. This byte should be $41 hex. If it isn’t,
buttons, (start, select etc.). Both analog joysticks can be pressed either the PS2 is absent or is faulty. So the mode byte from the PS2
as buttons, in turn. When pressed, each button outputs -0; when is used as a reference and benchmark for proper communication.
released each button outputs -1. This command is only to make sure the PS2 is up and working.
The two analog joySticks on the PS2 can each be moved in Next, the PS2 should be configured for the proper mode of
two axis. The output of each stick is proportional to the amount of operation. For that, the configuration enter command is given to
tilt the stick is placed under. Each stick outputs two values of 0 to the PS2.
255, corresponding and proportional to the tilt on each axis. Once into the configuration setup, subsequent commands
Twelve of the PS2 button may be set as Pressure Sensitive such as Vibration Motors On, Pressure Values On, and Analog Lock
buttons (four Dpad, four Action, four Shoulder), each outputting a Mode are given to the PS2 sequentially. Once the configuration is
value between 0 to 255, proportional to the amount of pressure set up to our requirements, the exit command is given to the PS2.
exerted on the buttons. Here are a few things you should know:
We can mix and match the function of the buttons and sticks
depending on which of the PS2 three modes of operation has 1. In the configuration mode, if the PS2 is not sent a
been set up (either digital, analog, or analog pressure). command for some time, it automatically falls out of
In digital mode, analog sticks don’t output a value; pressure configuration mode.
values are also not present. Only the on/off state of the digital 2. The configuration enter command length is equal to that of
buttons is outputted. the current mode of operation. For example, if the current
In analog mode, the digital on/off state is outputted, as well mode is digital, the configuration enter command will have
as the analog joystick values. the same number of bytes as that of the digital polling
In analog pressure mode, digital on/off, analog sticks, and command.
pressure values all are outputted. 3. Once into configuration mode, all configuration commands
The SPI to the host is a synchronous serial half/full duplex (including configuration exit commands) are nine bytes in
communication protocol. The PS2 controller is the slave and the length.
host controller — in our case, the PIC microcontroller — is the 4. The PS2 will output the current mode in a data string
master; and generates synchronizing clock. The master PIC sends (second byte) in response to a configuration enter
command bytes to the PS2, and the PS2 sends data bytes back command. After that, it will output configuration mode
(full duplex mode). bytes in data strings.
Commands have a three-byte header. These bytes request the
PS2 to acknowledge its current mode of operation. The PS2 After configuration, a command is again set to the required
responds with three data bytes indicating its current mode. length for the analog - pressure poll command i.e., 21 bytes and
The current state of the buttons, stick, and pressure values various command bytes are initialized as per the requirements.
can be requested from the PS2 by a polling method where a Next, comes the servomotor control loop. Every 20 msecs, the PS2
specific button value’s command is sent and the PS2 responds is polled by the analog pressure poll command, and a new
with the current state. servomotor value is calculated based on current button/stick
Every command is divided into a sequence of bytes. The states; new values are pulsed out.
header is followed by data. The digital button’s polling command, We don’t use pressure-sensitive buttons in our program.
for example, is five bytes. So, to know button states, the master For each command, every byte has to be per the
has to transmit five command bytes to the PS2; the PS2 will return specifications. You will notice that for each command, command
five data bytes back to the master. In contrast, the analog polling bytes are initialized, the byte length of a command is set, and then
commands consist of nine bytes. the SPI subroutine will be called. The SPI subroutine will return
In order to select the mode of operation, turn on/off the data bytes.
vibration motors the PS2 needs to be configured (with If after configuration, the PS2 doesn’t function, it has to be
configuration commands). reconfigured again. So, in the servo loop, the second data byte
(mode byte) is checked every time the PS2 is polled. If that byte is
PIC Program not what we expect it to be, the PS2 is reconfigured again. The
The general function of the PIC program is as follows: PS2 also needs to be polled for a minimum number of times in one
second period. Failing to do so will result in the PS2 going back
When power is applied, the PS2 default is the digital mode. into the default state.
The PIC program sends a wireless idle command to the PS2 that is We are able to maintain a 125 kHz clock frequency for the
specifically used for wireless. The command consists of five bytes synchronous clock in SPI between the PIC and PS2.

turn of your moving platform. The tilt angle of the stick will
General Notes determine the speed. Two-level speed control is
implemented.
1. One should plug the PS2 controller and servomotors on the Sometimes the stick doesn’t return to the neutral
interface board before powering up. Only remove them
after turning off the board. position on release which may result in unwanted
2. Configuration modes can be changed anytime the user movements of the servomotors. Creating a small dead
wants in normal operation. However, since the associated space or band around the center position of the joystick
mechanical hardware connected to the motors for different
modes is so different, practically speaking, a need for eliminates this movement. Within this dead band, the
changing from one mode to another won’t arise during an servomotors aren’t activated. To test this mode, I created a
operation. Mode change can be done when required quick and dirty mobile platform using two continuous
immediately at power-on, once the status LED goes on. This
will ensure that the servomotors are at the center position rotation (CR) servomotors and a dual servomotor bracket
when the mode is changed so an unwanted movement of (see Figure 13).
the servomotors won’t occur as a result of mode change. For mobile operations or if you’re just tight on space,
3. Servomotor control is inhibited when the mode change the PCB can be cut down (before assembly) so its footprint
buttons are pressed.
is much smaller (Figure 14). The PS2 connector is secured
62 SERVO 02.2011
Iovine - Servo Controller.qxd 1/4/2011 10:08 AM Page 63

to the bottom of the PCB. and Servomotor 4; the right stick controls Servomotor 5
and Servomotor 6.
2. Opposite Phase Mode – OPM When the Shoulder button is pressed,the right analog
(Cross and Triangle Buttons) stick will control Servomotor 1 and Servomotor 2. Basically,
Leftie and Righty mode are independent of other modes
Servomotor 3 and Servomotor 4 can be configured to selected; control between the two sticks is swapped,
be controlled independently or in Opposite Phase Mode irrespective of the mode.
(OPM). In OPM, each servomotor shaft moves in the
opposite direction from the other, 180 degrees out of Wrap-Up Mode
phase. Pressing the Cross button will select OPM mode.
Pressing the Triangle button will select Normal Independent Utilizing existing equipment in your robot projects is
Mode (NIM). always satisfying. Using the PS2 controller and joysticks
OPM can be helpful when two servomotors are adds to the enjoyment of deploying your builds. SV
connected to a common load, or
when you’re using two servomotors
for increasing the overall relative
speed of movement.
In OPM, the X axis of the right
analog stick will control Servomotor 3
and 4. Tilting the stick along the X
axis in one direction will result in the
simultaneous opposite movement of
Servomotor 3 and Servomotor 4 at
the same speed.
Tilting the stick in the opposite
direction will result in the
simultaneous opposite movement of
Servomotor 3 and 4, but in the
opposite direction to that of the
previous case. As in MPM, there is a
dead band around the center of the
stick and three-level speed control
proportional to the stick tilt.
Servomotor 5 and Servomotor 6
always operate in NIM.

3.) Normal Independent Mode –


NIM
(Square and Circle Buttons)

Pressing the Square button will


select NIM for servomotor control.
This mode is for standard servomotors
and not CR servomotors.

Handiness
(Righties and Lefties)
When selected, MPM mode by
default sets the left analog stick to
control Navigation. For righties, they
can switch Navigation control to the
right analog stick by pressing the right
arrow button on the directional pad.
Pressing the left arrow button on the
directional pad brings the stick
controls back to their default
mapping. In Righty mode, the left
analog stick will control Servomotor 3
SERVO 02.2011 63

You might also like