Проект 17: Сервопривод. Крутимо потенціометр, міняємо положення

Необхідні компоненти:

Сервопривод (див. Рис. 17.1) - пристрій, що забезпечує перетворення сигналу в строго відповідне цим сигналом переміщення (як правило, поворот) виконавчого пристрою. Являє собою прямокутну коробку з мотором, схемою і редуктором всередині і вихідним валом, який може повертатися на строго фіксований кут, який визначається вхідним сігналом.Как правило, цей кут має межу в 60 в 180. Крім цього, ще бувають сервоприводи і постійного обертання.


Рис. 17.1. Сервопривод

Сервопривод підключається за допомогою трьох проводів до пристрою (драйверу або контролера) і джерела живлення. Сервопривод управляється за допомогою імпульсів змінної тривалості. Кут повороту визначається тривалістю імпульсу, який подається по сигнальному проводу. Це називається широтно-імпульсною модуляцією. Сервопривод очікує імпульсу кожні 20 мс. Тривалість імпульсу визначає, наскільки далеко має повертатися мотор. Наприклад, імпульс в 1,5 мс диктує мотору поворот в положення 90 ° (нейтральне положення). Коли сервопривід отримує команду на переміщення, його керуючий орган переміщується в це положення і утримує його. Якщо зовнішня сила діє на сервопривід, коли він утримує задане положення, сервопривід буде чинити опір переміщенню з цього положення. Максимальна величина сили, яку може витримувати сервопривід, характеризує обертовий момент сервоприводу. Однак сервопривід НЕ назавжди утримує своє становище, імпульси позиціонування повинні повторюватися, інформуючи сервопривід про збереження положенія.В нашому експерименті ми будемо управляти положенням сервоприводу за допомогою потенціометра. Схема підключення сервоприводу і потенціометра до плати Arduino показана на рис. 17.2.


Рис. 17.2. Схема підключення сервоприводу і потенціометра до Arduino

Cервопрівод підключається трьома проводами: живлення (Vcc), «земля» (Gnd) і сигнальний (С). живлення червоний провід, він може бути підключений до +5 В зовнішнього джерела живлення, чорні (або коричневий) провід - «земля» - підключається до GND-виводу Arduino GND, сигнальний (помаранчевий / жовтий / білий) провід підключається до цифрового виводу контролера Arduino. Для живлення сервоприводу використовуємо окремий блок живлення +5 В. Для управління сервоприводом в Arduino є стандартна бібліотека Servo. На платах, відмінних від Mega, використання бібліотеки відключає можливість застосування analogWrite () (ШІМ) на пінах 9 і 10 (незалежно, підключені до цих пінам серви чи ні). На платах Mega до 12 сервоприводів можуть використовуватися без впливу на функціональність ШІМ, але використання від 12 до 23 сервомашинок відключить PWM ШІМ на пінах 11 і 12.Аналоговие дані потенціометра (0-1023) масштабується функцією map () в значення кута повороту сервоприводу (0 -180) і за допомогою бібліотечної функції servo.write (angle) даємо сервоприводу команду для повороту. Скетч приведений в лістингу 17.1.


#include <Servo.h> // підключення бібліотеки Servo
Servo servo1;
const int pinServo = 8; // Пін для підключення сервоприводу
const int POT = 0; // Аналоговий вхід A0 для підключення потенціометра
int valpot = 0; // змінна для зберігання значення потенціометра
int angleServo = 0; // змінна для зберігання кута повороту серви
void setup ()
{
// підключити змінну servo до виводу pinServo
servo1.attach (pinServo);
}
void loop ()
{
valpot = analogRead (POT); // читання даних потенциометра
// масштабується значення до інтервалу 0-180
angleServo = map (valpot, 0,1023,0,180);
// поворот сервоприводу на отриманий кут
servo1.write (angleServo);
delay (15); // пауза для очікування повороту сервоприводу
}

Порядок підключення:

  1. Підключаємо датчик сервоприводу і потенціометр за схемою на рис. 17.2.
  2. Завантажуємо в плату Arduino скетч з лістингу 17.1.
  3. Поворотом ручки потенціометра управляємо становищем сервоприводу.