View Single Post
  #1   Spotlight this post!  
Unread 26-01-2008, 10:56
RyanW RyanW is offline
Registered User
FRC #0449 (Blair Robot Project)
Team Role: Programmer
 
Join Date: Feb 2007
Rookie Year: 2007
Location: MD
Posts: 40
RyanW has a spectacular aura aboutRyanW has a spectacular aura about
Gyros and WPILib

Our team is using WPILib to program our robot, and we are trying to use a gyroscope to get the heading of the robot. We are using an ADXRS150 gyroscope, and when we try to read off of it, we get continuously incrementing values. Our gyro test code looks somewhat like this:

At the beginning of the autonomous method (only gets called once):
Code:
SetGyroType(GYRO_PORT, ADXRS150);
InitGyro(GYRO_PORT);
//The following should create a delay so we don't start doing anything else right after initializing
StartTimer(5);
while(GetTimer(5)<2000);
StopTimer(5);
StartGyro(GYRO_PORT);
We then move into an infinite loop, calling the following over and over:
Code:
printf("GyroHeading=%d\r", GetGyroAngle(GYRO_PORT));
The gyroscope has two PWM cables. On both cables, the red and black go to the +5 and ground ends of the gyro respectively. The white signal wire on the first cable (in GYRO_PORT) goes to rate, and the signal wire on the second cable (going to an otherwise unused analog input port) has the 2.5 volt calibration signal. The two self-test pins also go to ground.

Again, whenever we run the test code, the gyro angle continuously increments, regardless of whether or not we turn the gyro. The analog value being returned is varying from about 536-544, staying mostly within +/-2 of the center value.

EDIT: We fixed output from a long to an int, so the values we are getting are reasonable. However, every second or so, it's still incrementing.

EDIT 2: It now changes as we turn it, but the output is not in tenths of a degree (as WPILib specifies), or even in degrees. It is about 1/4 as much as it should be...any ideas what's wrong?

Any ideas as to what's wrong, and what we can do to fix it?

Thank you for your help.

Last edited by RyanW : 26-01-2008 at 11:46.