Robot Wheel Design

 

Robot wheel controller and mechanical progression.

I’ve spent a lot of my spare lab time messing around with a robot wheel mechanical concept, and an electronic design that controls a pair of DC motors and 4 RC servos.  Here’s an update.

[Read more…]

SketchUp Robot Chassis

indybot_model3

I’m working on a robot chassis in SketchUp this week (even though we’re closed).  Over the last several of months I’ve been working on consulting designs and product development, and got behind on one of the research projects I wanted to spend time on.  This week I’ve had a chance to catch up a little.

[Read more…]

Designing A Christmas Train Controller

image

Last year I decided to build my kids a train set for Christmas and needed a simple train controller.   Every Christmas my dad would break out the train set, and we would spend cold nights in the garage running plastic army men around the track on various missions.  I wanted my kids to have fun like that.  So I bought some tracks,  a couple of engines, and some railroad cars off of eBay.  Then I put together a wood base and paper mache tunnels.  All I needed to complete the awesome holiday spectacle that is model trains was a train controller.

[Read more…]

Arduino Motor Control

image

 

We carry a few products that can be used to implement motor control with an Arduino (or any other controller).  A recent addition is the BM001 Single H-bridge Controller.  Pictured above is the BM001 attached to a test board “Arduino shield”  I put designed.  It allows me to easily wire our breakout modules to an Arduino.  Since the breakout modules don’t have pins I used spring-loaded test points to connect the modules to the shield.  Then jumpers are used to wire from the module connections to the Arduino pins.

[Read more…]

Microchip PIC16F1829 Serial Communication

pic16f1829_serial_isr_0

I’m writing code for a Microchip PIC16F1829 and thought I’d share the serial communication routine.  I’ve completed the schematic capture and PCB layout for the servo motor controller design.  But it’s a good idea to get some code written before moving forward with the PCB prototype production.  I’ve written a good chunk of the code for this design.  When the design is complete we’ll open source the files and place them on our web site (including the firmware for the microcontroller).

[Read more…]

Servo and Motor Controller

bm011

An RC servo motor controller is what I’m currently working on.  Here’s a copy of the schematic in PDF format.  In a previous blog post I recounted my effort to build a robot controller and incorporate it into an Arduino clone design (see that post here).

[Read more…]

Robot with 4 wheel drive

A robot with independent wheel drive is something we’ve been working on in our spare time.  Here is the latest iteration of the prototype.

Over the last couple of months we’ve been testing different mechanical systems to control robot wheel position.  In addition to position each wheel is to have independent control over the motor speed and direction.  This prototype gets us part of the way to what we were shooting for.

Motor control:  Currently this robot is using skid steering where the left hand motors are driven by a shared control signal (a single H-bridge), and the right hand motors are driven by a separate signal.  This is similar to how a tank or bulldozer is driven.  We used a Parallax BASIC Stamp 2 to read radio control signals (1-2ms pulses) and convert them to motor drive commands.  The BASIC Stamp converts the pulses to serial commands that are then sent to the Motor Mind C, a dual motor controller.  This allows the robot to turn left and right as well as move forward and reverse.  The RC channels are “mixed” in the BASIC Stamp 2  which makes control of the robot more intuitive for the operator using an RC transmitter.   The next step is to control each motor with its own H-bridge.

Wheel Position:  We built a simple lever arm using some brass rectangular tubes.  These were bolted onto servo horns on one end and the other end was bolted to the motors.  Circular brass tubes were used to create pivot points, and where the brass connections needed to be solid we just brazed it using a heat gun and solder.  The mechanism allows close to 90 degrees of movement.  In our code we limited the range to about 45 degrees.  Each wheel position can be independently controlled, and we used an Arduino Uno to read inputs from our BASIC Stamp 2 and convert those to 4 servo drive signals.

indybot1

RC Signals:  Originally we wanted to use our Firstbot Arduino clone to run this design.  We ran into two problems.  The first was not having a lot of time for coding and testing.  The second was that the Arduino is not very good at doing multiple timing things at the same time.  We wanted to read 4 RC channels (measure pulses 1-2ms in duration with a period around 20ms).  We also wanted to generate 4 RC signals for servo control (output 1-2ms pulses with a 20ms period).  And we need to generate 4 PWM signals to control the motors. There were a variety of problems we ran into when attempting this.  Servo control was at times erratic, and even caused one to burn out.  PWM control was lost on one of our channels due resource sharing in the Arduino.   I’m pretty sure we could get close making this work if we broke away from using Arduino macros and implemented some interrupt based code.  But being short on time  we decided to through in a BASIC Stamp 2 and Motor Mind C.  This offloaded the pulse reading and motor control functions.  And Arduino Uno was then used to control the wheel position by generating servo signals.

Servos:  We used HiTek HS-645MG servos.  The had decent torque and metal gears (about 100 oz-in).  Unfortunately they run about $35 each retail.  These can operate to 180 degrees if provided with a pulse of 0.6-2.4ms.  The 4 servos required close to 2A.

Power:  An 8.4V 3000mAh RC battery was used to run the motors and a Castle Creations servo regulator was used to step voltage this down to 5.1V to keep the servos from catching fire.

Motors:  4 12V 200RPM gear head motors were used.  These are smallish, have a decent mix of torque and speed, and were in stock.

Next step:  We’ve got a couple of ideas to run with on this design.  First, a small board that handles the RC signals, servo outputs, and PWM signals would be cool to have.  Second, there are 4 brass pieces that were used for each wheel.  We want to see if they can be boiled down into a single strut.  We could have that laser cut to make the hardware a little more clean.  Finally, we never had a chance to try and control each wheel by itself.  Another issue is that with only 4 RC channels to control everything you end up with a user interface problem.  You really need control channels to control each motor and each servo separately.  Not sure how to handle that.  Perhaps move to a WiFi / PC interface?

Arduino Compatible Robot Controller

firstbot

An Arduino compatible robot controller is something I’ve been working on in my spare time.  I wanted to try to combine the ease of use of the Arduino software and hardware with a dual DC motor controller.  I thought this could be a good platform for people building their first robot to experiment with.  The design has an Atmega328P microcontroller just like the Arduino Uno Revision 3.  I’ve also matched the form factor and pin out of the Arduino Uno R3.

The interface to the two Freescale MC33926 H-bridge motor driver chips requires about 10 i/o pins.  That’s a lot.  Some of these pins provide analog motor current feedback or H-bridge status and really aren’t required to run motors.  You should be able to get the number of control lines down to about 6 (2 enable lines and 4 PWM lines).  All of the connections between the Arduino pins and the Freescale ICs occur through 1K resistors.  The resistors can be removed if the user wants to free up some pins.

I received the printed circuit board last week and finally set aside some time to work on it.  Things look pretty good so far.  The parts fit and nothing caught on fire when I powered it up.  What else can you ask for in life?  However, I was limited to about 2 hours of lab time on Friday afternoon before I had to turn off the lights and head home.  On Monday I should get the Arduino bootloader programmed into the Firstbot prototype and see if the PCB connections are error free (never happens, but one can hope).  I’m looking forward to seeing if this design works right out of the chute.  If it does it should be an awesome toy to have around.

Robot Motor Control using Automotive Electronics

L9949

Automotive electronics can be a great source of inspiration for robot motor controls.   I’ve covered some aspects of H bridge construction including low side switches, high side switches, and current sensing.   Sometimes its preferable to build your own H-bridge circuit, while other times it might be desirable to use an H bridge integrated chip.

[Read more…]

Current measurement with an H bridge

h-bridge_current_sense

Current measurement while using an H bidge is pretty straightforward.  In previous posts I’ve discussed some of the elements that make up an H bridge.  Included in those posts were methods for controlling current to the load, in this case a motor,  using high and low side switches.  It’s fairly common and desirable know a little bit about what’s going on with your load, and so today I’ll cover some basics of measuring load (motor) current.

[Read more…]