roboforum.ru
Технический форум по робототехнике.
- Список форумов‹Мастерская‹Готовые модули
- Изменить размер шрифта
- Версия для печати
- Магазин
- Правила
- Wiki
- FAQ
- Регистрация
- Вход
Самодельный сервопривод
Самодельный сервопривод
Outcaster » 19 ноя 2004, 00:15
Как говорилось в теме «Сервы», сервопривод одна из наиболее важных деталей в роботостроительстве. Рынки предлагают широкий выбор сервоприводов для моделей, однако:
— Далеко не везде (особенно в «глубинках») эти самые рынки есть.
— Очень часто предлагаемые сервоприводы неудобны для использования или обладают недостаточными характеристиками.
— Несмотря на казалось-бы небольшую цену (12-23$ за штуку), цена шасси, построеных на покупных сервоприводах весьма существенна — 3 на ногу, множим на 6 ног, множим на 12-23$, получаем, хо-хо, 216-414$! Далеко не всякий интузиаст (а как правило, именно у интузиастов, напр. у меня , таких денег то и нет ) позволит себе такую «розкошь». По этому, тоже оценив ситуацию, но «со своей колокольни» , принял решение строить сервоприводы самостоятельно. И вот что у меня вырисовалось:
БОльшая часть сервопривода изготавливаеться самостоятельно:
Опорный блок (1) вырезаеться из фторопласта (в принципе, можно вырезать из чего угодно достаточно прочного — полиуретан, гетинакс, ПВХ, бронза, железо)
Ползунок (2) лучше сделать именно из фторопласта (подойдёт и бронза, но тогда работа «насухо» не получиться).
Моторная рама (3) — железо
Опорная пластина (4) — бронза.
Ходовой винт (5) — стальной стержень, перед нарезкой резьбы нужно отжечь, потов снова закалить (напр. на газовой плите). Посадочный диаметр по малый подшибник и резьба нарезаеться на токарно-винторезном станке (резьбу можно нарезать и плашкой — весьма неплохо получаеться)
Направляющие (6) , (4 штуки) — стальные стержни (я брал спицы от горного велосипеда (только гладкие, никелированные, бывают с насечкой), с одной стороны на них уже была нарезана резьба, а с другой просто отрезал загибал и пропаивал).
Зубчатая пара — самый большой «дефицит», берёться от трасовых моделей, ведомая шестерня (7) — углепластиковая, ведущяя (8 ) — бронзовая, передаточное число приблизительно 1:4
Подшипники (9, 10), гайки (11) покупаються — дешёвые, не дефицит даже у нас .
Электродвигатель (12) — 3-х вольтовый, от детских игрушек, их ещё называют «Джонсоны», но тут по потребностям/необходимостям.
Outcaster » 19 ноя 2004, 00:51
setar » 19 ноя 2004, 12:30
Вышеописанная конструкция является приводом но не сервом, отличительной особенностью которого является наличие обратной связи от рабочей части.
При превышении нагрузки свыше возможности прокручивания двигателя мы напрочь теряем текущее положение ползунка.
Есть следующие возможности по устранению этой неприятной особенности:
- частичное но простое решение — установка концевых контактных датчиков, указывающих начало и конец хода ползунка.
- другое решение состоит в съёме информации о ползунке с вала привода (с него он точно не соскальзнёт). Датчиком может являться цифровой вращающийся энкодер, прерыватель типа колёсика мыши, датчик хола, ну или на худой конец контактный прерыватель обозначающий один оборот вала.
- последний способ — это съем положения исполнительного ползунка непосредственно, посредством ползункового потенциометра
В любом случае исполнительная часть дополняется контрольной частью, задачей которой является отработка положения, заданного сигналом управления.
P.S. конструкция весьма интересна, но сложно воспроизводимая без специального оборудования. У меня самого есть токарный универсальный станок, но для многих это лишь мечты.
Очень хочется ориентировать всех энтузиастов занимающихся разработкой конструкций пытаться сделать изделие из стандартных узлов . ну хотя бы стремиться к этому.
setar » 19 ноя 2004, 12:31
aliens » 19 ноя 2004, 13:03
Собственно а что такое серво двигатель?
Механика
Это обычный двигатель с редуктором на шестеренках.
Электроника
Переменный резистор, контроллер (который посредством ацп узнает положение движка, и управляет им(мотором))
Такой контроллер в принцыпе легко собрать.
Да и переменник легко приделать
все что пришло в голову по поводу серва.
setar » 19 ноя 2004, 13:10
aliens » 19 ноя 2004, 14:04
А какие проблемы в реализации.
Пластик или жесть для корпуса есть у многих, шестеренки можно найти., переменник тоже снять со старых магнитофонов, да и контроллер купить.
Скажите если не прав.
Пока писал то сообщение загорелся сделать, может на выходных сбацаю.
P.S В редукторе если поставить 2 ограничителя, то будет настоящий серво . Хотя если крепко прикрепит к переменнику, то он и будет ограничителями
-= Александр =- » 19 ноя 2004, 14:04
aliens » 19 ноя 2004, 14:09
Outcaster » 19 ноя 2004, 15:21
Outcaster » 19 ноя 2004, 15:56
С определением серва полностью согласен. Действительно, нигде на рисунках система слежения условно не показана.
Для даной конструкции есть два варианта решения:
1) Ведомая шестерня (7) неспроста имеет отверстия — они служат оптюратором. В качестве оптопары используется инфракрасная спарка от мыши (спареный фототранзистор и инфракрасный осветитель). По ним отслеживаеться не только вращение шестерни, но и направление вращения, что немаловажно. С двух сторон устанавливаються концевики, по которым отслеживаеться начало и конец хода (при установке контроллера по ним он автокалибруеться).
Такая схема стоит у меня на двухкоординатном станке (работает превосходно уже почти полгода ).
2) Если предполагаеться при помощи даного привода сгибать сустав, то рациональнее устанавливать следящюю систему непосредственно в сустав (по большому счёту, никого не интересует положение ползунка привода — интересен угол изгиба сустава ). В идеале отслеживать угол изгиба с помощью EAW (мне, например, такое не светит, по этому буду использовать обычный потенциометр — даже плюсы появляються: три провода вместо десяти ). Мне кажеться, стоит установить концевики для отслеживания крайних положений ползунка (для автокалибровки расхода угла сгибания сустава ).
Outcaster » 19 ноя 2004, 16:10
Outcaster » 19 ноя 2004, 16:40
aliens » 20 ноя 2004, 23:02
Собрался сделать серво из доступных деталей:
1. Моторчик от СД-Рома (кругленький, не очень большой)
2. Шестеренка на моторчик (как на китайских машинках)
3. Шестеренка раза в 3 больше, чем на моторчик
4. Шестеренка еще больше (выходная)
Все это чудо должно (по размер и по виду) войти в коробку от
механизма настенных часов (в которой механизм и батарейка).
Также к последней (выходной) шестеренке хочу прикрепить
переменнй резистор круговой (который с ограничителями)
P.S. В каком редакторе можно нарисовать шестерню?
Чтобы она уже в стандартных обЪектах была, а то рисовать не умею.
aliens » 21 ноя 2004, 16:06
Вот тут подумал, ведь из этой конструкции можно сделать полноценный серво.
Приделать управление двигателем и контроллер с АЦП
К контроллеру обращаться допустим через USART.
Источник
Обратная связь от сервопривода или «забиваем гвозди»
Всем хабраконструкторам, привет!
Пришла мне как-то в голову дурацкая мысль: собрать девайс, который бы молотком забивал гвозди. Просто ради демонстрации работы сервопривода. Алгоритм простой: даём команду на поднятие молотка, ждём пока он поднимется, отпускаем молоток; и так пока гвоздь не будет забит. Но как узнать, что молоток поднялся и что гвоздь забит, не пользуясь дополнительными датчиками? Спросить у «глупого» сервопривода! Как именно это сделать — об этом и пойдёт речь в статье.
Что такое сервопривод? Наверное, все знают, но на всякий случай: это привод, который в отличие от мотора постоянного тока не просто крутится пока подаётся напряжение, а стремится повернуться к заданному углу и удержаться в этом положении. Угол устанавливается с помощью ШИМ (PWM)-сигнала. Сервопривод стремится к определённому положению, а следовательно должен знать своё собственное. Перед началом сборки я был уверен, что запросить текущий угол будет проще простого и это возможно «из коробки». Не тут то было. Но обо всём по порядку.
Итак, предполагаемый девайс: сервопривод с прикреплённым к нему молотком на небольшом постаменте для равновесия. Сервопривод подключается к Arduino через IO Shield, а микроконтроллер исполняет алгоритм:
- Установить сервоприводу определённый угол для поднятия молотка
- Бездействовать пока сервопривод не сообщит, что угол достигнут
- Отключить питание сервопривода, чтобы молоток упал на гвоздь
- Прочитать угол в упавшем положении
- Если угол после падения несколько раз подряд не изменился — значит гвоздь перестал вколачиваться. Предположительно он забит — прекращаем исполнение
- Если угол изменился, начинаем сначала
Берём исходные части:
Пилим и скручиваем:
Приступаем к написанию прошивки для Arduino… Довольно быстро становится понятно, что установить определённый угол для сервы — не проблема. В частности, это позволяет сделать стандартная библиотека Servo, которая из заданного в градусах угла формирует соответствующий PWM-сигнал. А вот с чтением — проблема: функции для этого нет.
Быстро погуглив проблему, нашёл кучу сообщений на форумах, где на этот вопрос авторитетно отвечали: «Это не возможно! Сервоприводы — это write-only устройства». Меня это привело в замешательство, я интуитивно чувствовал, что достать эти данные как-то просто можно.
Матчасть
После недолгих поисков в сети можно понять как устроена серва. Это обычный мотор постоянного тока, который соединён с выведенным шпинделем через несколько шестерней, формирующих пониженную передачу. Этот же шпиндель с внутренней стороны физически прикреплён к потенциометру (подстроечному резистору). При вращении мотора шпиндель поворачивается, поворачивается и бегунок потенциометра, выходное напряжение потенциометра меняется, мозги сервы его считывают и если напряжение достигло заданного уровня — цель достигнута, мотор отключается от питания.
То есть, у нас есть потенциометр, по сигналу с которого можно определить текущий угол. Осталось только разобрать сервопривод и подключиться в нужном месте. Разбираем:
Сразу скажу, что сервопривод с фотографии я безвозвратно сломал в процессе разборки. Не нужно было вообще выламывать плату с электроникой, достаточно просто снять заднюю крышку, которая держится на 4-х винтах. Но сразу это было не очевидно, и чтобы понять куда на плате припаян потенциометр, пришлось пожертвовать одним приводом.
Вот как припаян потенциометр на сервоприводах от DFRobot:
Нам нужен сигнал с бегунка, который меняется в зависимости от угла поворота от минимального до максимального напряжения. Берём мультиметр, вращаем шпиндель и смотрим: каким углам какой сигнал соответствует. Для моей сервы углу в 0° соответствует напряжение 0.43 В, а максимальному углу поворота в 180° соответствует напряжение 2.56 В.
Аккуратно припаиваем новый сигнальный провод.
Подключаем его к аналоговому входу A5 на Arduino. Закрываем крышку. Пишем программу:
Включаем, пробуем, работает!
Что делать с полученным опытом — вариантов много: можно сделать контроллер вроде того, что используется на кораблях для установки тяги (полный вперёд / полный назад); можно использовать серву с обратной связью как элемент автономного рулевого управления какой-нибудь машины; можно много всего. Да прибудет со всеми нами фантазия!
Источник
Простой сервопривод своими руками
Под сервоприводом чаще всего понимают механизм с электромотором, который можно попросить повернуться в заданный угол и удерживать это положение. Однако, это не совсем полное определение.
Если сказать полнее, сервопривод — это привод с управлением через отрицательную обратную связь, позволяющую точно управлять параметрами движения. Сервоприводом является любой тип механического привода, имеющий в составе датчик (положения, скорости, усилия и т.п.) и блок управления приводом, автоматически поддерживающий необходимые параметры на датчике и устройстве согласно заданному внешнему значению.
- Сервопривод получает на вход значение управляющего параметра. Например, угол поворота.
- Блок управления сравнивает это значение со значением на своём датчике.
- На основе результата сравнения привод производит некоторое действие: например, поворот, ускорение или замедление так, чтобы значение с внутреннего датчика стало как можно ближе к значению внешнего управляющего параметра.
Наиболее распространены сервоприводы, которые удерживают заданный угол, и сервоприводы, поддерживающие заданную скорость вращения.
Сервопривод состоит из следующих компонентов: Мотор-редуктор, силовой драйвер, энкодер, зажим для энкодера, микроконтроллер.
Привод — электромотор с редуктором. Чтобы преобразовать электричество в механический поворот, необходим электромотор . Однако зачастую скорость вращения мотора бывает слишком большой для практического использования. Для понижения скорости используется редуктор : механизм из шестерней, передающий и преобразующий крутящий момент.
Включая и выключая электромотор, можно вращать выходной вал — конечную шестерню сервопривода, к которой можно прикрепить нечто, чем мы хотим управлять. Однако, для того чтобы положение контролировалось устройством, необходим датчик обратной связи — энкодер , который будет преобразовывать угол поворота обратно в электрический сигнал. Для этого часто используется потенциометр. При повороте бегунка потенциометра происходит изменение его сопротивления, пропорциональное углу поворота. Таким образом, с его помощью можно установить текущее положение механизма.
Кроме электромотора, редуктора и потенциометра в сервоприводе имеется электронная начинка, которая отвечает за приём внешнего параметра, считывание значений с потенциометра, их сравнение и включение/выключение мотора. Она-то и отвечает за поддержание отрицательной обратной связи.
К сервоприводу тянется три провода. Два из них отвечают за питание мотора, третий доставляет управляющий сигнал, который используется для выставления положения устройства.
Источник