Zumo Robot with Magnetic Encoders

We are using robots to teach advanced embedded system programming at the Lucerne University (see “Sumo Robot Competition“). Students can buy the kit, and we are running out of available hardware. Time to produce a new series of robots :-). It took us a while to get to the next revision of the Zumo Robot, but finally the first one has been produced and assembled, and I think it is looking good :-).



As the previous robot, it is based on the Pololu Zumo chassis. It uses the same processor (Freescale/NXP K22 ARM Cortex-M4F running at 120 MHz). It is an evolution of the previous design, with the following changes/improvements:

  • Reduced several parts to get below 100 components (less expensive to produce/populate). For example removed some pull-up resistors which now are handled by the microcontroller internal resistors, removed the MCP4728 DAC.
  • Improved power circuit, better dealing with large currents drawn by the motors, improved decoupling circuit.
  • Moved SWD header for better accessibility.
  • Optimized layout, now using a dual layer instead of a four layer PCB.
  • Changed motor position encoders from optical sensors to magnetic sensors.

The PCB size is about the same:

Intro V2 board (left) and previous V1 board (right)

New V2 board (left) and earlier V1 board (right)

But the new PCB includes two ‘wings’ to keep the motors in place:

Intro V2 board bottom side

New V2 board bottom side (left)  and previous board (right)

The biggest change is that we changed the optical encoders to magnetic ones. Pololu does that with their Zumu 32U4 robot too (great idea, Pololu!)

On the bottom side, behind the footprint for the infrared sensors, there are footprints for 4 hall sensors:

Footprints for Hall Sensors

Footprints for Hall Sensors

In earlier design we used optical quadrature sensors which was complicated with connectors and all the wires needed, plus the need for processing the raw sensor data (see Processing the Pololu Motor Shaft Encoders). Now magnetic encoders are used: small magnets attached to the motor shafts which then are sensed by the hall sensors. The motors with the magnets are placed underneath the hall sensors. That way only the two wires of the motors are connected to the PCB which greatly simplifies assembling a new robot:

Motor Wires to PCB

Motor Wires to PCB

Instead using connectors and wires to optical encoders ont he motors, only four wires are needed :-). It is still very easy to detach the robot PCB from the chassis if needed:

Motors on Robot PCB

Motors on Robot PCB

Several parts have been rearranged so they are easier to use and better accessible. The Nordic Semiconductor nRF24L01+ transceiver now can be placed directly underneath the optional Arduino shield:

nRF24L01+ on Robot PCB

nRF24L01+ on Robot PCB

That way the robot has be used for maze solving or line following without the need for an extra shield or hardware.


The new PCB has many advantages: simpler and better position encoding, fewer parts and less layers, and is still as powerful as the earlier revision. We considered to add extra sensors on the base PCB for distance measurement e.g. for Sumo mode, but there was not enough time. For this, we still can use the sensor shield (see “Sumo Robot Sensor Shield“).

Happy Roboting 🙂


19 thoughts on “Zumo Robot with Magnetic Encoders

  1. Erich, Nice job. I have students going to the Trinity Home Fire contest and we use the same motors with the magnetic encoders except I didn’t have time to do the board so they have a Freedom stack and used the full encoder system.

    You should try this contest in house with the sumo. http://www.trincoll.edu/events/robot/


  2. Pingback: 3D Printed Gameboy and Remote Controller with tinyK20 Board | MCU on Eclipse

  3. Pingback: Flashing many ARM Boards without a Host PC | MCU on Eclipse

  4. Pingback: INTRO FS2016 Semester Closing with Robot Maze Challenge | MCU on Eclipse

  5. Pingback: Prototype of Wireless Remote Controller with NXP Kinetis K20 | MCU on Eclipse

  6. Pingback: INTRO Robot Remote – First Production PCB | MCU on Eclipse

  7. Pingback: MINTomat: World’s Most Complicated Bubble Gum Automata? | MCU on Eclipse

  8. Pingback: Mintomat: An Overcomplicated Gumball Machine | Hackaday

  9. Pingback: Custom 3D Printed Magnetic Encoder Disks for Robotics Projects | MCU on Eclipse

  10. Hi Erich,

    Maybe not the entire design, but cold it be posible to publish the dimensions of the board?
    I am trying to design a new one for my personal use ( now i am using the kl25z with a bunch of cables) and i want to incorpaorate your wings’to keep the motors in place.

    Thanks in advance;


  11. Hi,
    I’m not an expert in hardware design, I was previously just developing software for embedded systems, but for a personal project I want to build a robot platform based on a STM32 Mcu. Is the Layout + Schematics for the newer board somewhere available? I dont want to copy, just learn from it and a fewer parts count and bigger simplicity seems to be a fair start. Especially the power circuitry, capacitor usage and overall board design are the fields I’m interested in.
    I saw the older design on github, but if I could get a glance at the simpler design, i would not complain.

    Best Regards from Bavaria


What do you think?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.