Сервомашинка HS-311

PLC похачил, защита там оказалась даже не детской — идиотской, пароль шел от PLC в комп открытым текстом и сверялся с введеным уже в софте. Так что RS232 сниффер это наше все :) Рубанул капусты и решил ее куда нибудь потратить. На глаза попалась сервомашинка HS-311. Вот и прикупил ее показать что это за зверь.
 

Серва это краеугольный камень механики радиоуправляемых моделей, а последнее время и домашней робототехники. Представляет собой небольшой блок с двигателем, редуктором и схемой управления. На вход сервомашинки подается питалово и управляющий сигнал, задающий угол на который надо выставить вал сервы.
 

В основном все управление тут стандартизировано (если есть тут RCшники, то может добавите свои пять копеек?) и сервомашинки, по большей части, различаются усилием на валу, быстродействием, точностью управления, габаритами, весом и материалом изготовления шестеренок. Цена колеблется от 200-300 рублей за самую дешевую и до бесконечности за ультрамегатехнологичные девайсы. Как и в любой фанатской области, верхняя планка цен тут не ограничена и наверняка под потолком в ход идут какие нибудь шестерни из перфорированного титана и карбоновые корпуса с обратной связью через миллионимпульсный оптический энкодер =) В общем, всегда можно чем нибудь померяться.
 

Я же не стал выпендриваться и взял пока самую дешевую, самую распространенную HS-311. Тем более у меня уже есть планы по ее переделке.
 
Характеристики HS-311

  • Момент на валу: 3кг*см
  • Размеры: 41x20x37 мм
  • Вес: 44.5 гр
  • Скорость поворота вала на 60 градусов: 0.19 сек
  • Управление импульсное
  • Цена: 350-450р


Сама серва как таковая мне особо не нужна, а вот редуктор из нее вполне сгодится. Тем более я видел UpgradeKit для нее с металлическими шестеренками :) Впрочем, под мои задачи и пластик сгодится.
 

Конструктив:
Первым делом я ее разобрал — с детства у меня такая привычка, новые игрушки курочить.
Корпус размером примерно со спичечный коробок, чуток потолще.
 

 
Если выкрутить винт из оси, то колесо снимается и становится видно, что вал зазубренный — не будет прокручивать.

 

Если выкрутить четыре винта, то можно снять крышку редуктора:

 
Как видно, тут четырехступечнатый цилиндрический редуктор. Передаточное число не скажу, но большое.
 

Сняв нижнуюю крышку можно увидеть плату управления:

 
Видно четыре транзистора, образующие H-мост позволяющий реверсить движок и микросхему логики. Микруха, кстати, их разработки. Так что даташит на нее фиг найдешь. Дальше разобрать не удалось. Движок там словно вклеен, а плата сделана из такого говнистого гетинакса, что я чуть не разломал ее пополам когда пытался выковырять. Поскольку пока окончательно ломать родную логику в мои планы не входило я не стал вторгаться в моторный отсек. Тем более ничего интересного там нет.
 

Если снять все шестеренки, то видно вал резистора обратной связи по положению:

 

Примерный конструктив можно увидеть на схеме которую я тут по быстрому набросал:
 

 
Выходной вал намертво связан с валом переменного резистора обратной связи. Поэтому серва всегда знает в каком она положении в данный момент. Из минусов — невозможность сделать полный оборот. Например эта может крутить валом не больше чем на 180 градусов. Впрочем, можно выломать ограничительный упор, а резистор путем хирургического вмешательства превратить в энкодер (кто там возмущался, что идея энкодера из резистора бесполезна? ;) Попробуй те ка подобрать энкодер в аккурат чтобы встал вместо сервовского?) Родную плату при этом конечно придется выбросить, но мы ведь легких путей не ищем? В общем, скоро займусь апгрейдом этого девайса и превращением сервомашинки в серводвигатель.
 

Управление:
С конструктивом все понятно, теперь о том как же этим зверем рулить. У из сервомашинки торчит три провода. Земля (черный), Питание 5 вольт (красный) и сигнальный (желтый или белый).
 

Управление у нее импульсное, по сигнальному проводу. Для того, чтобы повернуть серву на нужный угол ей надо на вход подавать импульс с нужной длительностью.
 

 
0.8мс это примерно 0 градусов, крайне левое положение. 2.3мс это около 170 градусов — крайне правое. 1.5мс — среднее положение. Между импульсами производитель рекомендует давать 20мс. Но это не критично и машинку можно разогнать.
 

Работа контрольной логики
Как работает управление? Да просто! Когда на вход приходит импульс, то он своим передним фронтом запускает одновибратор внутри сервомашинки. Одновибратор это блок выдающий один импульс заданной длительности по запускающему фронту. Длительность этого внутреннего импульса зависит исключительно от положения переменного резистора, т.е. от текущего положения выходного вала.
 

Далее эти два импульса сравниваются на тупейшей логике. Если внешний импульс короче внутреннего, то эта разность подасться на двигатель в одной полярности. Если внешний импульс длинней внутреннего, то полярность подачи на движок будет другой. Под действием одного импульса движок дернется в сторону уменьшения разности. А поскольку импульсы идут часто (20мс между каждым) то на двигло идет подобие ШИМа. И чем больше разность между заданием и текущим положением, тем больше коэффициент заполнения и движок активней стремится эту разность ликвидировать.
В итоге, когда импульсы задающие и внутренние сравняются по длительности движок или остановится или, что вероятней, т.к. схема не идеальная — переменный резистор дребезжит, поэтому идеального равенства не будет, начнет «рыскать». Подрагивая то в одну то в другую сторону. Чем более убитый резистор или хуже задающие импульсы, тем больше эти рыскания.

 
На картинке я изобразил два случая когда задающий импульс длинней внутреннего и когда короче. А внизу показал как выглядит сигнал на движке при выходе на заданую точку. Это, собственно, классический случай пропорционального управления.
 
Частота следования импульсов определяет быстроту с которой сервомашинка будет вращать валом. Минимальный интервал, выше которого скорость перестает возрастать, а дребезг усиливается это порядка 5-8мс. Ниже 20мс серва становится задумчиво тормозной. ИМХО оптимальная пауза около 10-15мс.
 

Для того, чтобы поиграть сим девайсом я по быстрому накидал программку на Mega16 своем ядре. Правда высчитывать полный диапазон от 0.8 до 2.3 мне было влом. Посчитал для 1…2мс импульса. Это где то 100 градусов.
 

Сделано все на RTOS, поэтому я опишу только прерывания и задачи.
 
Задача сканирования АЦП — раз в 10мс запускает АЦП на преобразование. Можно конечно было бы Freerunning mode (режим непрерывного преобразования) сделать, но я не хотел, чтобы МК дергался каждые несколько микросекунд на прерывание.
 

1
2
3
ScanADC:	SetTimerTask	TS_ScanADC,10
		OUTI	ADCSRA,(1<<ADEN)|(1<<ADIE)|(1<<ADSC)|(0<<ADATE)|(3<<ADPS0)
		RET

По прерыванию от АЦП просто складыается данные из АЦП в ячейку ОЗУ:

1
2
3
4
5
ADC_INT:	PUSH	OSRG
		IN	OSRG,ADCH
		STS	ADC_Data,OSRG
		POP	OSRG
		RETI

 

Это просто функция контроля. Снятые с АЦП данные отправляет в USART, где я их наблюдаю в терминалке.

1
2
3
4
Send:		SetTimerTask	TS_Send,50
		LDS	OSRG,ADC_Data
		OUT	UDR,OSRG
		RET

 

А вот, собственно, главная задача — именно она формирует импульс на основании взятых из АЦП данных. Эта задача крутится фоном и вызывается диспетчером раз в 20мс, впрочем, частоту можно поменять. Вывод CTR (PB4) покдлючен к сигнальному входу сервы. При запуске задачи выставляется 1 на входе сервы и запускается таймер. Когда таймер сработает то в его прерывании нога опустится в 0. В результате будет получена точная выдержка. По расчетам число тиков таймера должно быть от 120 до 250 для крайних положений сервы.
 

1
2
3
4
5
6
7
8
9
10
11
12
Control:	 SetTimerTask	TS_Control,20	; Вызов каждые 20мс
		SBI	CTR_P,CTR		; CTR в 1 - начало импульса.
		LDS	OSRG,ADC_Data		; Взять данные с АЦП замера (из ОЗУ)
 
		LSR	OSRG			; Обрезать один бит, лишние шумы нафиг.
		SUBI	OSRG,-120		; Прибавить 120 -- начальная точка.
		LDI	Tmp2,255		; Инвертируем число, т.к. таймер считает
		SUB	Tmp2,OSRG		; не от числа до 0, а от числа до 255.
 
		OUT	TCNT0,Tmp2		; Загружаем счетный регистр таймера
		OUTI	TCCR0,3			; Запускаем таймер
		RET				; Выход в диспетчер.

 

Остальное завершит прерывание.

1
2
3
4
5
Timer0_OVF:	PUSH	OSRG		; Сохраняем OSRG 
		CBI	CTR_P,CTR	; CTR в 0 - конец импульса
		OUTI	TCCR0,0		; Таймер выкл
		POP	OSRG		; Восстанавливаем OSRG
		RETI			; Выход.

 

Четко, фоном берем данные из АЦП — которая повешана на переменный резистор и выдаем на серву. В итоге, крутим резистор — крутится серва. Красота! Вот и видео для полной картины:

Вот, собственно и все. Проект со всеми исходниками целиком, как всегда, доступен по ссылке:
Demo16-RTOS.rar

118 thoughts on “Сервомашинка HS-311”

    1. Что там за движок ХЗ, я до него так и не добрался. Что то мелкое. Максимальный ток который я от него увидел — 500мА и то это было недолго, при особо агрессивном рысканьи, когда он и пускового режима не выходил. А так не более 100-30мА.

      Серва ставится ради контроля положения. Например при пропорциональном управлении. Ну и редуктор. Моторы в советских игрушках говно редкостное — КПД у них ни к черту.

    2. Движки там хорошие, и довольно экономичные. Например, на авиамоделях используют до 6 и более серв (руль направления, высоты, элероны — часто по серве на каждый, закрылки, шасси, регулятор газа, если движок внутренного сгорания). И все это на маленький аккумулятор. Кроме того, движки обычно малоинерционные. В более — менее дорогих используется двигатель с чашечным ротором. Надежные щетки и коллектор, часто посеребренные. Хорошие, безлюфтовые редукторы. Усилие на рычаге даже самых маленьких серв, весом 5-8 грамм (серия «Pico»), от килограмма и более.

  1. >>Серва ставится ради контроля положения. Например при пропорциональном управлении.
    Да, но просто часто вижу как серву используют как ДВИГЛО — срезают ограничитель и отключают переменник(запаивают статику)…
    Редукторы это да…
    >>Моторы в советских игрушках говно редкостное — КПД у них ни к черту.
    Ну это к примеру :)

    1. Ну дык. Моторчик+редуктор+удобный корпус с крепежными ушами. О чем еще можно мечтать?

      Я под это дело тоже хочу пару серв купить. А где еще взять удобный моторредуктор?

      1. Часто для роботов их двухсторонним скотчем склеивают донышками вместе, ставят колеса, сверху крепят плату, батарейки, датчики. Получается просто, жестко и компактно.

  2. Еще есть цифровые сервомашинки. С точки зрения управления ими, ничего «цифрового» там нет. Управление так же импульсами. Просто увеличина частота следования этих самых импульсов. Пауза сокращена с 20мс до где-то 3мс. Получаем при этом отклик намного быстрее. На некоторых цифровых можно с помощью программатора задовать разные фичи, типа — крайние положения вала, центральное положение, скорость.

        1. Пропорционально-интегро-дифференциальный регулятор. У меня в разделе «Книги» есть книжка Стюарта Болла — Анлоговые интерфейсы МК. Вот там было самое дивное описание ПИД какое я только читал.

  3. Моторчик там похож на те что в китайских игрушках только меньше. Просто застопореный моторчик бел управляющей схемы кушает около 1А, на холостом около 80ма. В серву очень хорошо влезает энкодер из мышки. Надо подобрать гвоздик чтоб плотно влазил в дырку энкодера и чтоб при кручений гвоздя энкодер крутился. У гвоздя обрезается шляпка и он вбивается в шестерню-вал и выходит там где был переменный резистор. На гвоздь надевается энкодер. Получается компактный мотор редуктор с энкодером

    1. Я вот думаю там попробовать оптику сколхозить. Может прорезать окно в редукторный отсек, поставить на шестерню «Блестяшку» и на отражение ловить обороты быстрой шестерни. Точней будет. А в нутро влезут потроха на Тини45 какой нибудь. ЗАсадить ее на родной же мост и будет нормально.

      1. Все украдено до нас: http://sensi.org/~svo/shaft_encoder/index-ru.html
        Сегодня прикупил серву, поупражнялся. Правда ШИМ на Atmega8 уже был занят ходовым движком. Пришлось городить свой на одной из ног.
        Ты таки прав был: у меня сейчас пародия на операционку получилась — многозадачность по таймеру. Когда закончу колдовать с конструктивом, пожалуй перепишу в нормальный вид с твоей ОС.

    1. Черт те что будет. Вместо простого и стандартного для серв трехпроводного подключения — 10 контактный разьем с собственным, несовместимым с модельной аппаратурой протоколом. Это уже не серва. И кому это нужно? А кому нужно, проще было не курочить серву, а сделать на том же AVR контроллере просто переходник с интерфейса сервы на то, что хотел автор.

        1. А где увидишь? С каждой моделью (даже летающей) будешь постоянно рядом держать рядом на проводе 2-3 метра компьютер? Или городить двухстороннюю многоканальную телеметрию? Так аппаратуоу для нее не всякая модель поднимет. А стандартные системы радиоуправления работают в одну сторону. И приемную аппаратуру стараются упростить и облегчить до максимума. А с другой стороны, узнаешь ты, что заклинило, к примеру, руль высоты при отклонении вниз. Прежде, чем ты успеешь считать эту информацию, модель войдет в пике и превратится в кучу хлама. Да и зная, что руль заклинило, что ты сможешь сделать, если модель в воздухе или на земле, но недоступна? А о неправильной работе сервы и так ясно по поведению модели. А к примеру, в сложном роботе со многими степенями свободы и кучей серв, и без того найдется куча датчиков, отслеживающих положение рабочих органов, и заводить дополнительные контуры еще и с серв никчему. Ведь может и просто качалка у сервы сломаться. Серва работать будет, и докладывать что все в норме, а механизм — нет.
          В общем, штука сложная и в большинстве случаев бесполезная. А внутренняя ОС по положению вала в любой серве и так есть. На то она и серва.
          Другое дело — простые контроллеры, наподобие тех, ссылки на которые я давал выше. В них программно можно улучшить работу серв, (например, используя ПИД), не нарушая стандартов, и при очень простой схемной и программной реализации.

          1. Так это и не предпологается для моделей. В модельном плане серва уже доведена до совершенства. :) А вот для домашней робототехники эта штука очень удобная, т.к. дома на табуретке угловой енкодер параллельно приводу поставить ой как непросто…

  4. Простенькие кодеры — декодеры для серв на 4 канала можете глянуть тут:
    http://www.lytnev.newmail.ru/shemes/telemeh/ModDem.htm
    Также там есть и другие простые устройства для пропорционального управления:
    http://www.lytnev.newmail.ru/shemes.htm
    Например, схемы сервомашинок: http://www.lytnev.newmail.ru/shemes/telemeh/servo.htm
    В том числе и на микроконтроллерах. Ну а если хотите поподробней и покруче — есть много специализированных сайтов по радиоуправляемым моделям и аппаратуре для них, все перечислять нет смысла.
    Еще была прекрасная книга, в которой все описано от и до, —
    Я. Войцеховский Дистанционное управление моделями изд. Связь Москва 1977. 432стр. Книга просто насыщена схемами заводской и любительской аппаратуры и подробным описанием процессов и устройств для моделей. Несмотря на довольно давний год издания, есть немало схем и с микросхемами. (Правда, еще без микроконтроллеров).
    Немного попроще книги Гюнтера Миля. Тоже часто еще используются. Найти в Интернете не проблема (ссылки часто попадались).

    1. Вот, кстати, одна из ссылочек на Войцеховского:
      Войцеховский Дистанционное управление моделями http://www.forestlib.ru/index.php/tech/electronic/59-2009-07-21-19-05-02
      Или тут: http://publ.lib.ru/ARCHIVES/V/VOYCEHOVSKIY_Yanush/_Voycehovskiy_Ya..html
      По второй ссылке есть также книга Войцеховского «Электронные игрушки». Тоже когда-то зачитывал от корки до корки.

      1. Ага, два привода. Один управляет рулем. Другой — парусами. Вроде Нормально должно быть. Мы её все до конца собрать не можем)) Генеральные испытания на следующий сезон отложили.
        А логотип я махом признал, и пульт с такой же наклейкой.

  5. У нас, в корпусе окраски Калины, похожие сервопривода используются для регулирования заслонки подачи газа и воздуха в горелке http://www.weishaupt.ru/. Вот выйду с отпуска , попробую стенд для проверки сварганить, летят как семечки :)

        1. Заявленный момент 3.2кг*см. Я просто округлил. Так что думаю таки намотает. Тем более усилие там и вправду значительное получается — я диск руками остановить не могу. Вот насколько шестерни/мост/движок/ выдержат такой жесткий режим это уже другой разговор.

            1. Сначала надо представить себе что такое Ньютон.

              Гиря массой 1кг давит на подвес с силой mg = 10Н (примерно). Соответственно 1ньютон это примерно как 100грамм.

              А теперь возьми метровую линейку. Поставь на край стопку водки и попробуй поднять зубами за другой конец линейки. На твою челюсть будет действовать момент в 1нм.

                    1. А с другой стороны зубы создают момент реакции опоры который уравновешивает момент от стопки*рычаг.

                      Если один из моментов перевесит другой то система придет в движение.

              1. Кажись, соврал. Наверно, получится ~102 грамма. В справочники лезть лень, а по памяти точно уже не помню, редко пользуюсь, да и обычно большая точность не нужна, 5-10% для прикидок хватает.

    1. «А 3кг*см это много?»
      Все относительно. Если использовать рычаг (качалку) с плечом, например, 2см, получится уже 1,5кг усилия. Для небольшой авиамодели — достаточно, а вот, например, в рулевом управлении крупной гоночной автомодели монстра — внедорожника, например, массштаба 1:8 или 1:10 — мало. Там и 15-16 кг на см много не бывает. Обычно превышение указанного паспортного значения вызывает повышенный износ и может привести к поломке. Для разных применений выпускаются сервы разного размера, веса, и с разным моментом. В дорогих — еще и металлические шестерни, и вал на подшипниках.

  6. народ, а если заюзать восьмибитный ШИМ для генерации импульсов (под шестнадцатибитный не считал)?
    Значится, если хтал 8 мегагерц, запускаем ШИМ с прескалером /512, то на выходе получаем 61 с копейками герц, это примерно 16 милисекунд между фронтами импульсов.
    А управление- просто закидывать в регистр сравнения нужное значение.
    У кого какие мысли на сей счет?

      1. Мда, не додумал.
        Получается, можно регулировать длительность импульса с шагом в 62 мксек, серва работает в диапазоне 0,8- 2,3 мсек, это диапазон 0х0D- 0х25, получается 7,5 градуса поворота на единицу плюс/минус в регистре сравнения.
        Жестковато, однако.

  7. По поводу длины импульса «нейтрального положения». У некоторых сервомашинок (в основном — немецкой фирмы Multiplex) его длина соcтавляет не 1,5 мс, а 1,6 мс.

    20 мс между импульсами «не с ветра взяты» — именно такова длина полного PPM-сигнала с импульсами для 8 сервомашинок и более длинным (около 2,5-3 мс) импульсом синхронизации.

    Есть хорошая статья про это на rcdesign — http://www.rcdesign.ru/articles/radio/tx_intro#eztoc9044_6

  8. Ди, а что должно входить в интерфейс платы? например RS232 — я так понял, что реализован на микросхеме MAX232, мне на отладочную плату. Что еще надо? какие интерфейсы? жтаг есть, что такое уарт — читать неохота, только скажи, под него разъем нужен?

  9. DI HALT, как думаешь, реально ли сделать на такой машинке реально плавное вращение (без ограничений по углу поворота)?
    даже вопрос не касательно этой конкретной машинки а вообще о связке двиг + обратная связь (резистор или энкодер).

    надо мне это для привода операторской тележки.
    в данный момент использую шаговый двигатель с микрошаговым драйвером.
    скорости использую от бесконечно малых до нескольких сотен оборотов в секунду.
    недостатки у меня сейчас — дискретность на сверхмалых скоростях (оборот за час).
    и низкий момент на больших скоростях.
    шаговый двигатель большей мощности поставить нет возможности да и более глубокий микрошаг решит только одну проблему.

    так вот почитав статью задался вопросом поможет ли мне это решение?
    большие скорости я так понимаю не проблема а вот сверхмалые?

    и еще может мне использовать помимо обратной связи еще и безколлекторный двигатель?

    1. Может, но нужно два (а лучше даже три) контура обратной связи.
      По скорости, положению и моменту (току якоря). Ну и регулятор хотя бы ПИ, лучше наверное будет ПИД.

      Я сам видел (на лабах по приводу) Как якорь движка с приличным моментом совершал вращение на скорости 1 оборот в минуту — все за счет ОС по скорости и моменту. Так что это не проблема.

      Гугли на:
      Электропривод с подчиненным регулированием, СУЭП,
      прямоугольная механическая характеристика

      1. ПИД — Оказывается я все это проходил в университете много лет назад ))

        по ОС — скорость и положение — это понятно как мерить,
        а вот как мерить момент(ток якоря)?

        как я понял это мне надо поставить измерительный резистор между землей и земельным выходом драйвера. по падению напряжения на резисторе я могу узнать ток на якоре, который будет пропорционален этому падению напряжения.
        собственно это напряжение надо подавать на АЦП?

  10. DI HALT, пооги мне встроить переменный резистор. НЕ могу. Расстояние между выводами для крепления по даташите — 9,8мм, межвыводоное расстояние основных выводов — 2,54мм. Не могу нарисовать. Я гляжу у тебя переменный резистор припаян на крепления. Если можешь, дай макрос такого резистора…

      1. спасибо за ценную информацию!!

        а то я просто заказал себе вот такую: HXT900
        для эксперимента…. так сказать…
        вот и интересуюсь, описанный протокольчик управления у неё такой же?

            1. У цифры можно задавать угол по какому нибудь цифровому протоколу вроде i2c либо там используется импульсное задание, но угол контроллирует микроконтроллер. За счет этого она быстрей и точней.

  11. DI HALT, возникла потребность в серве мощной для детской большой РУ машинки весом 30 кг. где-то. Можно ли взять HS-311, например, и подключить мощный Н-мост на 12 вольт? Есть ли там какие-то ОС, кроме положения выходного вала?

      1. Сервомашинку (маханику) планирую сделать из блока заднего стеклоочистителя девятки. А электронику — стандартная серва HS-311 и внешний мост.Питание — аккумулятор UPSа 12 В, 7 А/ч
        Опыта в этом нет. Нашел сайт по теме:
        http://130.94.182.150/mowers.htm — основная страница
        http://130.94.182.150/servo.jpg — схема
        http://130.94.182.150/permbox.jpg — внешний вид 1
        http://130.94.182.150/dwltserv.jpg — внешний вид 2
        http://130.94.182.150/gearmotr.jpg — пример моторов

        Вот хотел спросить — можно ли просто повторить решение, предложенное на этом сайте? Будет ли выполнять поставленные задачи? (Пока я не спалил сервы и ведро полевиков )

  12. hitec hs-82mg постоянно убегает в сторону и упирается в ограничитель. Подскажите пожалуйста, что я не так делаю?
    1:
    порт-высокий сигнал
    ждем 1 мс
    ждём 500 мкс
    порт-низкий сигнал
    ждём 10 мс
    goto 1:

        1. А чо шутка то. Я серьезно. Если ты себе не намутил хотя бы показометр осцилографический (какой нибудь старый советский, хотя бы на 5мгц и 1 канал, он щас рублей 200 стоит с рук) то пора заиметь.

          А питание почти в норме. Я питал от 5 вольт.

          А если она уезжает, то только от того, что задание не совпадает с внутренним сигналом. Т.е. у тебя импульс по какой то причине не той ширины. Может прога где тупит.

  13. А каков может быть минимальный шаг в угловой мере для такой сервомашинки?
    Просто необходимо поворачивать предмет на определенный угол, и это надо сделать как можно точнее.
    И еще вопрос эта машинка сильную погрешность дает по углу поворота?

    1. Теоретически у ней нет минимального угла поворота. Она же аналоговая. Но на практике есть нечувствительность, люфты механики и инерция движка. Конкретно эта серва — фигня и точность у ней слабая. А что еще хотеть от самой дешевой сервы?

  14. куча вопросов: как долго нужно подавать управляющий сигнал? правильно ли я понимаю, что если динамически менять ширину импульса — мотор будет работать плавнее?
    что будет, если давать сигнал в течение секунды, а потом перестать его подавать?
    насколько безопасно отключать программным образом питание? (и обратно его подавать?)
    вообще, какое у сервы энергопотребление в режиме ожидания (или как его назвать — когда управляющий сигнал постоянный) и какие бывают методы уменьшения этого энергопотребления?

    1. Сигнал должен идти непрерывно. Если его прекратить, то машинка уйдет в крайнее положение и может сама себя сломать.

      В режиме ожидания, когда сигнал не меняется, то потребление тоже есть. Т.к. серва рыскает и чем качественней серва тем меньше рысканье и меньше потребление.

          1. а чтобы не дрыгалась? (ну, например, стрелкой указывать на используемый в данный момент датчик — улица, комната, чердак, подвал)
            будет работать такой алгоритм? подал управляющий сигнал, включил питание (через транзистор), подождал секунду-другую, пока отработает стрелка, отключил питание, отключил управляющий сигнал.
            какие проблемы прогнозируются при таком раскладе?

            1. Выключить можно, если стрелка не тяжелая и не способна провернуть серву самостоятельно. Проблема тут в том, что ты не сможешь контролировать положение в тот момент когда питание выключено. Если стрелка легкая, то проблем быть не должно. А выход на позицию можно засекать по снижению тока и появлению рывков тока (рыскание)

  15. Вчера весь вечер маялся с подобными устройствами (2 аналоговые JR и 1 цифровая e-sky). написал програму, промоделировал в Proteus, вроде все хорошо. Подключаю машинку — не работает… Сегодня на работе проверил осциллографом — все в действительности работает как задумано, но серва не реагирует (серва 100% рабочая). Грешу на то что ей не хватает тока питания, т.к. за неимением отладочной платы подключаю напрямую к ногам МК. Документации на них естественно не нашел, кроме скорости и усилия на валу которое пишется в интернет магазинах… Вы свою серву подключали напрямую к МК или все таки через транзистор?

      1. А вот такой вопрос возник у «чайника»: у меня серва 6 В питание, ну естественно запитывается в внешнего БП, а сигнал управления тоже должен быть столько же вольт или 5 В достаточно, которые с МК вылазят. И насколько я понимаю земли у питалова и управления должны быть общие, чтоб запустилось, тк сигналу управления нужен высокий и низкий уровни? сразу прошу прощения за тупые вопросы, тк всю сознательную жизнь занимался только механикой

  16. Добрый вечер. В очередной раз большое спасибо за классный сайт! Сегодня, во многом благодаря вам, я впервые в жизни подвигал сервомашинкой :) И у меня возникли вопросы. Буду очень благодарен за ответы, если у вас будет свободное время!

    1. Под учебу/эксперименты я заказал в китайском магазине несколько штук ATtiny2313V-10PU. В даташите указано, что по-умолчанию FUSE-биты выставлены таким образом, что внутренний генератор дает частоту 8 МГц. Но, провозившись целый вечер, я пришел к выводу, что реальная частота внутреннего генератора — примерно 1 МГц. Осциллографа, к сожалению, у меня нет :( Но по задержкам, которые я выставлял, вышло примерно так. Бывало ли у вас такое, чтобы комплектация по-умолчанию не соответствовала даташитам?

    2. Насколько точного позиционирования сервопривода можно добиться? Вы пишете «0.8мс это примерно 0 градусов» — как-то можно избавиться от этого «примерно»? В моем случае это вообще будет «примерно 0.8 мс — это примерно 0 градусов» :(

    3. Можно ли вешать сервомашинку на одну линию питания/земли с микроконтроллером? Во время поворота БП отдавал ток 0,2 А — это сильно много для микроконтроллера?

    4. Я написал программу, которая с периодичностью 5 секунд крутила серву сначала в одну стороны, потом в другую. Пробовал с двумя моторами. Один поворачивался нормально в обе стороны, а другой в одну сторону нормально, а при повороте в другую утыкался в упор, но продолжал издавать звуки и потреблять 0,1 А. Это китайцы прислали бракованную серву?

    Извините за ламерские вопросы! Я читаю все, что подворачивается под руку, но сильно не умнею :(

    1. Вот что гласит даташит:

      Default Clock Source

      The device is shipped with CKSEL = “0100”, SUT = “10”, and CKDIV8 programmed.
      The default clock source setting is the Internal RC Oscillator with longest start-up time
      and an initial system clock prescaling of 8.

      Помимо фузов настройки частоты там еще есть предделитель. Он настроен на деление на 8. Его можно отключить программно, а можно фуз битом. Лучше программно в самом начале программы воткнуть примерно такой код:

      OUTI CLKPR,1<

      outi это макрос вывода в порты

      .MACRO outi ; Это описание макроса. Везде где outi встретится в коде, то заменяется на
      LDI R16,@1 ; этот кусок кода, причем @0,@1 это параметры, они заменятся введенными параметрами
      OUT @0,R16 ; макроса. Данный макрос тупо копирует введенное число сначала в регистр R16, а из него
      .ENDMACRO

      Ну или на си то же самое действо сделать, но там сложней, т.к. надо в течении четырех тактов дважды этот бит записать хитрым образом.

      2. Зависит по большей части от качества сервы, качества ее механики, качества ее датчика положения. В теории ничто тебе не мешает задать ширину импульса с точностью до микросекунд.

      3. Можно, но надо продумывать путь тока по плате, таким образом, чтобы ток от источника до сервы не гулял мимо контроллера, а шел как можно дальше от него. Почитай статью "Разведение питания" там как раз про это. А так хоть сотни ампер гоняй, лишь бы с умом плата была разведена.

      4. Запросто. Мог быть брак потенциометра сервы. Хорошо бы осциллографом взять и померить импульсы и в ручном режиме подвигать их, поглядеть на результат.

  17. Помоги, пожалуйста!!!
    А как можно проверить работоспособность Servo? Неожиданно на роботе перестал работать сервопривод ld-2015. Стал очень туго ходить (по сравнению с другими) и при попытке его запустить с контроллера — сгорел предохранитель на плате контроллера. Подача на моторчик 7,4 вольт напрямую ничего не дала — напружно гудит и все. На плате Servo явных признаков неисправности — нет. Так как не понимаю в чем проблема боюсь испортить остальные сервы.

  18. Добрый день, а есть в сервах какая то защита чтобы не пыталась прокрутить резистор в за пределы его возможностей, что с ней будет если управление уронить на +5 или наоборот кормить иголками по 100 мкс??

  19. Уважаемый DI HALT я тут хочу смелости набраться и прислать фотки своего самодельного электросамоката. Привод у меня от 24В шутуповёрта, а редуктор с колесом связан через пару зубчатых самодельных колёс. Вот незнаю куда написать )) выбрал эту тему. Так что если есть желание разместить на своём сайте данную темку, то пришлю статью и фото с видео работы. Правда они у меня с телефона, хоть и 5Мпс, но качество не самое лучшее.

Добавить комментарий