Як вже було сказано раніше, Arduino Due - це плата на базі контролера ARM, призначена для інженерів-електронників та любителів. Ця плата DUE може бути використана для виготовлення верстатів з ЧПУ, 3D-принтерів, роботизованих зброї тощо. Усі ці проекти мають спільну функцію - Контроль положення. Будь-який із цих проектів потребує точності щодо своєї позиції. Точні позиції в цих машинах можуть бути досягнуті сервомоторами. На цьому занятті ми збираємося контролювати положення сервомотора з Arduino Due. Ми вже розглядали інтерфейс сервомотора з Arduino Uno та інтерфейс сервомотора з мікроконтролером 8051.
Сервомотори:
Сервомотори відомі своїм точним рухом вала або положенням. Вони не пропонуються для високошвидкісних програм. Вони пропонуються для низької швидкості, середнього крутного моменту та точного застосування положення. Ці двигуни використовуються в робототехнічних машинах, системах управління польотом та управління. Сервомотори також використовуються в деяких принтерах та факсимільних апаратах.
Сервомотори доступні різних форм і розмірів. У цьому посібнику ми використовуватимемо сервомотор SG90. SG90 - це сервомотор на 180 градусів. Отже, за допомогою цього сервоприводу ми можемо розташувати вісь від 0 до 180 градусів.
Сервомотор в основному має три дроти, один для позитивної напруги, інший для заземлення і останній для встановлення положення. ЧЕРВОНИЙ провід підключений до живлення, Коричневий провід підключений до землі, а ЖОВТИЙ провід (або БІЛИЙ) підключений до сигналу.
Сервомотор - це комбінація двигуна постійного струму, системи управління положенням та шестерень. На сервоприводі у нас є система управління, яка приймає ШІМ-сигнал з сигнального штифта. Він декодує сигнал і отримує від нього коефіцієнт опору. Після цього він порівнює відношення до заздалегідь визначених значень позицій. Якщо є різниця у значеннях, він відповідно регулює положення сервопривода. Отже, положення осі сервомотора базується на коефіцієнті передачі ШІМ-сигналу до штифта СІГНАЛУ.
Частота сигналу ШІМ (модульована по ширині імпульсу) може змінюватися залежно від типу сервомотора. Тут найважливішим є КОЕФІЦІЄНТ МОЖЛИВОСТІ ШІМ-сигналу. Перевірте це на ШІМ за допомогою Arduino Due. Однак у цьому випадку нам не потрібно навіть турбуватися про вибір коефіцієнта мита. В Arduino ми маємо особливу функцію; викликавши його, ми можемо відрегулювати положення сервоприводу, просто вказавши кут. Про це ми поговоримо в робочому розділі нижче.
Перш ніж зв’язувати серводвигун з Arduino Due, ви можете протестувати свій сервопривід за допомогою цієї схеми тестера сервомотора. Також перевірте ці проекти на Control Servo за допомогою Flex Sensor або Force Sensor.
Компоненти:
Апаратне забезпечення: Arduino Due, джерело живлення (5 В), сервомотор.
Програмне забезпечення: Arduino щоночі, завантажуйте його за посиланням нижче (https://www.arduino.cc/en/Main/Software)
Для отримання детальної інформації про те, як завантажити та встановити це програмне забезпечення, відвідайте перший підручник Початок роботи з Arduino Due.
Принципова схема та робоче пояснення:
Як було сказано раніше в ARDUINO, у нас є заздалегідь визначені бібліотеки, які встановлюватимуть частоти та коефіцієнти коефіцієнта відповідності, як тільки файл заголовка буде викликаний або включений. В ARDUINO ми просто повинні вказати необхідну позицію сервоприводу, і DUE генерує відповідний ШІМ-сигнал для сервоприводу. Що нам потрібно зробити, щоб отримати точне положення сервоприводу, це,
#включати
Серво мисерво;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (необхідний_позиційний_ кут);
Файл заголовка “#include
По-друге, ім'я слід вибрати для сервоприводу за допомогою «Сервосервіс» , тут myservo - це вибране ім’я, тому під час написання позиції ми будемо використовувати це ім’я, ця функція стане в нагоді, коли у нас є багато сервоприводів для управління ми можемо цим керувати до 12 сервоприводів.
Оскільки Arduino Due має 12 ШІМ-каналів, нам потрібно сказати DUE, де підключений сигнальний штифт сервоприводу або де йому потрібно генерувати ШІМ-сигнал. Для цього ми маємо “myservo.attach (2);” , тут ми говоримо DUE, що ми підключили сигнальний штифт сервоприводу на PIN2.
Залишилося лише встановити положення, ми збираємося встановити положення сервоприводу за допомогою “ myservo.write (45);” , за цією командою стрілка сервоприводу рухається на 45 градусів. Якщо ми змінимо "45" на "175", вісь сервоприводу нахиляється до 175 градусів і залишається там. Після цього, коли нам потрібно змінити позицію сервоприводу, нам просто потрібно викликати команду “ myservo.write (needed_position_angle);” .
У програмі ми збираємося збільшувати та зменшувати кути за допомогою циклів. Отже, сервопривід коливається від 0 до 180, потім від 180 до 0 і так далі. Управління серводвигуном від Arduino Due найкраще пояснюється поетапно нижче наведеного коду C.