I have a number of things to say here, and some of them do involve agreeing with pingswept and some with penjuin.
cr3000
The cr3000 sampling at 16 bits and 100 Hz is going to be sampling a little slow for you to easily remove noise from your data but at a significantly higher precision then will be usable. I doubt you can get 13 or 14 bits of precision without some pretty good filtering algorithms. Accelerometers have taught me that vibration is the devil, blasted phonons.
Output Capacitor
You need to make sure you do as the datasheet says and signal theory dicates. To quote the datasheet:
The output of the ADXL103/ADXL203 has a typical bandwidth
of 2.5 kHz. The user must filter the signal at this point to limit
aliasing errors. The analog bandwidth must be no more than half the analog-to-digital sampling frequency to minimize
aliasing. The analog bandwidth can be further decreased to reduce noise and improve resolution.
This means you need to pick a capacitor to keep your rate below 50Hz. If you place it above this you can get aliasing, and aliasing makes vibration noise a devil you signed a deal with. They state how to calculate the noise levels from the device, and at a 50Hz bandwidth a peak to peak noise of .006 * Gravity will not even be noticed if you have this on a device with vibrations.
Interpreting Data
This is probably what you are most interested in, and is relatively easy to do. You need to tag a time that the device is at neutral, this being when it is flat and you have it relatively still. Give it a second or two at this point, and then you can take the median of this data to determine the no-G voltage. Then you can use this as a point you compare the device to. Now, from this point, I can directly quote the data-sheet:
When the
accelerometer is perpendicular to gravity, its output changes
nearly 17.5 mg per degree of tilt.
So you can just simply use this approximation if you are not going to tilt very much, but you will need to use geometry if you plan to tilt in both direction and in angles that are not extremely small.
If you are going to be going larger, they even have the equations spelled out as:
PITCH = ASIN(AX/1 g)
ROLL = ASIN(AY/1 g)
As far as I can tel your device gives a 1V change per 1G of acceleration placed on it. If you have done the calibrate phase, then you should be able to take measurments, subtract the offset, and you have the number of Gs being experienced.
Stop Reading Here unless you run into issues or you would like more information to improve approach.
I added a decent bit more talking about other approaches and methods to improve your approach for fast changing systems or systems where you are going to program the device doing the samples.
Sampling Frequency
You need to be sampling significantly faster than the speed at which your device changes the directions in which it is accelerating, as you have to measure orientation 20-30 times per second. you need to be able to measure quickly enough to filter out vibration noise and acceleration due to other affects, which i have found to be quite large when working with an accelerometer.
3-axis accelerometer
Second, if you have a three axis accelerometer, then you can quite easily recognize when one axis is losing part of the acceleration due to gravity(ie. When the z axis has it's magnitude drop by 2m/s^2, you know that the gain you saw on the other axis is gravity). This will still be messy, but in general there will be an addition of acceleration which gives the velocity needed to change your orientation and then a change in acceleration due to orientation change, often allowing you to recognize orientation.
Problems with 2-axis
This is going to be, as penjuin said, almost impossible with a 2 axis accelerometer, and sketchy at best if you have a system that can have 20-30 different orientations a second, or if you need to have an exact measure of orientation at all times. I am sure a master's student could write a pretty nice thesis on this, or a Doctorate could write a dissertation on improving this algorithm.
Vibration Noise
To add more, if you can put your device on top of something that will keep it statically locked to the motion of your device, but dampens vibration, you will get much better numbers and not need as much software filtering. Some simple foam type padding can be placed between the accelerometer and your device, and if it is digital this should not increase electrical noise and help absorb some vibration noise. This should only be done if you see problems with the vibration noise.
Digital Accelerometer
I would suggest a digital accelerometer that you can use SPI to connect to. Data can be clocked out at a very very high rate and you can work in the back ground as your SPI does the constant work of loading the next set of values. You will need to have a nice microcontroller if it is going to be done digitally. If you can give me better specifics on what you are wanting to do I can give better feedback. If you want a warning based on tilt detection then it should be very easy to do with all analog, but if you want to measure the position and angle of equipment during operation, get ready for some work.
Please let me know if there is something I can add to make this answer more clear or applicable to what you were looking for.
In general, you can integrate acceleration data to obtain rates, and further integrate rates to get position/attitude information. This is known as dead-reckoning.
The model you described has what's known as 6 degrees of freedom. The six degrees are three translational: the north-south axis, east-west axis, up-down axis, and three angular: roll, pitch, and heading (and/or yaw).
Translational accelerations will show up directly as changes in one or more of the three channels. You can get angular orientation by isolating out the 'bias' acceleration due to gravity.
As for noisy spikes in the data, the easiest approach is to run a low-pass filter (LPF) of some kind on the data. This can be done in software with a moving-window time average of the last N samples. You have to be aware though, that since your speed and position data is an integration of the raw data, that any errors also get integrated. In other words, your sensor-based estimate of the vehicle's position, speed, orientation all become less accurate as time goes on, so the better you can remove the noise, the better your navigational solution will be.
Best Answer
Let's put together a simple mathematical model of an accelerometer - from this, we can work out some calibration options.
Ignoring non-linearity and other nasty effects, the output measurement of an accelerometer is given by:
$$\hat{\mathbf{f}} = \mathbf{M} \mathbf{f} + \mathbf{b}_a + \mathbf{n}_a$$
where \$\hat{\mathbf{f}}\$ is the actual measurement, \$\mathbf{b}_a\$ is the accelerometer bias, \$\mathbf{n}_a\$ is a random noise vector, \$\mathbf{f}\$ is the true specific force (i.e. acceleration) and \$\mathbf{M}\$ is the Scale Factor/Misalignment Matrix.
The individual elements of the SFA matrix are: $$ \mathbf{M} = \begin{bmatrix} S_x && \gamma_{xy} && \gamma_{xz} \\ \gamma_{yx} && S_{yy} && \gamma_{yz} \\ S_x && \gamma_{zy} && S_{zz} \\ \end{bmatrix} $$
So, each scale factor is represented by an \$S\$ and each cross-axis sensitivity is represented by a \$\gamma\$.
Ideally, if the scale factor is 1 and there is no cross-axis sensitivity, then then the resulting matrix is \$\mathbf{M} = \mathbf{I}\$.
Representing it like this allows us to develop a compensation model. If we happen to know \$\mathbf{M}\$ and \$\mathbf{b}_a\$ and assume \$\mathbf{n}_a\$ to be small (i.e. close to zero), we can make a good estimate of the "true" acceleration from the measurements: $$ \mathbf{f} = \mathbf{M}^{-1}\left(\hat{\mathbf{f}} - \mathbf{b}_a\right) $$
The trick is, of course, working out \$\mathbf{M}\$ and \$\mathbf{b}_a\$.
I'll describe a procedure called the six position test, which is an easy and cheap way to calibrate an accelerometer. Step 1 is to mount the accelerometer in a rectangular box with perfectly \$90^\circ\$ sides (or as close as you can get). Place this on a perfectly level surface (or, again, as close as you can get) - you'd be surprised how good you can do this.
At this point, we know what the value should be: gravity on the z-accelerometer: $$ \mathbf{f}_1 = \begin{bmatrix} 0 \\ 0 \\ g\end{bmatrix} $$
So, this becomes: $$ \hat{\mathbf{f}}_1 = \mathbf{M} \mathbf{f}_1 + \mathbf{b}_a + \mathbf{n}_a $$ Noting that \$\hat{\mathbf{f}}_1\$ will close, but not the same as \$\mathbf{f}_1\$
If we put the box on it's head, the force acting is \$-g\$: $$ \mathbf{f}_2 = \begin{bmatrix} 0 \\ 0 \\ -g\end{bmatrix} $$
And when placed on one side: $$ \mathbf{f}_3 = \begin{bmatrix} 0 \\ -g \\ 0\end{bmatrix} $$
And so on for the remaining three sides.
Now, let's write out one of the equations longhand: $$ \hat{\mathbf{f}}_1 = \mathbf{M} \mathbf{f}_1 + \mathbf{b}_a + \mathbf{n}_a = \begin{bmatrix} S_{xx} f_x + \gamma_{xy} f_y + \gamma_{xz} f_z + b_x \\ \gamma_{yx} f_x + S_{yy} f_y + \gamma_{yz} f_z + b_y \\ \gamma_{xz} f_x + \gamma_{yz} f_y + S_{zz} f_z + b_z \end{bmatrix} $$
And even longer hand (for the first one): $$ \hat{\mathbf{f}}_1 = \begin{bmatrix} f_x S_{xx} + f_y \gamma_{xy} + f_z \gamma_{xz} + 0 \gamma_{yx} + 0 S_{yy} + 0 \gamma_{yz} + 0 \gamma_{xz} + 0 \gamma_{yz} + 0 S_{zz} + 1 b_x + 0 b_y + 0 b_z \\ 0 S_{xx} + 0 \gamma_{xy} + 0 \gamma_{xz} + f_x \gamma_{yx} + f_y S_{yy} + f_z \gamma_{yz} + 0 \gamma_{xz} + 0 \gamma_{yz} + 0 S_{zz} + 0 b_x + 1 b_y + 0 b_z \\ 0 S_{xx} + 0 \gamma_{xy} + 0 \gamma_{xz} + 0 \gamma_{yx} + 0 S_{yy} + 0 \gamma_{yz} + f_x \gamma_{xz} + f_y \gamma_{yz} + f_z S_{zz} + 0 b_x + 0 b_y + 1 b_z \end{bmatrix} $$
So we can create a stacked vector of the unknowns $$ \mathbf{z} = \mathbf{A} \mathbf{\beta} $$ Where $$ \mathbf{z} = \begin{bmatrix} \hat{\mathbf{f}}_1 \\ \hat{\mathbf{f}}_2 \\ \vdots \\ \hat{\mathbf{f}}_6 \end{bmatrix} $$
And $$ \mathbf{\beta} = \begin{bmatrix} S_{xx} \\ \gamma_{xy} \\ \gamma_{xz} \\ \gamma_{yx} \\ S_{yy} \\ \gamma_{yz} \\ \gamma_{xz} \\ \gamma_{yz} \\ S_{zz} \\ b_x \\ b_y \\ b_z \\ \end{bmatrix} $$
The design matrix is (for one set of measurements): $$ \hat{A}_1 = \begin{bmatrix} f_x && f_y && f_z && 0 && 0 && 0 && 0 && 0 && 0 && 1 && 0 && 0 \\ 0 && 0 && 0 && f_x && f_y && f_z && 0 && 0 && 0 && 0 && 1 && 0 \\ 0 && 0 && 0 && 0 && 0 && 0 && f_x && f_y && f_z && 0 && 0 && 1 \end{bmatrix} $$
Now, once this is setup, one may solve for \$\mathbf{\beta}\$ (and hence sensitivity and bias) via least squares.
A similar procedure may be performed with a robotic arm if you can precisely control the angles - it simply replies knowing the precise gravity at that angle which, if you know the angle, is easy to calculate.