Найти в Дзене

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

Добрый день. Благодаря алиэкспресс у меня появился сервопривод SG90, сервопривод можно использовать для управления небольшими легкими механизмами, угол поворота которых ограничен диапазоном от 0 до 180 градусов. Сейчас такой у меня есть в "живую" и мне хочется добавить его к конструктору программ для микроконтроллеров AVR , вот так выглядит сервопривод SG90: Технические характеристики - Диапазон вращения: 180°;
- Напряжение питания: 4.8…6В;
- Крутящий момент: 1.8 кг.см при 4.8 В;
- Скорость вращения: 60° за 0.12 сек при 4.8 В;
- Внутренний интерфейс: аналоговый;
- Направление: CCW (против часовой стрелки);
- Материал шестерней: нейлон;
- Материал корпуса: пластик;
- Длина проводов: 25 см;
- Габариты: 23 × 12.2 × 29 мм;
- Вес: 9 г. Принцип управления Сервопривод SG90 имеет один управляющий вывод, который должны подаваться импульсы постоянной частоты и переменной ширины. Длина импульса определяет положение сервопривода. В официальной документации углы поворота считают от -90* до 90*
Оглавление

Добрый день. Благодаря алиэкспресс у меня появился сервопривод SG90, сервопривод можно использовать для управления небольшими легкими механизмами, угол поворота которых ограничен диапазоном от 0 до 180 градусов. Сейчас такой у меня есть в "живую" и мне хочется добавить его к конструктору программ для микроконтроллеров AVR , вот так выглядит сервопривод SG90:

сервопривод  SG90
сервопривод SG90

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

- Диапазон вращения: 180°;
- Напряжение питания: 4.8…6В;
- Крутящий момент: 1.8 кг.см при 4.8 В;
- Скорость вращения: 60° за 0.12 сек при 4.8 В;
- Внутренний интерфейс: аналоговый;
- Направление: CCW (против часовой стрелки);
- Материал шестерней: нейлон;
- Материал корпуса: пластик;
- Длина проводов: 25 см;
- Габариты: 23 × 12.2 × 29 мм;
- Вес: 9 г.

Принцип управления

Сервопривод SG90 имеет один управляющий вывод, который должны подаваться импульсы постоянной частоты и переменной ширины. Длина импульса определяет положение сервопривода. В официальной документации углы поворота считают от -90* до 90*, я для удобства буду считать от 0..180* (аналогично и в библиотеки arduino).

Таким образом для SG90 имеем следующую зависимость:

  • 1ms- угол поворота 0*
  • 1.5ms- угол поворота 90*
  • 2ms- угол поворота 180*
-2

Выбор варианта реализации

Получить подобный сигнал управления можно двумя путями это;

  • аппаратный- задействовать встроенный в микроконтроллер модуль формирования сигнала ШИМ;
  • программный- формирование длительности управляющего импульса программой микроконтроллера;

Самым эффективным является использование аппаратного ШИМ, его использование не расходует ресурсы микроконтроллера. Минусом данного варианта является ограниченное число модулей ШИМ (таймеров) , к тому же от модели контроллера меняется и устройство самого ШИМ, поэтому надо будет подстраивать работу блока под каждый микроконтроллер. Используя программный путь мы впустую расходуем часть процессорного времени микроконтроллера, т.е. 10% работы процессора на каждый сервопривод (надеюсь что период управляющих импульсов можно увеличить, тем самым разгрузим процессор)

Немного расчетов

Допустим тактовая частота микроконтроллера F_cpu = 12 MHz, а желаемый угол поворота Angle = 95*, посчитаю количество тактов которые процессор должен ожидать "впустую".

N = N1ms * (1 + Angle/180), где N1ms - число тактов на 1 миллисекунду

N1ms = F_cpu / 1000 = 12000000 / 1000 = 12000

N = 12000*(1+95/180) = 18333

Т.е. контроллер должен выставить высокое состояние управляющего порта, подождать 18333 такта, после этого выставить низкое состояние порта и через 20 ms снова вернуться к этой программе

Алгоритм работы

Алгоритм работы FBD блока
Алгоритм работы FBD блока

В следующей статье я продолжу создавать и тестировать функциональный блок..