AR3 Robot Manul - 2
AR3 Robot Manul - 2
AR3 Robot Manul - 2
• Electrical Safety
• Overview
• Chapter 1 – Bill of Materials
• Chapter 2 – Robot Assembly
• Chapter 3 – Enclosure Assembly
• Chapter 4 – Wiring Diagram
• Chapter 5 – Robot Gripper
• Chapter 6 – Specifications
• Chapter 7 – Startup Procedure
• Chapter 8 – Programming
• Chapter 9 – Open Loop Version (AR2)
2
Electrical Safety
ELECTRIC SHOCK HAZARD. The construction of this control enclosure poses potential
exposure to alternating current and direct current which has the potential to cause injury
or death. This equipment should be constructed and serviced by trained or qualified
persons.
Keep the area around the device clear and free from dust before, during, and after
installation.
Wear safety glasses if you are working under any conditions that could be hazardous to
your eyes.
Do not perform any actions that create a potential hazard to people or make the
equipment unsafe.
Never install or manipulate wiring during electrical storms.
Never install electrical jacks in wet locations unless the jacks are specifically designed for
wet environments.
Operate the device only when it is properly grounded.
Ensure that the separate protective earthing terminal provided on this device is permanently
connected to earth.
Replace fuses only with fuses of the same type and rating.
Do not open or remove chassis covers or sheet-metal parts unless instructions are
provided in the hardware documentation for this device. Such an action could cause severe
electrical shock.
Do not push or force any objects through any opening in the chassis frame. Such an action
could result in electrical shock or fire.
Avoid spilling liquid onto the chassis or onto any device component. Such an action could
cause electrical shock or damage the device.
Avoid touching uninsulated electrical wires or terminals that have not been disconnected
from their power source. Such an action could cause electrical shock.
Always ensure that all modules, power supplies, and cover panels are fully inserted and that
the installation screws are fully tightened.
3
OVERVIEW
About building this robot:
The AR3 robot is an 6 axis robot project that is free and open source. The following manual is
provide so that people can build this 6 axis robot themselves. All software, print files and
manuals are available for download on the Annin Robotics website downloads page. All the
components you need to build this robot are outlined in Chapter 1. The assembly of the robot
arm is outlined in Chapter 2. The assembly of the electrical enclosure is outlined in Chapter
3..
• 3D covers and spacers (you must print these yourself) see chapter one “spacers and
covers” section.
• Structural components - You can print these yourself to build a 3D printed robot or you
can purchase an aluminum parts kit from the robot kits page to build your robot from
aluminum https://www.anninrobotics.com/robot-kits. There are 27 structural components –
see chapter one “structural components” section.
• Hardware components – this includes the bearings, belts, pulleys, sprockets, chain, shafts,
pins, machine screws and set screws. These can be purchased from multiple sources – see
chapter one “hardware components” section. If you have difficulty finding these component
or wish to buy them all in one place I buy them all in bulk and have made a hardware
components kit available on the robot kits page: https://www.anninrobotics.com/robot-kits.
• Stepper Motors and Drivers – the 6 motors, drivers and power supply are available
directly from Stepperonline, there is a link to this package on the robot kits page:
https://www.anninrobotics.com/robot-kits.
• Electrical components – You must source all of the electrical components shown in the
Electrical components section of Chapter 1. These can easily be purchased from places
such as Amazon or AliExpress. I currently don’t have an electrical components kit available
however I have had many requests and it is something I am looking into.
4
General Robot Assembly notes:
Tools Needed:
• General hand tools including metric hex key set, locking pliers, wire cutters, wire
strippers.
• Wire ferrule crimpers and wire ferrules.
• Soldering Iron and flux core silver bearing solder.
• Heat gun or lighter for shrink tubing
• 3D printer and printer filament.
• Various size drill bits for clearing holes in 3D printed components.
• M3, M4, M6 and M8 taps for threading plastic components.
• Epoxy is used for the J6 limit switch tip. Epoxy is also used in some areas of the robot
assembly when using 3D printed components.
Bearing Fit:
The CAD models for the AR2 robot are sized for a slight press fit on all bearing and race
diameters. The assembly steps in this manual also reference pressing the bearings and races
in place. Given customer feedback and the fact that most don’t have access to a quality
bearing press or hardware I have tried to make sure the aluminum kits offered are closer
to a slip fit. If bearings get improperly wedged or tilted and then attempt to press, severe
damage can occur. Given the opportunity for bearings to jam and permanently damage to
occur I have opted to try and provide kits that error on the side of a looser fit to avoid
part damage and frustration. If the tolerance stack up on your components results in a
race that is slightly loose please use a small strip of shim stock or wax paper to alleviate
any movement. A small dab of epoxy can also be used.
The bearing oil that comes on bearings should be sufficient lubrication given the low
speed and pressure of the robot joints. If additional lubrication is needed a very small
about of white lithium grease is recommended.
5
3D Printing Your Robot:
This manual shows the construction of the robot using aluminum for the main structural
components but the robot can also be constructed using all 3D printed components. The .stl
print files for all components are here: https://www.anninrobotics.com/downloads The
construction illustrated in this manual is the same using either aluminum or 3D printed
components - note the following details if using 3D printed components:
• 3D printed components require all threaded holes to be cleared with appropriate drill
size and then tapped.
• All printed structural components were printed at minimum 50% infill with the exception
of the J2 and J3 drive spindles and tension rings which were printed at 90%+ solid. Parts
were printed at 2mm layer height and 5 layer thick shells.
• All printed covers and spacers were printed at 20% infill at 2mm layer height and 5 layer
thick shells.
• The robots I have 3D printed were made using ABS at 220° nozzle temperature. I have
not personally tried using other materials but I have received feedback from numerous
people who have used PLA, PET and carbon fiber reinforced filaments without issues.
• The J1 baseplate, J1 baseplate spacer and J2 arm larger than most 3D printer beds and
therefore are printed in 2 pieces and require being epoxied together.
• The J1 spindle is printed in 2 pieces and requires the center alignment plug be epoxied
into the end of the spindle – this is the center hub that centers the 60T timing pulley.
• The printed design calls for additional reinforcements to be epoxide in place around the
J1 base and at the base of the J2 arm (see details at the end of this manual)
• The J4 tube cannot be 3D printed; if building a fully 3D printed robot you will need to cut
and drill aluminum tubing as shown in structural components BOM section of chapter 1.
• 2 spools of filament are needed for printing the primary structural components. A 3rd
spool is needed if you wish to print your covers and spacers in a different color.
6
Electrical Enclosure:
• 7th AXIS
Please note there are several steps that refer to an optional 7th axis travel track. The robot
itself only requires 6 drivers and 6 motor plugs/cables. If you would like to build your
enclosure to accommodate a 7th axis you can add a 7th driver as well as a 7th plug and cable
but it is optional.
• Enable Circuit
Please note this assembly manual does not show wiring of the enable circuit. The enable
circuit will likely not be used by most and is used to disable the motor drivers. The enable
circuit disables each of the motor drives when 5vdc is applied to the enable terminals on the
driver. Keeping safety in mind; if you have an application where the robot needs to be guarded
by a “fence” circuit or safety door you can run +5vdc to all the ENA+ terminals and then
-5vdc to safety switch, and then back from the safety switch to each of the ENA- terminals.
When the safety switch is made and -5vdc is passed through the switch to the DIN rail enable
terminal the circuit will be completed and the drives will be disabled. It is not necessary to
use the enable circuit. For simplicity in design and lowest cost I chose to wire the E-Stop
button to cut off 24vdc to the drivers. Most inexpensive E-Stop buttons are normally closed
but if desired you could alternatively use a normally open E-Stop button or relay wired to the
enable circuit rather than disrupting the 24vdc supply to the drivers.
Note the Arduino Mega and 8 channel relay board is not necessarily needed for the operation
of the robot itself. The Arduino Mega is a good low cost board that can accept 5vdc inputs
and outputs. The relay board has been included in the design for general purpose use or to
control a pneumatic gripper solenoid (please see chapter on Robot Gripper). The 8 channel
relay board can be used to control any higher voltage device or actuator that you may need
the robot to control.
This manual shows mounting the control boards in a 3D printed raised mount. It also shows
soldering female PCB pin headers to the Teensy 3.5. Alternatively you can use the Teensy 3.5
with male pins and a breadboard if desired. I prefer not to use breadboards and would rather
take the time to solder the female pins in place, as of this point in time the Teensy 3.5 is not
available with female header pins.
7
Using Braided Sleeve
Several Steps in this
manual will call for braided
sleeve to be placed over
electrical wires. Make sure
that as soon as you cut any
braided sleeving you use a
lighter or flame to carefully
melt the ends of the sleeve
as shown.
Please note that stepper motors when not powered will go limp or drift downward and
not always support the robot arm to stay in position when unpowered. When the
robot is not powered on it should always be parked in a vertical position with J2
straight up and then J3 straight up – In the vertical position the robot will not go limp
or fall over when the motors are not powered. When the robot is powered and the
motors are energized there is no issue, the robot will be completely rigid and it wont
be an issue to leave the robot in any position you like. During the assembly process you
may experience the robot going limp or starting to fall over – this is normal and is not
an issue, just try and keep the robot arms vertical or support the arm on an object such
as a cardboard box or wood dowel if drift is experienced.
12
CHAPTER 1
BILL OF MATERIALS
13
Structural Components
Parts shown are made from aluminum but you can also 3D print the
structural components if you are building a fully 3D printed robot. See
downloads page https://www.anninrobotics.com/downloads for .stl print
files. (see note below on J4 main shaft as this part cannot be 3D printed)
J1 SPINDLE J1 PLATFORM
14
J2 TURRET HOUSING J2 ARM
15
J1 & J3 MOTOR MOUNTS J2 MOTOR SUPPORT
16
J3 SPINDLE RETAINER J4 TURRET HOUSING
17
J4 TIMING HUB J4 MOTOR MOUNT
18
J5 BEARING POST J5 IDLER TENSION BLOCK
19
J6 BEARING CAP J6 GRIPPER MOUNT
Note on J4 Main Shaft: If you are building a 3D printed robot and do not have aluminum
parts you will need to purchase a length of aluminum tubing, cut and drill as shown in this
drawing. 1” OD .035” wall thickness tubing is available from McMaster Carr #1968T17 or
can be sourced from other online metal supply retailers.
20
Covers and Spacers
You will need to 3D print the robots covers and spacers. See downloads page
https://www.anninrobotics.com/downloads for .stl print files. Covers and
spacers can be printed in any color of your choosing – in this robot build I
have chosen white covers and red logos.
21
J2 UPPER AND LOWER ARM COVER J5 SIDE COVER
SPACERS
22
J6 LIMIT SWITCH TIP J2 & J5 ARM COVER LOGOS
23
Hardware Components
All Bearings, belts, chains, pulleys, sprockets, keys and screws are available
on the robot kits page or can be sourced from various suppliers.
Qty. (2) 32009 (45x75x20mm) taper roller Qty. (2) 30206 (30x62x17.25mm) taper
bearing for J1 - Sourced from Amazon or roller bearing for J2. - Sourced from
Ali Express Amazon or Ali Express
Qty. (1) HK1612 (16x22x12mm) needle Qty.(2) 3mm x 85mm shaft (you only need
roller bearing for J5 belt idler - Sourced 2 but they are typically sold in lots of 10 or
from Amazon or Ali Express more and are typically 100mm long) – you
will need to cut them down to 85mm long. -
Sourced from Amazon or Ali Express
Qty.(4) LM3UU 3mm linear rod bearing Qty.(1) 688Z (8x16x5mm) groove ball
(you only need 4 but are typically sold in bearing bearings (you only need 1 but are
lots) - Sourced from Amazon or Ali Express typically sold in lots) - Sourced from Amazon
or Ali Express
Qty.(1) 30203 (17x40x13.25mm) taper
roller bearing for J6 - Sourced from Amazon or
Ali Express
Qty. (1) 180XL037 belt for J1 - Sourced from (2’ length) 04B 6mm roller chain for J3 –
Amazon or Ali Express Sourced from McMaster Carr
Qty.(1) 04B link for 6mm chain for J3 – Qty.(1) 84XL037 belt for J4 - Sourced from
Sourced from McMaster Carr Amazon or Ali Express
Qty.(1) J5 belt - Sourced from Amazon or Ali Qty.(1) 60T XL pulley for J1 - Sourced from
Express Amazon or Servo City (there is also a 3D print file
for this but I have not tested the 3D printed part
in a built robot)
NOTE: the Annin Robotics hardware kit comes
with a machined aluminum version of this pulley.
Qty.(2) XL 15 tooth 8mm bore pulley (1 for Qty.(1) XL 10 tooth 6mm bore pulley for J4
J1 and 1 for J6) – Sourced from Ebay – Sourced from Ebay
30
Stepper Motors https://www.omc-stepperonline.com/
All motors are available from Stepperonline. There is a link on the robot kits page to
a complete discounted motor, driver and power supply kit from Stepperonline.
J1 motor
SKU: 17HS15-1684D-
HG10-AR3
J2 motor
SKU: 23HS22-2804D-
HG50-AR3
J3 motor
SKU: 17HS15-1684D-
HG50-AR3
J4 motor
SKU: 11HS20-0674D-
PG14-AR3
J5 motor
17LS19-1684E-200G-AR3
J6 motor
SKU: 14HS11-1004D-
PG19-AR3
250W 24V 10A 115/230V
Switching Power Supply
https://www.omc-stepperonline.com/
DM320T digital stepper
driver.
https://www.omc-stepperonline.com/
Electrical & Misc. Components
Arduino Mount:
https://www.phidgets.com/?
tier=3&catid=30&pcid=26&
prodid=169
8 channel 5vdc relay
module.
55
Use M4 tap to thread (2)
holes as shown in J1 base
enclosure part 1
Switch 1 = Off
Switch 2 = Off
Switch 3 = Off
Switch 4 = On
NOTE: be extremely
careful when scoring the
sheathing that you don’t cut
through and damage the
wires.
Carefully re-install J2
gearbox motor shaft
bearing assembly as shown
and tighten the M4 cap
screws.
Switch 1 = Off
Switch 2 = Off
Switch 3 = Off
Switch 4 = On
Switch 1 = Off
Switch 2 = Off
Switch 3 = Off
Switch 4 = On
Secure the J3
motor/encoder wire bundle
to the J3 encoder wires
with small cable tie (red
arrow).
Cut length of ½” braided
sleeve to length of 51cm
(20”) long.
DO NOT FORCE
BEARINGS OVER RODS
• the inner ball bearings
can be dislodged if
forced.
If variation / tolerance in
either bearings, rods or rod
surface finish result in a
slightly tight fit or a rough fit
use a drill and scotch-brite
or fine steel wool to polish
rods – make sure rods slide
into bearings easily and
smoothly.
Install (4) LM3UU 3mm
shaft bearings into J5
carrier.
Switch 1 = Off
Switch 2 = Off
Switch 3 = Off
Switch 4 = On
Secure J4 limit
wires/sleeve to J4 motor
wires with small cable tie
(red arrow).
Switch 1 = Off
Switch 2 = Off
Switch 3 = Off
Switch 4 = On
Make sure J5
motor/encoder wires have
an arch that is 3cm (1.25”)
higher than the J4 wires
arch.
Depending on
manufacturer or supplier
stock availability the OD of
XL15 flange may vary.
This is a non-critical
dimension, it just needs to
fit inside the J5 spacer.
Rotate J6 housing to an up
angle so that the motor
side is down. (note blue
arrow – motor mount screw
hole is down)
Switch 1 = Off
Switch 2 = Off
Switch 3 = Off
Switch 4 = On
If installing a pneumatic
gripper now is the time to
run the air lines.
206
Install backplane into
enclosure using (4)
supplied screws.
Rectangle should be
centered in side panel of
enclosure and be .75”
(19mm) down from top.
On front panel of enclosure
mark (2) points as shown.
Points should be 1”
(25.5mm) apart.
Point should be 4”
(102mm) from bottom.
Mark point in upper left
corner of door as shown.
BLACK = A+
GREEN = A-
RED = B+
WHITE = B-
This picture shows a close
up view of each wire
connected to one of the
drivers.
Secure Arduino/Teensy
mount assembly to
backplane using (4) #6
thread forming screws in
position shown.
Cut yellow, blue and red
Ethernet cables to length of
50cm (20”)
Black wire:
Teensy pin 0 to driver
PUL-
White wire:
Teensy pin 1 to driver
DIR-
Connect a pair of
breadboard jumper wires
(grey & purple)
From Teensy 3.5 to the J2
driver.
Grey wire:
Teensy pin 2 to driver
PUL-
Purple wire:
Teensy pin 3 to driver
DIR-
Connect a pair of
breadboard jumper wires
(blue & green)
From Teensy 3.5 to the J3
driver.
Blue wire:
Teensy pin 4 to driver
PUL-
Green wire:
Teensy pin 5 to driver
DIR-
Connect a pair of
breadboard jumper wires
(yellow & orange)
From Teensy 3.5 to the J4
driver.
Yellow wire:
Teensy pin 6 to driver
PUL-
Orange wire:
Teensy pin 7 to driver
DIR-
Connect a pair of
breadboard jumper wires
(red & brown)
From Teensy 3.5 to the J5
driver.
Red wire:
Teensy pin 8 to driver
PUL-
Brown wire:
Teensy pin 9 to driver
DIR-
Connect a pair of
breadboard jumper wires
(black & white)
From Teensy 3.5 to the J6
driver.
Black wire:
Teensy pin 10 to driver
PUL-
White wire:
Teensy pin 11 to driver
DIR-
Connect a pair of
breadboard jumper wires
(grey & purple)
From Teensy 3.5 to the J7
(optional travel track)
driver.
Grey wire:
Teensy pin 12 to driver
PUL-
Purple wire:
Teensy pin 13 to driver
DIR-
• Black to pin 28
• White to pin 29
• Grey to pin 30
• Purple to pin 31
• Blue to pin 32
• Green to pin 33
• Yellow to pin 34
• Orange to pin 35
This diagram shows
connection of the (8)
jumper wires to pins 28
through 35 of the Arduino
illustrated in the previous
step.
J1 – (DM542T):
SW1 = OFF SW2 = ON SW3 = ON SW4 = ON
SW5 = OFF SW6 = ON SW7 = ON SW8 = ON
J2 – (DM542T):
SW1 = OFF SW2 = OFF SW3 = ON SW4 = ON
SW5 = OFF SW6 = ON SW7 = ON SW8 = ON
J3 – (DM542T):
SW1 = OFF SW2 = ON SW3 = ON SW4 = ON
SW5 = OFF SW6 = ON SW7 = ON SW8 = ON
J4 – (DM320T):
SW1 = ON SW2 = OFF SW3 = ON
SW4 = ON SW5 = ON SW6 = ON
J5 – (DM542T):
SW1 = ON SW2 = ON SW3 = ON SW4 = ON
SW5 = ON SW6 = OFF SW7 = ON SW8 = ON
J6 – (DM542T):
SW1 = ON SW2 = ON SW3 = ON SW4 = OFF
SW5 = OFF SW6 = ON SW7 = ON SW8 = ON
278
NOTE: If using a 7th joint travel track (nema 17) use the same setting as J1.
CHAPTER 4
SCHEMATICS
279
Wiring for Drivers and Teensy 3.5
280
Wiring for Encoders
(Enclosure side)
Wiring for
Encoders
(Robot side)
Wiring for Limit Switches
Wiring for Arduino Mega 2560
Note that the wire colors for
the J5 motor are different
from the other motors.
286
If using a servo gripper you would connect your servo to
one of the Arduino analog pins 0 through 7 and then use
the “Servo” position command button to control your
gripper.
287
If using a pneumatic gripper you would connect a
24vdc solenoid valve to one of the relay outputs
(Arduino outputs 28 through 36) and then use the
“Set Output On” and “Set Output Off” commands to
program relays to control your gripper.
288
Solenoid valves for controlling pneumatic grippers tend
to interrupt the serial connection to the controller. If
you find the Teensy or Arduino are losing connection
when the solenoid valve actuates install a flyover diode
across the solenoid terminals (revers bias).
https://en.wikipedia.org/wiki/Flyback_diode
289
CHAPTER 6
ROBOT SPECIFICATIONS
290
Reach – 24.75 inches (62.9cm)
Payload – 4.15 lbs (1.9kg)
Repeatability - .2mm
Robot weight (aluminum) – 27lbs (12.25kg)
Enclosure weight – 12.5lbs (5.6kg)
Max Power Consumption – 8.25amp (198 watts)
291
CHAPTER 7
STARTUP PROCEEDURE
292
AR3 Robot Startup & Troubleshooting
Before powering up your control box double check all connections per the wiring schematic.
Check continuity on all wires and connectors for each motor, encoder and limit switch. It is
imperative that all wire connectors are crimped or soldered carefully and checked with a volt
meter.
It is recommended that you plug in each of the (3) Ethernet cables prior to plugging in the
USB port for the Teensy 3.5.
Use (3) high quality shielded Ethernet cables and connect the enclosure encoder and limit
switch ports to the robot encoder and limit switch ports as shown in the diagram below:
293
Connect the motor extension cables and 5vdc power cables from the control enclosure to
the robot base as corresponds to the numbers shown below.
294
Connect (2) USB cables from PC to enclosure as shown below.
295
As shown in the setup video follow the instruction on this page to
install the Teensyduino loader software:
https://www.pjrc.com/teensy/td_download.html
https://www.arduino.cc/en/main/software
Download and open the ARCS control software then set the com
ports on the main controls tab for both the teensy 3.5 and the
Arduino Mega 2560.
Before attempting to auto calibrate the robot jog each axis using
joint mode a small amount in each direction.
Verify each joint is jogging the correct direction per the joint
direction drawings at the end of this document.
If a joint does not move at all but others do you likely have an issue
with the step wire from the Arduino to the driver.
296
Do not use the auto calibrate button the first time, calibrate each
joint one at a time using the individual joint calibration buttons.
Have your hand on the E-Stop button the first time so that you
can stop the robot and cut power if there is an issue with each
limit switch and the robot tries to overdrive the joint.
You can also manually trigger the switch with your finger before
the robot contacts the switch to give you extra time to hit the E-
Stop in the event there is a wiring issue and robot doesn’t stop
moving when the switch is made.
https://www.anninrobotics.com/tutorials
297
298
299
CHAPTER 8
ROBOT PROGRAMMING
1. COMMUNICATION
2. SPEED / ACCELERATION /
DECELERATION
3. JOGGING
4. PROGRAMMING
5. CALIBRATION
300
1. COMMUNICATION
Determine which com port your Teensy 3.5 and Arduino Mega is
communicating on, you can find this Using Windows device
manager, or you can open the Arduino sketch and click on the
tools menu and then click on Port. Enter this in the "COM PORT"
entry field for the device and click "Set Com". You should only
have to do this once as the software will remember which com
port the next time you open it.
301
2. SPEED / ACCELERATION / DECELERATION
302
3. JOGGING
In the degrees to jog box enter the number of degrees you wish
the robot to move and then press the corresponding "-" or "+"
button to move each joint. When jogging in joint mode You can
also jog the robot in individual motor steps by checking the "Jog
joint in steps" radio button. The second row of jog buttons allow
you to jog the robot in Cartesian coordinates; enter the distance
in millimeters you wish the robot to move and press the
corresponding "-" or "+" to jog the robot. The third row of jog
buttons allow you to jog the robot in tool coordinates; enter the
distance in millimeters you wish the robot to move and press the
corresponding "-" or "+" to jog the robot - this jogs the robot
according to the gripper: think of it as jogging the gripper around
depending on whatever direction it is oriented.
You can also jog the robot using an Xbox controller. Install the
Xbox software per the windows PC Xbox controller adapter
directions. To test it In the Windows start menu type joy.cpl and
then click on the menu option for the Xbox controller, this will
bring up a window that you can verify all the buttons are working.
In this AR2 software click the Xbox button, the indicators on the
screen should turn green and allow you to jog the robot per the
button list in the next section. When you turn on Xbox control all
jog distances are set to start at 5. All jogging is done with the D
pad (analog sticks are not used). There are 3 modes for Xbox
jogging - joint, Cartesian and reorient. The controller starts in joint
mode where the D pad will start out controlling J1 and J2, you can
then press the X button to shift to control J3 and J4, then press X
303 to shift to J5 and J6.
again
Press the A button to shift to Cartesian jogging, you then can
jog axis X and Y using the D pad. Press the X button again to
shift to axis Z. Press the B button to control orientation
directions.
304
3. PROGRAMMING
a. Teaching Positions
Always select row in program window where you want the next
move or instruction to be placed. From the move type drop down
button select the move type you wish to insert and then press the
"Teach New Position" button to insert the position into your
program. All moves will apply the speed, acceleration and
deceleration setting you have set to the move. Position move types
are as follows:
305
- Move A - Move A is an arc move. You must teach 3 points to
form an arc. First select "Move A beg" and teach the start point
for your arc - the speed and orientation values for this first point
will be applied to the entire arc move. Second you need to teach
any mid-point on the arc - select "Move A Mid" and teach the
second point. Finally select "Move A End" and teach the point you
want at the end or your arc. Your command window will now have
3 lines of code in a row for each of the 3 points. When a "Move A
Beg" line of code is executed the program will automatically run
the next 2 lines of code to calculate the arc. The move will not
work if these are out of order. There is a couple second delay
before the Move A will execute while all waypoints to form the arc
are being transmitted to the Arduino.
306
. Your command window will now have 3 lines of code in a row
for each of the 3 points. When a "Move C Start" line of code is
executed the program will automatically run the next 2 lines of
code to calculate the circle. The move will not work if these are
out of order. There is a couple second delay before the Move C
will execute while all waypoints to form the arc are being
transmitted to the Arduino.
307
- Move SP - SP stands for stored position. In the registers tab there
are 16 stored positions you can set. You can set or save the
X,Y,Z,Y,P,R for any position you want to execute later or multiple
places in your program. When you teach a Move SP the robot will
move to the position you have entered for the stored position on
the register tab. *Stored positions can also be used for offsets - for
example if you want the robot to come in above your part you may
want to use an offset move with a stored position 25mm up in the
Z direction - example: (0,0,-25,0,0,0).
308
- Teach SP - this move command will insert 6 lines into your
program which when executed will store the robots current
position into a stored position register of your choice. This makes
it easier to populate stored positions as you need.
The Stored Position button will allow you to enter lines of code
that set individual elements of the X,Y,Z,Y,P,R in a stored position.
The modify position button is only used with Move J and allow
you to modify the Move J line in your program that is currently
highlighted.
The Delete button allows you to delete any line of code that is
currently selected.
b. Pausing
- The wait time button inserts a line that will pause the program
for the amount of time entered in seconds.
- The wait input on button will wait for the Arduino input entered
in the entry field to come on before moving forward in the
program. This can be used as a way to make the robot wait for
something else to happen before proceeding or it can be placed at
the beginning of a program as a way to have an automated start
signal.
- The wait input off button will wait for the Arduino input entered
in the entry field to turn off before moving forward in the
program.
309
c. IO
- The set output on or set output off buttons allow you to insert a
line of code that will turn Arduino IO of your choice on or off (see
bottom on input outputs tab for available IO pins on the Arduino
Mega). For example, if you have a pneumatic gripper you would
hook up your solenoid per the wiring harness manual to output
Arduino pin #38 and ender a line of code "Out On = 38" to
control your gripper.
d. Navigation
You can create as many program routines as you like. Enter the
name of the program you would like to create in the program field
and press "load program", if the program does not already exist it
will be created, if you have already created a program of that name
it will be loaded. Programs are created in your AR2 software folder
and can be deleted from that file location if no longer needed.
- The "Call Program" button allows you to insert a line of code that
calls a program.
- The "Return" button inserts a line of code that will allow the
called program to return to the program it came from. *note you
cannot call another program from within a program that has already
been called, you must return to the main program before calling
another program. For example, you will likely want to create a
program called "Main" from that program you might call a program
called "Pickup Part" at the end of pickup part you will want to
insert a "Return" line to get back to the "Main" program, then you
can do other things or call other programs. You cannot call another
program from "Pickup Part" you must first return to the main
program.
310
- the "Create Tab" button allows you to create markers in your
program that you can jump or navigate to based on conditions.
*note you cannot have 2 tabs with the same number - each tab
needs a new number. This functionality is very similar to basic
programming.
- The "Jump to Tab" button allows you to jump to a tab, for example
you could put "Tab 1" at the top of your program and at the
bottom put a "Jump to Tab 1" and then your program would loop
indefinitely.
The "If Register Jump" button allows you to jump to a tab based on
the condition of a register. For example you could have a looping
program as previously described but then add a line into your
program that increments a register and then add a line prior to
"Jump to Tab 1" that says "If Register 1 = 5 Jump to Tab 2" and then
place a "Tab 2" at the very bottom after "Jump to Tab 1" so that the
program will run 5 times and then jump to Tab 2 and stop.
311
e. Registers
The "Register" button allows you to set a register to a static value
or you can add a "++" before the number and the register will then
be incremented by the amount. For example, if you just enter a "1"
it will always set that register to a value of 1 but if you enter "++1"
it will then increment that register by 1 every time the line is run
so that you can use this for counting. You can enter any number, for
example you could enter "++3" and count by 3's if you like. The
same is true for counting down or decrementing - just place a "--"
before the number.
f. Servos
The Servo button allows you to control external servos - it’s not
for the robot itself, it’s for use if you have a servo gripper or a
servo actuator that you want the robot program to control. For
example, if you had a servo gripper that you had hooked up to
Arduino pin A0 per the wiring harness manual you could then
insert a line of code "Servo number 0 to position: 180" to open the
gripper and "Servo number 0 to position: 0" to close your gripper.
312
g. Editing lines of code
You can select a line of code in you command window and then
press the "get selected" button, this will copy that line into the
manual entry field. You can now edit the line of code in the manual
entry field, some examples might be: changing the stored position
number, changing a position, changing the robot speed or
acceleration. Now with your edited line of code you can reselect
the original line of code in your command window and then press
the "replace" button and the old line of code will be replaced with
the new edited line. The "insert" button will insert the test from
the manual entry field into your program without replacing - you
can use this to insert comments or hand written lines of code using
the insert button, this can be used to copy a line of code from the
program and then paste or insert in in numerous places in the
program.
313
4. CALIBRATION
a. Auto Calibration
Pressing the auto calibration button will auto calibrate all axis. The
robot will run to its full limit in the default directions and set each of
the joint values accordingly. You can also use the individual buttons
to calibrate each axis one at a time.
314
c. fine calibration
This feature allows you to set a reference position, so you can
check how true your calibration is given an event where you have
a bent limit switch or must replace a part of the robot. For
example, you can jog the robot to some reference position that
you know, perhaps with the robot holding a pointer and going to a
known spot, you could then press "teach fine calibration position"
to save this position. Then later you can press "Go to fine
calibration position" to return to the originally taught position and
check accuracy. If its off, you can jog the robot in small steps to
the correct calibration position and then press "execute fine
calibration" and your calibration will be adjusted to the original
reference position.
d. Direction Defaults
the calibration defaults are set to the side of the axis that the limit
switch is mounted on. If for example you were building your own
custom robot you could change these values to change the
direction the robot drives each axis to the calibration limit switch.
there are 6 values - one for each joint and they can only be a "0"
or "1" for negative direction or positive direction.
The motor direction outputs work in the same way and allow you
to change to motor drive direction from clockwise to
anticlockwise if you are building a custom robot and your
mechanics require a motor to spin the other way. again, there are
6 values - one for each joint and they can only be a "0" or "1" for
negative direction or positive direction.
315
e. Robot Calibration Values
The calibration values allow you to input the freedom of motion
for each joint and the number of stepper motor steps to make
that stroke happen. If building your own custom robot, you could
change these values to match your custom range of motion and
stepper gearing.
5. IO TAB
The buttons on the IO tab are simply a shortcut for you to quickly
toggle servos or outputs. For example, if your gripper was wired to
Arduino output #38 you could enter 38 into one of the "DO ON /
OFF" fields and quickly open and close your gripper without having
to execute a line of code from the program console.
316
CHAPTER 9
OPEN LOOP VERSION (AR2)
317
There are a couple reasons one might want to build an open loop version of this robot. You
may have already built the AR2 and would like to upgrade your wiring as well as covers and
spacers to the AR3 version without the expense of purchasing dual shaft motors, or you may
want to save some money and not incur the added cost of the encoders. If you would like to
build the open loop version of the AR3 you can do so by following the instructions below:
• Follow chapter 2 on the robot assembly but skip each step that involves the installation
or wiring of the encoders.
• The 5vdc wire bundles would only have 6 wires instead of 12.
• Build the AR2 electrical enclosure as shown in the AR2 manuals but add the 5vdc GX16-2
aviation plug to your to your enclosure as shown in this manual. You would wire +5vdc
and -5vdc from the 5vcd power supply to the GX16-2 plug.
• Install and run the AR2 software as well as the AR2 arduino sketch for the Arduino Mega
as shown in the AR2 instructions.
318