Fun Projects for your LEGO MINDSTORMS NXT!

Home     Projects     Help     Contacts

Spinner Bot
Building: Advanced
Program: Advanced

Building Instructions


Note that the USB port is on the back side of the NXT brick here.


Note that the USB port is on the back side of the NXT brick here.










Important: Make sure that all the bushings are gears are not pushed too tightly onto the axles.  The axles and gears should be able to spin freely.







Make sure that the axles are centered on the wheels as shown below.



Use two medium length wires to connect the motors to ports B and C on the NXT as shown below.

Spinner Bot Programming

The Stall_Turn program demonstrates one interesting thing that you can do with the Spinner Bot.  Because so much of the robot's weight is over the drive wheels, and the wheels are "geared up" for speed, when the robot collides with something and gets stuck, the motors will tend to stall (or partially stall) rather than the tires slipping.  The program takes advantage of this to detect when the robot has run into something by monitoring the rotation sensors in the motors to look for a stall or partial stall that indicates a collision. 

When a stall is detected, the program makes the robot back up a little then turn in a different direction before continuing.  This is similar to the motion of the Bumper Car robot but without the need for a touch sensor and bumper.  And to make it a little more interesting, the program randomly decides whether to turn left or right after a collision, and the turns do a complete spin first, to show off the Spinner Bot's spinning ability.


  • The Spinner Bot is designed to go fast, so it uses a fast gear combination (24 tooth gears driving 8 tooth gears).  Even though this gear combination does not produce much torque (turning power), the robot still turns easily because essentially all of the robot's weight is over the drive wheels, and the robot is perfectly balanced.  The four castor wheels barely touch the ground except during sudden changes in speed or direction. 

    However, if you add attachments to the robot, try to push things, run it in deep carpet, or have worn batteries, you may find that the robot does not turn as well.  Try some different gear combinations to see how they affect the robot's speed and ability to turn under load.

  • Try moving the wheels to the inside of the motors (under the NXT brick) instead of the outside, and switch the gears to the outside.  This is an easy change that doesn't require taking anything else apart.  This produces a somewhat more compact robot that looks different and turns even faster.  It will turn with less power, so run it on a hard smooth floor instead of carpet, but it will do extremely fast spin turns with fresh batteries, with the robot making more than 2 complete 360 degree turns per second!  However, it is also much less stable and will struggle to go straight.  The NXT-G Move Block's automatic "Go Straight" logic struggles to keep up with it and continually over-corrects, making it swerve back and forth crazily.  Using a slower gear combination would help a lot here.

  • Write some of your own programs for the Spinner Bot.  Make it cruise around and rapidly switch between going straight and turning to see how fast it can perform.  If you use individual Motor blocks for the two motors instead of Move blocks controlling both motors at the same time, the robot will go even faster, because the NXT will not be trying to cut power to either of the motors to stay "in control".

  • Try the stall-detecting technique from the Stall_Turn program in other situations with different robots.  Using this technique, many robots with decent weight balance will be able to tell when they have run into something without using another sensor.  You could also try to do things like detect when an arm has moved as far as it can, etc.



Home     Projects     Help     Contacts


Copyright 2007-2011 by Dave Parker.  All rights reserved. 
All project designs, images, and programs are protected by copyright.  Please see the usage policy.