Skip to main content

Software Developers Experience building a robot Part 2(Tank treads and blue smoke)

Tanked

As I mentioned in part 1, I had drawn the conclusion that legs were not what I wanted and that tank treads are probably the most overkill for weight bearing. So , I ordered a Rover 5 base.

Rover 5 robot base


Unforeseen requirements

When the Rover base arrived I opened the box to discover something I had completely overlooked; I didn't have a motor controller.

With no clue of what an H-Bridge was and a new found determination I decided to build my own motor controller using about 6 relays. It was finally time to get serious about soldering on those proto-boards.

I used a breadboard to prototype a system that used 6 relays and 4 transistors. You could hear the loud clickity clack of the relays as the direction changed but I was pretty proud of my ingenuity. It was time to solder!

This was the most intricate soldering task I had ever undertaken and it really showed that I'm more of a software kind of guy. I perceived it to be the longest time I have ever spent creating something without testing to see if it still works.  You couldn't fire tracer rounds in this department and it took me around 6 hours to finally get it right as I modified the design on the fly. With code you can do things like that ,but in hardware the result of such action is much more time consuming.

When it was all done and the sun had disappeared, I was fatigued but eager to test my piece of hardware. With a long USB cable dangling off my desk I got my rover base to move with a quickly whipped together node script. It worked!! ...with a lot of clicking noise for sure but it actually worked!



Blue smoke

The next day I went about adding the raspberry-pi to the hardware stack to get the project back on track with my goal. In the process attaching the battery to my newly created motor controller... not checking polarity!

Disaster had struck! I heard a pop and finally got to see the blue smoke I had read about on the internet. My transistors all got fried! My on the fly design didn't help either as I had created a huge crows nest at the bottom of the proto-board and had placed the transistors in ridiculously hard to reach places.

It was at that point that I cut my losses and decided to google 'motor controllers' , If only I had done that sooner.

Lessons learned

It seems I had learned the reason for buying third party motors controllers instead of creating your own , but I did learn a lot from the experience:

  1. Polarity matters!
  2. Hardware is a whole different ballgame
  3. Sometimes its better to not do it yourself

Point 3 on that list may counter the hardware hacker mentality but for me when I looked at the situation I realised the time it would take to repair my home built motor controller would be better spent on other aspects of the project  and that buying a proper pre built one made by professionals was a better choice. At the end of the day I wanted to build a robot , not a motor controller.

I certainly don't regret attempting the task myself though, as I like to think I acquired a valuable life lesson from doing so; You can always do something yourself, but as with everything in life there needs to be a balance and sometimes its better to get things pre-built, pre made or done by someone who actually knows what they are doing.

Comments

Popular posts from this blog

Setting up Qt Creator for assembly

After fiddling with inline asssembly (not very successfully) ,I recently decided to try writing proper assembly and compiling with NASM in Linux. After writing a hello world using gedit and having a terminal open for compiling,linking and running I had a thought.,there has to be a better way to do this. So I tried Qt Creator ,because I know it's easy to add custom build and run commands,and what do you know? I got it to work. Here's how,my screenshots and assembly code are in Linux but the set up should be the same regardless of the operating system,if you are not using Linux then just use the same commands you use to assemble in your operating system. First off ,create a new console application: I named mine ASM Rename the main.cpp to main.asm and delete all the text inside.then insert some assembly: Now open up the “Project” tab and edit the build settings,remove the current build and clean steps and remove the “-build-desktop” from the en...

Using delegates in Objective-C

Why use delegation? Well when writing Objective-C programs in Xcode we are encouraged to use the MVC(Model View Controller) structure.In MVC a model cannot send messages directly to a specific controller.This can become a problem if data in your model changes independantly and you need to update this information in your view via the controller(The model must never communicate directly with the view).This is where a delegate comes in,it allows messages to be sent from the model to a controller that is not specified in the model but is rather specified by the controller,in other words the controller specifies itself. If you dont really understand what im talking about so far ,don't worry.I didn't understand delegates either until I needed one,but hopefully by the end of this tutorial you will understand not only how to use a delegate ,but the reason you would want to use one. Program breakdown For this tutorial we will write a program that has a model that will change an...

Fix ssh -Y with other Macs OSX 10.8 Mountain Lion

You may have realised that when you try use ssh -Y on another Mac from Mountain Lion you get the following error : Warning: No xauth data; using fake authentication data for X11 forwarding.X11 forwarding request failed on channel 0 Fixing this error only takes some simple configuration. All you have to do is add these lines to the following files on both machines: /etc/sshd_config X11Forwarding yes XauthLocation /opt/X11/bin/xauth XauthLocation /usr/X11R6/bin/xauth /etc/ssh_config XauthLocation /opt/X11/bin/xauth XauthLocation /usr/X11R6/bin/xauth That should be all you need to get rid of the authentication error. Hope this was helpful.