This page is dedicated to the further enhancements that I have done to DominoBotNXT. For more info on the original DominoBotNXT, have a look here.
One of the drawbacks of the original was that due to the 3 motor limit, it had to backup to properly place dominos. This was because the domino-placing component was tied directly to the drive wheels. So, as it drove forward, a domino would make its way to being placed in the holder mechanism. Doing this caused the robot to move forward approx. 4 inches. Since this is too far for domino’s to actually cause any chain reaction, the robot had to move each newly placed domino back to be within 1″ of the last placed one.
Since I’m never really satisfied, I called upon the folks at Mindsensors to try out their newly developed NXT Motor Multiplexer (MotorMux). They gladly provided me with a test unit to try out. The purpose of the NXT MotorMux is to expand the number of available motors by 4, and it uses 1 sensor port to do this. Since the standard NXT software does not have built-in support for I2C messaging (interface to talk to the motors on the sensor port), along came RobotC. RobotC is currently in Beta testing (July 06) but has proven quite useful for this task. With some help from Dick Swan, I was able create the necessary code and logic to talk to the sensor port to control a 4th motor. Its’ purpose – to seperately drive the domino-placement mechanism so that DominoBotNXT does not need to back up. Now, it can place domino’s on the fly while always moving forward. I’ll save the descriptive works and let you watch the video to see it in action.
The following is an excerpt of the code showing a function used to call on the MotorMux:
//backup domino placer a bit
mmControl(kMotorOnMux, mmReverse, nSpeed);
//float the motor off
mmControl(kMotorOnMux, mmFloat, nSpeed);
// Send the message
sendI2CMsg(kSensorMuxPort, motorMuxMsg , 0);
Close-up of the MotorMux unit and its connector to the NXT motor. Click to enlarge.
The following shows the configuration / wiring of the MotorMux unit to the NXT. The MotorMux must be powered by an external source (9-12V DC). One NXT sensor port is used to send commands to the MotorMux. From the MotorMux, up to 4 standards electrical wires can be connected to the holes to power 4 motors. In this case, it goes from the MotorMux >> Std. Lego Wire >> Mindsensors Wire Converter >> NXT Wire >> NXT Motor.
Rate This Post: