Управління сервоприводом за допомогою ультразвукового далекоміра hc-sr04 і arduino sensorshield

Управління сервоприводом за допомогою ультразвукового далекоміра hc-sr04 і arduino sensorshield

Привіт, дорогі читачі нашого сайту. Сьогодні ми з вами дізнаємося як управляти кутом повороту сервоприводу зі зміною відстані від ультразвукового далекоміра до предмета. Також ми розглянемо альтернативне підключення елементів за допомогою Arduino SensorShield. Цей Шилд використовується для зручності та економії робочого места.Еслі вам потрібно підключити велику кількість датчиків, то ця плата для вас! На нашому сайті є уроки, в яких ми розібрали, як правильно підключати сервопривід і далекомір до Arduino. Сьогодні ж ми більш детально розглянемо Sensorshield і дізнаємося переваги використання цього Шілд.

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

Управління сервоприводом за допомогою ультразвукового далекоміра hc-sr04 і arduino sensorshield

Найголовніша перевага даного Шілд полягає в тому, що ви зможете підключити безліч датчиків з максимальною зручністю та при цьому зайнявши максимально маленьке місце на Arduino. Підключення Шілд до Ардуіно відтворюється стандартним способом, а саме накладається усіма контактами на плату мікроконтролера, зробивши гібрид, який ми назвемо - "бутерброд".

Шілд можна використовувати для підключення наступних пристроїв

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

Нижче наведена схематична терморегулятори плати Sensorshield, вона вам допоможе зрозуміти, в які Піни вам необхідно з'єднати той чи інший датчик.


Управління сервоприводом за допомогою ультразвукового далекоміра hc-sr04 і arduino sensorshield

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

Для повноцінної роботи нашого міні-проекту, нам знадобляться такі пристрої:

Всі ці елементи можна придбати за низькою ціною і з високою якістю в інтернет магазині SmartElements.

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


Управління сервоприводом за допомогою ультразвукового далекоміра hc-sr04 і arduino sensorshield

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

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

Управління сервоприводом за допомогою ультразвукового далекоміра hc-sr04 і arduino sensorshield

Управління сервоприводом за допомогою ультразвукового далекоміра hc-sr04 і arduino sensorshield

Як ви бачите, схема підключення дуже проста і не вимагає додаткових пояснень. Як завжди, здійснювати підключення потрібно дуже уважно і акуратно, адже від цього залежить тривалість роботи ваших пристроїв.

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

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

#include
#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 // інакше, якщо дистанція менше 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 // інакше, якщо дистанція менше 4 см, сервопривід в положенні нуль градусів
<
myservo.write (0);
>
else // інакше
<
myservo.write (180); // сервопривід в положенні 180 градусів
>

Розглянемо найцікавіший ділянку скетчу, який і відповідає за роботу проекту. Поділимо цю ділянку коду на дві частини, які ви можете побачити вище. Розглянемо кожну частину окремо.

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

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

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

Управління сервоприводом за допомогою ультразвукового далекоміра hc-sr04 і arduino sensorshield

Вам можливо буде цікаво

Схожі статті