I just finished building an AR3, which was a challenging experience lasting several months. It was successful, however, thanks to a lot of help from Chris Annin, and of course, a well-designed (aluminum) kit and a highly detailed installation manual. I had decided to use a servo gripper early on because I thought it would be quieter, and I didn't have a need for a powerful gripper. I just wanted to pass on my experiences in constructing it and getting it operational.
The servo gripper I used is a Robix plastic gripper, which is available on the web. It uses a standard 3-wire servo (+5V, Gnd, control) that is controlled by PWM. The Arduino has a servo library that is dedicated to controlling these servos (the software that gets loaded into the Arduino MEGA controller calls this library). The ARCS control software used with the AR3 has convenient methods for directly controlling the servo, both manually (via the Input Output screen) and in a program (via the "servo" button, which inserts a control statement in the program). In the AR3 installation manual, chapter 5, Chris talks about servo grippers briefly.
Mounting the servo-controlled gripper – The servo gripper will not directly mount to the J6 gripper mount piece so you need some sort of adapter as a go between. I designed and 3D printed an adapter that did the job nicely, using screws that came with the AR3 kit (note that because I either lost a few screws or they were not in the kit, I had to order another screw hardware kit (around $20 -- a good investment), so I had extra screws. The STL file for this adapter is attached below (note: I was unable to upload this STL file. If anybody wants it, please contact me at raykimber@comcast.net).
Wiring the servo -- The servo needs +5V (red wire), Gnd (black wire), and a control signal (yellow wire). These run back through the length of the AR3 arm to the wiring box at the base of the robot, and via a GX12-4 connectorized 6 ft cable, back to the power enclosure. Since the STL files for the 3D-printed wiring box doesn't have an extra hole for a servo gripper's GX12-4, you have to drill one yourself (also an extra one on the enclosure). I drilled one on the right side of the wiring box, close to where the J4-J6 wiring enters the box. Originally I ran AWG 22 (red and black) and AWG 18 (yellow) individual silicone wires from the gripper to the wiring box (this is what I had on hand), but because of a noise problem (see below), I removed them and substituted a shielded 3-conductor AWG 22 cable from the gripper to the wiring box. On this shielded cable I left the shield at the gripper end unconnected, and connected the shield at the wiring box end to the cable's black wire. The GX12-4 connectorized cable between the wiring box and the enclosure was made from the same 4-conductor cable used for the motor cables. Back in the enclosure, the red and black wires should be connected to the 5V power supply using the same red and grey DIN terminals as the ones used to power the relay board (the servo draws too much current and is too noisy for the the Teensy +5V power). The yellow wire gets connected to the MEGA's A0 pin (you can use A0 through A7, but why not use A0 for a single servo).
Operating the gripper -- Once the wiring is done as instructed from the AR3 installation manual, and the robot and enclosure are otherwise constructed, and the Teensy and Arduino MEGA have their software loaded, you can operate the gripper from the Input Output screen as a test using the Servo 0 buttons (this assumes the yellow wire is connected to the MEGA's A0 pin). On my gripper an entry of 30 opens the gripper fully and 180 closes it fully. So entering 30 in one Servo 0 button and 180 in the other allows you to control the gripper. Enter these same values (or whatever numbers are appropriate for your gripper) in the "position" value in the "Servo" button on the "Main Controls" screen to place a servo control command in your program. In the "number" field enter 0 through 7 corresponding to the pin number you're using on the MEGA (A0-A7) for the yellow wire.
Noise problem solved -- In my case, when I completed all the wiring using the individual red, black and yellow wires, and I fired up the AR3, I got no movement of the gripper. I tried both the manual method and using the servo command in my program -- nothing. I thought I heard a little servo "twitch" now and then, but no movement. Then I noticed that when I shut down the 24V motor power, the gripper worked perfectly, so I figured there was a noise problem. I replaced the three individual servo wires with a shielded cable from the gripper to the wire box and connected the shield to the black wire. I continued to use the same unshielded connectorized cable between the wire box and the enclosure, but I figured if this didn't work, I could always use a shielded cable back to the enclosure. In this case I would have terminated the robot cable shield on the GX12-4 jack metal housing and only connected the shield to Gnd back at the DIN rail terminals.
Anyway, this almost did the job. With the 24V power on, I was able to completely control the gripper. However, there were occasional gripper twitches, so I wasn't finished. I hooked an Oscope up to the servo wires (signal on the yellow wire and ground on the black) and saw the problem: With the 24V power off there was a clean pulse at 200KHz (the servo control), but with the 24V on there was a strong 1MHz pulse on the frequency display and some jitter. But I noticed that there was no physical twitching of the servo when the scope probe was attached. I figured that the capacitative loading from the probe (approximately 100pF) attenuated the noise enough to eliminate the twitches. I removed the scope probe and attached a 471pF capacitor between the yellow and black wires at the connector to the servo (see photo below) and this did the job -- full control of the gripper and no twitching.
I hope this was helpful.
Ray Kimber
agree, great input to me
Great info, thank you!