Inside the NXT brick: lots of microcontrollers

The NXT actually has 3 microcontrollers making everything tick along.

(1) The little circuit board at the top of the picture is the Bluetooth to serial module. The left most, rectangular chip is the memory with the Bluetooth control software from Cambridge Silicon Radio. The square chip is the CSR Bluecore 4 microcontroller and radio hardware BC417143BQN, supporting Bluetooth v2.0 and EDR. The gold zig-zag trace at the top right hand corner is presumably the antenna.


(2) The main 32-bit ARM controller that runs your programs, an Atmel AT91SAM7S256. This includes Flash memory/file system, RAM and the USB Device interface.


(3) An 8-bit Atmel ATMEGA48. I presume this manages the pulse width modulation (PWM) of the motors, and uses the feedback from the NXT motor rotation sensors to tune the power to each motor.

Correction, courtesy of Jürgen Stuber: the ATmega48 drives the PWM for the motor control, but the rotation sensors feedback to the AT91SAM7s256.

In other words if you set two NXT motors, (e.g. on the left and right sides of a vehicle), to the same power level this controller will try to make both motors turn at the same rate. A notoriously difficult to solve problem in user level programs on the RCX.

Ttfn,
Tony

Comments

Anonymous said…
Come on, hardware guys! When will we have an unofficial schematics of the PCB ;) ? There're a few hardware questions I really want to answer...
Anonymous said…
For example, ATMega48 has 6 PWM output. Can we use (maybe in a modified firmware) the remaining 2 for more motors? Also it should have 8 A/D channels. Can they be used? The ARM has 2 external interrupt pins, are they connected? just to name a few..
Anonymous said…
btw. Jurgen Stuber has more pictures of the hardware here
Anonymous said…
Thank you for posting more pictures and details. I am not a electronics expert, but I like reading this stuff.
Tony Naggs said…
Hi Guy

I am not planning to work out the full schematics! ;-)

As I remember Lego promised to publish NXT development info in August. So I guess some or all of the remaining restrictions on MDPs will be lifted on Tuesday. I shall be looking out for hardware info appearing due the week ...

Regarding the motor control: the ATMega48 does not drive the motors directly, but through driver chips that also implement thermal/over current shutdown. Each of the three motors needs 2 driver lines, so I expect that accounts for the 6 PWM outputs.

The driver chips are a LB1930M for motor A and a LB1836M for motors B & C. Both lines off = motor off, 1 line each for forward and reverse control, both lines on = brake.

I did link to Jürgen Stuber's pictures last week ;-) ... on the right hand side of his "NXT top" picture you can see the motor driver chips. (They are hidden by the tilt of the NXT in my picture.)

I do not know the answers to your other questions.

Ttfn, Tony
Tony Naggs said…
I have received an email from Jürgen Stuber, who has trouble with posting comments from where he is:

Some comments:

I put some high resolution pictures at
http://www.jstuber.net/lego/nxt-programming/nxt-hardware.html

The ATMEGA48 manages PWM for motors, but the rotation sensors
are connected to the AT91SAM7S256, so the ATMEGA doesn't manage
the feedback (I thoght that at first, too).

There is some more hardware info at
http://www.jstuber.net/lego/nxt-hardware.ps.gz ,
see also http://www.jstuber.net/lego/nxt-programming/ .


Cheers

Jürgen
Unknown said…
Has anyone connected a Keil ULINK2 USB-JTAG Adapter to the LEGO NXT kit? I am going to solder a JTAG interface to the NXT kit, but I wonder if it would work appropriately with a program downloaded via Keil JTAG adapter.

Popular Posts