Акселерометр Memsic 2125: измерение ускорения с Arduino
Подключаем двухосевой акселерометр Memsic 2125 к Arduino и читаем данные об ускорении через Serial Monitor.
Акселерометр Memsic 2125 (datasheet) — двухосевой accelerometer, способный измерять ускорение в диапазоне ±2g. Его интерфейс прост до элегантности: два вывода (по одному на каждую ось) генерируют импульсы, длительность которых напрямую соответствует измеряемому ускорению. Измеряя ширину этих импульсов в микросекундах с помощью функции pulseIn(), можно вычислить ускорение по каждой оси и использовать эти данные в своём проекте.
Необходимое оборудование
- Arduino Board
- Акселерометр Memsic 2125
- Соединительные провода
- Макетная плата
Схема подключения
На корпусе Memsic 2125 есть небольшой треугольник — он указывает правильную ориентацию датчика на макетной плате. Не пропустите его: если установить сенсор в обратную сторону, данные будут некорректными.
Подключите выводы 5V и GND акселерометра к соответствующим шинам питания и земли на плате. Вывод X out соедините с цифровым пином 2, а вывод Y out — с цифровым пином 3.
Важно: Arduino должна быть подключена к компьютеру через USB, иначе данные не появятся в Serial Monitor.

Схема подключения акселерометра Memsic 2125 к плате Arduino UNO на макетной плате. Обратите внимание на ориентацию микросхемы по метке-треугольнику.
Принципиальная схема

Принципиальная схема: акселерометр (Акселерометр) Memsic 2125 (Mx2125) подключён к Arduino UNO. Выводы X out и Y out идут на пины 2 и 3, питание — от 5V.
Код
Откройте Serial Monitor в Arduino IDE, чтобы наблюдать значения, считываемые с акселерометра в реальном времени.
/*
Memsic2125
Считывание данных с двухосевого акселерометра Memsic 2125. Преобразует импульсы,
выдаваемые 2125, в милли-g (1/1000 земного притяжения) и выводит их через
последовательное соединение на компьютер.
Схема подключения:
- выход X акселерометра к цифровому пину 2
- выход Y акселерометра к цифровому пину 3
- +V акселерометра к +5V
- GND акселерометра к земле
создано 6 ноября 2008
автор David A. Mellis
изменено 30 августа 2011
автор Tom Igoe
Этот пример кода находится в открытом доступе.
https://www.arduino.cc/en/Tutorial/Memsic2125
*/
// эти константы не изменяются:
const int xPin = 2; // выход X акселерометра
const int yPin = 3; // выход Y акселерометра
void setup() {
// инициализация последовательной связи:
Serial.begin(9600);
// инициализация пинов, подключённых к акселерометру, как входов:
pinMode(xPin, INPUT);
pinMode(yPin, INPUT);
}
void loop() {
// переменные для считывания длительности импульсов:
int pulseX, pulseY;
// переменные для хранения результирующих ускорений
int accelerationX, accelerationY;
// считывание импульсов по осям X и Y:
pulseX = pulseIn(xPin, HIGH);
pulseY = pulseIn(yPin, HIGH);
// преобразование длительности импульса в ускорение
// accelerationX и accelerationY выражены в милли-g:
// земное притяжение равно 1000 милли-g, или 1 g.
accelerationX = ((pulseX / 10) - 500) * 8;
accelerationY = ((pulseY / 10) - 500) * 8;
// вывод ускорения
Serial.print(accelerationX);
// вывод символа табуляции:
Serial.print("\t");
Serial.print(accelerationY);
Serial.println();
delay(100);
}
Как это работает
Memsic 2125 использует принцип широтно-импульсной модуляции (ШИМ) для передачи данных. Каждый из выводов (X out, Y out) генерирует периодический импульс с частотой около 100 Гц. При нулевом ускорении (горизонтальное положение) скважность импульса составляет примерно 50% — то есть сигнал HIGH держится столько же, сколько LOW.
Когда датчик наклоняется или испытывает ускорение, длительность HIGH-части импульса меняется. Функция pulseIn() измеряет эту длительность в микросекундах, и по полученному значению можно рассчитать угол наклона или величину ускорения.
Типичные ошибки
- Неверная ориентация датчика. Всегда ориентируйтесь по треугольной метке на корпусе. Перевёрнутый датчик даст инвертированные или нулевые показания.
- Нестабильные показания при длинных проводах. Если провода длиннее 10–15 см, добавьте конденсатор 100 нФ между
5VиGNDрядом с датчиком — это сгладит помехи по питанию. - Serial Monitor не показывает данные. Убедитесь, что скорость порта в мониторе совпадает со скоростью, указанной в
Serial.begin()в скетче. - Значения не меняются при наклоне. Проверьте, что пины
X out/Y outподключены именно к пинам2и3, а не к аналоговым входам.
Как проверить результат
- Загрузите скетч и откройте Serial Monitor (
Ctrl+Shift+M). - Положите плату горизонтально — значения по обеим осям должны быть близки к нулю (или к базовому значению, соответствующему 1g под действием гравитации).
- Наклоните плату вперёд/назад — значение по оси X начнёт меняться.
- Наклоните влево/вправо — изменится значение по оси Y.
- Резкое движение платой вверх или вниз вызовет кратковременный всплеск по обеим осям.
Где пригодится
Memsic 2125 удобен для проектов, где важно определить наклон или вибрацию: самобалансирующиеся платформы, системы стабилизации камеры, сигнализации при опрокидывании устройства, простые шагомеры и датчики удара.
Дополнительные материалы
Больше базовых уроков вы найдёте в разделе built-in examples.
Также рекомендуем изучить language reference — подробный справочник по языку программирования Arduino.
Последнее обновление: 29.07.2015, SM