Electronic – Building a small 3-axis accelerometer mote

accelerometertransmitterwireless

I'd like to build a remote device which reports its current 3-axis acceleration to a nearby (<10m) receiver. It needs to be as light and as small as possible. (I have no preference as to the receiving end, but ultimately the data will need to be pulled into a computer in real-time)

Does anyone have any recommendations as to how to go about planning this build? At the moment I'm looking at a low power digital accelerometer from Sparkfun and their simplest transmitter and receiver boards, I haven't really considered how I'd wire these together yet – I've selected these products for their size and low power consumption (~8mA together) so I can keep the inevitable battery really small too – the 5V requirement of the Tx board is a bit annoying (a coin cell would be perfect at 3V).

Any thoughts welcome, a winning answer would be one linking to material that helps me plan the circuit for the transmission of the data from the device back to the receiver.

EDIT:: On the advice of the commenter below I'll detail my thoughts on data rate needs.

I'd like to be able to be able to transmit the 3-axis acceleration of the remote unit in as close to real-time as possible, with a sample rate at 100ms or faster (though I'm prepared to be flexible on this)

To be a little clearer about what I'm building here, I'm trying to capture the acceleration data from things like juggling balls/poi etc to turn into visualisations on a computer. Thus size really is critical (XBee modules would be a little big I believe) however accuracy as to acceleration is not completely vital

Best Answer

First of all, the comment regarding your intended application is very important. For this answer, I'm going to assume the you want the highest data rate possible (i.e. Wii-type controller that sends near-instantaneous data). I give you two options below. In both cases, the receiver is simple: receiver board (either another XBee or the sister board of the transmitter you are using) connected to a USB-serial converter connected to your computer.

Option 1: Really easy to build, not-so-low power

An XBee 1mw Chip Antenna can be configured to transmit at whatever datarate you need, has a max. range of 100m, and, best of all, has six on-board ADCs. You can configure the XBee to automatically sample these and transmit their values. X, Y and Z from the accelerometer can go directly into AI0, AI1 and AI2 pins on the XBee and they can both be fed with 3.3V.

  • Good: You only need a battery, the accelerometer and the XBee to transmit, and another Xbee to receive.
  • Bad: The XBee has 45mA peak current when transmitting.

Option 2: Not so easy to build, low power

The transmitter board you mentioned can be powered by 3.3V (according to the datasheet). Alternatively, you could use this 2.4GHz transciever. In both cases, you will need a microcontroller (easy) or an ADC with serial output (harder, will need a PCB, something along the lines of the MAX1245) to convert the analog signals from the accelerometer to digital signals for the transmitter. I recommend you use a microcontroller (Arduino Pro Mini 3.3V for prototyping, then just an ATMega328 when you're done with the design).

  • Good: Low power (7-10mA).
  • Bad: Will cost a lot more design time and burnt fingers.

Option 3: Stereo FM transmitters modulating 3 channels of data

This is in response to "Can I do it without converting the signals?".

  1. Use resistors and op-amps to bring the accelerometer's readings down to 90mVrms.
  2. Use two of these stereo FM transmitters, hook up X to Rin, Y to Lin, and Z to Rin of the other transmitter.
  3. Configure the transmitters to Tx on different frequencies.

On the receiver side:

  1. Aquire the FM signals and demodulate back to right and left audio. You could use something like this.
  2. Amplify and offset the three channels (right and left channel on one, and only right on the other) to measurable voltages (op-amps would work, but I have a feeling we just added a ton of noise to the whole thing).
  3. Plug these signals to any microcontroller (Arduino, if you're feeling lazy) with ADCs and send them out as serial data to your computer.

NOTE: Most FM tuners will have band-pass filters that will screw this whole idea up.