Детектор скорости движущегося автомобиля на ардуино

Содержание

Работа схемы

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

Детектор скорости движущегося автомобиля на ардуино

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

ЖК дисплей подключен к следующим контактам платы Arduino:

RS — A5
RW — GND
EN — A4
D4 — A3
D5 — A2
D6 — A1
D7 — A0

Резистор 2,2 кОм используется для установки яркости ЖК дисплея. Модуль инфракрасного датчика (IR sensor module), который используется для определения числа оборотов лопастей вентилятора, подключен к контакту D2 платы Arduino, который в данном случае используется как вход внешнего прерывания 0 (interrupt 0).

Детектор скорости движущегося автомобиля на ардуино

В качестве драйвера мотора мы использовали модуль L293N. Контакты IN1, IN2, IN3 и IN4 драйвера шагового двигателя непосредственно подключены к контактам D8, D9, D10 и D11 платы Arduino.

Гаражный ультразвуковой парктроник Arduino

Детектор скорости движущегося автомобиля на ардуино
Гаражный парктроник на Ардуино своими руками

В следующей программе реализована функция выключения звуковой сигнализации через 10 секунд (можно изменить в программе), т.е. когда машина уже остановилась. В схеме использованы RGB светодиоды 5 В, чтобы для питания использовать обычную зарядку от телефона. Схема сборки проекта на Ардуино остается прежней, а скачать скетч и файлы с макетом корпуса в Corel Draw для парктроника можно здесь.

Скетч для гаражного парктроника на Ардуино

#include <Ultrasonic.h>            // импортируем библиотеку
Ultrasonic ultrasonic (11, 12);  // указываем пины для уз датчика

int del = 5;       // задержка между измерениями в мкс
int cm1 = 30;  // расстояние при котором включится зеленый светодиод
int cm2 = 20;  // расстояние при котором включится синий светодиод
int cm3 = 10;  // расстояние при котором включится красный светодиод
int cm4 = 5;    // расстояние при котором включится зуммер

unsigned long currentTime;  // переменная для отсчета времени
int Time = 5000;  // через сколько мкс нужно отключить зуммер
byte t = 0;  // переменная для запоминания состояния зуммера

void setup() {
   Serial.begin(9600);
   pinMode(7, OUTPUT);  // пин для подключения зуммера
   pinMode(2, OUTPUT);  // пин для зеленого светодиода
   pinMode(3, OUTPUT);  // пин для синего светодиода
   pinMode(4, OUTPUT);  // пин для красного светодиода
}

void loop() {
   // выполняем 10 измерений и складываем результат
   int distance, sum, total;
   for (byte i = 0; i <= 10; i++) {
      distance = ultrasonic.Ranging(CM);
      sum = sum + distance;
      delay(del);
   }
   total = sum / 10;  // вычисляем среднее значение
   Serial.println("Distance  - " + String(total));

   if (total >= cm1) {
      digitalWrite(4, LOW); digitalWrite(3, LOW); digitalWrite(2, LOW);
   }
   if (total < cm1 && total >= cm2) {
      digitalWrite(4,LOW); digitalWrite(3,LOW); digitalWrite(2,HIGH);
   }
   if (total < cm2 && total > cm3) {
      digitalWrite(4,LOW);  digitalWrite(3,HIGH); digitalWrite(2,LOW);
   }
   if (total <= cm3) {
       digitalWrite(4,HIGH); digitalWrite(3,LOW); digitalWrite(2,LOW);
   }
   // зуммер выключится через заданный промежуток времени
   if (total > cm4) { t = 0; noTone(7); }
   if (t == 0 && total <= cm4) { t = 1; tone(7, 100); currentTime = millis(); }
   if (t == 1 && total <= cm4 && millis() - currentTime > Time) { t = 1; noTone(7); }
}

Пояснения к коду:

  1. зуммер выключится через заданный промежуток времени, благодаря изменению переменной при включении пьезодинамика командой tone();
  2. при расстоянии больше переменная снова становится равной нулю и пьезодинамик снова включится.

Система отправки команд

На андроид устройстве есть джойстик (круг, о реализации которого также во второй части). Андроид считывает показания с него и конвертирует их в подходящие для ардуино числа: скорость из пикселей превращает в значение от -255 до 255 (отрицательные – задний ход), а также определяет угол. Я сознательно отдал эту задачу телефону, так как он куда мощнее и спокойно справится с подсчетом нескольких сотен значений в секунду.

Детектор скорости движущегося автомобиля на ардуино

После установки сокета данные отправляются в следующем формате: @скорость#*угол#. @ — говорит о том, что следующие цифры содержат скорость, # — извещает об окончании значения скорости, * — начало значения угла, # — закончить запись угла. Цикл бесконечен, команды отправляются каждые 100 миллисекунд (цифра подобрана оптимальная). Если ничего не нажато на андроиде, то ничего и не отправляется.

Алгоритм приема данных подробно описан в коде скетча. Он не раз переписывался и, как по мне, работает идеально.

KY-003 цифровой датчик Холла. Подключение к Arduino

KY-003 модуль датчика Холла (Hall sensor) выполнен на базе элемента «44E» и, по сути, является магнитным переключателем. Если рядом с ним нет магнитного поля, то на сигнальном выходе датчика имеется высокий уровень напряжения, и наоборот, если поле присутствует, то на выходе низкий уровень напряжения.

Технические характеристики модуля KY-003

Детектор скорости движущегося автомобиля на ардуино

Магнитный датчик Холла KY-003 состоит из чувствительного элемента эффекта Холла 3144EUA-S, резистора 680 Ом и светодиода. Совместим с популярными электронными платформами, такими как Arduino и ESP32.

  • Рабочее напряжение: от 4,5 В. до 24 В.
  • Диапазон рабочих температур от -40 ° C. до 85 ° C.
  • Размеры 18,5 x 15 мм.

Внимание! Не перепутайте модуль KY-003 с аналоговым датчиком Холла KY-035. Модули выглядят одинаково, только на модуле KY-003 распаяны светодиод и резистор, а на модуле KY-035 их нет

Детектор скорости движущегося автомобиля на ардуино

Схема подключения к Arduino NANO KY-003

Детектор скорости движущегося автомобиля на ардуино

Подключите линию питания (посередине) к +5 Arduino, землю (-) и GND, соответственно. Подключите сигнальный контакт (S) к контакту 3 на Arduino. Подключение датчика Холла KY-003:

  • S — цифровой выход
  • “средний контакт” —“+” 5 В (можно подключить к “+5 В” на плате Arduino)
  • “-” — общий

Пример кода (скетч) для “KY-003” и Arduino

// KY-003 цифровой магнитный датчик Холла (Hall)
// https://arduino-tex.ru/

int led = 13 ; // назначение пина светодиода
int hallPin = 3 ; // назначение пина датчика
int value ; // переменная для хранения значения с датчика

void setup ()
{
pinMode (led, OUTPUT);
pinMode (hallPin, INPUT);
//Serial.begin (9600); // Задаем скорость передачи данных
}

void loop ()
{
value = digitalRead (hallPin) ; // чтение значения с датчика
if (value == LOW) // когда имеется магнитное поле светодиод горит
{
digitalWrite (led, HIGH);
}
{
digitalWrite (led, LOW);
}
}

В коде KY-003 для Arduino. При обнаружении магнитного поля загорается встроенный в плату Arduino светодиод, который подключен к 13 пину. Также светодиод на самом модуле загорается при обнаружении магнитного поля. Если магнитного поля нет, то светодиод на модуле не горит.

Детектор скорости движущегося автомобиля на ардуино

Применение KY-003цифрового датчика Холла

Цифровой датчик холла KY-003 можно использовать в охранных системах, системах сигнализации и контроля процесса. Также можно применять модуль KY-003, когда нужен бесконтактный датчик.

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

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

Понравился УрокKY-003цифровой датчик Холла. Подключение к Arduino? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу

Принципиальная схема

Прибор может работать только в автомобиле с инжекторным двигателем (в карбюраторных датчика скорости нет, а датчик зажигания есть далеко не во всех). Схема прибора показана на рисунке 1. На этом рисунке плата ARDUINO UNO показана схематично как «вид сверху».

Популярные статьи  Основы электротехники

Детектор скорости движущегося автомобиля на ардуино

Рис. 1. Принципиальная схема спидометра и тахометра на базе Arduino.

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

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

Датчики скорости бывают разные, но в большинстве своем, что особенно касается отечественных автомобилей, они дают 6000 импульсов за один километр пробега. Хотя, бывают, и такие что дают 2500 импульсов на километр, возможно, есть и другие.

Результат, тестирование и дальнейшие варианты модификаций

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

Детектор скорости движущегося автомобиля на ардуиноДетектор скорости движущегося автомобиля на ардуино

После тестирования разработанной конструкции можно выделить следующие проблемы:

  • Ограниченный диапазон чувствительности сенсора;
  • Проблемы, связанные со скоростью машины, а именно — невозможность быстрой остановки;
  • Необходимость подстраивать датчик под разные условия освещения;
  • Ну и конечно же, дешевый китайский пластик никоим образом не придает автономной машинке на Arduino хорошей жесткости и надежности конструкции.

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

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

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Шаг 4: приводы

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

В нашем случае привод – это DC-мотор, скорость которого равна 3000 оборотам в минуту, а вращающий момент 0.002 Н•м. Теперь добавим к нему шестерню с передаточным числом 1:48. Новая скорость уменьшается на коэффициент 48 (в результате давая 3000/44 = 68 оборотов в минуту) и вращающий момент увеличивается на коэффициент 48 (в результате давая 0.002 x 48 = 0.096 Н•м).

Завершение оси Y

Детектор скорости движущегося автомобиля на ардуино

В лазере используется диод М140 на 2 Вт. Диод продается в металлическом корпусе и контактами. Греются они достаточно сильно так, что пришлось предусмотреть охлаждение. Для этого был сделан алюминиевый блок радиаторов и использованы кулеры со старого контроллера робота. Кроме того, в блоке для лазера 1″ x 1″ сделано отверстие 31/64″ и добавлен болт к боковой грани. Блок также соединен с другой напечатанной на 3-D принтере деталью, которая будет перемещаться вдоль оси y. Движение передается с помощью зубчатого ремня.

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

gantry2.stl

idler gantry.stl

clip.stl

pulley2.stl

Шаг 6: тестирование

Детектор скорости движущегося автомобиля на ардуиноРисунок 10 – Скетч ProcessingДетектор скорости движущегося автомобиля на ардуиноРисунок 11 – Графический экран Processing

Подключите USB кабель Arduino к компьютеру.

Запустите “dual_sensor_echo_locator.pde”, нажав кнопку запуска вверху слева в Processing 3 IDE.

На вашем экране должны начать появляться числа, разделенные запятой (рисунок 10).

Сообщение об ошибке при запуске

При запуске может появиться сообщение об ошибке. Если это так, то измените в строке 88 (рисунок 10) на номер, связанный с вашим COM портом.

В зависимости от вашей системы могут быть указаны несколько COM портов. Один из номеров будет работать.

На рисунке 10 номер связан с моим «COM4»

Расположение датчиков

Расположите датчики на расстоянии 100 см друг от друга и 100 см от объекта, фронтальной стороной к нему.

Медленно поворачивайте оба датчика к диагонально противоположному углу воображаемого квадрата со стороной 1 метр.

Когда вы будете вращать датчики, то найдете положение, в котором на графическом дисплее появится мигающая красная точка.

Также, когда датчики захватят ваш объект, будут отображаться дополнительные данные (рисунок 11):

  • расстояние d1
  • расстояние d2
  • базовая линия (base)
  • смещение (offset)
  • полупериметр (s)
  • площадь (area)
  • координата X
  • координата Y

Печать корпуса и сборка

Детектор скорости движущегося автомобиля на ардуино

Возьмите скользящие контакты и поместите его в верхнюю часть корпуса. Убедитесь, что вращающаяся часть кольца находится на верхней стороне корпуса, чтобы она вращалась одновременно с диском. Теперь установите шаговый мотор, который фиксируется к корпусу двумя 3M винтами и гайкам. Крышка готова:

Детектор скорости движущегося автомобиля на ардуиноДетектор скорости движущегося автомобиля на ардуино

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

Детектор скорости движущегося автомобиля на ардуиноДетектор скорости движущегося автомобиля на ардуиноДетектор скорости движущегося автомобиля на ардуино

Теперь пропускаем провода от скользящих контактов через отверстие вращающегося диска:

Детектор скорости движущегося автомобиля на ардуино

После чего берём датчик и припаиваем к нему 4 провода (+5V, GND, SCL и SDA) от скользящих контактов:

Детектор скорости движущегося автомобиля на ардуино

С помощью двух болтов М3 закрепляем модуль дальномера на корпусе вращающегося диска:

Детектор скорости движущегося автомобиля на ардуино

Если у вас модуль с другим расстоянием между крепёжными отверстиями, модуль можно закрепить только одним болтом. Если крепёжных отверстий совсем нет, модуль можно приклеить (двустороння липкая лента, термоклеем с помощью клеевого пистолета и т.д.).

Когда датчик будет закреплён, вращающийся диск надевается на подшипник:

Детектор скорости движущегося автомобиля на ардуино

На вращающуюся крышку приклеивается неодимовый магнит, а в верхнюю крышку вставляется датчик холла:

Детектор скорости движущегося автомобиля на ардуино

Магнит служит для того, чтобы на него на него срабатывал датчик Холла и в этот момент в коде происходит установка переменной «угол» в некоторое значение. Если магнит по размерам позволяет наклеить его по центру под датчиком, это будет самый лучший вариант, т.к. при срабатывании переменной «угол» нужно будет присвоить значение 0. Если нет, магнит можно наклеить возле датчика. Тогда переменной «угол» нужно будет присвоить не 0, а соответствующее значение (на какой угол относительно магнита повёрнут датчик). Если магнит находится с противоположной стороны, нужно присвоить 180. Если угол составляет 20 градусам (на фото выше угол немного больше):

Детектор скорости движущегося автомобиля на ардуино

Тогда переменной «угол» нужно присвоить 20 и т.д.

На макетную плату по схеме, приведенной ранее, запаиваем конденсатор, драйвер мотора, 10K резистор, датчик Холла, провода от Arduino и стабилизатора питания:

Детектор скорости движущегося автомобиля на ардуиноДетектор скорости движущегося автомобиля на ардуино

Всё припаяно, теперь закрепляем (двусторонней липкой лентой, клеем, термоклеем и т.д.) Arduino Nano внутри корпуса и наш лидар почти готов:

Детектор скорости движущегося автомобиля на ардуино

Осталось вплавить в нижнюю крышку корпуса три вставные гайки, затем прикрутить крышку корпуса, надеть на шкив пасик и можно переходить к программированию и экспериментам.

Датчик Холла

Датчик Холла OH137 Модуль KY-003 Модуль KY-024 Модуль KY-035

Датчик Холла OH137

Униполярный датчик Холла OH137 — датчик, работающий на эффекте Холла — при помещении в магнитное поле некоторого проводника с постоянным током, в этом проводнике возникает поперечная разность потенциалов.

  • Тип: Униполярный
  • Рабочий ток источника питания: 5 mA
  • Максимальный выходной ток: 25 mA
  • Рабочая точка, макс.: 18 mT
  • Точка сброса мин.: 2 mT
  • Рабочая температура: -40…85 C
  • Рабочее напряжение питания: 24 V
  • Тип корпуса: TO-92
  • Тип выхода: open-collector
  • Напряжение питания: 4.5 V — 24 V

Подключение показано на рисунке.

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

При подключении к плате используйте резистор на 820 Ohm и конденсатор на 20 pF.

Детектор скорости движущегося автомобиля на ардуино

int hallPin = 2; // Use Pin 0 as our Input
int hallVal = HIGH; // This is where we record the OH137 Input
boolean isMagneticField = false;

unsigned long lastDetectTime; // Record the time that we measured a Magnetic Field
int magFieldHoldTime = 500; // How long to hold the magnetic field detection on.

void setup ()
{
Serial.begin(9600);
pinMode (hallPin, INPUT);
}

void loop ()
{
hallVal = digitalRead (hallPin);

if (hallVal == LOW) // means magnetic field detected
{
lastDetectTime = millis(); // record the last time mag field was detected
if (!isMagneticField)
{
Serial.println(«MAGNETIC SOUTH POLE DETECTED»);
isMagneticField = true;
}
}
else
{
if( (millis()-lastDetectTime) > magFieldHoldTime && isMagneticField)
{
Serial.println(«no magnetic field»);
isMagneticField = false;
}
}
}

Модуль KY-003

Датчик Холла (модуль KY-003) выполнен на базе элемента «44E» и позволяет обнаруживать магнитное поле. Если рядом с датчиком нет магнитного поля, то на сигнальном выходе датчика имеется высокий уровень и наоборот если поле присутствует, то на выходе низкий уровень напряжения, таким образом датчик имеет цифровой выход.

На плате модуля есть светодиод, который горит когда есть магнитное воздействие. Существуют также аналоговый (KY-035) и комбинированный датчик Холла (KY-024).

Детектор скорости движущегося автомобиля на ардуино

Имеет три вывода: сигнальный вывод S подключается к цифровому выводу платы, средний к питанию, а крайний левый к земле.

KY-003 | Arduino
—————-
S | D
+ | 5V
— | GND

При появлении магнитного поля будет включаться светодиод на выводе 13.

int ledPin = 13;
int hallPin = 3;
int val;

void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(hallPin, INPUT);
}

void loop()
{
val = digitalRead(hallPin);
if (val == LOW) //when magnetic field is detected, turn led on
{
digitalWrite(ledPin, HIGH);
}
else
{
digitalWrite(ledPin, LOW);
}
}

Входит в состав набора Набор из 37 датчиков

Модуль KY-024

Детектор скорости движущегося автомобиля на ардуино

Модуль KY-024 является линейным датчиком Холла (датчик магнитного поля), способный обрабатывать цифровой и аналоговые сигналы.

Цифровой выход выдаёт логический 0 если магнита рядом нет и логическую 1, если магнит в поле чувствительности датчика. А на аналоговом выходе можно отслеживать изменение напряжения, когда магнитное поле есть и когда его нет.

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

Модуль определяет присутствие поля постоянного магнита или магнитного поля катушки проволоки, подключённой к постоянному току. Часто применяется для определения скорости вращения различных деталей механизмов.

Имеет четыре вывода: На + подаём 5В, на G – землю (GND), A0 – аналоговый выход, D0 – цифровой выход.

KY-024 | Arduino
—————-
A0 | A0
G | GND
+ | 5V
D0 | D

Скетч.

const int digital = 2; // Цифровой пин 2
const int analog = A0; // Аналоговый пин A0

void setup()
{
pinMode(digital, INPUT);
Serial.begin(9600);
}

void loop()
{
Serial.print(«Digital: «);
Serial.print(digitalRead(digital)); // Цифровой сигнал с датчика
Serial.print(«, Analog: «);
Serial.println(analogRead(analog)); // Аналоговый сигнал с датчика
delay(500);
}

Входит в состав набора Набор из 37 датчиков

Модуль KY-035

Аналоговый датчик Холла KY-035 внешне практически не отличается от датчика KY-003, только у него нет встроенного светодиода (стоит пустая заглушка).

Других отличий нет — схема соединений и код остаётся без изменений.

Детектор скорости движущегося автомобиля на ардуино

Входит в состав набора Набор из 37 датчиков

Подключение Bluetooth

Есть оговорка: порты 0 и 1 по умолчанию используются Serial, через который заливает скетч. То есть, пока воткнут блютуз, скетч не зальется. Есть два выхода: вынимать блютуз на время заливки или переназначить входы и выходы блютуза. Второй вариант осуществляется двумя строчками

#include \\подключение библиотеки
SoftwareSerial BTSerial(8, 9); \\установка 8 и 9 пина заместо 0 и 1

Подводный камень, съевший у меня трое суток работы – скорость общения. По привычке установил 9600 и пошел пробовать. То данные не приходили, то была каша символов

И в конце концов ответ – модель HC-05 общается на 38400! Очень сильно обратите внимание на то, что в Setup() я выполню BTSerial.begin(39400), хотя Serial.begin(9600)

Делаем бесконтактный лазерный тахометр на Arduino

Простой в сборке цифровой бесконтактный тахометр на Arduino позволяет измерять скорость вращения до 99,999 об/мин

Детектор скорости движущегося автомобиля на ардуино

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

Детектор скорости движущегося автомобиля на ардуино
Рисунок 1. Бесконтактный лазерный тахометр на Arduino.

Для сборки тахометра понадобиться: плата Arduino Nano, модуль лазерного излучателя, модуль лазерного приемника (модуль лазерного датчика), модуль OLED дисплея 128×32 с интерфейсом I 2 C, тактовая кнопка, разъем для подключения 9-вольтового элемента питания типа «Крона».

Схема подключения модулей к плате Arduino изображена на Рисунке 2. Процессы сборки, подключения компонентов к плате Arduino, а также компоновки в корпусе, демонстрируются в видеоролике в конце статьи.

Детектор скорости движущегося автомобиля на ардуино
Рисунок 2. Схема лазерного тахометра на Arduino (подключение модулей к плате Arduino Nano).

Примененный модуль лазерного излучателя (модуль лазерного диода) имеет номинальное напряжение питания 5 В; генерируемое излучение в диапазоне 650 нм мощностью 5 мВт (Рисунок 3). Потребляемый лазером ток составляет не более 40 мА, поэтому допустимо его подключение к выходу 5 V платы Arduino (выход встроенного в плату Arduino регулятора напряжения 5 В).

Детектор скорости движущегося автомобиля на ардуино
Рисунок 3. Модуль лазерного излучателя.

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

Детектор скорости движущегося автомобиля на ардуино
Рисунок 4. Модуль лазерного датчика.

Примененный модуль OLED дисплея с разрешением 128×32 точки (на контроллере SSD1306) подключается к плате Arduino по интерфейсу I 2 C. Напряжение питания модуля дисплея равно 5 В (Рисунок 5).

Детектор скорости движущегося автомобиля на ардуино
Рисунок 5. Модуль OLED дисплея с интерфейсом I 2 C и разрешением 128×32 точки для лазерного тахометра.

Скетч Arduino доступен для скачивания в разделе загрузок. В скетче, помимо стандартных библиотек Arduino, используются библиотеки Adafruit_GFX.h и Adafruit_SSD1306.h для работы с OLED дисплеем. Если эти библиотеки не установлены в среде Arduino, их необходимо установить с помощью менеджера библиотек.

Для прибора разработан корпус, проектные файлы для печати корпуса на 3D принтере доступны для скачивания в разделе загрузок. При сборке прибора автор в корпусе совместил модуль лазерного излучателя и приемника.

Видео сборки прибора и демонстрация работы

Загрузки

  1. Проектные файлы корпуса
  2. Лазерный тахометр скетч Arduino

Перевод: Vadim по заказу РадиоЛоцман

голоса

Рейтинг статьи

Как подключить датчик Холла к Arduino

Вам понадобится

  • — Модуль с датчиком Холла.
  • — Arduino (любая из семейства).
  • — Соединительные провода.
  • — Компьютер со средой разработки Arduino IDE.

Инструкция

Датчик Холла – это прибор, который регистрирует изменение напряжённости магнитного поля. Датчики на основе эффекта Холла нашли широкое применение в быту и промышленности. Так, к примеру, они используются как:- датчики скорости вращения – используются в автомобилестроении и везде, где требуется определить скорость вращения колеса или иного вращающегося объекта;- датчики приближения; типичный пример – раскладной чехол на вашем смартфоне, который включает подсветку экрана при открытии;- измерение угла поворота;- измерение величины вибрации;- измерение величины магнитного поля – цифровые компасы;- измерение силы тока;- измерение воздушных зазоров, уровня жидкости и т.д.

Детектор скорости движущегося автомобиля на ардуино

Модуль с датчиком имеет 4 вывода. Их подключение к плате Arduino приведено на рисунке.

Детектор скорости движущегося автомобиля на ардуино

Напишем скетч для считывания показаний с цифрового и аналогового выходов датчика. Будем каждые 100 мс опрашивать датчик и выводить значения в последовательный порт.

Детектор скорости движущегося автомобиля на ардуино

А во втором столбце — значения с аналогового канала датчика. Чтобы понять, что они означают, необходимо составить таблицу соответствия, отмечая направление магнитных линий (полярность магнита) и удалённость магнита от датчика. На основании этой таблицы можно будет трактовать показания датчика Холла.

Детектор скорости движущегося автомобиля на ардуино

Шаг 4: сборка

Детектор скорости движущегося автомобиля на ардуиноРисунок 8 – Монтажный уголокДетектор скорости движущегося автомобиля на ардуиноРисунок 9 – Собранный эхолокатор

Монтажные уголки

Два монтажных уголка были изготовлены из алюминиевого листа толщиной 2 мм. Размеры уголков показаны на рисунке 8.

Два отверстия обозначенные «базовая линия», предназначены для крепления шнура к каждому датчику. Для простоты настройки просто привяжите к ним шнур требуемой длины.

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

Разъемы датчиков

Разъемы датчиков (рисунок 9) выполнены из стандартных разъемов от Arduino. Все ненужные выводы были вытащены, и в пластике было просверлено отверстие 3 мм.

При пайке соединений старайтесь не замыкать провода на алюминиевый уголок.

Защита от натяжений

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

Определение угла поворота

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

Решение проблемы: отслеживать угол через замыкание. На фото продемонстрирована небольшая штучка, которая крепится недалеко от поворотного механизма. На часть, которая крутится вместе с колесами влево/вправо двигателем, прикрепляется гребешок с железными контактами.

Детектор скорости движущегося автомобиля на ардуино

Детектор скорости движущегося автомобиля на ардуино

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

Детектор скорости движущегося автомобиля на ардуино

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

Детектор скорости движущегося автомобиля на ардуино

Порядок расчета разрешающей способности шагового двигателя dvd привода

Чтобы измерить разрешение шагового двигателя привода CD / DVD, нужен цифровой микрометр. Расстояние вдоль винта было уже измерено. Общая длина винта промерена с помощью микрометра, которая оказалась 51,56 мм. Далее нужно определить значение отведения, которое представляет собой расстояние между двумя соседними резьбами на винте. Потоки были рассчитаны на 12 нитей в пределах этого расстояния. Отвод = расстояние между соседними нитями = (общая длина / количество нитей = 51,56 мм) / 12 = 4,29 мм / об. Угол шага составляет 18 градусов, что соответствует 20 шагам / оборот. Теперь, когда вся необходимая информация доступна, разрешение шагового двигателя можно рассчитать, как показано выше: Разрешение = (Расстояние между смежными нитями) / (N шагов / оборот) = (4,29 мм / оборот) / (20 шагов / оборот) = 0,214 мм / шаг. Что в 3 раза лучше требуемого разрешения, которое составляет 0,68 мм / шаг.

Как подключить ультразвуковой датчик к Ардуино

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • УЗ дальномер HC-SR04;
  • 1 светодиод и резистор 220 Ом;
  • провода «папа-папа» и «папа-мама».

Схема подключения ультразвукового датчика к Arduino Uno

Схема подключения указана на рисунке выше. Отметим, что ультразвуковой дальномер HC-SR04 имеет диапазон измерения от 2 см до 400 см, работает при температурах от 0° до 60° С. Точность измерения составляет ± 1 см, рабочее напряжение датчика до 5,5 В. Для начала мы используем простой скетч, без использования библиотеки Ultrasonic. После подключения к Arduino дальномера HC-SR04 загрузите следующий скетч:

Скетч для подключения датчика hc-sr04 к Arduino

int trigPin = 8; // назначаем имя для Pin8
int echoPin = 9; // назначаем имя для Pin9
 
void setup() { 
  Serial.begin (9600); // подключаем монитор порта
  pinMode(trigPin, OUTPUT); // назначаем trigPin (Pin8), как выход
  pinMode(echoPin, INPUT); // назначаем echoPin (Pin9), как вход
} 
 
void loop() { 
  int duration, cm; // назначаем переменную "cm" и "duration" для показаний датчика
  digitalWrite(trigPin, LOW); // изначально датчик не посылает сигнал
  delayMicroseconds(2); // ставим задержку в 2 ммикросекунд

  digitalWrite(trigPin, HIGH); // посылаем сигнал
  delayMicroseconds(10); // ставим задержку в 10 микросекунд
  digitalWrite(trigPin, LOW); // выключаем сигнал

  duration = pulseIn(echoPin, HIGH); // включаем прием сигнала

  cm = duration / 58; // вычисляем расстояние в сантиметрах

  Serial.print(cm); // выводим расстояние в сантиметрах
  Serial.println(" cm");

  delay(1000); // ставим паузу в 1 секунду
}

Пояснения к коду:

  1. для подключения выходов Trig и Echo на датчике сонара Ардуино можно использовать любые цифровые входы на микроконтроллере;
  2. чтобы получить значение датчика в миллиметрах следует использовать следующую формулу для расчета: .

Шаг 8: контроллер

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

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

Контроллер принимает входные данные (с датчиков, удалённо и т.д.), обрабатывает их и затем даёт команду приводам (моторам) выполнить выбранное задание.

Если вы подключите позитивный провод от батарей на одну строну моторчика, затем подключите негативный провод от батарей на другой контакт моторчика, то он начнёт крутиться вперёд. Если вы поменяете провода местами, то мотор начнёт вращаться в другую сторону.

Микроконтроллер можно использовать, чтобы вращать мотор в одном направлении, но если вам хочется с помощью микроконтроллера вращать мотор и вперёд, и назад, то вам нужна дополнительная схема – H-мост. В следующем шаге я объясню, что это такое.

Подключение угла и код

Детектор скорости движущегося автомобиля на ардуино

Схема подключения показана на рисунке. Плюс тянем к зеленому, остальные протягиваем к минусу. Через резистор, установленный для устранения помех и отсутствия КЗ, подключаем провода к выходам A0-A2. Выбраны они просто из экономии остальных портов.

Детектор скорости движущегося автомобиля на ардуино

Код дан с комментариями. Подключаем пины и опрашиваем их через digitarRead(). Если напряжение есть, вернется значение true. Далее смотрим, если результат означает, что колеса в крайних положениях, запрещаем дальнейший поворот в эту сторону.

Небольшая хитрость: поскольку выходы на 5В и 3.3В понадобятся в будущем, можно поставить плюс на один из digital-пинов. Перед каждой проверкой угла выдавать ток через digitalWrite(whitePin), потом проверять угол и убирать ток.

Int speedTurn = 180; //скорость поворота, от 0 до 255
//пины для определения поворота
int pinRed = A0;
int pinWhite = A1;
int pinBlack = A2;
int pinAngleStop = 12; //выводит ток на светодиод, если достигнут максимальный угол, нужен
//только для отладки
void setup() {
//пины поворота на считывание
pinMode(pinRed, INPUT);
pinMode(pinBlack, INPUT);
pinMode(pinWhite, INPUT);
//светодиод
pinMode(pinAngleStop, OUTPUT);
//пины драйвера двигателя, направление и скорость
pinMode(angleDirection, OUTPUT);
pinMode(angleSpeed, OUTPUT);
Serial.begin(9600);
}
//функция вызывается из loop(), когда приходит команда с андроида
void turn(int angle) {
digitalWrite(pinAngleStop, HIGH); //выдаем ток на провод, подключенный к плюсу
delay(5); //немного ждем, чтобы ток «успел» дойти
if(angle > 149) {
if(digitalRead(pinWhite) == HIGH && digitalRead(pinBlack) == LOW && digitalRead(pinBlack) == LOW) {
//если достигнуто крайне правое положение, выйти из функции не подавая ток, чтобы не
//сжечь мотор
return;
}
//если угол не максимальный, поворачиваем
digitalWrite(angleDirection, HIGH);
analogWrite(angleSpeed, speedTurn);
} else if (angle

Заключение первой части

Но самое интересное, как по мне, осталось на второе – программа Arduino и приложение на Android, там творится настоящая магия, по крайней мере, для молодого меня.

UPD: вторая часть уже вышла —

Машинка на arduino и Bluetooth без редактирования кода. Мы будем использовать специализированный бесплатный софт для составления скетча. Кроме того не надо покупать шасси для нашей поделки, подойдет практически любая неисправная радиоуправляемая модель автомобиля или танка.

Предлагаю посмотреть обзорный видеоролик про блютуз-управляемую машинку и ее начинку.

Итак, давайте разберем на живом примере как сделать своими руками дистанционно управляемую по bluetooth c android планшета или смартфона машинку. Статья, как ни странно, рассчитана на начальный уровень знаний. Здесь нет руководства по редактированию кода в Arduino IDE, да и мы использовать его будем только для заливки нашего кода. А составлять алгоритм управления будем в программе под названием FLProg. Программа управления со смартфона — HmiKaskada_free. Но сначала о железе, которое нам понадобится.

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