From RoboJackets Wiki
Jump to navigation Jump to search

The heart of the on-robot electrical system is the micro-controller. It is the central point from which commands are received from the wireless system, interpreted, and sent to the peripherals. Just as in 2007, an ARM based micro-controller is used in 2008, but unlike in 2007 the micro-controller will not be the sole device for all of the computational task. This year some tasks such as reading encoders are handled by a Field Programmable Gate Array (FPGA). The micro-controller will still have the task of decoding packets, interpreting them, and executing commands. Since the wireless system will be a two-way protocol the micro-controller will also monitor and report the status information for the robot such as battery health, kicker charge, ball presence, and errors.

Previous Results

In 2007 the NXP (Phillips) LPC2138 was chosen due its high computing power for its price. An 8 or 16-bit micro-controller could have been used but since the LPC2138 was about the same price as these chips it was felt that the extra dollar or two in price was well worth double or triple the power. Also, other concerns, such as current draw, were not considered enough to warrant use of a less powerful chip. In terms of overall performance, though no measurements were made, it was generally agreed that the firmware used on the LPC had plenty of headroom in terms of processing power and code space. The only concern came when encoders were considered for the design and it was found that there were not enough I/O pins vectored to interrupts. Also, there was little I/O left when the design was complete as every available pin was used.

Selecting a Micro-controller

Even though the LPC2138 proved to have good performance for a relatively chip price other, similar controllers will be evaluated for 2008. This year there is an even stronger justification for using a 32-bit processor. For one, there will be 4 PID loops for feedback control on the motors. Based on the calculations done RC08Brushless here the sampling rate of this controller will need to be XX. Since a clock speed of about XX is needed to meet that spec its far better to continue to use a 32-bit processor instead of finding a suitable 8 or 16-bit controller. Other factors such as the overhead of the wireless protocol also play a part in using 32-bit processors over 8 or 16-bit.

One of there areas were it seemed the LPC lacked was number of I/O. Though the I/O crunch wasn't a problem last year and likely won't be this year it is still comforting to have a good variety of I/O in case specifications change.


  • [x] Generate an I/O spec
    • [x] This means we have to wait until all the other systems are fully spec'd and ready for design
  • [X] Find a part
    • [X] Evaluate based on number and type of I/O, availability of dev tools in linux, support in general community, package size, current and voltage characteristics, and cost.
  • [X] Purchase and begin development with a dev kit
  • [X] Spec and find the support hardware. (Oscillator, LEDs, switches, etc.)
  • [X] Schematic design
  • [ ] Fabricate demo
  • [X] Implement wireless protocol in firmware
  • [X] Build base station using dev kit
  • [X] Build remote control.
  • [ ] Implement closed-loop motor control in firmware





Quick Specs
  • LPC2103
  • 3.3V and 1.8V
  • Power?
  • 32 GPIO
  • LQFP48
  • 32k Flash
  • 8 10-Bit AD
  • 4 Timers
User Guide