Go to Post This [Coach badge] means no-touchy the controllers. Even to save them from certain doom. - Kevin Sevcik [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Closed Thread
 
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 15-01-2006, 11:18
naor52 naor52 is offline
Registered User
FRC #1578
 
Join Date: Dec 2005
Location: ISREAL
Posts: 23
naor52 is an unknown quantity at this point
Dual-Axis Accelerometer

I got the Acceleration sensor working (if people are still having problems with this, PM me, i'd be happy to help) but the values i'm getting are odd....

when sitting still the value returned by Get_Analog_Value(rc_ana_in09) is around 716-717, and can get to about 915 or so when shaked.....

is this normal?

how can i transofrm these to normal 0-255 values? should i?

Thanks!
  #2   Spotlight this post!  
Unread 15-01-2006, 11:22
Noah Kleinberg Noah Kleinberg is offline
Registered User
FRC #0395 (2TrainRobotics)
Team Role: Driver
 
Join Date: Jan 2006
Rookie Year: 2006
Location: New York
Posts: 196
Noah Kleinberg is a splendid one to beholdNoah Kleinberg is a splendid one to beholdNoah Kleinberg is a splendid one to beholdNoah Kleinberg is a splendid one to beholdNoah Kleinberg is a splendid one to beholdNoah Kleinberg is a splendid one to behold
Send a message via AIM to Noah Kleinberg
Re: Dual-Axis Accelerometer

In my experience with it, that's normal.

Just like with the gyroscope, you'll need to first calculate the bias and then subtract that from all of your readings to get accurate numbers.

Last edited by Noah Kleinberg : 15-01-2006 at 11:29.
  #3   Spotlight this post!  
Unread 15-01-2006, 11:38
sciguy125 sciguy125 is offline
Electrical Engineer
AKA: Phil Baltar
FRC #1351
Team Role: College Student
 
Join Date: Jan 2005
Rookie Year: 2004
Location: Sunnyvale, CA
Posts: 519
sciguy125 has a reputation beyond reputesciguy125 has a reputation beyond reputesciguy125 has a reputation beyond reputesciguy125 has a reputation beyond reputesciguy125 has a reputation beyond reputesciguy125 has a reputation beyond reputesciguy125 has a reputation beyond reputesciguy125 has a reputation beyond reputesciguy125 has a reputation beyond reputesciguy125 has a reputation beyond reputesciguy125 has a reputation beyond repute
Send a message via AIM to sciguy125 Send a message via MSN to sciguy125 Send a message via Yahoo to sciguy125
Re: Dual-Axis Accelerometer

Quote:
Originally Posted by naor52
when sitting still the value returned by Get_Analog_Value(rc_ana_in09) is around 716-717, and can get to about 915 or so when shaked.....

is this normal?

how can i transofrm these to normal 0-255 values? should i?

Thanks!
I'm sure that you need to figure out the bias. However, you also might want to make sure that it's level. Remember that gravity will register on an accelerometer.

As for converting to 8bit, just shift it two bits to the right
Code:
8_bit = 10_bit >> 2;
__________________

-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GE/S/P a-- e y-- r-- s:++ d+ h! X+++
t++ C+ P+ L++ E W++ w M-- V? PS+ PE+
5- R-- tv+ b+ DI+++ D- G
------END GEEK CODE BLOCK------
  #4   Spotlight this post!  
Unread 15-01-2006, 12:26
KenWittlief KenWittlief is offline
.
no team
Team Role: Engineer
 
Join Date: Mar 2003
Location: Rochester, NY
Posts: 4,213
KenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond repute
Re: Dual-Axis Accelerometer

shaking it doenst provide any usefull information.

use gravity as your test acceleration - first tip it one way (9.8M/S^2 down) then rotate 90 degrees (0 M/S^2) then tip it up the other way (9.8M/S^2 up).

Use those readings as your reference / zero points.

Last edited by KenWittlief : 15-01-2006 at 14:36.
  #5   Spotlight this post!  
Unread 15-01-2006, 12:59
Biff Biff is offline
Registered User
AKA: Tom Cooper
#1227 (Techno Gremlins)
Team Role: Mentor
 
Join Date: Jan 2004
Location: Grand Rapids MI
Posts: 214
Biff is a jewel in the roughBiff is a jewel in the roughBiff is a jewel in the roughBiff is a jewel in the rough
Re: Dual-Axis Accelerometer

The info is in the manual for the controller and in other places. Here goes anyway, the A/D converters on the robot control have 10 bit resolution, the code snippet above shows how to get rid of the lest significant bits. To get 0 to 254 numbers. The A/D converters on the operator interface (OI) are 8 bit, no need to bit shift them to get to 0 to 254. If you are comparing the numbers from say from a pot on the IO and one on something attached to the robot it's good to keep in mind that the a/d converters have this difference.
  #6   Spotlight this post!  
Unread 15-01-2006, 12:56
Kevin Watson's Avatar
Kevin Watson Kevin Watson is offline
La Caņada High School
FRC #2429
Team Role: Mentor
 
Join Date: Jan 2002
Rookie Year: 2001
Location: La Caņada, California
Posts: 1,335
Kevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond repute
Re: Dual-Axis Accelerometer

Quote:
Originally Posted by sciguy125
I'm sure that you need to figure out the bias. However, you also might want to make sure that it's level. Remember that gravity will register on an accelerometer.
Here's my first-cut at code that will give an angle relative to the gravity vector, which points down. I'm working on a calibration routine for the bias,
but for now, just assume it's at the 2.5v mid-point. This code will work with the ADC code on my website. I imagine this code would work great for knowing what angle your ball launcher was at.

-Kevin

Code:
 
int Accel_Angle(void)
{
int x_axis;
int y_axis;
int angle;
 
x_axis = (int)Get_ADC_Result(X_AXIS_CHANNEL) - X_AXIS_BIAS;
 
y_axis = (int)Get_ADC_Result(Y_AXIS_CHANNEL) - Y_AXIS_BIAS;
 
angle = (int)(ANGULAR_CONVERSION * atan2((float)y_axis, (float)x_axis));
 
return(angle);
}
 
 
Here are the constants:

Code:
// Analog channel on the robot controller that's hooked-up to
// the x-axis accelerometer
#define X_AXIS_CHANNEL 1

 
// Analog channel on the robot controller that's hooked-up to
// the y-axis accelerometer
#define Y_AXIS_CHANNEL 2
 
// 800Hz sample rate & 16 samples averaged per update (see adc.h)

#define X_AXIS_BIAS 2048

#define Y_AXIS_BIAS 2048
 

// Pick the angular unit by removing the // from one of these two lines.
// #define MILLIRADIANS
// #define TENTHS_OF_A_DEGREE
#define DEGREES
 
 
#ifdef MILLIRADIANS
#define ANGULAR_CONVERSION 1000.0// milliradians per radian
#endif
 
#ifdef TENTHS_OF_A_DEGREE
#define ANGULAR_CONVERSION 573.0// tenths of a degree per radian
#endif
 
#ifdef DEGREES
#define ANGULAR_CONVERSION 57.3// degrees per radian
#endif
 
// function prototypes
int Accel_Angle(void);
__________________
Kevin Watson
Engineer at stealth-mode startup
http://kevin.org
  #7   Spotlight this post!  
Unread 15-01-2006, 14:30
Joe Hershberger Joe Hershberger is offline
National Instruments
AKA: jhersh
FRC #2468 (Appreciate)
Team Role: Mentor
 
Join Date: Nov 2005
Rookie Year: 1997
Location: Austin, TX
Posts: 148
Joe Hershberger is a name known to allJoe Hershberger is a name known to allJoe Hershberger is a name known to allJoe Hershberger is a name known to allJoe Hershberger is a name known to allJoe Hershberger is a name known to all
Re: Dual-Axis Accelerometer

Quote:
Originally Posted by Kevin Watson
Here's my first-cut at code that will give an angle relative to the gravity vector, which points down. I'm working on a calibration routine for the bias,
but for now, just assume it's at the 2.5v mid-point. This code will work with the ADC code on my website. I imagine this code would work great for knowing what angle your ball launcher was at.

-Kevin
If you guys decide to use the accelerometers to measure angles on your bot, keep in mind that the accelerometer will sense all accelerations in its axis. If you are moving or getting bumped or if your machine shakes violently, then you will pick up those accelerations as well as gravity, and the angle you compute will be less precise due to that noise. This will almost definitely keep you from shooting well on the run or under duress.

Good Luck!
-Joe
  #8   Spotlight this post!  
Unread 15-01-2006, 14:39
KenWittlief KenWittlief is offline
.
no team
Team Role: Engineer
 
Join Date: Mar 2003
Location: Rochester, NY
Posts: 4,213
KenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond reputeKenWittlief has a reputation beyond repute
Re: Dual-Axis Accelerometer

what Joe said^

and remember the magnitude of gravity doesnt change - so if your sensors are reading more that 9.8M/S^2 (vector reading) that tells you the bot is accelerating, not sitting still
  #9   Spotlight this post!  
Unread 26-01-2006, 17:24
railerobotics's Avatar
railerobotics railerobotics is offline
Registered User
FRC #0935
 
Join Date: Jan 2006
Location: Newton, KS
Posts: 190
railerobotics will become famous soon enough
Re: Dual-Axis Accelerometer

Quote:
Originally Posted by Kevin Watson
Here's my first-cut at code that will give an angle relative to the gravity vector, which points down. I'm working on a calibration routine for the bias,
but for now, just assume it's at the 2.5v mid-point. This code will work with the ADC code on my website. I imagine this code would work great for knowing what angle your ball launcher was at.

-Kevin

Code:
 
int Accel_Angle(void)
{
int x_axis;
int y_axis;
int angle;
 
x_axis = (int)Get_ADC_Result(X_AXIS_CHANNEL) - X_AXIS_BIAS;
 
y_axis = (int)Get_ADC_Result(Y_AXIS_CHANNEL) - Y_AXIS_BIAS;
 
angle = (int)(ANGULAR_CONVERSION * atan2((float)y_axis, (float)x_axis));
 
return(angle);
}
 
 
Here are the constants:

Code:
// Analog channel on the robot controller that's hooked-up to
// the x-axis accelerometer
#define X_AXIS_CHANNEL 1

 
// Analog channel on the robot controller that's hooked-up to
// the y-axis accelerometer
#define Y_AXIS_CHANNEL 2
 
// 800Hz sample rate & 16 samples averaged per update (see adc.h)

#define X_AXIS_BIAS 2048

#define Y_AXIS_BIAS 2048
 

// Pick the angular unit by removing the // from one of these two lines.
// #define MILLIRADIANS
// #define TENTHS_OF_A_DEGREE
#define DEGREES
 
 
#ifdef MILLIRADIANS
#define ANGULAR_CONVERSION 1000.0// milliradians per radian
#endif
 
#ifdef TENTHS_OF_A_DEGREE
#define ANGULAR_CONVERSION 573.0// tenths of a degree per radian
#endif
 
#ifdef DEGREES
#define ANGULAR_CONVERSION 57.3// degrees per radian
#endif
 
// function prototypes
int Accel_Angle(void);
In this code what is "atan2"? When I compile this code it gives me a prototyping error. I deleted the line with "atan2" and it compiled just fine. I can't seem to find "atan2" anywhere else in the code.
  #10   Spotlight this post!  
Unread 26-01-2006, 17:30
Kevin Watson's Avatar
Kevin Watson Kevin Watson is offline
La Caņada High School
FRC #2429
Team Role: Mentor
 
Join Date: Jan 2002
Rookie Year: 2001
Location: La Caņada, California
Posts: 1,335
Kevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond reputeKevin Watson has a reputation beyond repute
Re: Dual-Axis Accelerometer

Quote:
Originally Posted by railerobotics
In this code what is "atan2"? When I compile this code it gives me a prototyping error. I deleted the line with "atan2" and it compiled just fine. I can't seem to find "atan2" anywhere else in the code.
Um, before posting, perhaps you could just google "atan2()".

-Kevin
__________________
Kevin Watson
Engineer at stealth-mode startup
http://kevin.org
  #11   Spotlight this post!  
Unread 26-01-2006, 18:12
railerobotics's Avatar
railerobotics railerobotics is offline
Registered User
FRC #0935
 
Join Date: Jan 2006
Location: Newton, KS
Posts: 190
railerobotics will become famous soon enough
Re: Dual-Axis Accelerometer

Sorry, Thanks. I still can't figure out why it is giving me a protoype error on the line that has atan2.
  #12   Spotlight this post!  
Unread 27-01-2006, 02:55
doubleslash's Avatar
doubleslash doubleslash is offline
driven
AKA: Justin Huang
FRC #0649 (Saratoga Robotics)
Team Role: Leadership
 
Join Date: Jan 2005
Rookie Year: 2005
Location: Saratoga, CA
Posts: 11
doubleslash is an unknown quantity at this point
Send a message via AIM to doubleslash
Re: Dual-Axis Accelerometer

Quote:
Originally Posted by railerobotics
Sorry, Thanks. I still can't figure out why it is giving me a protoype error on the line that has atan2.
#include <math.h>

As a rule, any sort of math function has a good chance of being in "math.h," again, nothing a quick Google search can't confirm.
__________________
I, I'm allergic to bee stings. They cause me to uh, die.
  #13   Spotlight this post!  
Unread 27-01-2006, 22:06
TubaMorg TubaMorg is offline
Programmermechanicalelect ricalcoach
AKA: Dan
FRC #1480 (Robatos Locos)
Team Role: Mentor
 
Join Date: Jan 2006
Rookie Year: 2005
Location: Houston
Posts: 450
TubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond reputeTubaMorg has a reputation beyond repute
Re: Dual-Axis Accelerometer

LOL Ok yall....quit taking code snippets and trying to compile them. Take the snippets with grace and appreciation for the fact that there's people here that can figure this stuff out. It is YOUR responsibility to adhere to proper C syntax to get it to compile. ORRRR you can wait for Kevin Watson to finish tweaking it and supply the entire source on his site. We should ALL thank him for his work. Without him half the teams would be lost! Hip hip....hoorayyy!

Oh in case it wasn't clear from my post, you need to add in the stuff that makes it a compilable C program (i.e. Math.h and appropriate brackets). Look at the rest of your working code for guidance. You could put the constants in Accel.h then the function blocks in Accel.c or something.

Last edited by TubaMorg : 27-01-2006 at 22:10.
  #14   Spotlight this post!  
Unread 27-01-2006, 16:38
Team 614 Team 614 is offline
Registered User
FRC #0614
 
Join Date: Jan 2006
Location: North Virginia
Posts: 4
Team 614 is an unknown quantity at this point
Re: Dual-Axis Accelerometer

Quote:
Originally Posted by Kevin Watson
Um, before posting, perhaps you could just google "atan2()".

-Kevin
PWNED>!!!!!11!!lll1!l!11!one!!11!
  #15   Spotlight this post!  
Unread 27-01-2006, 21:31
railerobotics's Avatar
railerobotics railerobotics is offline
Registered User
FRC #0935
 
Join Date: Jan 2006
Location: Newton, KS
Posts: 190
railerobotics will become famous soon enough
Re: Dual-Axis Accelerometer

Quote:
Originally Posted by Kevin Watson
Here's my first-cut at code that will give an angle relative to the gravity vector, which points down. I'm working on a calibration routine for the bias,
but for now, just assume it's at the 2.5v mid-point. This code will work with the ADC code on my website. I imagine this code would work great for knowing what angle your ball launcher was at.

-Kevin

Code:
 
int Accel_Angle(void)
{
int x_axis;
int y_axis;
int angle;
 
x_axis = (int)Get_ADC_Result(X_AXIS_CHANNEL) - X_AXIS_BIAS;
 
y_axis = (int)Get_ADC_Result(Y_AXIS_CHANNEL) - Y_AXIS_BIAS;
 
angle = (int)(ANGULAR_CONVERSION * atan2((float)y_axis, (float)x_axis));
 
return(angle);
}
 
 
Here are the constants:

Code:
// Analog channel on the robot controller that's hooked-up to
// the x-axis accelerometer
#define X_AXIS_CHANNEL 1

 
// Analog channel on the robot controller that's hooked-up to
// the y-axis accelerometer
#define Y_AXIS_CHANNEL 2
 
// 800Hz sample rate & 16 samples averaged per update (see adc.h)

#define X_AXIS_BIAS 2048

#define Y_AXIS_BIAS 2048
 

// Pick the angular unit by removing the // from one of these two lines.
// #define MILLIRADIANS
// #define TENTHS_OF_A_DEGREE
#define DEGREES
 
 
#ifdef MILLIRADIANS
#define ANGULAR_CONVERSION 1000.0// milliradians per radian
#endif
 
#ifdef TENTHS_OF_A_DEGREE
#define ANGULAR_CONVERSION 573.0// tenths of a degree per radian
#endif
 
#ifdef DEGREES
#define ANGULAR_CONVERSION 57.3// degrees per radian
#endif
 
// function prototypes
int Accel_Angle(void);
When I build this code I get a syntax error and it points me towards the bracket under int Accel_Angle(void). What's wrong?
Closed Thread


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Dual fields Keith Chester Rumor Mill 11 05-04-2005 17:57
Accelerometer Timer Question psquared Programming 3 12-02-2005 01:34
URGENT! We need help with the accelerometer lkdjm Electrical 5 11-02-2005 16:42
Accelerometer Wiring/Input DAN THE MAN Control System 1 06-02-2005 20:02
Example accelerometer code released. Kevin Watson Programming 0 20-01-2005 03:45


All times are GMT -5. The time now is 08:59.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi