I have now gyro.c and gyro.h (and all navigation.zip too!) but can you tell me what software and hardware I have to take to make it work?
All I have now: ADXRS150, uC: ATMEGA8535 with 10bit ADC, superior loader to load program into uC. I also have a software which I wrote in Turbo C and it can receive data from ADXRS150 gyro through ADC of uC. It can measure voltage by software very exactly but when I change to angular it not exactly:
real 10 degree but value in software only :9.89
real 20 degree but value in software only :14.5
real 30 degree but value in software only :20.3
May be it cause of intergration in my software. I didn’t measure the interval between a sample and the next exactly.
So I want to try another method as Kevin use here.
And again, I want to know what software, hardware I need to have and what to do next?
As long as your samples are occuring consistently, you should be able to have a consistent error, which you seem to have, although I’m just eye-balling the numbers. I would try tweaking the gyro calculation constant (I believe thats what Kevin calls it).
The gyro gives whatever rate of rotation it has at the time of the call. Rate wise, it will always be accurate. If you don’t call it quickly enough (your question), you may miss subtle changes. This is important because you are integrating the rate. Not having the smoothest slope (or as many samples of gyro rate) means you MAY be losing accuracy due to that. However, the processor works so darn fast, and our robots move so relatively slow, that I doubt that sample rate is the cause of your problem.
I hope I’ve made sense…