Go Down

Topic: Arduino + Lego NXT (Read 30 times) previous topic - next topic


The integration happens inside Arduino.
I preferred not to do hardware integration because I hoped that software could give me more flexibility.

I chose the fastest sampling time I could, which is 4 ms (--> 250 Hz).
I first used the rectangle method for integration but now I've preferred the trapezoid method to minimize the error: what I've found out is that most of the error comes from (1) the sensor and (2) ADC approximation.

Anyone going to replicate this robot should use an angle sensor (maybe I2C based) instead of a gyroscope; integration is bringing avoidable error.



I'm think I'm going to have to do integration for another project. (control of a flexible link). So nice to see its possible with the arduino. :)




Where can i find how to connect this motors to the arduino? or how it works the protocol used by NXT


I'm making available my thesis as a free download (CC license) here:
(Please report if the link gets broken)

Unfortunately it's in italian (description of NXT connectors is on page 59-60) and it's mostly about the theoretical part of the problem.

What you need to do to drive NXT motors is to:

  • understand NXT connector, which has 6 wires:

    • Motor signal 1 (from 0 to 9V)
    • Motor signal 2 (from 0 to 9V)
    • Ground
    • Encoder power (5v)
    • Encoder signal 1 (0 to 5V)
    • Encoder signal 2 (0 to 5V)

  • hack your NXT connector (you can do that using a RJ-12 connector)
  • use a L293D to give enough amperage to the motors (you cannot drive them directly from Arduino)
  • use a 9V voltage stabilizer to power the L293D: it must handle enough amperes (1 or more reccomended).
  • use an interrupt to handle the encoder signal (if needed): you can download my code and look at the out() function.

Go Up