Датчик наклона на базе Ардуино своими руками

Многие смартфоны могут порадовать своих владельцев набором функций, реализованных за счет встроенного акселерометра. Который представляет собой электромеханическое устройство, фиксирующее любые изменения рабочего органа в пространстве. Принцип действия основан на измерении ускорения перемещения инертной массы внутри акселерометра. На его основе работает автоматический переворот экрана, подстраивающий картинку в соответствии с положением телефона, счетчик шагов, приложение для обнаружения препятствия, ряд фитнесс приложений и т.д.

Благодаря использованию микроконтроллера Arduino вы можете самостоятельно сконструировать датчик наклона в домашних условиях.

Для этого вам понадобится:

Практическая реализация датчика наклона на базе Arduino приведена на рисунке ниже:

Общий вид датчика  
Рисунок 1: общий вид датчика

В данном примере рассматривается установка акселерометра ADXL335 выпускаемого компанией Analog Devices который подключается к соответствующим выводам на микроконтроллере Arduino Uno, а от микроконтроллера сигналы переводятся на дисплей. Для сборки такой схемы удобно использовать заводскую макетную плату, хотя датчик наклона отлично сможет функционировать и на любой другой ровной поверхности, которую вы будете использовать в роли базы. Главная задача реализовать основной принцип датчика, который приведен на блок-схеме ниже.

Блок-схема датчика
Рис. 2: блок-схема датчика

Преимуществом такой модели является установка Arduino Uno, так как этот микроконтроллер лучший вариант для электронных устройств, управляемых сигналам с платы. Ее программирование и использование в схеме доступно широким массам за счет простой адаптации под стандартное программное обеспечение компьютера и возможности самостоятельной настройки с последующим внесением корректив в их работу. Поэтому данный вариант отлично подходит как профессиональным конструкторам, так и любителям в сфере робототехники и электронного моделирования.

Для реализации датчика наклона Arduino Uno выбран неспроста, он собран на базе микросхемы ATmega328 и включает в себя 14 цифровых выходов, 6 аналоговых, USB разъем для подключения к устройствам программирования, ICSP разъем, вход питания, и оснащается функцией сброса или обнуления данных. Также в данной плате установлен кварцевый генератор на 16МГц, предназначенный для поддержания стабильной работы всего микроконтроллера.

Несмотря на внушительный объем его элементов, Arduino Uno имеет оносительно небольшие размеры и его достаточно легко эксплуатировать. Для этого вам понадобиться подключить плату к ПК через USB вход для установки рабочих параметров и запитать посредством батареи или через адаптер. Программирование и дальнейшая эксплуатация производится  в операционной среде Arduino.

Содержание

  1. Как собрать датчик наклона?
  2. Тестирование работоспособности и корректировка параметров
  3. Что нужно для работы программы?

Как собрать датчик наклона?

Электрическая схема датчика наклона
Рис. 3: электрическая схема датчика наклона

Подключение акселерометра к микроконтроллеру осуществляется по такому принципу:

  • Вывод ST подключается к пину платы Arduino A0;
  • Вывод перемещений по оси Z подключается к пину платы Arduino A1;
  • Вывод перемещений по оси Y подключается к пину платы Arduino A2;
  • Вывод перемещений по оси X подключается к пину платы Arduino A3;
  • Вывод GND подключается к пину платы Arduino A4;
  • Вывод VCC подключается к пину платы Arduino A5.

Затем от микроконтроллера Ардуино производится подключение к дисплею, в данной ситуации состоящего из группы светодиодов. Для подключения от платы берутся выходы с 8 по 12  и пин питания на 5В, которые распределяются по логике схемы следующим образом:

  • Пин 5В является общей точкой подключения;
  • Восьмой подключается к светодиоду, сигнализирующему о наклоне в правую сторону;
  • Девятый подключается к светодиоду, сигнализирующему о стабильном положении датчика по центру (его, для отличия, мы делаем красного цвета, но это не принципиально);
  • Десятый подключается к светодиоду, сигнализирующему о перемещении датчика назад;
  • Одиннадцатый подключается к светодиоду, сигнализирующему о наклоне в левую сторону;
  • Двенадцатый подключается к светодиоду, сигнализирующему о наклоне датчика вперед.

При изменении положения акселерометра в пространстве произойдет движение инертной массы. В результате такого движения инертная масса приведет к замыканию контактов и подаст соответствующий сигнал с одного из выводов. Далее этот сигнал обработается микроконтроллером  Arduino и преобразуется в подачу напряжения на определенный светодиод или группу светодиодов. Вот по такому принципу и осуществляется работа датчика наклона на базе Arduino.

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

Схема для печатной платы
Рисунок 4: схема для печатной платы

Проверка правильности подключения осуществляется в контрольных точках, приведены на рисунке 3. Напряжение в них должно соответствовать данным из таблицы.

Таблица: уровни напряжения в контрольных точках

Точка на рисунке Напряжение  в точке, В
Т0 0
Т1 5
Т2 Ниже, чем в Т3
Т3 Выше, чем в Т2

Тестирование работоспособности и корректировка параметров

После электрического соединения элементов датчика наклона производится загрузка программы, на устройство через ПК, для чего вам необходимо:

  • Подключить микроконтроллер к компьютеру через USB переходник;
  • Загрузить программу (test.ino) с компьютера на Ардуино УНО;
  • Затем на компьютере откройте программную среду Arduino, в которой отображается исходный код от соответствующих выводов акселерометра;
  • Сбросьте данные и отметьте числовые изменения по всем трем осям (X, Y, Z), которые происходят при наклоне датчика влево, вправо.

Если вас не устраивает положение, в котором светодиод начинает загораться, его можно откорректировать. Для изменения угла наклона, при котором  датчик будет сигнализировать об изменении положения, вам понадобится:

  • Оставаясь в программной среде Arduino, начните наклонять датчик влево, когда угол наклона достигнет той отметки, в которой светодиод должен загораться, отметьте для себя – это будет значение кода «A_max», граница отключения светодиода при возвратном движении датчика будет такой же;
  • Для регулирования угла наклона вправо повторите ту же операцию, наклонив до нужного угла, отметьте для себя цифровое значение – это будет значение кода «A_min», та же величина прекратит горение при возвратном движении к нейтральной позиции датчика;
  • Эти значения нужно изменить в теле программы tiltdetection.ino, для чего запускается Arduino IDE, в строки «A_max» и «A_min» вносятся записанные вами ранее данные (рисунок 5);
    Снимок экрана программирования Arduino Uno
    Рис. 5. Снимок экрана программирования Arduino Uno
  • После этого сохраните внесенные изменения и заново загрузите откорректированную программу на микроконтроллер.

Теперь устройство будет работать с более приемлемым  для вас углом наклона. Здесь разобран пример корректировки угла перемещения датчика влево и вправо. Но при желании вы можете проделать те же манипуляции и для изменения угла наклона вперед и назад, при переходе через который будут загораться и гаснуть светодиоды.

Что нужно для работы программы?

Так как микроконтроллер программируется на специально разработанной под него платформе Arduino IDE, никаких дополнительных языков программирования и специальных навыков по работе с ними вам иметь не нужно, достаточно просто подключить Arduino к компьютеру. Также стоит отметить, что микросхема  ATmega328 в Arduino Uno изначально содержит предварительно установленный механизм загрузки. Именно он позволяет программировать устройство без каких-либо аппаратных программаторов, а взаимодействие программной среды на компьютере и  микросхеме происходит по протоколу STK500.

Для работы с программным обеспечением микроконтроллера вам понадобиться войти в меню «Инструменты», затем выбрать «Платы» и установить  Arduino Uno (если вы применяете другую модель, установите ее). После этого через Arduino IDE запрограммируйте плату на логику датчика наклона и можете приступать к эксплуатации готового устройства. Также можно программировать Ардуино через протокол ICSP, но этот метод больше подходит искушенным программистам, а не начинающим конструкторам, поэтому куда проще пользоваться стандартным способом.

Исходный код программы:

  Датчик наклона на базе Arduino (3,4 KB, скачано: 85)

.