Измерване на ускорение чрез Arduino и MMA7361L

MMA7361L е сензор за измерване на ускорението по 3 оси X, Y и Z. Тъй като е малък и труден за използване от начинаещи, фирмата Pololu го предлага запоен върху брейкаут борд с вграден регулатор, който позволява сензорът да се захрани с напрежение до 16V на пина VIN. Информация за ускоренията по 3те оси, сензорът връща като 3 аналогови напрежения.

Когато сензорът се намира в покой, изходното напрежение за всяка ос е наполовина на захранващото. Когато ускорението е в положителна посока, напрежението нараства, а когато е в обратната посока намалява. Положителните посоки са означени на самата платка.

Всеки от пиновете означени с X, Y и Z се свързва към аналогов вход на микроконтролер, през интегрираща RC верига.

Пример

В дадения пример Arduino получава информация за ускорението по 3те оси от аналоговите входове A0, A1 и A2. Стойността за всяка ос се извежда в Serial Monitor.

Сензорът се свързва по следната схема.

Използвани са 3 резистора от 10k и 3 кондензатора по 10uF, на които минусите им са свързани към маса. Пин X се свързва към A0, Y към А1 и Z към А2. Пин 3V3 се свързва към пин 3.3V на Arduino, a GND е съответно към GND.

Кода който трябва да се зареди на Arduino е следният:

/*

 Описание:
  * Получава информация от сензора през 3 аналогови входа 
  * Извежда стойността за всяка ос в Serial Monitor

  Свързване:
  * X -> A0
  * Y -> A1
  * Z -> A2

  * Tihomir Trifonov (09-2011)
  * email:tisho@inbox.com

  * с подкрепата на Robotev.com

*/

//// вдодове за сигналите от 3те оси
int XPin = A0; // X
int YPin = A1; // Y
int ZPin = A2; // Z

//// променливи за 3те стойности
int valX = 0;
int valY = 0;
int valZ = 0;

void setup() { // начални инициализации

Serial.begin(9600); // стартира серийна комуникация
}

void loop() { // програмен цикъл

//// получава данните за X, Y и Z осите
valX = analogRead(XPin);
valY = analogRead(YPin); 
valZ = analogRead(ZPin); 

//// Извежда данните в Serial Monitor
Serial.print("X-");
Serial.print(valX);
Serial.print(" Y-");
Serial.print(valY);
Serial.print(" Z-");
Serial.print(valZ);
Serial.print("\n");

delay(100); // изчаква 100ms
}  

Share