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

Шаг 3. Как это работает

Механика

Все части расположены внутри пластмассового контейнера для пищевых продуктов. Питание обеспечивается от USB-порта. Схема содержит Arduino, ультразвуковой датчик, шаговый двигатель и микропереключатель для перемещения датчика в его «стартовое» положение. Микропереключатель необходим, так как невозможно вращать шаговый двигатель вручную из-за его внутренней зубчатой ​​передачи 64:1.

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

Шаговый двигатель 28BJY-48 имеет «угол шага» 5,625/64 градуса, что означает, что шаги на 1 градус невозможны (хотя сетка обозначена на 0,80 градуса).

К счастью:

180 / (угол поворота) = 180*64 / 5.625 = 2048

который равномерно делится на 8. Если мы увеличим число от 0 до 2048 и разделим на 8, получится 256 вариантов, когда мы получим остаток от нуля. Мы просто отправляем «пинг», когда остаток равен нулю. Это соответствует «пингованию» каждого Пи/256 радианов или 0.703125 градусов.

Программное обеспечение

После дисплей принимает управление и постоянно опрашивает Ардуино относительно следующих данных:

  • Азимут
  • Дистанция1 (Distance1)
  • Дистанция2 (Distance2)
  • Направление

Затем на экране отображаются «расстояние(-я)» для каждого «азимута». Информация «направление» используется для создания отображения (визуализации) «точек», появляющихся за «лучом» при вращении.

Arduino автоматически переходит к следующей позиции «ping», когда данные отправляются на дисплей.

Программное обеспечение «Processing 3», используемое для записи дисплея и может быть загружено с processing.org.

«Processing 3» поддерживает 2D и 3D-графику и очень похожа на Arduino IDE (англ. — Integrated Development Environment). Основными визуальными отличиями являются «графическое окно» при запуске кода и использование функции «draw()» вместо «loop()» Ардуино.

Комплектующие

Создаётся данный датчик или МК, в зависимости от того, что вы собрались приобретать, из компонентов ATmega328.

Распиновка модуля Arduino MPU 6050

Так, в нём имеются:

  1. 14 штук различных пинов и цифровых выходов, половина из которых являются ШИМ-выходами.
  2. Специальные кварцевые резонаторы до 16 МГц мощностью.
  3. Встроенный вход под usb-кабель, который позволит вам сэкономить не только время, но и деньги, которые вы могли бы потратить на покупку адаптера.
  4. Контакты и распиновка для стандартного питания с нулем, фазой и заземлением.
  5. Контакты для сброса до заводских настроек, при которых весь машинный код и данные будут стёрты. Это полезно в том случае, если вы напортачили с программой и модуль превратился в бесполезную груду железа, и просто как экономия времени, если необходимо сменить прошивку.
  6. ICSP контакт, который необходим для того, чтобы запрограммировать машинный код, который будет находиться внутри системы.

Все эти компоненты и составляют Arduino гироскоп, позволяя ему выполнять свои базовые функции. Но как же запрограммировать систему, если вы до этого не имели опыта работа с данными МК?

Недостатки

В силу отработанности аппаратной платформы, хорошо документированных схем, простоты разработки ПО и дешевизны PIR-датчики на Ардуино не обладают особыми недостатками в рамках возлагаемых на них задач. Возможности их применения ограничиваются естественными пределами ИК-технологии, периферийным оборудованием и заложенными в прошивку контроллера функциями.

Из недостатков отметим долгую инициализацию: многим образцам на переход в рабочий режим после первого включения требуется около минуты, на протяжении которой велик шанс ложных срабатываний. Кроме того, они не способны отличить человека от другого теплого объекта; для этого требуется иной класс устройств.

Расчет угла с помощью гироскопа mpu6050

Данные с гироскопа имеют вид:

В дальнейшем в статье мы будем рассматривать все на примере оси x. Для расчета угла необходимо проинтегрировать переменную “gyro_x_scalled”

является количеством итераций

Так же стоит отметить, что на каждом временном промежутке цикла значение “gyro_x_scalled” остается одинаковым. Существует насколько подходов и методов интегрирования для компенсации и этой погрешности, но мы их детально не будем рассматривать.

Для реализации дискретного интегрирования, будем использовать метод Эйлера как один из самых популярных алгоритмов. Математически интегрирование методом Эйлера можно записать следующим образом:

Мы предполагаем, что начальные углы относительно осей x, y, z после калибровки равны 0, 0 и 90 градусов соответственно, так что для итерации n=0:

Значение T (время каждой итерации) и динамика самого гироскопа (как быстро и насколько нелинейно изменяются углы), значительным образом влияет на точность расчетов. Чем медленнее изменяются углы и чем меньше промежуток между итерациями, тем более точным будет результат. В этом смысле жаль, что платы Arduino достаточно медленные, кристаллы у них работают с частотой 16 МГц и снятие измерений каждые 10-20 мс становится достаточно затруднительным (учитывая тот факт, что процессор занят не только расчетом угла, но и другими параллельными задачами). Мы можем использовать T в виде переменной или константы, я, лично, предпочитаю использовать константу для каждого цикла. В проекте динамические факторы не учитывались, просто использовалась частота итераций с разрывом в 20 мс (0.02 с).

KY-009, модуль RGB SMD светодиода

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

 Заменяется на модуль 2020 или 5050 RGB SMD. Стоимость начинается от 1 р за штуку, высылается правда большими партиями, но если поискать то можно найти и поштучно, сам же модуль от 50 р.
 Довольно привлекательный модуль для начинающих. Позволяет работать с RGB матрицей и получать буквально все цвета светового спектра используя ШИМ выходы контроллера. Поставляется БЕЗ токоограничивающих резисторов, поэтому при установке не забудьте их установить. Возможно заменить на обычный RGB светодиод, все зависит от предназначения и места установки. Недостаток- занимает сразу 3 ШИМ выхода микроконтроллера для полноценной работы. Достоинства- можно визуализировать процесс переключением цветов светодиода. Например: зеленый- работа, красный- остановка или аварийный стоп, синий- настройка и т.д. Кроме того в устройствах с температурными датчиками можно визуализировать степень нагрева термоэлемента. Т.е. чем большую температуру имеет датчик тем «краснее» светодиод и наоборот, чем холоднее- тем «синее».
Популярные статьи  Можно ли включить электричество, если его выбило после взрыва зарядного устройства?

Основные технические характеристики резистивных датчиков давления

Эти характеристики относятся к модели датчика давления Interlink 402, но практически все остальные датчики (недорогой Китай в том числе) обладают похожими параметрами. Естественно, уточнение характеристик по даташиту вашей модели не помешает.

  • Размер: 1/2″ (12.5 мм) чувствительной поверхности. Толщина – 0.02″ (Interlink выпускает некоторые модели, размер которых составляет 1.5″x1.5″)
  • Цена: около 7 долларов от западных производителей. 2-3 доллара в Китае.
  • Диапазон сопротивлений: бесконечность/разомкнутая цепь (нет внешнего давления), от 100 КОм (легкое давление) до 200 Ом (максимальное давление)
  • Диапазон силы: от 0 до 20 lb. (0 – 100 Ньютонов) на каждый 0.125 квадратный дюйм поверхности
  • Источник питания: любой! Использует силу тока менее 1 мА (зависит от резисторов и напряжения питания)

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

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

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

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

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

    Рис. 5. Снимок экрана программирования Arduino Uno

  • После этого сохраните внесенные изменения и заново загрузите откорректированную программу на микроконтроллер.

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

Схемы подключения

У датчиков движения с одним встроенным контактом обычно имеется три клеммы. Две из них служат для питания ДД. На одну из клемм подается фаза. Фазная клемма помечается символом L. На другую клемму подается ноль (N). Третий вывод – выход фазы с контакта. В некоторых случаях замыкающий контакт имеет два вывода. Тогда, для подключения фазы с контакту, между одной из клемм контакта и клеммой L устанавливают перемычку.

Схема будет работать следующим образом. При появлении человека в зоне обнаружения, датчик движения сработает, замкнется встроенный контакт и подаст фазу на лампу. Лампа будет гореть, пока будет продолжаться движение или не закончится выдержка времени. После окончания временной выдержки контакт разомкнется. Для того чтобы не совершать ненужных движений чтобы зажечь лампу вновь, можно установить выключатель, с помощью которого можно зашунтировать (замкнуть) встроенный контакт датчика движения. С помощью выключателя можно будет включить свет, чтобы он горел постоянно.

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

Параллельная работа двух датчиков

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

Датчик наклона на базе Ардуино своими руками
Параллельная работа двух датчиков движения.

Как и в схеме с выключателем оба контакта датчиков движения включены параллельно и взаимно шунтируют друг друга. То есть, лампа включится при срабатывании любого из двух датчиков. Данная схема масштабируема. Это означает, что можно бесконечно наращивать количество датчиков движения работающих параллельно. Увеличение количества датчиков может потребоваться, например, для освещения лестниц имеющих несколько пролетов.

Важно! Используя подобные схемы нужно обязательно помнить, что все датчики движения должны питаться от одной и той же фазы. В случае несоблюдения этого правила, при одновременном срабатывании двух датчиков, может произойти короткое замыкание

Иногда с помощью датчиков движения приходится управлять более мощными нагрузками, чем одна или несколько лампочек. Тогда в силу вступает ограничение по максимально допустимому току встроенного контакта. Предельно допустимый коммутируемый ток можно узнать из паспорта изделия. Часто производители указывают этот ток на корпусе прибора. Если ток потребления нагрузки превышает «возможности» датчика движения, тогда нагрузку включают с помощью магнитного пускателя, а управление пускателем осуществляют с помощью датчика движения.

Популярные статьи  Сколько проводов диаметром 1,2 мм нужно, чтобы сделать провод сечением 6 мм.кв.?

Датчик наклона на базе Ардуино своими руками
Как подключить датчик движения.

Часто датчики движения могут находиться на значительном расстоянии от управляемой нагрузки. При этом приходится прокладывать довольно длинные кабельные трассы. Это может быть сопряжено со значительными материальными затратами, а, иногда, и просто невозможно. Для этих случаев производители предлагают датчики движения со встроенным радиоканалом (беспроводные ДД). В последнее время подобные аппараты находят широкое применение в системах «умного дома».

Будет интересно Как проверить дроссель при помощи мультиметра

Калибровка mpu6050

Калибровка гироскопа и акселерометра – это очень важный шаг. Приведенные значения для гироскопа имеют вид: “gyro_x_scalled = ”, так как для получения угла поворота относительно оси по данным угловой скорости, необходимо провести интегрирование. Если “gyro_x_scalled” содержит ошибку или неверно выбрана база, эта ошибка также интегрируется и превращается в значительную погрешность в результате. Так что в идеале измерения должны показывать нуль, если гироскоп не движется вокруг каких-либо осей координат. На практике добиться идеала практически невозможно, так что наша задача – минимизировать эту ошибку. Кроме того, для компенсации «дрифта», можно использовать акселерометр для расчета угла наклона, сравнения полученных данных с результатами гироскопа и последующей компенсацией данной погрешности. Расчет угла будет рассмотрен в этой статье отдельно ниже.

На рисунках далее показано использование функции MPU6050_OffsetCal()

непосредственно в программе в Arduino IDE.

Скетч Arduino для калибровки платы акселерометра/гироскопа MPU6050:

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

Результат работы скетча для калибровки в серийном мониторе

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

Работа схемы

Схема устройства представлена на следующем рисунке.

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

Как можно видеть, схема состоит из двух частей – основная плата, которая содержит все основные компоненты, и дополнительная плата, которая содержит датчик Холла и резистор и монтируется рядом с колесом. Сначала давайте изучим основную плату.

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

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

Когда все соединения на ней сделаны ее можно протестировать с использованием литиевой батареи (аккумулятора) 18650

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

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

Параметр Значение (на одну ячейку)
Under Voltage cut-off 2.4V
Over voltage Cut-off 4.2V
Ток заряда 1A
Защита от превышения напряжения и смены полярности
Микросхемы TP4056 (charger IC) и DW01 Protection IC
Светодиодные индикаторы красный — идет заряд, зеленый — зарядка окончена

Теперь займемся платой с датчиком Холла, которая будет содержать всего два компонента – сам датчик Холла и резистор на 10 кОм. Соединения на ней показаны на схеме устройства, приведенной выше. После подключения к ней соединительных проводов мы должны получить примерный вид устройства, показанный на следующем рисунке:

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

Следующий ключевой шаг в сборке нашего проекта – это соединение аккумулятора 18650 к контактам B+ и B- модуля TP4056 с использованием провода. Поскольку литиевые аккумуляторы взрывоопасны, то крайне не рекомендуется использовать здесь паяное соединение. Хотя ряд радиолюбителей все же делают это, помните о том, что в этом случае вы подвергаете ваше устройство риску повреждения. Простой способ преодолеть это – использовать магниты как показано на следующем рисунке.

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

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

Используемые компоненты

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

1 х Arduino NANO
1 х Модуль с датчиком VL53L0X
1 х Повышающий преобразователь
1 х Шаговый мотор
1 х Драйвер шагового мотора на микросхеме A4988
1 х Скользящие контакты (slip ring) на 6 проводов. Диаметр 12.5мм, длина 15мм или меньше
1 х 6710ZZ подшипник
1 х Датчик Холла 49E
1 х Макетная плата
1 х 100 мкФ электролитический конденсатор
1 х 5 мм х 1 мм неодимовый магнит

Так же понадобиться резистор на 10К, немного M3 винтов, гаек, вставных гаек (резьбовые вставки, insert nuts), «пасик» и напечатанный на 3D-принтере корпус, припой и паяльник.

Повышающий стабилизатор нужен для шагового мотора. Такие моторы обычно потребляют максимум сотни миллиампер. Стабилизатор желательно взять с запасом, допустим на 1А или больше. Выходное напряжение питания у стабилизатора, 12В или более. Выбирая стабилизатор, так же учитывайте, что они не должен быть слишком большой, иначе его нельзя будет поместить внутри корпуса.

Функциональное дополнение

Датчики Arduino или Steinel ir quattro com1 (плата) могут быть дополнены разнообразными сенсорами и улавливающими устройствами (функциональное дополнение). Благодаря этому возможно некоторое расширение сферы применения таких приборов. Например, они могут применяться в автоматизации физических процессов и приборостроении, подсчете числа пассажиров и т.д. Помимо этого Arduino или Steinel ir quattro com1 наиболее часто применяются в проектах «умный дом» с целью автоматизации домашних и бытовых процессов. Также в последнее время Arduino стали широко использоваться в робототехнике.

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

Установленный Arduino (схема)

Еще одной сферой применения Arduino являются охранные системы. С его помощью происходит включение камер видеонаблюдения, звуковой системы оповещения или освещения. Стоит отметить, что в охранной области датчики Arduino востребованы более всего. Также данное устройство используется в качестве дальномера. С его помощью можно измерять дальность в области 5 метров. При этом точность составит до 1 см. На такое способны ультразвуковые датчики, работающие как акустический локатор небольшой мощности. Использование в домашних условиях датчика присутствия различных моделей (Steinel или Arduino) позволит вам повысить эффективность освещения и сделать его более экономичным. Здесь главное провести правильную установку и настройку прибора на работу в заданной области. Подбирайте для помещений те модели датчиков и по тем параметрам, которые позволят ему наиболее эффективно выполнять свою работу – освещать помещение при повелении в нем человека.

Популярные статьи  Электро-, звуко- и шумоизоляционные материалы

KY-008, модуль лазерного светодиода

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

 Можно заменить на лазерный диод за 20 р  и последовательно поставить токоограничивающий резистор, на Али удовольствие стоит  от 50 р
 Модуль аналогичен KY-005, только в роли излучающего элемента выступает 3 мВт лазерный светодиод. Можно использовать для передачи данных на дальние расстояния (лазер все таки, имеет довольно узкий луч, который имеет больший световой поток при одинаковой мощности инфракрасных и лазерных диодов), если использовать зеркала  то можно построить довольно объемную охранную сигнализацию помещения. Единственный недостаток в ней будет заключаться в юстировке зеркал.

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

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

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

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

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

Инструменты

Чтобы лишний раз не бегать в магазин прямо посреди процесса сборки системы, лучше заранее подготовить все инструменты, что могут вам пригодиться. Так, стоит побеспокоиться, чтобы под рукой были:

  1. Паяльник. Хорошим выбором станут приборы с регулируемой мощностью, их можно приспособить к любой ситуации.
  2. Проводники. Естественно, датчик необходимо будет подсоединять к МК, и для этого не всегда подходят стандартные пины.
  3. Переходник под usb-порт. Если на вашем микроконтроллере нет встроенного порта, побеспокойтесь о том, чтобы его можно было подключить к ПК другим способом. Ведь вам необходимо будет подгружать дополнительные библиотеки и новую прошивку в ваш проект.
  4. Припой, канифоль и прочие мелочи, в том числе изолированное рабочее пространство.
  5. Сам чип и МК, а также, при необходимости, корпус будущего устройства. Наиболее опытные инженеры предпочитают распечатывать оболочку для своих проектов на 3Д принтере, однако, если вы живёте в крупном городе, не обязательно тратиться. Можете поискать компании, дающие в аренду принтеры.

Стоит понимать, что дальномер Arduino относится к приборам бесконтактного типа и способен обеспечивать точные измерения. Но всё же не стоит забывать, что профессиональные устройства используют совершенно другие технологии и проходят длительную калибровку под все материалы, а соответственно, в любом случае, окажутся лучше. Также у нашего проекта будет ограниченный диапазон измерения расстояний, от 0.03 до 4 метров, что подойдёт не во всех случаях.

Но, что хорошо, на работу устройства не оказывается никакого влияния со стороны ЭМ излучений и солнечной энергии

А в комплекте к датчику уже находятся нужные ресиверы и трансмиттеры, которые пригодятся, когда вы будете собирать ультразвуковой дальномер Ардуино.Важно! В нашем уроке можно будет ничего не паять, т.к. мы будем использовать макетную плату и провода-перемычки

Но если вы захотите в итоге собрать законченное устройство — вам пригодится всё что мы указали выше.

Заключение

Проекты с применением датчика освещенности на базе фоторезистора достаточно просты и эффектны. Вы можете реализовать множество интересных проектов, при этом стоимость оборудования будет не высока. Подключение фоторезистора осуществляется по схеме делителя напряжения с дополнительным сопротивлением. Датчик подключается к аналоговому порту для измерения различных значений уровня освещенности или к цифровому, если нам важен лишь факт наступления темноты. В скетче мы просто считываем данные с аналогового (или цифрового) порта и принимаем решение, как реагировать на изменения. Будем надеяться, что теперь в ваших проектах появятся и такие вот простейшие «глаза».

Оцените статью
Добавить комментарии

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: