X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )

> МАТЕРИАЛЫ В НАШЕМ МАГАЗИНЕ



Бальза, Фанера, Карбоновые трубки,
Карбоновые пластины, Карбоновые стрежни, Латунные трубки, Проволока OBC, Ткани, жгуты, ленты, Эпоксидные смолы,
Стеклотекстолит, Для ваккумной формовки, Для матричных технологий

 
Тема закрытаНачать новую тему
> Устранение рывков при движении Сервы, Разработка дополнительного оборудования управления моделями
Гость_ВитГо*
сообщение 1.11.2011, 7:18
Сообщение #1





Гость



Цитата





Приветствую !

Я обычно обитаю на смежном форуме (ник одинаковый), и занимаюсь разработкой прошивки для Turnigy, сейчас в поиске информации по следующей проблеме:

в действующей прошивке реализован функционал сжатия 4х каналов на стороне аппаратуры для последующей передачи их через 1 канал передатчика-приемника и расшифровки при помощи дешифратора.
удобство очевидно- при помощи 8ми канального приемника мы на модели получаем 7+4=11 каналов (с одним дешифратором) или например 6+4+4=14 (с двумя дешифраторами)

дешифратор тоже сделан, но возник интересный момент - дело в том что сервы правильно встают в то или иное положение (в зависимости от длительности заданной в PWM) но зачастую двигаются рывками !
кто-то может подсказать в какую сторону копать ?
может быть кто-то уже решал подобную проблему ?

фотографии того что есть прикладываю (если кто захочет увидеть), на размеры дешифратора не смотрите, это отладочная плата :-)

На фото аппаратура со значениями каналов:
(IMG:http://s017.radikal.ru/i418/1110/57/947d1001c52f.jpg)

и все это через один, пятый канал приемника:
(IMG:http://s017.radikal.ru/i440/1110/0b/25a7c5782f6f.jpg)

Сообщение отредактировал Val - 1.11.2011, 9:41
Причина редактирования: Правильно оформление ссылок на ресурсы в сети..
Перейти в начало страницы
 
+Цитировать сообщение
Dimetrio
сообщение 1.11.2011, 17:40
Сообщение #2





Группа: Интересующийся
Сообщений: 917
Регистрация: 21.12.2005
Вставить ник
Цитата
Возраст: 38
Из: Астрахань
Спасибо сказали: 230 раз(а)




А серво и двигаются рывками, только мелкими. По расчету выходит, если мне память не изменяет, частота прохождения РРМ "пакетов" около 50 Герц. Соответственно, разделив 50 на 4 получаем рывки в 12 Герц.

Разве что цикл поможет, как в сервозамедлителе.
Плюс "повторитель", который передаёт на серву последний полученный на неё сигнал, пока три других сервы получают свои команды и проходит синхрокоманда.
Перейти в начало страницы
 
+Цитировать сообщение
Гость_EagleB3*
сообщение 1.11.2011, 20:38
Сообщение #3





Гость



Цитата





Цитата(ВитГо @ 1.11.2011, 7:18) *
сервы правильно встают в то или иное положение (в зависимости от длительности заданной в PWM) но зачастую двигаются рывками!
Я чуть углубю...
Да, у тебя, как минимум, в четыре раза снижается частота регулирования положения сервы. Но это не причина.
Готового ответа у меня нет, давай попробуем анализировать:
Надо рассмотреть два предельных случая:
1) Когда стик движется быстро-быстро. Вот он у тебя был 1мС, а в следующий момент - бац! - и сразу 2мС. Управляющий импульс на серве изменится так же рывком, и серва метнется от края к краю. Но это движение будет равномерным - промежуточных остановок просто нет. Почему остановок нет? Потому, что качалка заведомо не доехала до требуемого значения. Доедет - остановится, и это нормально.
2) Когда стик движется медленно-медленно. Серва без проблем успевает отследить последовательные положения стика. Движение равномерное. Но есть два варианта:
а) Когда качалка успела доехать до заданного текущего положения и остановилась. Промежуточные остановки есть, но они воспринимаются абсолютно нормально. Потому, что это соответствует очень медленному движению стика.
б) Когда качалка не успела доехать до заданного положения и получила новое заданное положение. Но приращение значения заданного положения происходит равномерно и соответствует текущей скорости перемещения качалки (и стика). То есть нет резких ускорений и замедлений в перемещении качалки.

А теперь, очевидно, есть некоторый промежуточный случай: серва успевает доехать до заданного положения и остановиться. А в следующее заданное состояние она не успевает доехать. В "черезследующее" - успевает. А в дальнейшее - опять нет. Тогда мы получим на рассмотренном участке две остановки и два рывка.

Это очень напоминает погрешность при измерении времени методом заполнения интервала. Ты не можешь измерить интервал только с точностью до длительности периода заполняющей последовательности. Не утверждаю, что у тебя именно так (не зная алгоритм), но, если заполняющий импульс далеко заехал за отметку, то ты получаешь "рывок" - измеренная длительность больше реальной. А в следующем периоде ты точно попал импульсом на отметку, и получил замедление - проехать надо меньше, чем предыдущем рывке.
Перейти в начало страницы
 
+Цитировать сообщение
Гость_ВитГо*
сообщение 2.11.2011, 6:24
Сообщение #4





Гость



Цитата





Поводу реализации:

я написал что на сервы импульсы идут с частотой 50 гц..
просто данные об импульсе сервы обновляются с частотой 10 гц..

так что с точки зрения управляющего импульса у сервы ничего не меняется... и частота та же.. и длительности те же..

в точки зрения дискретности импульса отправляемого на сервы:

да, наверное вы правы, я вчера вечером сделал программный замедлитель для сервы.. то есть если в первую посылку управляющего импульса получен импульс для сервы в 1000 мкс. а во второй посылке 1500 мкс. то на деле значение импульса сервы каждую ее посылку с частотой 50 гц будет плавно увеличиваться на 15 мкс.
в этом случае сервы действительно двигаются медленнее чем обычно (раза в 3), но без заметных рывков..

У меня вопрос такой - а ктото отслеживал какой сигнал выходит с приемника ?
нет ли там тоже программного замедления выдачи значения канала ?

почему спрашиваю - у меня почему то обновление данных с приемника идет с частотой не 10 гц (1 управляющий импульс +4 канальных) а значительно медленнее.. такое ощущение что 2-3 гц.. не больше !!

так получилось что у меня нет осцилографа с памятью не могу проверить приемник... а на моем С1-73 изменяющиеся посылки фиг усмотришь (плюс что у него еще и с синхронизацией проблемы... прибор то 1982 года выпуска..)

Цитата(EagleB3 @ 1.11.2011, 20:38) *
Я чуть углубю...
...

А теперь, очевидно, есть некоторый промежуточный случай: серва успевает доехать до заданного положения и остановиться. А в следующее заданное состояние она не успевает доехать. В "черезследующее" - успевает. А в дальнейшее - опять нет. Тогда мы получим на рассмотренном участке две остановки и два рывка.
...


ВОТ !! вот именно такое и происходит !!!!!!!

Как в воду глядите !!
Перейти в начало страницы
 
+Цитировать сообщение
Vic88
сообщение 2.11.2011, 7:54
Сообщение #5


Почётный форумчанин, Мастер-моделист


Группа: Пользователь
Сообщений: 1307
Регистрация: 14.2.2007
Вставить ник
Цитата
Возраст: 71
Из: Обнинск, Калужской обл.
Спасибо сказали: 193 раз(а)




Добрый день!
Давайте посчитаем. Нормальная серва перекладывается на 60 град. примерно за 0,1 секунды. За это время она успевает переработать 5 кадров от малоканального передатчика или 4 от передатчика с числом каналов 10 и более, т.к. кадр у них длиннее, и производители зачастую снижают частоту повторения до 40 герц,чтобы сохранить достаточную длину кадрового синхроимпульса. Еслм понизить частоту обновления кадров ещё в 4 раза, то получится, что на 60 градусах перекладки серва получит 1 импульс. На следующих 60 градусах она получит следующие (обновлённые) импульсы и побежит занимать новое положение. Вот так, если вкратце.
Дополнительно к теме:
В моём самодельном сервотестере есть режим проверки максимальной скорости перекладки. В этом режиме серва получает импульсы длиной 1000 мксек в течение 2 секунд, затем в следующие 2 секунды идут импульсы длительностью 2000 мксек без всяких промежуточных значений, и серва с максимальной скоростью и без рывков перекладывается из одного крайнего положения в другое.
А есть режим проверки равномерности перекладки. При нём длительность импульса плавно модулируется генератором треугольного напряжения и изменяется в тех же пределах, но 4 секунды нарастает, а потом 4 секунды спадает. В этом режиме уже заметны мелкие рывки аналоговых серв, и это нормально. Если же начинаются рывки с большей амплитудой, то это указывает на перерегулирование её (сервы) обратной связи.
С уважением,
Виктор.
Перейти в начало страницы
 
+Цитировать сообщение
Гость_ВитГо*
сообщение 2.11.2011, 9:35
Сообщение #6





Гость



Цитата





вот мелкие рывочки меня и напрягают :-(
хотелось бы достичь движений без рывков.

в общем сегодня вечером попробую ввести переменную ослеживания частоты обновления данных о каналах..
у меня такое ощущение что приемник сглаживает длительности импульсов или как то иным образом их искажает.. (как ? - пока понять не могу) не вериться что обновление с частотой 10 Гц настолько способны увеличить рывки ! а вот частота обновления 2-3 Гц - охотно верю !

просто у меня вывод на экран сделан с главном цикле и осуществляется непрерывно, так вот цифры на экране тоже меняются скачкообразно и на мой взгляд явно не с частотой 10 гц а намного меньше.. раза 2 в секунду...

у меня есть в коде проверка правильности полученной пачки - и если пачка не верна то данные о канале не обновляются - то есть потенциально есть кусок кода который может замедлить обновление серв просто потому что он регистрирует ошибки в пакете... - поэтому и задумываюсь - а не искажает ли приемник канальный импульс ? (из за чего моя система проверки просто игнорирует обновление канального импульса для сервы)
Перейти в начало страницы
 
+Цитировать сообщение
Vic88
сообщение 2.11.2011, 10:40
Сообщение #7


Почётный форумчанин, Мастер-моделист


Группа: Пользователь
Сообщений: 1307
Регистрация: 14.2.2007
Вставить ник
Цитата
Возраст: 71
Из: Обнинск, Калужской обл.
Спасибо сказали: 193 раз(а)




Цитата(ВитГо @ 2.11.2011, 9:35) *
у меня есть в коде проверка правильности полученной пачки - и если пачка не верна то данные о канале не обновляются

Что значит, неверна? Критерии?
Перейти в начало страницы
 
+Цитировать сообщение
Гость_ВитГо*
сообщение 2.11.2011, 12:04
Сообщение #8





Гость



Цитата





сигнал это 5 пачек импульсов PPM

в первой пачке вместо одного из каналов (пусть будет канал 5) идет маркер, длинной 750 мкс.
во второй пачке вместо канала 5 идет длительность канала 1
в третьей пачке - длительность канала 2
в четвертой пачке - длительность канала 3
в пятой пачке - длительность канала 4

потом все сначала - маркер, и опять 4 пачки с каналами

так вот, когда я получаю маркер, я проверяю счетчик полученных каналов, и если вижу что с момента получения последнего маркера я не получил 4 канала в последующих пачках - то я считаю считанные данные каналов неверными.. и следовательно информацию о длительностях канальных импульсов на выход дешифратора не выдаю...

исходники проекта для студии вот ->
Для просмотра ссылки необходимо зарегистрироваться


Комментарии к коду внутри....



Схема описана мною так (сегодня дома нарисую на листочке, сфоткаю и завтра выложу)

Использована AtMega16 частота по внешнему кварцу на 16 Мгц

PORTB - алфавитно цифровой дисплей, в реальном устройстве его не будет, но его наличие на этапе разработки реально очень помогает!
по пинам сигналы дисплея подключены следующим образом (в скобках номер физического вывода для АТМЕГА16 в корпусе DIP40)
Подключение дисплея:
E - PORTB.0 (1)
RW - PORTB.1 (2)
RS - PORTB.2 (3)
D4-D7 - PORTB.4 (5)-PORTB.7 (8)
вывод PORTB.3 - свободный и не используется
Еще раз повторюсь - дисплей используется со стандартным интерфейсом для алфавитно цифровых HD44780

Кварц на 16 МГц подключен к выводам 12, 13 меги, стандартно кварц и пара кондеров

Сигнальный выход приемника подключен на ножку INT1/PD3 (17)

Сигнал для серв снимается с выводов PA0-PA3 (40, 39, 38, 37)

При работе дешифратора на PA7 (33) выдаются контрольные импульсы передачи сигналов на выходы - у меня к этому выводу подключен светодиод для контроля - если горит - то все ОК, если мигает с частотой заметной глазу - то значит нет дешифрации (скорее всего нет сигнала с приемника)
Перейти в начало страницы
 
+Цитировать сообщение
Vic88
сообщение 2.11.2011, 13:28
Сообщение #9


Почётный форумчанин, Мастер-моделист


Группа: Пользователь
Сообщений: 1307
Регистрация: 14.2.2007
Вставить ник
Цитата
Возраст: 71
Из: Обнинск, Калужской обл.
Спасибо сказали: 193 раз(а)




На мой взгляд, версия о слишком редких импульсах обновления верна.
Пять кадров при частоте 50 Гц длятся 20мсекх5=100мсек или 0,1 сек. То есть, при отсутствии помех очередной импульс обновления придёт на серву через это время. А при помехах - через 0,2-0,3 секунды. Этот "огромный" период и заставляет двигаться серву скачками от одной заданной длительности к другой.
Допустим, вы перекладываете ручку на передатчике из одного крайнего положения в другое за одну секунду. За это время ваша серва получит только 10 импульсов, определяющих её положение. И она, естественно, будет двигаться десятью дискретными скачками. То есть, пройдет тот же путь, что и без вашего дешифратора, но не за 50 мелких шажков, а за 10 крупных. Такова плата за увеличение числа каналов! Если бы вы сжали десяток дискретных каналов (вкл./выкл.), то эта задержка, в большинстве случаев, не имела бы значения. А вы хотите сжать пропорциональные каналы... И получаете иллюстрацию к частному случаю теоремы Котельникова.
С уважением,
Виктор.
Перейти в начало страницы
 
+Цитировать сообщение
Гость_ВитГо*
сообщение 2.11.2011, 13:56
Сообщение #10





Гость



Цитата





:-( дискретные каналы не нужны.. нужны именно пропорциональные...
Перейти в начало страницы
 
+Цитировать сообщение
Гость_EagleB3*
сообщение 2.11.2011, 19:26
Сообщение #11





Гость



Цитата





Цитата(Vic88 @ 2.11.2011, 7:54) *
А есть режим проверки равномерности перекладки. При нём длительность импульса плавно модулируется генератором треугольного напряжения
А я в своем сервотестере (на ATMega88) cделал по-другому: я переменным резистором задаю желаемый период перекладки сервы туда-обратно (от 0,52с до 20с). По периоду перекладки считаю количество приращений, которое должен получить управляющим импульс. Дальше определяю величину приращения. После этого остается только при переполнении таймера (работающего в режиме ШИМ с фазово-частотной коррекцией, ICR задает период счета 20мс) определять следующее значение длины импульса и загонять его в OСR этого таймера.

Цитата(Vic88 @ 2.11.2011, 7:54) *
В моём самодельном сервотестере есть режим проверки максимальной скорости перекладки
А как выполняется эта проверка, если не секрет? Чисто на глаз? Или есть какой-то измеритель реального времени перекладки качалки от края до края?
Перейти в начало страницы
 
+Цитировать сообщение
Vic88
сообщение 2.11.2011, 20:46
Сообщение #12


Почётный форумчанин, Мастер-моделист


Группа: Пользователь
Сообщений: 1307
Регистрация: 14.2.2007
Вставить ник
Цитата
Возраст: 71
Из: Обнинск, Калужской обл.
Спасибо сказали: 193 раз(а)




Цитата(EagleB3 @ 2.11.2011, 19:26) *
А я в своем сервотестере (на ATMega88)

Мой - на ИСах таймеров и компараторов. Я, увы, программированием микроконтроллеров не владею... Некому научить...
Цитата(EagleB3 @ 2.11.2011, 19:26) *
А как выполняется эта проверка, если не секрет?

Специального прибора нет, но есть эталонная цифровая серва для вертолётов. Её проверили в магазине и убедились, что она точно перекладывается 90 град. за 0,15 сек. Я включаю на выход тестера две сервы (новую и эталонную) и смотрю, как ходят качалки. Для моих целей вполне достаточно.
С уважением,
Виктор.
Перейти в начало страницы
 
+Цитировать сообщение
Гость_user777*
сообщение 7.11.2011, 21:06
Сообщение #13





Гость



Цитата





Цитата(Vic88 @ 2.11.2011, 19:46) *
Я, увы, программированием микроконтроллеров не владею... Некому научить...
С уважением,
Виктор.

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

Сообщение отредактировал user777 - 7.11.2011, 21:13
Перейти в начало страницы
 
+Цитировать сообщение
Vic88
сообщение 7.11.2011, 21:38
Сообщение #14


Почётный форумчанин, Мастер-моделист


Группа: Пользователь
Сообщений: 1307
Регистрация: 14.2.2007
Вставить ник
Цитата
Возраст: 71
Из: Обнинск, Калужской обл.
Спасибо сказали: 193 раз(а)




user777
Благодарю за отклик!
Вообще-то "некому научить" - это не очень удачная шутка. Если быть точным, то мне не пришлось заниматься микроконтроллерами (МК), поскольку до сего времени я обходился для всех своих поделок классическими ИС. Отсюда - отсутствие мотивации. А литературы у меня хватает, ведь даже журнал "Радио" я выписываю с 62-го года и до сего дня без перерыва.
Рано или поздно, наверное, придётся применять МК, в этом случае я с удовольствием воспользуюсь помощью, как вашей, так и других коллег!
Прошу прощения за отклонение от темы!
С благодарностью и уважением,
Виктор.
Перейти в начало страницы
 
+Цитировать сообщение
Гость_ВитГо*
сообщение 19.11.2011, 10:19
Сообщение #15





Гость



Цитата





Прошу прощение за то что пропал - в коммандировке... :-(

По поводу моей задачи:
выяснилось что приемник может совершенно запросто повторить передачу данных по какому либо каналу и без какого либо предупреждения :-)
я так понимаю происходит следующее: приемник получил пакет ppm, дешифровал его, выдал на каналы, потом например по причине плохой связи или еще по какой - но следующий пакет не получил - в этом случае на выходные каналы идут те же длительности которые были в последний раз..

на практике у меня получилось что 8ми канальный приемник Турниги второй версии - очень часто дублирует канальные импульсы...

напомню что у меня дешифратор после маркера в 700 мкс ждет 4 канальных импульса для 4х каналов... а в реале может получить два канала переданных дважды :-(
по всей видимости придется искать другой алгоритм сжатия каналов для передачи через один физический канал приемника...

вот такие вот дела...

p.s. а по поводу программирования на МК - я тоже никогда этим не занимался.. но как показывает практика если начать с простого и разбираться неспеша - то можно достигать хороших результатов :-)
Перейти в начало страницы
 
+Цитировать сообщение

Тема закрытаНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 19.7.2018, 8:49
Copyright © 2003-2018 Aviamodelka