Akcelerometr - Projekt MIA

Netáhlo Tomáš, xnetah00@stud.feec.vutbr.cz
Dvořák Martin, xdvora64@stud.feec.vutbr.cz

Obsah:

  1. Úvod
  2. Realizace
  3. Závěr
  4. Literatura

Úvod

Akcelerometry jsou senzory, které jsou schopné měřit statické a dynamické zrychlení a převádět jejich velikost na elektrický signál. Pro potřeby projektu byl vybrán akcelerometr MMA7260QT od firmy Freescale. Jedná se o tříosý akcelerometr, tzn. že měří zrychlení ve všech třech osách X, Y i Z. Akcelerometr má analogový výstup a měnitelný měřící rozsah. Senzor má již z výroby nastavenou nulovou hladinu a zlomový kmitočet.
Základní parametry obvodu MMA7260QT:
  1. měnitelný rozsah 1,5 g, 2 g, 4 g a 6 g, vývody g-Select,
  2. maximální citlivost 800 mV/g na rozsahu 1,5 g,
  3. nelinearita ± 1 % z rozsahu,
  4. spotřeba 500mA, v sleep módu jen 3 uA,
  5. napájecí napětí od 2,2 V do 3,6 V.
Pouzdro obvodu MMA7260QT obsahuje celkem 16 vývodů, vzhled pouzdra z rozmístěním jednotlivých vývodů je vidět na obr. 1.

Obr. 1: Rozmístění vývodů obvodu MMA7260QT na pouzdru QFN.

Jelikož se akcelerometr vyrábí v miniaturním QFN pouzdře u kterého by byl problém s pájením obvodu, byl použit modul od firmy Pololu Robotics & Electronics. Modul obsahuje již zmíněný akcelerometr a další doplňující obvody. Celý modul lze napájet napětím od 3,6 V do 15 V, protože obsahuje stabilizátor napětí LP2980AIM5-3.3. Na výstupech všech tří os X, Y i Z jsou zapojeny RC filtry, jak je doporučeno v datasheetu akcelerometru. Celkové schéma zapojení modulu udává obr. 2.


Obr. 2: Schéma modulu s akcelerometren MMA7260QT.

Výstupy akcelerometru jsou analogové. Pro převod napětí ze všech tří os akcelerometru se používá A/D převodník mikrokontroléru ATmega8. Velikost napětí na výstupu všech tří os při měření statického zrychlení na rozsahu 1,5 g udává tabulka č. 1, viz obr. 3. Hodnota 0 g odpovídá vodorovné ose, neboli náklonu 0°. Hodnoty 1 g a -1 g odpovídají poloze osy kolmé k zemskému povrchu, neboli náklonu 90° a - 90°.

Tab. 1: Velikost napětí na výstupu všech tří os akcelerometru při měření statického zrychlení.

-1 g
0 g
+1 g
Ux [V]
0,85
1,65
2,45
Uy [V]
0,85
1,65
2,45
Uz [V]
0,85
1,65
2,45


Obr. 3: Velikost napětí na výstupu všech tří os akcelerometru při měření statického zrychlení. .

Realizace

Na obr. 4 je uvedeno blokové schéma akcelerometru. Výstupy X, Y, Z akcelerometru jsou připojeny na A/D převodník mikrokontroléru ATmega8. Jako referenční napětí pro A/D převodník je použito napětí 3,3 V z vývodu VDD, které je připojeno na pin AREF mikrokontroléru. Protože A/D převodník mikrokontroléru je 10-bitový, mohou data nabývat hodnot 0-1023 (v rozsahu napětí 0-3,3 V) U akcelerometru byla nastavena citlivost 1,5 g (pomocí propojek na SG1 a SG2). Změřené a vypočtené hodnoty napětí, tíhového zrychlení a úhlu natočení se zobrazují na LCD displeji 16x2. Celý obvod je napájen pomocí 9 V baterie a potřebná změna napětí na hodnotu 5 V se provádí regulátorem napětí.


Obr. 4: Blokové schéma modulu s akcelerometrem.

Na obr. 5 je uvedeno celkové schéma zapojení akcelerometru v programu EAGLE, pro návrh plošného spoje je soubor se schématem přiložen ke stažení : schéma v EAGLE. Pro účely projektu postačila realizace na nepájivém poli, viz obr 6, 7 a 8 na konci dokumentu.

Obr. 5: Celkové schéma zapojení akcelerometru.

Výpočet napětí se provádí podle následujícího vzorce:

x = ((napeti)*(3.3/1023)*1000);

kde proměnná napětí odpovídá hodnotě uložené v registru ADCW, tato hodnota je vynásobena podílem referenčního napětí 3,3 V a rozsahem A/D převodníku. Výsledná hodnota napětí je poté zobrazována v mV.
Poté se vypočítá hodnota tíhového zrychlení:

gx=((x-1650)/8.1);

kde od změřené hodnoty napětí x, odečteme hodnotu 1650 mV, která odpovídá nulovému tíhovému zrychlení a tyto hodnoty vydělíme počtem dílků mezi 0 g a 1 g. Pozn. počet dílků je vydělen 100, kvůli zobrazení na LCD.
Z hodnoty tíhového zrychlení lze poté vypočítat úhel náklonu, protože hodnota 0 g odpovídá vodorovné ose a hodnota 1 g odpovídá úhlu 90°.

uhelx=(asin(gx/100))/3.14*18000;


Ukázka zdrojového kódu, kompletní zdrojový kód je ke stažení: zdrojový kód.



ADMUX = 0b00000000;	// kanál nula AD převodníku	
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADIF)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);      // povolení AD převodu, přerušení po dokončení převodu, předdělička 128	


/******************************************************************
zobrazení na LCD
*******************************************************************/
	


		lcd_gotoxy(0,0);
		sprintf(buffer,"Ux=  %d mV",ux);				// napětí na ose x
		lcd_puts(buffer);
		lcd_gotoxy(0,1);
		if (gx1>=0)							// tíhové zrychleni g osa x
			{
			sprintf(buffer,"g= %d,%d", gx1/100, gx1%100); 	
			lcd_puts(buffer);
			}
			else
				{
				gx1=(-1)*gx1;					//  tíhové zrychleni g záporné osa x 
				sprintf(buffer,"g=-%d,%d", gx1/100, gx1%100); 
				lcd_puts(buffer);
				}
		lcd_gotoxy(8,1);
		if (uhelx1>=0)							//  úhel náklonu osa x
			{
			sprintf(buffer,"u= %d,%d", uhelx1/100, uhelx1%100); 	
			lcd_puts(buffer);
			}
			else
				{
				uhelx1=(-1)*uhelx1;				//  úhel náklonu záporný osa x
				sprintf(buffer,"u=-%d,%d", uhelx1/100, uhelx1%100); 
				lcd_puts(buffer);
				}


/****************************************************************
obsluha AD převodníku
*******************************************************************/

ISR(ADC_vect) 				
{

int napeti,x,y,z; 
double uhelx, uhely, uhelz;
double gx, gy, gz;



		napeti = (ADCW);
		x = ((napeti)*(3.3/1023)*1000);		// vypočet napětí osa x
		ux=x;
		gx=((x-1650)/8.1);			// výpočet tíhového zrychlení osa x, stokrát větší
		gx1=gx;
		uhelx=(asin(gx/100))/3.14*18000;	// výpočet úhlu náklonu osa x, stokrát větší
		uhelx1=uhelx;
		break;


ADMUX++;	// posun na další kanál AD převodníku

if (ADMUX>2)
{
ADMUX=0;
}
ADCSRA = (1<<ADEN)|(1<<ADSC)|(1<<ADIF)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);       // opětovné spuštění AD převodu
}
	


Obr. 6: Zobrazení velikosti napětí Ux, tíhového zrychlení g a úhlu u natočení v ose x.

Obr. 7: Zobrazení velikosti napětí Uy, tíhového zrychlení g a úhlu u natočení v ose y.

Obr. 8: Zobrazení velikosti napětí Uz, tíhového zrychlení g a úhlu u natočení v ose z.

Závěr

V projektu se nám podařilo pomocí akcelerometru změřit statické zrychlení. Změřili jsme náklony ve všech třech osách X, Y, Z a také velikost tíhového zrychlení. Rozsah měřených úhlů se pohybuje v rozmezí +90° až -90°. V rozsahu úhlů +80° až -80° bylo měření dostatečně přesné, v krajních pásmech (+80° až + 90°; -80° až - 90°) bylo měření nepřesné, zřejmě z důvodu nemožnosti akcelerometru naměřit přesnou a stabilní hodnotu. Nepřenost také vycházíí z přůběhu funkce sinus (hodnota g=0,98 --> uhel 78,52°; hodnota g=0,99 --> uhel 81,89°; hodnota g=1 --> uhel 90°) . Celkové schéma zapojení pro další zpracování či návrh plošného spoje je ke stažení : celkové schéma v EAGLE. Kompletní zdrojový kód je ke stažení: zdrojový kód.

Literatura

[1] FREESCALE SEMICCONDUCTOR. ±1.5g - 6g Three Axis Low-g Micromachined Accelerometer [online]. Březen 2008 - [cit. duben 2011]. Dostupné z WWW: http://www.freescale.com/files/sensors/doc/data_sheet/MMA7260QT.pdf.
[2] POLOLU ROBOTICS & ELEKTRONICS. MMA7260QT 3-Axis Akcelerometr ±1.5/2/4/ 6g [online]. Březen 2008 - [cit. duben 2011]. Dostupné z WWW: