Away for a bit

For the next couple of weeks I shall be away on holiday in the Peak District, so I will not be able to make any progress on the modular robot, including blog posts.

Thanks for reading

New boards have arrived

The new boards

To produce the latest revisions of the modular robotics boards I again used OSH Park. Although their quality is of a very high standard, they are particularly slow and relatively expensive, so I may re-consider using a different PCB production service.


The most complex board previously was the Edgebot and this ironically required little work;

The new Edgebot PCB

However, with the motor controller I removed the voltage regulator as it is currently not required and using space, this allowed for a secondary trim-pot. The outline also had re-work as there would be no price difference (OSH Park charge for the bounding box area, not the actual area) while providing a larger area, therefore components were less constrained to layout;
The new motor controller

As the previous Photovore PCB did not seem to work at all and required a quick perfboard prototype, the PCB had to be completely re-designed;
The new Photovore PCB

I hope to assemble them in the next few days, I will post results on how that goes.

Hacked bumper mechanism

Having completed the new revisions of the circuit boards and sending them to be made by OSH Park, one of the few things that needs to be re-done/altered is the bumper required for operation as an Edgebot.

The hack, consisting of little more than a nail and rubber band

Previously it was unable to move backwards an forwards easily, this was because when you attached the bottom fastening plate, it sandwiched the slider between the bottom fastening plate and the top plate. I managed to fix this by applying a small amount of double sided tape to space the bottom fastening plate slightly and this provided the slider with enough room the slide relatively easily.

However, the micro lever switch does not have an adequate amount of force to push the slider forwards on its own. To fix this I made a slight hack to the design by adding a (blunted) nail through the back of the slider and attaching a small rubber band to the two screws either side of the newly added nail and the nail itself. This then provided a small amount of force to the slider to make sure that it is normally forwards, but with a small amount of pressure still allows it to move back and press the switch.

This hack will be implemented in the next version of the robot chassis.

I'm finally done with the ball caster wheel

The very last (hopefully) ball caster wheel

The final design uses a more simplistic approach than previous iterations. It incorporates only one through-hole turn slot, as opposed to at least two on previous versions, the reduction in tabs did not decrease the structural strength, moreover, it increased the soundness of the design as there were less weak points and the design did not protrude from the central rotation as much, therefore any forces on the caster wheel would have less of a lever effect on the acrylic. Another reason to reduce the footprint size was the fact that the original designs required large slots that would be a great distance from the central rotatory axis and they too far apart for the latest chassis design to accommodate.

It has been a few days since it was first laser cut and assembled and this version has withstood more pressure and force than any of the previous designs and it is yet to break, however, as I still only have one, I am reluctant to put it through a stress test to see how strong it really is. Although the material is white as opposed to the semi-opaque blue of previous versions, it is the same material and was ordered on the same day, so the increase of structural strength is purely design caused.


A side-on view shows that the ridges are still present

This design has a raised slot, meaning that the chassis would no longer be a flat bed and this would have to either be ignored, or more preferably, fixed another way. This would be likely to involve lowering the motor mounts at the back-end of the chassis, to raise the back-end of the robot. 

This design (v0.8) can currently be found on Dropbox.

Updated motor controller

The re-designed motor controller

The motor controller has had the largest update of all the boards, however the general function of the board remains the same.

On the schematic the voltage regulator was removed as it is not required for the current generation of boards as they all run on a standard 5v TTL signal that is currently provided by the battery pack, the voltage regulator and the complimentary components also took up a large amount of room, which could have been used for other components or to provide more space the current parts.


A secondary trim-pot has been added, this allows for control over the speed of both wheels, so that it can be calibrated to go in a straight line, or if you reduce the speed of both wheels evenly, you could make the robot go slowly. Minor changes to the bottom and top silkscreens were made to help make the pin-outs and board labelling easier to understand, especially when viewing the board from the top.


The perimeter shape of the board has been altered to make better use of the paid-for area (You pay for a bounding box at OSH Park, so any cut-outs would be costly) This was also required for the second trim-pot as there would not have been enough room previously. I was also able to re-arrange various components to allow for more space between parts. Due to the extensive amount of redoing the tracks on the board, no vias were required, and there is a large amount of room between the majority of the tracks. 


The increase in spare space on the board enabled me to move the PCB switch location to a more suitable position, so that it would not be obscured by the shields that would be stacked on top. A secondary switch pin-out was put onto the board, in parallel to the first, this would allow you to add an external switch on the chassis (for example) and could provide the user with more elegant switch in order to turn the robot on.


A single 2-pin header was added to the board, which, when a shunt (shorter) is put on, it would short the VCC and the forward control pins of both motors, this would cause the robot to move forwards to allow the user to calibrate the trim-pots to make the robot move forwards in a straight line.


One aspect of the motor controller PCB that is yet to be updated is the layout of the mounting holes, so that it would be impossible for the motor controller, and therefore the shields with inputs/outputs, to be incorrectly orientated on the chassis.


The motor controller Eagle files discussed in this post (v0.5) can be downloaded from Dropbox.

Updated Edgebot shield

The updated Edgebot shield

I made a small update to the modular Edgebot shield schematic, all that was involved was the re-placing of one of the stackable headers from a 6-pin to an 8-pin header, along with this, a few components required re-naming.

As for the PCB board side of the development, little changed as the stackable header had to be replaced and therefore a few local components had to re-located or moved slightly. Minor changed to the silkscreens were made to make the pin-outs easier to understand. There was also a minor amount of track rework to remove the two vias on the PCB.

The latest Edgebot shield (v0.7) can be downloaded from Dropbox.

Updated Photovore shield



The updated PCB board design

I have finally got round to re-designing the Photovore modular shield and as the previous circuit did not work at all, it required a complete re-work of all aspects the the board.

To draw the circuit schematic I performed continuity tests on all the pins in order to figure out where the various connections on the breadboard were, this then translated directly into the Eagle where I connected the components exactly as they were on the quick prototype.

I then moved the schematic across into Eagle’s board designer and produced a PCB from the schematic, as there were few components, it did not require much work and no vias were needed.

The new schematic, it is an incredibly simple circuit

This version of the Photovore shield (v0.3) can be downloaded from Dropbox, along with all the other Photovore Eagle files.

Re-design of the caster ball wheel re-design

The even newer ball caster wheel

Yes, this is another ball caster wheel and yes also, it does look exactly the same as it did last time. However, it is actually ever so slightly different from the previous version (v0.3)


The main differences are that this has fewer ridges to help reduce surface area in contact with the ping-pong ball, therefore increasing the fluency of it's rolling. Also, the ridges are now deeper and more prominent, this is in order to to make them look more purposeful; the bumps on the previous version looked like they were were accidental, thus making it look like the part was poorly designed.


To help reduce the chance of it snapping, I have reverted back to the slots being deeper and therefore the design has more structural strength throughout. On the other hand, this would cause the robot chassis to be uneven again, as it would be sloped backwards. Unfortunately, it still snaps, even though it has a thicker structure at the bottom supporting the ball; I think the cause of the weakness now is the slot which turns in the centre of the platform, as this may be causing unnecessary strain on the design.


It still holds the ping-pong ball nicely

The design files for this version of the ball caster wheel (v0.4) can be downloaded from Dropbox, along with the previous versions of the ball caster wheel. 

Caster ball wheel re-design

IMG_1743.JPG (800×600)
The newest ball caster wheel

I have yet again re-designed the ball caster wheel, this time I incorporated bumps into the design in an attempt to reduce the surface area in contact with the ping-pong ball and therefore aiming to make the ball run more smoothly. You might also notice that this design has two bolt connections, this is to help reduce movement of the acrylic parts. I have also made another small edit in the design, this is to make it slightly stronger so that it wont snap as easily, however, it was slightly stronger, but it was still not strong enough and broke fairly quickly.


A side-on view of the caster, you can see the bumps quite clearly

The design files for this ball caster wheel (v0.3 - v0.1 and v0.2 are implemented in the chassis designs) can be downloaded from Dropbox.

Re-designed chassis

This is the second version of the chassis, including a menacing 'grill' on the front

Since I posted the feedback of the modular circuits and the chassis design, I have been working on an updated chassis. Here are a few images of the chassis, currently without any electronics.


Here is a list of updated design features:

  • The chassis is both thinner and shorter as I have no removed dead space on either side of battery and moved the caster ball wheel move closer to the battery so that it can be shorter
  • It now has a sectioned battery compartment with a removable access panel, so that the battery does not move or fall out unless you remove the panel
  • The motor mounts have been moved outwards and altered slightly, so that the wheel can be pushed fully on and will not rub with the chassis
  • An integrated 'bumper' has been added, which is designed to slide back and make contact with a touch sensor
  • The ball caster wheel has been updated, so that the ping-pong ball is slightly less loose
  • Slots have been added in the centre of the chassis layers so that wires, such as the battery connections, can be wired through to the middle section
  • The orientation of the LDR mounts have been altered, to point slightly more outward
  • I made the ball caster wheel mount have a thinner section, so that the robot is more level


The battery compartment with the panel...
...and with it removed















There are already some known issues with the current design:

  • The centre support of the bumper prevents it from sliding backwards
  • I think that the bumper could look slightly less menacing, removing half the supports may fix this
  • The ping-pong ball in the ball caster wheel now has some play, however, when the robot is resting on it, it causes enough pressure that it will not move as freely, one way to fix this would be to add bumps (ribs?) to the contact point of the ball caster wheel as to reduce the surface area that is in contact with the ping-pong ball
  • The mount of the ball caster wheel is now thin enough to break easily
  • Friction on the bumper prevents it from moving backwards and forwards easily, this could be helped by adding a layer of paper to act as a spacer


A close-up of the front 'bumper'


The two versions side-by-side

This chassis design (v0.2) can be downloaded from Dropbox.

What needs to be improved on the modular robot?

I have now had a working modular robot for a few days and I now know a few problems wioth the current design and had feedback from others. So this post is simply a list of potential improvements that could be implemented in later designs. Some parts of the robot require more work than others.

Edgebot potential improvements:

  • Remove the need for a jumper for when the Photovore shield is not used, this could be replaced by two transistors and act as a switch when the Photovore shield is added
  • Remove the two vias on the PCB

Photovore potential improvements:

  • Find another source of LDRs, so that the sensitivity is altered so that it can be used in lighter conditions
  • Convert the circuit to an Eagle schematic and produce a PCB

Motor controller potential improvements:

  • Remove the voltage regulator, as it is not needed for the current boards and takes up a large amount of space on the PCB
  • Add a second trim-pot, so that you can calibrate both wheels to ensure that it can go in a straight line
  • Re-arrange various components
  • Re-do all the tracks, in an attempt to get rid of vias
  • Move the switch so that it is not obscured by the shields and add pin spacing so taht you can have an external switch
  • Change the mounting hole layout, so you cannot attach it to the chassis in an incorrect orientation
  • Add PCB to where it is currently not, at the sides of the board, as it is a paid-for area, which is currently not used

Improvements that would affect all the boards:

  • Alter the stackable header format so that one of the 6 pin headers become an 8 pin header, this would cause less confusion when it comes to the orientation of the boards and it would also allow for more pins to transfer signals between boards
  • Change the pad size to be larger, as this would make for easier soldering for people who are less capable

Chassis potential improvements:

  • Make the chassis smaller, as there is currently a lot of wasted space, which is doing nothing apart from making the robot larger
  • Make a battery compartment, so that the battery does not rattle around when it is moving, but make sure that it can come out when you want to change the batteries
  • Change the motor mount design, so that the wheel can go on fully
  • Add an integrated bumper at the front of the chassis, this would trigger the touch sensor when it drives into an object
  • Alter the ball caster wheel design, so that the ping-pong ball is less loose
  • Change the design so that wires are not wrapped around the chassis
  • Rotate the LDR mounts to point slightly more outwards
  • Alter the design so that the robot has a more level base

Photovore in action

Here is a short video to show to Photovore shield working both on it's own, and then with the added capabilities of the Edgebot:




Revised Photovore shield



IMG_1585.JPG (800×600)
The perfboard Photovore with diagnostic wires to figure the input/output wiring

As the Photovore shield failed, I had a look at the various components on it which could have failed, due to the little amount of parts on the modular Photovore PCB, it indicated that either the dual comparator was blown, or I had implemented the comparator chip into circuit incorrectly.


I started by simply swapping the comparator chip out and replacing it with another, completely new chip and the result? No difference in result. This caused me to presume that I had made an error when designing the PCB of the Photovore, so I made a mock-up of the circuit on a solderless breadboard which again, did not work, even when I attempted multiple circuits found online and within the simulation software.


Now without a Photovore shield, I needed another circuit that would perform similarly; I looked back through my notes on various original circuit design concepts and found a suitably simple circuit which I decided not to use previously as it required only 2 inverters and inverters are only packaged as a large hex NOT gate, therefore I would be using a large chip which could be replaced with a smaller DIP chip.


This new circuit is simple, it sets two LDRs up as a voltage divider, and the first inverter takes the split signal and turns it into a clean, digital signal, this is then fed to one of the motors, while that signal is inverted again for the other motor.

I quickly wired it up on a solderless breadboard to test the circuit, then continued to transfer it onto a perfboard shield. As you can see in the images, the perfboard shield is similar size, and no moderation to the headers was required to make them slot together correctly, due to the layout of the PCB.


The original Photovore PCB next to the freshly cut perfboard
The perfboard shield with the stackable headers in place
IMG_1742.JPG (800×600)
The finished DIY Photovore
The new Photovore shield on the chassis
As of the time of writing, it is fairly bright and it is hard to follow a light in bright light, as the difference between the two LDRs' resistance is minimal, so I will post a video when I have chance to.

It's alive!

The very first working modular robot

As I have previously posted, I have now finished the current versions of the Edgebot shield and motor controller board and they're working correctly together. I quickly designed a chassis for the robot that would act as a platform for the electronics to be attached to. The design includes and integrated caster roller that uses a common 40mm ping pong ball as the main pivot, this is inserted with a little force and a reassuring 'pop'. Once this current design can still be improved greatly, for example, the pin-pong is very loose and rattles a fair bit when not in use, etc.

The ping-pong roller ball, still to be finalised, but working.

The main section of the chassis is made up of 2 layers, the first of which is the base, this is what the gear motors are mounted to and the battery mounting rests upon, while the front section of this layer is slightly obstructed by the roller wheel fastenings, it does contain space to put other sensors or parts.

The top layer currently only accommodates the stackable PCBs, the motor controller is fastened to the acrylic using four M3 bolts and some nuts. Then other layers are stacked on top of that to provide other behaviours to the robot, such as light seeking and object avoiding, whilst the motor connections could be attached to the motor controller permanently, the other behaviour modules' inputs are interfaced by right-angle headers pointing outwards from the board. You can then plug in the sensors as they are required.



The files for the chassis design featured in this post  (v0.1) can be downloaded from Dropbox.

Time away

For the next few weeks or so, I will be less able to carry on designing/building of the modular robotics project and keeping track of my other current projects as much, therefore I may post a little less frequently. This is mainly due to exams and work experience.

Two steps forward, one step back, another forward and then one back...


Can you see the error?

I'll start with the good news, I have now received all of the required components to build all the modules and have been constructing them when I have spare time.


I began to solder the Edgebot boards as soon as the parts started to arrived, and that process was completed without any hiccups, moreover when the quick build was finished I was able to test it using a few LEDs on the outputs, a switch acting as an the input and a small power supply, this enabled me to thoroughly test the Edgebot circuit and it appeared to function correctly.

When the components finished arriving I was also able to finish the Photovore, again without a problem, however I was then naive and reasoned that because it had few components and that I have worked with simple comparators before, that that board would work, more on that later.

Before I soldered each board I quickly looked over the tracks and layout again (having also done so when receiving them) and this time I noticed a fault with the motor controller;



Can you see it now? It is the short connecting all the pins.

This could be resolved relatively quickly using a lot a light, some magnification glasses, a scalpel and a steady hand. I made a shallow incision into the connecting track and then I was able to carefully peel back the track and sever it at the next pad, this completely removed the connection, this is easily seen with the track leading to the centre pin of the voltage regulator in the following image;


It isn't neat, but it gets the job done

I have since been able to solder the motor controller board completely and thoroughly test it both with and without motors, it seems that my worries about the L293D were unnecessary; it functions fine with a 6 volt input voltage (4x AA) and it also produces less heat than anticipated thus meaning there is no need for a heat-sink or other cooling method. Here are images of the (working) boards;


The fully soldered Edgebot module
The motor controller, without the confusion of the voltage regulator

Once the first chassis design has been finalised, a video of the robot shall be posted, this should be shortly. 

Stacking modular PCBs

The three boards stacked one upon another

This is another relatively quick post to show how to modular robotic boards are to come together to form a robot with modular behaviour. I have received packages in the post containing headers and some other various parts, but the main order has a back-ordered component, so it will take longer. 


As you can see from the first picture, the top two boards (the Edgebot and the Photovore) have a pair of Arduino 6-pin stackable headers, which are incredibly useful if you want multiple PCBs to have the ability to stack on top of each other, but unfortunately they are only sold in lengths of 6, 8 or 10 pins, so I had to design the boards around one of those sizes. These pairs of headers have two uses on these boards, the preliminary function is the transfer of electrical logic signals between various boards, the other purpose of the headers is to hold and stabilise the boards mounted on top and using a pair of headers is a lot more stable than a single row.


You can also see the right angle pins facing outwards from the upper boards, these are to attach various inputs/outputs to, such as touch switches, light sensors, logic outputs etc.


Here are some more images of the boards with a few components;



The three boards unstacked


Arrival of modular robotics boards


The three boards as seen from the top

This is just a quick post to say that the modular robots boards have arrived. I used OSH Park for these boards and although this is my third order with them, I am still highly impressed by the quality of the PCBs, I only ordered three of each board as they are the first physical version that I have and mistakes are relatively expensive. Here are some more photos of the boards;



The three boards as seen from the bottom



Drawdio

A finished Drawdio without a printed mount

Since even before I started the designs for the modular robots, I was greatly interested by the original Drawdio circuit concept, that you could use a simple circuit to interact with the surrounding world and for the world to, in turn manipulate the outputs of the circuit.


In this instance, it  the Drawdio is a basic electronic circuit which utilises the use of a 555 timer chip to produce an astable output frequency. The speaker frequency depends upon the resistance of the input circuit, which comprises of the graphite pencil and your body. As the line that you draw gets longer, the input resistance increases, therefore different tones can be heard.




The Drawdio was my very first circuit that I designed in Eagle, previously, I had used the very basic but easy to learn package called Fritzing, however, this provided very few components and little flexibility when it came to board layout. After attending a couple Cambridge PCB Makers sessions (Forum found here, Saar's blog here) I had a much greater (not yet great, just greater) understanding of PCB design software and decided to give Eagle a go. I then designed a derivative of the Drawdio circuit, but it functions the same.


The Schematic

There is no difference between PCB versions 0.1 and 0.2, except the fact that v0.2 had a general track layout clear-up as I got rid of the vias and added two ground planes.

The PCB

I also designed and developed a custom 3D printed mount for the Drawdio circuit board, it was designed in Solidworks and printed with transparent resin on a FORM 1. As you can tell from the following pictures, it took many revisions to achieve the correct tolerances on items such as the PCB and speaker, as they are designed to "clip in". I have not yet completely finished the mount however, as I intend to design a clip mechanism to allow for the CR2032 battery to be easily replaced when it runs out - it currently lasts ~500 hours with a TLC551 timer, (which works down to 1v for a coin battery to be used) so this action would be infrequent.


Top, left to right: PCB mounts v0.1, v0.2, v0.3, v0.4 and v0.5
Bottom, left to right: Speaker mounts v0.1 and v0.2

The bottom mount is the first "final" print, while the top is a more compact version

NOTE: I do not claim any credit for the original Drawdio circuit and the MIT project website can be found here. I did, however design the mount.

The latest Drawdio PCB design files (v0.2) can be downloaded from Dropbox.

The Drawdio 3D design files (v0.5) can be downloaded from Dropbox - (STL and Solidworks file types)

Motors, more motors and a couple more motors

For a while I have been considering different motors and to use with the modular robot, the various drive options avalible include; servo motors, geared motors or ungeared motors. While wheels include; small wheels, tracks, or bare motor shafts (possibly with a small amount of heatshrink for traction).

The very first Edgebot I built using spare parts and about 20 minutes, more importantly however, is that I used geared servo motors and small Lego wheels connected using a large amount of hot glue (I really don't refrain from using hot-glue :D) Although the end result had a reasonable amount of torque, it was quite slow and the amount of work that was required to both 360 degree hack and DC (rather than PWM) hack the servo did not make it a fast and easy process. Also, even the cheapest servos are relatively expensive.



You can see the servo motors at the back, along with the crudely attached wheels.
It is not my circuit design; the original circuit design can be found here

Where servos are slow and high in torque, ungeared motors are very fast (7000rpm) with hardly an torque (the stall torque of most small, ungeared motors is about 15 grams) Therefore making them handle wheels poorly, as they simply stall and drain the batteries quicker. However, people often attach heatshrink to the motor shafts and use them on lighter robots which require high speed movements.

The final type of motors are the geared motors, which are similar to servo motors, but typically have a lower gear ratio so that they travel faster. Unlike servo motors, geared motors do not require any hacking to make them function as robot wheels. Geared motors are the same price as, or slightly more expensive than, servo motors, but as they require no work for them to function correctly, it would typically be worth it.

For the modular robot chassis, I am going to try some of each to see how well they work (or don't). For the servos, I am going to use standard, lightweight servos from Hobbyking. The Solarbotics' motors are often suggested for use in robots, so I'll test them also. While for the geared motors I am going to try some standard geared motors as well as a pair of offset shaft motors, which should work with these tyres, these are again, from Hobbyking. The reason I am using Hobbyking is that I frequently place orders with them for RC supplies and the like. 

I shall post results once I received and tested all the motors.

Shield template

As previously mentioned, I have used a shield template as a starter board for both the Photovore and motor controller, this ensures that all the board headers line up and connect correctly. I generated the template from the Edgebot board.

The shields are composed of two six pin headers, one with 3 power connections; battery voltage (Typically between 5.6v and 6.4v), a ground connection - this connects to all required grounds on all levels, and a regulated 3.3v output, which is provided by the motor controller main module and can deliver up to 800ma. All other the header pins, nine in total, are used for signal transfers between boards, such as the upper left pins being used for logic interfacing with the Edgebot from the Photovore.


The headers are standard, 6-pin Arduino stackable headers therefore they are breadboard friendly with pin spacing of 0.1". Likewise, I have positioned the headers to be exactly 0.9" apart, thus meaning that you can plug the boards into a breadboard if you desired.



The template schematic connections

The bare template PCB

The latest shield template (v0.1 - works with all current shields) can be downloaded from Dropbox.