Меню

Модуль датчика скорости lm393 для arduino

Подключение модуля скорости на LM393 к Arduino

Автор: Сергей · Опубликовано 30.10.2021 · Обновлено 29.10.2021

В этой статье расскажу об еще одном модуле на LM393, с помощью которого можно измерить скорость вращения электродвигателя, так же можно использовать в различных проектах, где необходимо подсчитать импульсы, определить положение (концевик) и так далее. В статье расскажу как использовать модуль для подсчета оборотов двигателя, на робот платформе 2WD

Технические параметры

► Ширина паза: 5мм;
► Диаметр монтажных отверстий: 3 мм;
► Индикатор состояния выхода;
► Рабочее напряжение 3.3В — 5В;
► Габариты: 32 мм х 14 мм x 14 мм;
► Вес: 3 грамма.

Краткий обзор модуль скорости щелевой на LM393

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

Модуль освещенности с четырьмя выводами содержит два выходных контакты, аналоговый и цифровой и два контакта для подключения питания. Для считывания аналогово сигнала предусмотрен отдельный вывод «AO», с которого можно считать показания напряжения с 0 В … 3.3 В или 5 В в зависимости от используемого источника питания. Цифровой вывод DO, устанавливается в лог «0» или лог «1»

Расскажу как работает схема, основная микросхема модуля, это компаратор LM393 (U1), которая производит сравнение уровней напряжений на входах INA- (2) и INA+ (3). Чувствительность порога срабатывания уже задано, резисторами R3 и R4 с номиналами 10 кОм. В качестве оптического датчика используется оптопара, с помощью резистора R1 (180 Ом) ограничиваем ток светодиода внутри оптопары.

Назначение контактов:
VCC: «+» питание модуля
GND: «-» питание модуля
D0: цифровой выход
A0: аналоговый выход

Подключение модуля скорости к Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Модуль скорости щелевой, LM393 x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

Описание:
В качестве примера, воспользуемся щелевым диском, который идет в комплекте с робот платформой 4WD и 2WD. Установим модуль таким образом, чтобы диск располагался внутри оптопары. Сам одуль подключим к Arduino UNO, а в программе подсчитаем сколько делает оборотов обычный двигатель с редуктором, полученные данные отправим в последовательный порт.

Подключение:
Схема не сложная, необходимо всего три провода, сначала подключаем шину D0 в вывод 2 к Arduino UNO, осталось подключить питание GND к GND и VCC к 5V (можно записать и от 3.3В), схема собрана, теперь надо подготовить программную часть.

Установка библиотек:
Для работы с модулем необходимо установить библиотеку «TimerOne », для этого, перейдите в Скетч —> Подключить библиотеку —> Управление библиотеками.

В строке поиска введите «TimerOne », найдите библиотеку «TimerOne» и установите данную библиотеку.

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

Источник

Измерение скорости, пройденного пути и угла поворота с помощью Arduino и датчика LM393

Роботы с каждым годом все больше внедряются в нашу жизнь, делая ее проще. Большинству выпускаемых сегодня роботов (например, роботам для доставки чего-либо) необходима система навигации в пространстве, с помощью которой они и ориентируются в окружающем мире. Существует много способов построения системы, способной определять местоположение и ориентацию робота – с помощью GPS, радиочастотной триангуляции, акселерометров, гироскопов и т.д. Каждая из этих технологий имеет свои преимущества и недостатки. В этой статье мы будем использовать простой и легко доступный датчик скорости LM393 (H206) для измерения с помощью платы Arduino таких важных для передвигающегося в пространстве робота параметров как скорость, пройденный путь (дистанция) и угол его поворота. Используя знания об этих параметрах, робот сможет безопасно передвигаться в окружающем пространстве.

Читайте также:  Не работает датчик уровня топлива уаз патриот 2008 года

Вы можете посмотреть следующие проекты роботов на нашем сайте, построенные на основе платы Arduino:

Также вы можете посмотреть все проекты по тематике робототехника на нашем сайте.

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

Датчик скорости LM393 (H206)

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

Установка датчика H206

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

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

Пластина с сетчатой градуировкой имеет 20 делений (слотов, отверстий). Это значит что за время полного оборота колеса инфракрасный датчик сможет обнаружить 20 пропусков (отверстий). Поскольку в нашем проекте мы будем использовать датчики установленные на обоих колеса робота это значит что мы сможем определять и угол поворота робота, но не очень точно, к сожалению. Однако точность определения угла поворота робота можно значительно повысить если вы дополните этот проект робота гироскопом – на нашем сайте вы можете прочитать статью о его подключении к плате Arduino.

Работа схемы

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

Вычислительные и управляющие задачи в схеме возложены на плату of Arduino Nano. Колеса робота приводятся в движение двумя электродвигателями постоянного тока при помощи драйвера двигателя на основе H-моста L298N. Джойстик используется для управления скоростью и направлением движения робота, а два датчика скорости H206 используются для измерения скорости, пройденной дистанции и угла поворота робота. Измеренные значения этих параметров отображаются на экране ЖК дисплея 16×2. Потенциометр, подключенный к ЖК дисплею, можно использовать для управления его контрастностью, а резистор служит для ограничения тока для управления яркостью подсветки дисплея.

Читайте также:  Датчик наружной температуры fabia

Схема запитывается от литиевого элемента на 7.4V. Эти 7.4V подаются на контакт 12V драйвера двигателя, а регулятор напряжения драйвера двигателя преобразует их в стабилизированное напряжение +5V, которое используется для питания платы Arduino, ЖК дисплея, датчиков и джойстика.

Двигатели управляются с помощью цифровых контактов 8, 9, 10 и 11 платы Arduino. Поскольку нам необходимо управлять еще и скоростью вращения двигателей мы используем сигналы ШИМ (широтно-импульсной модуляции), подаваемые на положительные контакты двигателей. Для этой цели мы используем контакты 9 и 10 платы Arduino, на которых возможно использование ШИМ сигналов. Значения положения осей X и Y джойстика подаются на аналоговые контакты A2 и A3 соответственно.

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

Принципы измерения скорости с помощью датчика H206

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

В нашем проекте для измерения угла поворота робота мы смонтировали датчики скорости на обоих колесах, но если вы хотите измерять только скорость, то в этом случае можно использовать только один датчик. Выход датчика подсоединен ко входу внешнего прерывания платы Arduino. Каждый раз при обнаружении отверстия (пропуска) в пластине будет формироваться прерывание и вызываться процедура обработки прерывания (ISR — Interrupt service Routine). Если вы сможете измерять время между двумя такими прерываниями, то вы сможете рассчитать и скорость вращения колеса.

В плате Arduino мы можем достаточно просто определять это время при помощи функции millis(). Значение этой функции инкрементируется (увеличивается) на 1 каждую миллисекунду начиная со времени подачи питания на плату Arduino. То есть когда мы будем вызывать эту функцию на первое возникшее прерывание мы можем сохранить значение функции millis() в переменной (pevtime в нашей программе), а при втором возникшем прерывании мы можем рассчитать время при помощи вычитания значения переменной pevtime из текущего значения функции millis().

Time taken = current time – previous time
timetaken = millis()-pevtime; //timetaken in millisec

А когда мы определим время между двумя прерываниями мы можем рассчитать и число оборотов колеса в минуту (rpm) по следующей приведенной формуле. В представленной формуле (1000/timetaken) позволяет рассчитать число оборотов колеса в секунду (RPS — Revolutions per second) и в дальнейшем оно умножается на 60 чтобы преобразовать RPS в RPM (Revolutions per minute – число оборотов в минуту).

После расчета числа оборотов колеса в минуту (rpm) мы можем рассчитать скорость робота зная радиус его колеса по следующей формуле:

Читайте также:  Датчик удара рено трафик

Velocity = 2π × RPS × radius of wheel.
v = radius_of_wheel * rpm * 0.104

Представленная формула рассчитывает скорость в м/с, если вы хотите рассчитывать ее в км/ч, то в этом случае замените в представленной формуле 0.104 на 0.376. Число 0.104 в нашей формуле получилось после упрощения выражения V = 2π × RPS × radius of wheel.

Аналогичные расчеты на нашем сайте мы уже рассматривали в проектах аналогового спидометра на основе платы Arduino и спидометра для велосипеда на основе приложения на Android. Но пластина датчика H206 имеем 20 слотов (отверстий) и если мы будем измерять время между каждой парой отверстий, то это будет слишком перегружать микроконтроллер. Поскольку на каждое отверстие в пластине будет генерироваться два прерывания (одно в начале и одно в конце отверстия), то за время одного полного оборота колеса мы получим 40 прерываний. Поэтому в коде программы мы будем ожидать появления этих 40 прерываний прежде чем рассчитать скорость вращения колеса.

Источник

Модуль датчика пламени на LM393

Описание

Модуль датчика пламени RCK205506 предназначен для совместного использования с устройствами, использующими платформу ARDUINO (Ардуино).

  • Рекомендуется для создания различных робототехнических проектов, обучения конструированию различных систем мехатроники и программированию, а также для конструкторских хобби.
  • Датчик имеет два выхода: AO (аналоговый) и DO (цифровой). Аналоговый выход может подключаться непосредственно к входу АЦП ARDUINO и использоваться для измерения напряжения, пропорционального интенсивности источника пламени и расстояния до него. В качестве порогового элемента цифрового выхода использован компаратор LM393.
  • Модуль пламени RCK205506 реагирует на инфракрасное излучение (открытый огонь). Воспринимающим элементом датчика служит фотодиод, который наиболее чувствителен к длинам волн от 760 нм до 1100 нм.
  • Может датчика пламени RCK205506 может использоваться в газовых, солярочных, бензиновых горелках имеющих электроподжиг. В этом случае дуга создаваемая высоким напряжением поджигает топливо, а автоматика управляющая поджигом получает данные от датчика пламени определяет загорелось ли топливо и прекращает работу электроподжига. В дальнейшем происходит управление подачей топлива и контроль наличия пламени. Интересно применение модуля для небольшого робота-пожарного.

Технические характеристики
Напряжение питания (Vcc): 3.5 — 5.5 В
Потребляемый ток: 10 мА
Два выхода: DO цифровой и AO аналоговый
Формат сигнала цифрового выхода: TTL(0/1)
Уровень сигнала аналогового выхода: 0-Vcc
Рабочая температура: 0..+70 °C
Размеры: 50 x 14 x 7 мм
Масса: 2.5 гр.
Диаметр монтажного отверстия: 3 мм

Датчик чувствителен к обычному свету.

Расстояние тестирования 80 см, чтобы не повредить датчик, чем больше пламя, тем больше должно быть расстояние.

В схеме установлены два светодиода: красный — индикатор наличия питания, зеленый — уровень 0 на выходе DO.

Регулировка порога переключения цифрового выхода осуществляется подстроечным резистором на плате датчика.

Обозначение выводов датчика
Вывод с меткой «Vcc» –> плюс питания
Вывод с меткой «G» –> GND минус питания
Вывод с меткой «DO» –> цифровой выход (когда температура достигает определенного порога, срабатывает выход высокого и низкого порога, сигнализируя об огне)
Вывод с меткой «AO» –> аналоговый выход (в режиме реального времени выходное напряжение сигнала реагирует на тепловое сопротивление)

ВНИМАНИЕ ! При подключении датчика к схеме следует тщательно соблюдать полярность питания. Переполюсовка ведет к выходу датчика из строя без права на последующий гарантийный ремонт или замену.

Источник

Adblock
detector