Arduino:Примеры/Управление серводвигателем с помощью потенциометра

Материал из Онлайн справочника
Версия от 16:03, 29 июля 2017; Myagkij (обсуждение | вклад) (→‎Цепь)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


Управление серводвигателем с помощью потенциометра

Данный пример демонстрирует управление валом сервопривода с помощью потенциометра. При вращении ручки потенциометра вал сервопривода будет перемещаться в соответствующую позицию. В этом примере в отличие от стандартного примера из библиотеки Servo используется стабилизатор напряжения на 5В L4940V5 для питания сервопривода. Это является лучшим решением, по нескольким причинам. Хоть и в неподвижном положении сервоприводы потребляют небольшой ток, при выполнении команд ток потребления может достигать нескольких сотен миллиампер, что может привести к скачкам напряжения. При недостаточном напряжении питания вал сервопривода будет перемещаться неустойчиво. Поэтому сервоприводам необходимо обеспечить отдельным источником питания.

Необходимое оборудование

Цепь

Соберите схему согласно монтажной схеме.

ОСТОРОЖНО! Выход стабилизатора напряжения не нужно соединять с шиной 5V платы Arduino. Соединить необходимо только шины земли стабилизатора и платы Arduino.


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

Схема включения стабилизатора напряжения


Распиновка стабилизатора напряжения L4940V5

Код

#include <Servo.h>                     // подключаем библиотеку Servo

#define SERVO 9                        // номер цифрового вывода для подключения сигнального провода сервопривода
#define POT   0                        // номер аналогового вывода для подключения потенциометра

Servo myServo;
int val = 0;                           // переменная для хранения показаний, считанных с потенциометра

void setup()
{
    myServo.attach(SERVO);             // прикрепляем объект Servo к выводу SERVO(т.е. 9-му)
}

void loop()
{
    val = analogRead(POT);             // чтение данных с потенциометра
    val = map(val, 0, 1023, 0, 179);   // преобразование к нужному диапазону
    myServo.write(val);                // устанавливаем вал серводвигателя в соответствующую позицию
    delay(15);                         // задержка, для фиксации серводвигателя, прежде чем поступит новая команда
}

См.также

Внешние ссылки