Motor control (asserv)

Status: Fully functional.

This board is able to control up to four motors. Two motors are aligned on the same axis to move the robot and this board will compute the current position (x, y, angle). We customise its code every year to match the robot needs, but we try to keep it as generic as possible.

Its main features are:

  • control up to 4 motors,
  • works with differential drive robot (compute position, angle/distance consign, go to position consign...),
  • position PID control,
  • acceleration limited speed,
  • blocking detection,
  • consign change at any time,
  • serial and i2c interface,
  • decode incremental encoder signals,
  • interface to power board: PWM/direction or SPI,
  • simulated motor models,
  • plenty room left for specific needs,
  • there is some room left in the CPLD with unused pins.

It is based on a AVR ATmega128 microcontroller, together with a XC9572 CPLD used to decode encoder signals.

Link to repository.