Многие смартфоны могут порадовать своих владельцев набором функций, реализованных за счет встроенного акселерометра. Который представляет собой электромеханическое устройство, фиксирующее любые изменения рабочего органа в пространстве. Принцип действия основан на измерении ускорения перемещения инертной массы внутри акселерометра. На его основе работает автоматический переворот экрана, подстраивающий картинку в соответствии с положением телефона, счетчик шагов, приложение для обнаружения препятствия, ряд фитнесс приложений и т.д.
Благодаря использованию микроконтроллера Arduino вы можете самостоятельно сконструировать датчик наклона в домашних условиях.
Для этого вам понадобится:
- Акселерометр ADXL335;
- Плата Arduino Uno;
- Дисплей для отображения направления наклона (в данном случае мы используем светодиодный вариант).
Практическая реализация датчика наклона на базе Arduino приведена на рисунке ниже:
В данном примере рассматривается установка акселерометра ADXL335 выпускаемого компанией Analog Devices который подключается к соответствующим выводам на микроконтроллере Arduino Uno, а от микроконтроллера сигналы переводятся на дисплей. Для сборки такой схемы удобно использовать заводскую макетную плату, хотя датчик наклона отлично сможет функционировать и на любой другой ровной поверхности, которую вы будете использовать в роли базы. Главная задача реализовать основной принцип датчика, который приведен на блок-схеме ниже.
Преимуществом такой модели является установка Arduino Uno, так как этот микроконтроллер лучший вариант для электронных устройств, управляемых сигналам с платы. Ее программирование и использование в схеме доступно широким массам за счет простой адаптации под стандартное программное обеспечение компьютера и возможности самостоятельной настройки с последующим внесением корректив в их работу. Поэтому данный вариант отлично подходит как профессиональным конструкторам, так и любителям в сфере робототехники и электронного моделирования.
Для реализации датчика наклона Arduino Uno выбран неспроста, он собран на базе микросхемы ATmega328 и включает в себя 14 цифровых выходов, 6 аналоговых, USB разъем для подключения к устройствам программирования, ICSP разъем, вход питания, и оснащается функцией сброса или обнуления данных. Также в данной плате установлен кварцевый генератор на 16МГц, предназначенный для поддержания стабильной работы всего микроконтроллера.
Несмотря на внушительный объем его элементов, Arduino Uno имеет оносительно небольшие размеры и его достаточно легко эксплуатировать. Для этого вам понадобиться подключить плату к ПК через USB вход для установки рабочих параметров и запитать посредством батареи или через адаптер. Программирование и дальнейшая эксплуатация производится в операционной среде Arduino.
Содержание
- Как собрать датчик наклона?
- Тестирование работоспособности и корректировка параметров
- Что нужно для работы программы?
Как собрать датчик наклона?
Подключение акселерометра к микроконтроллеру осуществляется по такому принципу:
- Вывод ST подключается к пину платы Arduino A0;
- Вывод перемещений по оси Z подключается к пину платы Arduino A1;
- Вывод перемещений по оси Y подключается к пину платы Arduino A2;
- Вывод перемещений по оси X подключается к пину платы Arduino A3;
- Вывод GND подключается к пину платы Arduino A4;
- Вывод VCC подключается к пину платы Arduino A5.
Затем от микроконтроллера Ардуино производится подключение к дисплею, в данной ситуации состоящего из группы светодиодов. Для подключения от платы берутся выходы с 8 по 12 и пин питания на 5В, которые распределяются по логике схемы следующим образом:
- Пин 5В является общей точкой подключения;
- Восьмой подключается к светодиоду, сигнализирующему о наклоне в правую сторону;
- Девятый подключается к светодиоду, сигнализирующему о стабильном положении датчика по центру (его, для отличия, мы делаем красного цвета, но это не принципиально);
- Десятый подключается к светодиоду, сигнализирующему о перемещении датчика назад;
- Одиннадцатый подключается к светодиоду, сигнализирующему о наклоне в левую сторону;
- Двенадцатый подключается к светодиоду, сигнализирующему о наклоне датчика вперед.
При изменении положения акселерометра в пространстве произойдет движение инертной массы. В результате такого движения инертная масса приведет к замыканию контактов и подаст соответствующий сигнал с одного из выводов. Далее этот сигнал обработается микроконтроллером Arduino и преобразуется в подачу напряжения на определенный светодиод или группу светодиодов. Вот по такому принципу и осуществляется работа датчика наклона на базе Arduino.
Помимо приведенного способа сборки датчика на макетной плате, вы можете с тем же успехом реализовать его на печатной плате. Пример такой платы приведен на рисунке ниже.
Проверка правильности подключения осуществляется в контрольных точках, приведены на рисунке 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 IDE, никаких дополнительных языков программирования и специальных навыков по работе с ними вам иметь не нужно, достаточно просто подключить Arduino к компьютеру. Также стоит отметить, что микросхема ATmega328 в Arduino Uno изначально содержит предварительно установленный механизм загрузки. Именно он позволяет программировать устройство без каких-либо аппаратных программаторов, а взаимодействие программной среды на компьютере и микросхеме происходит по протоколу STK500.
Для работы с программным обеспечением микроконтроллера вам понадобиться войти в меню «Инструменты», затем выбрать «Платы» и установить Arduino Uno (если вы применяете другую модель, установите ее). После этого через Arduino IDE запрограммируйте плату на логику датчика наклона и можете приступать к эксплуатации готового устройства. Также можно программировать Ардуино через протокол ICSP, но этот метод больше подходит искушенным программистам, а не начинающим конструкторам, поэтому куда проще пользоваться стандартным способом.
Исходный код программы:
Датчик наклона на базе Arduino (3,4 KB, скачано: 85)