Измерване на ъглово отклонение чрез Arduino и LPY550AL

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

Жироскопът се захранва през пин 3.3V с напрежение от 2.7 до 3.6V. За да се захрани с напрежение до 16V през вградения регулатор, захранващото напрежение се подава на пин VIN. Тогава пин 3.3V става изходен и може да захрани консуматори до 50mA или да служи като образцово напрежение (AREF) за микроконтролер. Когато жироскопът е в покой, напрежението за всяка от двете оси е 1.23V.

Пример

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

Жироскопът се захранва с 5V на пин VIN, а напрежението на пин 3,3V се използва като образцово за микроконтролера на Arduino. Пиновете му се свързват към Arduino по следния начин:

VIN -> 5V
GND -> GND
3.3V -> AREF
X -> A0
Z -> A1

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

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

  Свързване:
  * VIN -> 5V
  * GND -> GND
  * 3.3V -> AREF
  * X -> A0
  * Z -> A1

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

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

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

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

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

Serial.begin(9600); // стартира серийна комуникация
analogReference(EXTERNAL); // задава външен източник 
                           // на образцово напрежение AREF
}

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

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

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

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

Share