Theory of operation (How does it work?)
The Servocore was created to act like a standard Bicore but instead of controlling a DC motor, it controls a servo. A standard servo works on the basis of pulse width modulation, which is a pulsed signal sent to the servo. The longer the pulse, the greater the rotation the servo tries to attain. When the pulse “shrinks” in duration, the servo rotates the other direction. The Servocore works using 3 Bicores; two to set the left and right rotation limits, and one to regulate the time interval between rotating to these left and right limits.
On the BEP Servocore board, you’ll find two 20K potentiometers that control the end stop positions. R8 controls how long it will wait to go between these positions. The signal that controls the time for left/right positions of the front servo are also sent via an IMx signal multiplexer (reverser) to the rear Servocore. When the walker tactile sensor activates the IMx, the IMx inverts the signals so the phase between the front and back servos is shifted, causing the walker to reverse.
Not crazy about bitmaps? Us neither. Try a nice, vector PDF file!
Gather all your parts:
You can get all the parts you need here.
- 2 – Sc1 BEP boards
- 1 – IMx BEP board
- 1 – CHG BEP board
- 1 – 25c BB1 BEP board
- 2 – BEP Leg mounting pads including 6 mounting screws
- 2 – Pair of 3mm Sintra cut outs to hold the servos at a 45 degree angle to each other (change to suit your preference)
- 2 – 74HCT240 for the Servocores. These must be the HCT versions to work properly.
- 1 – 74AC240 for the IMx multiplexor. For this project we also used a HCT version for consistency (makes no matter to the IMx operation).
- 4 – 2N3906 or 2N2907 transistors
- 4 – 0.47µF capacitors
- 8 – 0.1µF capacitors
- 2 – 22µF capacitors for power filtering
- 4 – AAA Ni-Cad batteries
- 2 – Dual AAA battery holder
- 1 – 6.8µF capacitor (Backup timer cap)
- 6 – LEDs, All the same colors or all different. You decide!
- 2 – 16 inch pieces of thick copper leg wire (8ga solid)
- 8 – Sip sockets (for easy resistor swapping)
- 2 – Servos, must be unmodified, with brains intact!
- 2 – Tactile sensors
- 1 – Power switch
- 1 – 1.3mm Barrel jack (optional for charging batteries)
Resistors (Not all shown in image)
- 4 – 20K potentiometers (Sets limits of servo travel)
- 10 – 1K resistors
- 6 – 100K resistors
- 2 – 10K resistors
- 2 – 47K resistors
- 2 – 1.5M resistors (Slave value resistors)
- 2 – 100 ohm resistors (Sets charge current limit)
- 1 – 470 ohm resistor
- 1 – 1M resistor (Sets backup time)
- 1 – 2.2M/2.4M resistor (Master Bicore frequency resistor)
Prepare the BEP boards
Separate the boards needed to build the walker. It works out that the needed boards are located right in the middle of the full BEP board. Set the snap line on a table edge and apply pressure until the score line starts to break. Do this to separate a column consisting of an IMx, a BC1, another IMx followed by a pair of Sc1’s, and at the very bottom is a quarter sized BB1 and a CHG board.
To build this project, all that is really needed is the IMx, a pair of Sc1 boards and the bottom BB1 and CHG boards. The top two boards can be broken off. Don’t forget to include a pair of leg mounting pads!
Populate the BEP modules
Now we begin to populate the boards. Feel free to use chip carriers instead of soldering the chips directly to the PCBs. Please make careful note that 74HCT240 chips are used, not the 74AC240 chips (except for the Imx if you wish). The Sc1 Servocores will not work properly with 74AC240 chips! This is due to the internal wiring of the AC style chip. You cannot make Bicores running at different frequencies on the same 74AC240 without them starting to interfere with each other. This isn’t a problem with the HCT version (but the HCT doesn’t have the output current the AC does).
Only half of the IMx board is populated, and the tactile sensors will be attached in parallel so when either sensor is triggered, it will follow the same behaviour.
Pin sockets have been placed in the following positions: R4 on the IMx, R8 on both Sc1’s and 2 pins on the BB1 board.
Servocore installation detail
This is a close up shot of the Sc1
IMx Multiplexer installation detail
This a close up shot of the IMx. Take note that only half of the IMx is being used, as we’re only swapping two signal lines, not four.
Let’s switch tracks and work on the body of the walker. The sintra plastic suppot is cut at an angle of 45 degrees, and the servos glued to the sintra with superglue or epoxy. The 45 degree angle was chosen to give the walker a good climbing ability combined with decent speed. Want more speed? Lower the angle so the servos are almost on the same angle. More climb? Make them 90 degrees to each other!
Brain meets body!
Now comes the marriage between brain and body. The front IMx Board will need to be angled at 45 degrees to match the angle of the front motor. This is accomplished by breaking the board at the score line angling it upwards then re-enforcing this break by soldering leads between the two boards. Don’t glue the boards down yet, we still need to run a few wires under the board.
Take note that there is a jumper in the middle connecting the +Vcc line from one module to the next, and a solder bridge connecting the two ground pads on the corners. These are necessary to electrically and mechanically attach the two boards together.
Another jumper needs to go between the +Vcc lines of the two Sc1 boards. Most boards already share a common ground, but to provide power to all boards at once, a jumper needs to be in place connecting all the +’s together.
Connecting modules – Front Sc1 to IMx
Once the board is set at the angle to match the front motor, we need to run five (5) wires between the BEP boards. The first pair of blue wires connect the output of the master Bicore to the input of the IMx.
The top image shows the connections to the outputs of the master Sc1.
The bottom image show the connections to the inputs of the IMx.
Power / Charger
The last wire (white) hooks up the power to the CHG this allows the power to be switched on and off. This wire runs from the center +Vcc pad on the rear Sc1 to the pad right beside the pad marked Batt +.
Initial Servocore testing
It’s a good habit to test the modules before it’s too late to fix them. Just for testing purposes, insert a 3 pin header into the servo hookup on a Sc1 board. This pin header does not need to be soldered in, light pressure should be enough to make electrical contact.
Choose an arbitrary value to use for the back and forth oscillations (2M works fine) and install it in the spot marked R8. Power will also be necessary to test the board, so use a quad pack of AAA batteries or attach to a power supply delivering 5V to the center rail (+Vcc) and the corner edge (-ground).
If your test is successful, your servo will jitter, and rotate to one position, wait, then rotate back.
While we’re testing, try force triggering the IMx to make sure its swaps the Sc1 signals. Do this by shorting the large rectangular pad near the top left and the smaller pad near the middle.
If nothing is working, skip ahead to the troubleshooting section at the bottom. Don’t progress further until your modules are behaving like they should be!
Mounting brains to the body
If everything appears to be working with the brain, you can attach it to the body. You may want to hold off on gluing down everything to make soldering a bit easier.
Attaching the rear motor to the back Servocore
Attach the rear motor to the back Servocore. The white wire goes to the square pad, red wire goes in the middle, black goes to the far left pad. If in doubt, the connections are marked in text on the board.
Attaching the forward motor to the front Servocore
Solder the front servo motor connections in the same manner you soldered the rear servo in the previous step.
This image also shows the ground connection from the battery to the PCB (detailed in the next step).
Connecting the battery pack negative lead
Wire up the negative side of the battery pack to the ground side of any BEP board, but go for the closest point available. Less wire used means more voltage available to the circuit as less voltage is dropped across the wires.
Wiring up the battery packs in series
Run a wire between the two battery packs, connecting them in series. This changes a pair of 2.4V packs into one large 4.8V pack.
Connecting the battery pack positive lead
The second image shows the red wire from the battery pack goes to the pad on the CHG board marked as “Batt +”.
At this point all electrical connections are made and flipping the switch should start the motors moving. Make sure that the batteries have a sufficient charge and that some default biasing resistors are in place. For default values try 1M for the IMx reverser, 2.4M for the suspended master resistor and 1.5M for the slave value resistors.
So the walker is now only missing one vital component… LEGS!
Start by stripping a section 1.5″ across in the middle of the leg wire, then solder on the leg mounting pad. As can be seen in the image, clipped resistor leads were used to tie down to keep the leg from moving while soldering. Due to the large metal mass of the copper leg wire, we recommend using a high-power soldering gun for this step. After the leg is soldered, screw down the mounting pad to the servo horn, then screw the servo horn onto the servo. Try to arrange the servo horn so it sits approximately 1/2 through the full servo left/right travel arc.
Walker leg shaping / Servocore setup
Walker leg profiles are bit of a black art. The longer you experiment with it, the better you’ll get. For this walker, we used the following recipe:
Front leg first bend 1 inch from servo horn, second bend 3.5 inch, last bend to ground 3 inch. Back leg bend 3.25 inch from the leg mounting pad bend from ground is 4.25 inch. Rubber feet were added to the leg contact point to provide better grip.
With this basic leg shape in place, turn on the walker and watch it flail about. Using the Sc1 trimpots, tune the left and right rotation limits for each motor so that they’re approximately the same. When you have the same amount of left/right rotation, your walker should be able to move in a generally straight line. If not, tweak the leg geometry and the rotation limits.
When it’s travelling straight, try changing the master bias resistor on the forward Sc1 to make the duration between leg left/right movements faster and slower. You’ll be surprised at what a difference to the performance it will make! Experiment, and have fun with the tuning process.
Now it walks great, but attempts to go through walls instead of backing away… we need some tactile sensors!
This is one way of doing the tactile sensors: the spring is part of the whisker that gets soldered to the large ground pad, and the brass pin is soldered to the enable pad. When the enable pad gets pulled low (i.e.: connected to ground) the IMx is enabled and will swap the signal polarities to the rear Servocore. Heat shrink tubing is used to adjust the sensitivity of the tactile sensor and also to help prevent false triggering by isolating more of the pin from the sensor.
The lower images shows the pin is positioned in the middle of the spring whisker. Whichever way the spring gets deflected it will cause it to hit the pin, causing the walker to kick into reverse!
After sensors are installed it’s complete!
If a image is worth a thousand words is a movie worth a thousand images? Hmmm. Enough philosophy; here’s the movie (2.5meg MPEG-1).
- If no LED’s light up when power is connected, double check polarity and voltage of the power source or batteries.
- The Servocore is set up to give a range between the two end stops. The potentiometers should be able to make the servo hit both the stops on either side. If this can’t be done, try reversing what potentiometer sets which stop by setting the potentiometers on the opposite side they are on now. That was really confusing – sorry.
- Let’s try that again. Each trimpot can control either the left or right end stop position, as it depends on how far the resistance has been cranked. Try setting the left trimpot by rotating the adjustment screw all the way to the left (counter-clockwise) 20 turns, then back right 3 turns. Set the right trimpot by rotating it’s screw all the way to the right (clockwise) 20 turns, then back left 3 turns. The left trimpot should now set the left rotation limit, and the right trimpot the right rotation limit.
- If the walkers just takes short steps no matter what the potentiometers are set to then try increasing the master resistor to a larger value.
Hints, tips and useful advice
- Try to tune the walker for a maximum stride length without falling over, this will decrease the chance that the walker will get high centered as well as this increases its step height.
- Try tuning the walker for velocity by making rapid, short-arc leg sweeps. Set the left/right rotation to only 20 or 30 degrees, and lower the master Sc1 resistor value so it cycles back and forth quickly.
- The input voltage to charge the Ni-Cads should be around 7.2V, but can be as high as 12V. Any higher, and it could smoke up the resistors on the CHG board.
- March 26, 2002: Ah! Somebody actually built this BEP app! Check it out at http://breadboard.solarbotics.net/walk_01.html