Jeffery makes (almost) Anything

Project 10 : Interface and Application Programming

This week I wanted to program some application to interact with a 3D accelerometer for the final project (possibly a segway). I wanted to start with Neil's board and build from there.

Unfortunately making the accelerometer board work turned into a full-blown debugging venture, and by the end I had no time left to make my own application. I will get back to finishing this as soon as possible.

I started by milling and soldering the board. The soldering started with the accelerometer, which was very tricky to put on. I initially was soldering wrong and ended up blasting the board with the heat gun:


Regardless the final board came out nicely:


However when trying to use the board with the python script provided by Neil, I ran into several issues.

First one had to find the port to input to the script. This can be done by typing the following in terminal and coyping the output:


After this step the script would run withone of three errors: blank window, all values stay frozen at .33, or x is the only measure with value and it stays fixed.

It turns out this meant that my accelerometer was incorrectly soldered, so I had to learn to reflow solder correctly:

  1. There must be a tiny bit of solder on both sides: all the accelerometer pads and the board pads.
  2. The ground pins indicate in which direciton the sensor must be placed
  3. When lowering the accelerometer, hold its pads at an angle so as to leave them exposed to the heat gun
  4. Ideally surface tension pulls the sensor into the right position; in my experience, this step required placing it very precisely on the board.
  5. the pads are extremely close together, so shorts are very easy to make: a first easy way to troubleshoot is to make sure through a voltmeter that no short is created.

There were several unsuccessful tries, but the board program finally worked after a while! However there were two problems: first the delay was huge (about 10 seconds). Second, the program only worked about once out of ten; the other times I would get one of the original errors.