This weekend I solved some hardware problems with the NXT and my custom sensor.
The screen of my NXT was behaving strangely last weeks. Sometimes the display shifted down or the left a couple of pixels and one time it was even upside down. Others had this problem before me and found the cause: a bad connection of one of the capacitors on the secondary board in the NXT. This board is rather empty, good for me, it houses just three capacitors and and the circuitry for the buttons. These same buttons are probably the cause of the bad connection. Pressing a button puts strain on the board which in the end can break the solder between board and capacitor. Heating and melting the connection with a soldering iron can repair this. And so I did. As said, there are three capacitors, the first two I soldered successfully. But the third one I accidentally took of the board. @&$##%. I had to reattach that thing of under 2mm in size. To make things worse I didn’t know what side was positive and took a squeezer and magnifying glass to inspect it. No sign whatsoever. And then disaster stroke. I squeezed to hard and the capacitor went airborne. Gone! After a long search on my knees I found it back on the floor. Phew. I soldered it back and the NXT screen worked fine again. It was a nerve wrecking experience.
You might remember my IMU sensor. When I built it I included a BlinkM all color LED in the housing. This was a design error as it shared the sensor port with the IMU. The BlinkM took I2C bandwidth that I needed badly for the IMU. So I decided it had to go. After I removed it I tested the IMU sensor again. Guess what, the problems I experienced with higher speed I2C that RobotC and Lejos offer where gone! This means I can query my sensor more often, leading to better information. Using Lejos I can query the IMU in just over 2 ms. Add some processing time to that and some time needed by other processes and It may still be less than 10 ms. An update frequency of 100 Herz is within reach.
Overall, this has been a successful weekend. My success encouraged me to start with some new things. I want the BlinkM to be daisy chained with two more LEDs. Remember my robot is triangular. I want a LED on every corner and have some neat light effects in mind. I ordered two more BlinkM’s and some connectors that allow me to daisy chain them.
I also ordered a 3 axis magnetometer. This will make it possible to calculate heading even when the robot is tilted. The idea is to feed this info into my complementary filter, thus further improving the quality of the data it outputs.
The remainder of my money I spend on a digital pocket oscilloscope. I really missed one when building the IMU.
Coming weeks I will convert my filter to Lejos. I’ll also start working on a physical model of my robot in Lejos. The purpose of the physical model is to abstract the robot design within the code. It should make it possible to say “go north with a speed of 0.3 m/s” instead of saying “speed of motor A=70, speed of motor B=-70, speed of motor C =0”.