Подключаем к Arduino акселерометр MMA7361
Сегодня на рынке можно найти большое количество недорогих модулей датчиков, которые можно использовать в своих проектах, связав их предварительно с микроконтроллером. Одним из таких модулей является плата с микросхемой MMA7361, которая представляет собой трехосевой акселерометр.
Этот датчик может измерять статическое (сила земного притяжения) или динамическое ускорение по всем трем осям. Он может использоваться в различных сферах применения, и можно создать много приложений на его основе. Акселерометр измеряет уровень ускорения объекта, на котором он установлен, что позволяет получать информацию об ускорении/замедлении этого объекта, а также о его наклоне относительно земной оси.
Этот датчик также позволяет обнаружить свободное падение (выход 0G). Технически, MMA7361LC представляет собой малопотребляющий емкостный микромеханический акселерометр с функциями обработки сигнала, 1-полюсным низкочастотным фильтром, температурной компенсацией, самодиагностикой и возможностью выбора чувствительности. MMA7361LC может входить в спящий режим, что делает его идеальным для портативных устройств с батарейным питанием. Модуль может быть запитан как от источника 5 В, так и от 3.3 В.
Теперь на примере связки модуля MMA7361 и платы Arduino UNO покажем принцип работы с этим датчиком. К счастью, для подключения не нужны какие-либо дополнительные элементы, нужны только Arduino, модуль с акселерометром и провода. Схема и распиновка показаны ниже:
Ниже представлен скетч для простой работы с модулем. Используя эту программу, можно прочитать выходные значения с осей X, Y и Z с помощью последовательного монитора.
int x; // выходная переменная по оси x
int y; // выходная переменная по оси y
int z; // выходная переменная по оси z
void setup()
{
Serial.begin(9600); // открываем порт, скорость передачи данных 9600 bps
}
void loop()
{
x = analogRead(5); // считываем вход A5
y = analogRead(4); // считываем вход A4
z = analogRead(3); // считываем вход A3
Serial.print("X = "); // выводим значение по x
Serial.println(x);
Serial.print("Y = "); // выводим значение по y
Serial.println(y);
Serial.print("Z = "); // выводим значение по z
Serial.println(z);
delay(100);
}