Hacking the fischertechnik ROBO TX Microcontroller
The fischertechnik ROBO TX Controller (500995) is an ARM9 based microcontroller targeted towards the education market similar to the Lego Mindstorms NXT brick. fischertechnik is no newcomer to the world of robotics and computer control. fischertechnik, a very popular construction toy in Germany, had process controls in its program since the early 70s with its first computer interface for the Commodore C64 released in 1985. The TX brick, fischertechnik's 5th generation of computer interfaces, is the latest arrival which hit the market during the 2009 Christmas season.
The TX microcontroller is the heart for various robotics educational sets from fischertechnik targeted towards teen to college age young adults. fischertechnik also targets industrial applications where the fischertechnik construction toy with the TX brick is positioned as a solution to model complex process automation tasks. fischertechnik is in its attempt to position a toy as an industry solution somewhat more successful than Lego had been with its Modulex line. Though, the TX brick is by far not just a toy. Microcontrollers became quiet popular with hobbyists in recent years, starting with the Basic Stamp and the more recent Arduino platform, up to home brewed projects based on PIC and AVR architecture. The TX brick is ideal for prototyping projects because of its rich input/output features.
The TX brick comes with 12 input ports and 8 PWM controlled output ports. All 12 inputs can be configured as digital inputs, 8 inputs can be configured as analog inputs decoded via an ADC, and 4 inputs can be configured as fast counters. The 8 outputs are compatible with various inductive, incandescent, or semiconductor loads driven by MOSFETs providing at least 600mA each (for a total of 2.5A max) at 9V. Outputs can be paired in H-bridge configuration to software control the direction of motors. Peering outputs with counters in software enables encoder motors. Up to nine TX bricks can be daisy chained for a total of 108 inputs and 72 outputs The brick also provides an I2C and camera interface, directly connected to the micro processor internally. Software support is lacking for both, though. In a daisy chain, the app runs on the master which sends remote commands via a RS485 connection to its extensions. The brick runs the real-time OS 4NetOS and applications are loaded via the USB port and Xmodem from within a VT100 console. The console accepts remote control commands for I/O ports and some rudimentary housekeeping and DOS tools.
The fischertechnik TX brick is supported by common robotics control software such as Labview, Matlab, MS RDS, and fischertechnik's own Robo Pro. Libraries for GNU C and Visual Studio are provided by fischertechnik for free. The OS is multitasking capable, though, timeslots are fixed which limits the size of apps. Let's look inside:
The board makes a very compact impression. It is densely packed with multiple layers so that tracing connections is impossible by visual inspection. The heart of the PCB is an Atmel AT91SAM9260 microcontroller, clocked at 200 Mhz. This chip already has most required hardware on board. So there are not a lot of additional chips on the PCB. In the lower part is a 8 MByte SDRAM and 2 Mbyte flash. There is also a boot room (serial EPROM) in the upper middle. Most noticeable are the two MOSFET drivers to the upper left. Each of those driver ICs provides eight MOSFET gates for a total of 16 MOSFETs - two for each output. In the upper middle is a line encoder and an analog switch IC. This is in fact very interesting. Eight PIO pins are used to mux via bit shifting through eight analog inputs. The interesting thing here is that all inputs can be configured in software as digital or analog. But from the hardware one can see that all eight inputs are in fact hardware analog inputs which are mapped to a single ADC input on the processor. Interesting is also that the channel mux is not directly controlled via its 3 address bits but via a priority encoder with 8 I/O PIO pins. This means that each PIO pin at the processor represents one of those inputs. By activating one PIO pin at a time, the processor reads in the value of one analog input port. All analog ports are via the mux connected to the same ADC converter on the processor. Although those ports are called "universal" inputs and can be configured to accept digital signals, the digital mode for those ports is a software emulation. The fast counter inputs are more intuitive. They are directly connected each to one PIO pin on the processor, controlled by a quad switch for software activation/deactivation. The quad switch is bidirectional so that in theory those counter ports could also be programmed as outputs, though no software support exists for this feature, yet. Otherwise, noticeable is the Bluetooth module to the lower right and the inductors for the power supply to the lower left. On the backside is a triple output step down switching regulator for three different voltages. Bricks can be daisy chained as mentioned, and there is a differential serial driver IC for that as well. The processor has native I2C support and a connection is from the outside available. There are other interesting interfaces on the board. An image sensor interface, upper middle, is reachable from the outside. Though, there is no hardware available from fischertechnik and neither interface is included in the library as of now. Some interfaces are not connected externally such as a SPI interface to drive SD Cards for instance and an Ethernet interface.
For the curious, the PCB measures 85 x 85 mm and the case is 90 x 90 x 15 mm which gives the brick a very compact format.