Szögmérés Giroszenzorral

Kísérleti áramkör építése giroszenzorral.

Amikor megláttam ebay-en hogy milyen olcsón lehet ilyet rendelni, még semmit nem tudtam róla, csak hogy a telefonomban is van és hogy szögsebesség méréséhez lehet használni. Én szögméréshez szerettem volna használni, azonban ehhez gyorsulás mérővel kellene kombinálni.
Az áramkör lelke egy dspic30F2011 mikrokontroller és egy L3G4200 gyro szenzor, amit az ebayról olcsón be lehet szerezni. Az eredményt egy karakteres LCD-n jeleníti meg. A projekt MPLAB 8-ban készült és C30 fordítóra írtam. A forráskód innen  letölthető. A program működésének a lényege, hogy a giroszenzor megszakítást generál, ha új adat áll rendelkezésre. Az I2C-vel kiolvasott adatot integráljuk az idővel. Így megkapjuk a szögelfordulást.

A Giroszenzor

A giroszenzorral szögsebességet lehet mérni, mértékegysége a dps, azaz fok/másodperc. Az L3G4200 IC 3 irányt tud mérni, és 3 féle mérési tartományt lehet beállítani. Minnél nagyobb mérési tartományt választunk, annál pontatlanabb a mérés. Pl. 250dps-nél 8.75mdps/digit a felbontása. Tehát ha az IC-ből kiolvasott adat 1000 az X tengelyen, akkor 8.75 fok/másodpercel forog az eszközünk. Ebből könnyen megkaphatjuk, hogy 1.45 fordulat/percet tesz meg.

Az IC inicializálása:


void GyroInit()
{
	__delay_ms(150);	//Megvárjuk, míg feléled

	// Enable x, y, z and turn off power down:
	writeRegister(L3G4200D_ADRESS, L3G_CTRL_REG1, 0b00001111);
	// Nem használunk semmilyen filtert
	writeRegister(L3G4200D_ADRESS, L3G_CTRL_REG2, 0b00000000);
	// INT2-őn megszakítás van, ha új adat elérhető
	// INT1-en nincs megszakítás
	writeRegister(L3G4200D_ADRESS, L3G_CTRL_REG3, 0b00001000);
	
	//250dps	
	writeRegister(L3G4200D_ADRESS, L3G_CTRL_REG4, 0b00000000);
		
	//Nem használunk filtert
	writeRegister(L3G4200D_ADRESS, L3G_CTRL_REG5, 0b00000000);
}
	

Az szögelfordulás kiszámítása(integrálás):


	Degrees[0]  = ((Rate[0]   PrevRate[0]) * Delay)/20000000;
	

Ahol a Rate[0] az x tengely pillanatnyi szögsebessége, a PrevRate[0] az előző mérés szögsebessége a Delay pedig a két mérés között eltelt idő.

A kijelzés

A 2×16 karakteres LCD vezérlése párhuzamos porton keresztül 4bit-es módban történik. A vezérlésére nem szeretnék külön kitérni, mert a hobbielektronikán részletesen le van írva hogyan kell.

 

Facebook Comments