Мы в социальных сетях

подчеркивание красное для правой колонки

Наш официальный YouTube канал

подчеркивание красное для правой колонки

Управление углом поворота сервопривода с помощью ультразвукового дальномера HC-SR04 и Arduino Sensorshield.

Картинка шилда для подключения датчиков servoprivod и HC-SR04

Здравствуйте, дорогие читатели нашего сайта. Сегодня мы с вами узнаем как управлять углом поворота сервопривода с изменением расстояния от ультразвукового дальномера до предмета. Также мы рассмотрим альтернативное подключение элементов с помощью Arduino SensorShield . Этот шилд используется для удобства и экономии рабочего места.Если вам нужно подключить большое количество датчиков, то эта плата для вас! На нашем сайте имеются уроки, в которых мы разобрали, как правильно подключать сервопривод и дальномер к Arduino. Сегодня же мы более подробно рассмотрим Sensorshield и узнаем преимущества использования этого шилда.

Технические характеристики Arduino Sensorshield

Картинка шилда для подключения датчиков servoprivod и HC-SR04

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

Шилд можно использовать для подключения следующих устройств

  • SD card
  • 32 servo controller
  • RB URF для ультразвуковых датчиков
  • 12864 LCD последовательный и параллельный интерфейс
  • APC220 wireless RF
  • Bluetooth
  • I2C

Ниже приведена схематическая распиновка платы Sensorshield, она вам поможет понять, в какие пины вам необходимо соединить тот или иной датчик.


Схема распиновки шилда Sensorshild для Arduino

Необходимые компоненты для подключения

Для полноценной работы нашего мини-проекта, нам понадобятся следующие устройства:

Все эти элементы можно приобрести по низкой цене и с высоким качеством в интернет магазине SmartElements.

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


Необходимые компоненты для подключения датчиков servoprivod и HC-SR04 к Arduino

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

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

Схема подключения шалда к микроконтроллеру Arduino

Схема подключения для соединения датчиков servoprivod и HC-SR04 к Arduino

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

Я надеюсь подключить устройства у вас получилось, а теперь перейдем к самому важному этапу - программированию Arduino.

Скетч для управления углом поворота сервопривода


#include <Servo.h>
#define coef 5
#define min_zone 6
#define max_zone 44
#define Trig 5
#define Echo 6
#define servoPin 11
Servo myservo;

void setup() {
pinMode (Trig, OUTPUT); //инициируем как выход
pinMode (Echo, INPUT); //инициируем как вход
myservo.attach (servoPin);
myservo.write (0);
}
unsigned int impulseTime=0;
unsigned int distance_sm=0;

void loop() {
digitalWrite (Trig, HIGH); /* Подаем импульс на вход trig дальномера */
delayMicroseconds (10); // равный 10 микросекундам
digitalWrite (Trig, LOW); // Отключаем
impulseTime = pulseIn(Echo, HIGH); // Замеряем длину импульса
distance_sm = impulseTime/58; // Пересчитываем в сантиметры
if (distance_sm >= min_zone && distance_sm <= max_zone)
//если замеряемая длинна больше 4см и меньше 22см
{
myservo.write (coef * (distance_sm - min_zone));
// поворачиваем сервопривод на значение: 10*(замеряемая длина - 4см )
}
else if (distance_sm < min_zone)
//иначе, если дистанция менее 4 см, сервопривод в положении ноль градусов
{
myservo.write(0);
}
else //иначе
{
myservo.write(180); //сервопривод в положении 180 градусов
}
delay (100); /* ждем 0.1 секунды */
}

Разбор скетча

Ну что ж, пришло время разобрать скетч. Объяснять простые моменты я не буду, а постараюсь рассказать про интересные участки кода.


-------------- 1 часть кода --------------
if (distance_sm >= min_zone && distance_sm <= max_zone)
//если замеряемая длинна больше 4см и меньше 22см
{
myservo.write (coef * (distance_sm - min_zone));
// поворачиваем сервопривод на значение: 10*(замеряемая длина - 4см )
}
-------------- 2 часть кода --------------
else if (distance_sm < min_zone)
//иначе, если дистанция менее 4 см, сервопривод в положении ноль градусов
{
myservo.write(0);
}
else //иначе
{
myservo.write(180); //сервопривод в положении 180 градусов
}

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


1 часть кода Как вы видите, составляющим первой части кода является действие, которое называется условием. Мы указываем условие, при котором выполняются некоторые команды. Смысл этой команды такой: если расстояние, которое замерил дальномер, больше или равно минимальному значению (это минимальное значение мы задали в начале скетча) и меньше или равно максимальному значению (это максимальное значение мы также указали в начале скетча), то поворачиваем сервопривод на угол, вычисляющийся по формуле (10*(замеряемая длина - минимальное значение)).

2 часть кода Вторая часть кода продолжает первую часть... Иначе (при значении, не попадающим в указанный нами интервал), если замеренная датчиком длина меньше минимального значения, то сервопривод устанавливается в положение с углом поворота равным 0 градусов. Иначе сервопривод устанавливается в положение с максимальным углом поворота равным 180 градусов.

То есть мы указали для сервопривода все возможные случаи работы: рабочее состояние, положение сервопривода с углом в 0 градусов и в положении с 180 градусами

Гтовое соединение датчиков servoprivod и HC-SR04

Надеюсь у вас все получилось! Если у вас остались вопросы, можете написать нам в вконтакте или в комментариях ниже. Мы постараемся ответить на ваши вопросы в скором времени!


Вам возможно будет интересно

Комментарии