www.robotrambler.com | home | current projects | Servo Tank

"Bitsey" Servo Tank

|> Mechanical
|> Electrical
|> Software - Arduino sourcecode
|> Links

  • [Jan 2012] initial work on latest version of Servo Tank; development of Arduino sketches on Bot-Cop-DODICI controller board.
  • [2005-2006] in past, used for misc sensor testing on various projects.

[click to blow-up]
[click to blow-up]
Servo Tank

The Bitsey ServoTank is used as a test platform for development of Arduino sketches to run on the Bot-Cop-DODICI controller board. It has differential-drive using R/C servos modified for continuous rotation, plus a sensor pan'n'tilt pod with sonar and IR distance-measurement sensors, as well as bumper sensors.

The main task of Bitsey is to autonomously navigate itself robustly and reliably around the house without getting stuck in dead-end alleys or under furniture. It uses a general subsumption-based control scheme.

The ServoTank platform was bought from Budget Robotics, but is no longer in production. However, they still sell other small servo-driven differential-steering platforms. Such platforms are easy to build into usable robots, in addition, a treaded vehicle the size of the ServoTank will easily negotiate small obstacles in the home, such as rug-floor transitions and door-stills, which a small wheeled robot will often hang up on. In the past, the ServoTank was used for development of sensor routines for Nico-6, the hexapod walker.


The ServoTank platform was bought from Budget Robotics about 2005 (no longer in production).

  • dimensions: approx 7" (175-mm) long, 5" (125-mm) wide, 6.5" high (162-mm).
  • weight: total = 22-oz (620-gm) with sensors and batteries, 5/ea AA-Cells (6-oz,170-gm).
  • frame material: expanded PVC.
  • drive: differential drive using 2/ea Parallax continuous rotation servos (44 oz-in).
  • tracks: Tamiya p/n ____ tracks and pulleys, with drive gear mounted to servo.
  • servo pan'n'tilt sensor mount, with GWS S03N standard and Cirrus CS-25BB micro servos.
  • forward speed: approx ___ in/sec.


  • controller board: new Bot-Cop-DODICI 3.0" x 3.0" pcb with 28-pin ATmega Arduino-bootloader microcontroller chip.
  • drive servos: 2/ea Parallax servos modified for continuous rotation.
  • batteries: 5 or 6/ea rechargeable NiMH AA-cells, 1.2v @ 2200-mAhr each - powers both electronics and servos.
  • XBee Pro module for wireless remote-monitoring and control - 2.4-Ghz 80 mW transmitter.


  • digital sensors:
  • --- (2) Maxsonar ultrasonic sonars on pan'n'tilt - narrow- and wide-beams, usable range to 254-inches [630-cm].
  • --- (2) IRPD (infrared proximity detector) channels, for short-range 6-12" obstacle detection [in lieu of mechanical bumper switches].
  • analog sensors:
  • --- servo battery voltage.
  • --- (2) LDR (light-dependent resistor) CdS cells, for differential light pickup (with 1/2" long directional tubes).
  • --- Sharp GP2D12 IR Ranger on pan'n'tilt - usable range 10-80 cm [4-32 inches].

Dealing with multiple voltage levels. The Bot-Cop-DODICI design, with on-board voltage dividers and selectable buss voltages on the digital, analog and I2C expansion headers, makes it easy to configure the board to deal with different input-voltage levels and both 3.3V and 5V devices. At this point in time, many older devices use 5V power, while many newer devices use 3.3V. The ServoTank uses the following voltage levels:

  • 3.3V (Vdd buss jumpering): ATmega processor, 24C64 I2C EEPROM.
  • 3.3V (hardwired): XBee module.
  • 3.3V (HDR1 digital buss): Maxsonars.
  • 3.3V (I2C buss): Nunchuck.
  • 5V (HDR2 analog buss): Sharp IR-Ranger, LDRs, IRPD power.
  • 6-7.2V (HDR3 digital buss): Vin power, R/C servos.

    On the ServoTank, Vdd is set to 3.3V for the ATmega, mainly since the only power to the board is from the servo battery (6-7.2V), and use of both 5V and 3.3V regulators in series provides more noise-filtering on the Vdd buss. Input voltages from external devices to the ATmega were lowered to the 3.3V range by selecting the voltage-divider ratios on the expansion headers.

    Arduino I/O Pin Configurations:
    pin  function                     buss-voltage  series-R pulldown-R voltage-divider
                                     (digital HDR3)
    P13  Right-side drive servo         6.0-7.2V       330       -            -        
    P12  Left-side    "     "              "           330       -            -
    P11  Sensor-Pod tilt servo             "           330       -            -
    P10     "    "  pan    "               "           330       -            -
    P9   IRPD-left                       5V(*)         2.7K     4.7K         0.64
    P8    "  -right                        "           2.7K     4.7K         0.64
                                      (digital HDR1)
    P7   Sonar 2                         3.3V          150       -            -
    P6     "   1                           "           150       -            -
    P5   Piezo buzzer/Status Led           "            10       -            -
    P4   -                                 -            -        -            -
    P3   UART2-TX to XBee (software uart)  -           150       -            -
    P2   UART2-RX  "  "       "      "     -           150       -            -
    P1   UART1-TX (hardware uart)          -           220       -            -
    P0   UART1-RX     "      "             -           220       -            -
                                     (analog buss)
    A3   Sharp IR-Ranger                  5V           330      4.7K (plus 10uF C3a)
    A2   Right-side LDR light sensor      5V            1K      4.7K         0.64(**)
    A1   Left-side   "    "     "         "             1K       "           0.64(**)
    A0   Servo battery voltage            -            10K       "           0.32
                                      (I2C buss)
    pos 1    Nunchuck (3.3V only; for development work)
    pos 2    -
    pos 3    -
    onboard  32Kbyte I2C EEPROM (5V or 3.3V)
    1. Vdd set = 3.3V.
    2. uses onboard series-Rs and pulldown-Rs for pin protection and signal conditioning;
       series-R without pulldown-R provides short-circuit, plus some overvoltage, protection.
    3. Buss-voltage indicated for external devices powered from 3-row headers.
    4. channel A3 voltage-divider selected so cpu can run at 3.3V and still measure input
       voltages as high as 10V.
    5. Analog pins A4,A5 laidout for I2C expansion buss, but can be used for analog channels
       if EEPROM not installed.
    6. CdS cells are tied between Van-buss (5V) and A/D inputs.
    7. * IRPDs get 5V power from Analog expansion header.
    8. ** LDRs get 5V power; since minimum LDR resistance is approx 1.6K for high-intensity 
       light, voltage divider = 4.7K/(4.7K+1K+1.6K)=0.64, or 5V*0.64 = 3.2V max.
    9. I2C buss uses A4,A5 with 150ohm seriesRs and 4.7K pullups.


    Many Arduino sketches were written specifically to test the Bot-Cop-DODICI board and also to serve as templates for use in other applications besides the ServoTank.

    Source code for Arduino sketches:

  • complete ServoTank sketch: [listing], [sketch download].
  • basic UART1 (hardware) RS232 communications: [listing], [sketch download].
  • UART2 (software) RS232 communications: [listing], [sketch download].
  • servo differential-drive: [listing], [sketch download].
  • Sharp IR Ranger reading: [listing], [sketch download].
  • Maxsonar reading: [listing], [sketch download].
  • CdS photoresistor differential measurements: [listing], [sketch download].
  • Nunchuck control of tank attitude (I2C buss routines): [listing], [sketch download].
  • test routine for onboard EEPROM chip (24LC64-256): [listing], [sketch download].
  • test routine for onboard 32KByte SRAM (27FKxxx): [listing], [sketch download].
  • test routine for onboard 2Mbit Flash memory (24x04): [listing], [sketch download].

    <| LINKS

    <| TOP

    © www.robotrambler.com, orig Jan 2012, updated Feb 2012