Conclusion
Speed, Accuracy and Usability
We ran into a host of problems when starting this
project, some of which should be noted for future teams. Originally, we had
planned to use WinAVR, an open source GCC compiler for the AT Mega platform.
However, we realized that this compiler was generating absolute garbage for its
assembly output. After seeking help from newsgroups, bulletins, Professor Land,
the TA's, and even former 476er's, no one was able to come up with a possible
reason as to why this compiler just plain didn't work! Specifically, functions
would only work when declared as inline, which essentially
indicates some sort of bug in the register file or stack. After 1.5 weeks of
tedious debugging and assembly code reading, we gave up and reverted to
CodeVision.
Thankfully, we had the foresight to split up the
project once we saw this bug. One of us worked on the components (whose
interface is basically compiler independent) and the other worked on the code
and
compiler. Therefore, even though we encountered this enormous failure, we
weren't entirely stuck.
The choice to use an ATMega128 was most definitely
a good one. Its dual UARTs made it the ideal chip for debugging, as GPS constantly
tied up one of the UART lines. Also, its multitude of IO pins allowed us to make
our design flexible, so as we discovered problems, we
had room to expand and work with.
Also, as another point of advice, use the oscilloscope
as much as humanly possible. This tool proved invaluable to our debugging
process, as it turns out, the GPS implements RS232 backwards of the "standard".
If we had not used the scope, it would have taken us much longer to figure out
that the signals were inverted! Also, tracing analog noise and characterizing
its frequency is made easy on the newer digital scopes. We could target our
dominant noise frequency almost exactly and eliminate it from our A/D readings.
The LCD we used turned out to be very nice. The screen is
simply beautiful, the characters are clear even at very small font sizes. If we
had a larger budget, a text+graphic LCD would have saved lots of code, but it
was fun to implement the library none the less. We think the UI turned out very
good. We were lucky in that we had a scope at our disposal almost all the time.
In its absence, we would definitely recommend many debug LED's to help solve
code problems.
Although a good portion of our design worked well, not everything
turned out as planned. Specifically, the integration of the gyros
and accelerometers with GPS proved to be far to taxing to be done properly on
the ATMega128. If we had more floating point "horsepower", the filter would have
worked much better. However, with the 128, the calculations could only be
performed at about 20hz, so the filter diverged very quickly (less than 2
seconds in losing GPS). Additionally, the MEMS sensors had much more noise than
we had original planned for. This is most likely due to the lack of PCB's and
not as much care taken for noise immunity as is needed. Thermal consideration
also would have helped the gryos. For these reasons we disabled the gyro/accel
integration for the demo. Also, the LCD takes a long time to draw to,
almost 100ms. This was solved by updating the screen only every 20 frames, but
it still would have been nice to have the full update speed.
Task List
-
Max
Circuit board Design and Layout
LCD Interface
A/D Interface
General Programming
Documentation
-
Aaron
WinAVR Troubleshooting
GPS Interface
Soldering
General Programming
Documentation
Website
Budget
Graphic LCD Crystalfontz |
$ 24.00 |
AT Mega Riser Board |
$ 8.00 |
Radioshack PCB |
$ 5.00 |
7400 Inverter |
$ 1.00 |
Misc. Discrete Components |
$ 5.00 |
Max233 |
$ 5.00 |
Accelerometers |
FREE *sampled |
Gyros |
FREE *sampled |
GPS Receiver |
FREE *owned |
AT Mega 128 |
FREE *sampled |
|
|
TOTAL |
|
$ 48.00 |
The IEEE Code of Ethics
2. to avoid real or perceived conflicts of interest whenever
possible, and to disclose them to affected parties when they do exist;
GPS itself has all sorts of very strong implications, the thought of knowing
where someone is at all times is bothersome to many. And for national defense,
GPS can be seen as a threat. However, the government uses its SA (selective
ability) code to encrypt GPS during times of trouble, so this threat is minimal.
Our device is not nearly accurate enough over time to make this be a problem.
3. to be honest and realistic in stating claims or estimates based on available
data;
Our report has been honest to the best of our knowledge. We relied on the claims
of the manufacturers for the inertial sensors and verified their accuracy or
lack there of in our implementation.
4. to reject bribery in all its forms;
No bribery was performed, we promise!
7. to seek, accept, and offer honest criticism of technical work, to acknowledge
and correct errors, and to credit properly the contributions of others;
We have referenced all our papers and datasheets in the next section. All of our
code was original, so there was no real credit to be dealt.