cancel
Showing results for 
Search instead for 
Did you mean: 

STM32 for Motion, MEMS and Tilt applications

asterix
Associate II
Posted on November 04, 2008 at 19:57

STM32 for Motion, MEMS and Tilt applications

10 REPLIES 10
asterix
Associate II
Posted on May 17, 2011 at 12:50

Dear STM32 users,

I'm looking to use a IDG300 and ADXL330 mems sensors from ADI ( Analog devices) with direct connection to STM32 12-bits ADC channels. I was just wondering what filtering I need (as in low pass or high pass) and what the cut off frequencies should be. If also I need to oversample the ADC measurements by averaging to get more effective bits and reduce Noise.

I am using it on a platform for roll, pitch, and tilt measurements for R&D Research in Robotics.

Any ideas ? If you have any other handy information or similar designs it would also be much appreciated.

Best Regards,

Asterix. :p

obtronix
Associate II
Posted on May 17, 2011 at 12:50

Quote:

On 01-11-2008 at 20:16, Anonymous wrote:

Dear STM32 users,

I'm looking to use a IDG300 and ADXL330 mems sensors from ADI ( Analog devices) with direct connection to STM32 12-bits ADC channels. I was just wondering what filtering I need (as in low pass or high pass) and what the cut off frequencies should be. If also I need to oversample the ADC measurements by averaging to get more effective bits and reduce Noise.

I am using it on a platform for roll, pitch, and tilt measurements for R&D Research in Robotics.

Any ideas ? If you have any other handy information or similar designs it would also be much appreciated.

Best Regards,

Asterix. :p

You can't direct connect an ADLX330 (or any analog accelerometer) to the STM32 12 bit A/D input unless you can live with huge errors. The source impedance is the problem.

STM32 A/D has +/- 1uA leakage current

ADLX330 has 32000 ohm source impedance

so V = IR = 1uA * 32000 ohm = +/- 32000uVolts Error

1 bit of a 12 bit A/D at 3V reference is 1/2^12*3 = 732uVolts

+/- 32000/732 = +/- 43 counts of error = about 6 bits of error

so your 12 bit A/D becomes a 6 bit A/D!

You need an op amp to bring down the source impedance below 100 ohms if you want 12 bits of accuracy, you can buy the ADXL with buffers

http://www.robotshop.ca/home/suppliers/Dimension-Engineering/dimension-engineering-de-accm3d.html

or just use a digital version mems accelerometer

asterix
Associate II
Posted on May 17, 2011 at 12:50

Hi obtronix,

Thanks so much for your reply and advice, It is much appreciated. So basically I need an Amp Op to reduce the source impedance. I'm not planning to use Digital versions because I need all my I2C and SPI cells I/F for other applications I/F.

Do you know what is the best Analog Mems (Accelerators and Gyros) on the Market, seems that ST has also some new products to be discovered and tested ?

Thanks also for the web site 🙂

Clt,

Asterix.

[ This message was edited by: asterix.magigimix on 03-11-2008 11:04 ]

obtronix
Associate II
Posted on May 17, 2011 at 12:50

Asterix,

Yes just a simple cheap opamp is all you need to reduce the source impedance, see page 15 of this datasheet for more info (it's an analog devices datasheet, but the idea is the same for the STM32)

http://www.analog.com/static/imported-files/data_sheets/ADUC812.pdf

I had good experiece with Analog Devices and Bosch mems, they both make cheap ($5) and really expensive Mems(>$600), Freescale not so good (too noisy, maybe my design is bad??, don't know). The ADXL330 is very good.

Here are the bosch sensors

http://www.bosch-sensortec.com/content/language1/html/4377.htm

another brand, kionix, you might want to look into

http://www.kionix.com/accelerometers/accelerometers.html

pandoraems
Associate II
Posted on May 17, 2011 at 12:50

Just curious, how do the accelerometers from ST compare to the ones mentioned? (12bit ones with digital interface for instance)

lkolaszewski9
Associate II
Posted on May 17, 2011 at 12:50

Quote:

On 02-11-2008 at 01:42, Anonymous wrote:

You can't direct connect an ADLX330 (or any analog accelerometer) to the STM32 12 bit A/D input unless you can live with huge errors. The source impedance is the problem.

STM32 A/D has +/- 1uA leakage current

ADLX330 has 32000 ohm source impedance

so V = IR = 1uA * 32000 ohm = +/- 32000uVolts Error

1 bit of a 12 bit A/D at 3V reference is 1/2^12*3 = 732uVolts

+/- 32000/732 = +/- 43 counts of error = about 6 bits of error

so your 12 bit A/D becomes a 6 bit A/D!

You need an op amp to bring down the source impedance below 100 ohms if you want 12 bits of accuracy, you can buy the ADXL with buffers

Hi,

It's very strengh, you are writing. There is no need for using any buffer or OpAmp. I'm using ADXL330 with STM32 with direct connection to ADC, and I didn't observe any huge errors. Even if there is any erros produced by this leakage current, it only constant offset. This 32000uVolts you calculated is added to ADXL330 output signal, it's not noise. When you are using ADC, the source impedance influences only on signal bandwith. When impedance rise up, you have to use longer sampling time(to achieve the same error level), and this makes bandwith smaller.

For detalis, look at STM32F103xC STM32F103xD user manual, page 99, table 58.

Best regards,

Lukas

obtronix
Associate II
Posted on May 17, 2011 at 12:50

Quote:

Hi,

It's very strengh, you are writing. There is no need for using any buffer or OpAmp. I'm using ADXL330 with STM32 with direct connection to ADC, and I didn't observe any huge errors. Even if there is any erros produced by this leakage current, it only constant offset. This 32000uVolts you calculated is added to ADXL330 output signal, it's not noise. When you are using ADC, the source impedance influences only on signal bandwith. When impedance rise up, you have to use longer sampling time(to achieve the same error level), and this makes bandwith smaller.

For detalis, look at STM32F103xC STM32F103xD user manual, page 99, table 58.

Best regards,

Lukas

How are you verifying you have more then 6 bits of accuracy? 6 bits is still 1 out of 64, it's not bad. Are you calibrating it out? That is possible. Also, you may be lucky to a have part with low leakage current.

Anyway, the 32000 uV is not constant, because the leakage current is not constant, it's +/- 1uAmp, it's varies part to part and temperature. One part may be -1ua, another .5uA, another 1 uA, as temperature rises it changes.

There are two separate issues, the sampling time and leakage current, they are unrelated, table 58 only addresses the sampling time to charge up the sampling cap to the voltage at the pin input. Leakage current causes Vain to be different then pin voltage because of the voltage drop across the source impedance (see figure 52).

obtronix
Associate II
Posted on May 17, 2011 at 12:50

Quote:

On 03-11-2008 at 15:46, Anonymous wrote:

Just curious, how do the accelerometers from ST compare to the ones mentioned? (12bit ones with digital interface for instance)

I never used any of the ST accelerometers, but the specs look pretty good on the 12 bitters. The nano and pico ones are tiny! but only 8 bits, I believe.

lkolaszewski9
Associate II
Posted on May 17, 2011 at 12:50

Quote:

On 03-11-2008 at 23:19, Anonymous wrote:

How are you verifying you have more then 6 bits of accuracy? 6 bits is still 1 out of 64, it's not bad. Are you calibrating it out? That is possible. Also, you may be lucky to a have part with low leakage current.

Anyway, the 32000 uV is not constant, because the leakage current is not constant, it's +/- 1uAmp, it's varies part to part and temperature. One part may be -1ua, another .5uA, another 1 uA, as temperature rises it changes.

There are two separate issues, the sampling time and leakage current, they are unrelated, table 58 only addresses the sampling time to charge up the sampling cap to the voltage at the pin input. Leakage current causes Vain to be different then pin voltage because of the voltage drop across the source impedance (see figure 52).

Device that I builded was calibrated, total error was < 2LSB. What I'm trying to say is, that leakage current produce only [B]DC[\B] offset error. Maybe it can be changed with temperature, part series etc. But this is very very slow change, and it can be assumed as constant. It can't be interpreted as typical noise and it doesn't decrese ADC resolution. This is very important to reduce this error in measurement device. In simple aplication with accelerometer, this 32mV offset has no affect on overrral results and could be passed over.

Lukas