Автор Тема: Re: Простой сервоконтроллер Часть 3  (Прочитано 102206 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ermak Александр Владимирович

  • Авторы проектов
  • Ветеран
  • *
  • Сообщений: 729
  • Карма: +3/-0
Re: Re: Простой сервоконтроллер Часть 3
« Ответ #195 : 27 Январь 2017, 15:42:39 »
Не знаю, может пригодиться?
Какой то японец с сервами извращался.
Здоровья вам и долгих лет жизни! Вельма понеже.

Оффлайн Aleksandr

  • Электронщики
  • Освоившийся
  • *
  • Сообщений: 76
  • Карма: +1/-0
Re: Простой сервоконтроллер Часть 3
« Ответ #196 : 28 Январь 2017, 22:23:44 »
Здравствуйте. S13, расскажите пожалуйста подробнее о том, как вы побороли зону нечувствительности при малом шим в сообщении 185. Когда-то делал управление оборотами коллекторного двигателя на TL-494. Ставил конденсатор параллельно обмоткам и наблюдался резонанс. Т.е. при малом шим двигатель нормально не работал. Без конденсатора нормально. Теперь делаю сервопривод и хочу попробовать так и эдак, тоесть с LC фильтром и без него. Посмотреть что получается. Да, если это не затрагивает Ваши интересы, скажите имя, отчество, а то интернет кликухи как-то не то, что надо.

Оффлайн s13

  • Разработчики
  • Старожил
  • *******
  • Сообщений: 321
  • Карма: +12/-0
Re: Простой сервоконтроллер Часть 3
« Ответ #197 : 28 Январь 2017, 22:56:08 »
Здравствуйте Александр. Зовут меня Вячеслав, а 13 моё счастливое число ;)
Насчет зоны нечуствительности - просто сделал как в одном автоинверторе чистого синуса, схему прилагаю. Шим сглаживается и на мотор выходит постоянка. В таком варианте индуктивное сопротивление движка не мешает..

Оффлайн Aleksandr

  • Электронщики
  • Освоившийся
  • *
  • Сообщений: 76
  • Карма: +1/-0
Re: Простой сервоконтроллер Часть 3
« Ответ #198 : 29 Январь 2017, 01:26:40 »
Ок! Спасибо Вам.

Оффлайн As Александр Иванович

  • Основатель
  • Ветеран
  • *****
  • Сообщений: 674
  • Карма: +6/-0
Re: Re: Простой сервоконтроллер Часть 3
« Ответ #199 : 31 Январь 2017, 11:19:02 »
Народ с i4.ru заинтересовался, вашими разработками. Уже 4 человека запросили и получили доступ.
Свежие люди, вроде соображают в электронике. Проверены на прямые руки, что не просто читатели.

Оффлайн s13

  • Разработчики
  • Старожил
  • *******
  • Сообщений: 321
  • Карма: +12/-0
Re: Простой сервоконтроллер Часть 3
« Ответ #200 : 31 Январь 2017, 17:10:26 »
Уже 4 человека запросили и получили доступ.
Свежие люди, вроде соображают в электронике.
   Это хорошо, если народ подтянется думаю сварганим что то стоящее..

   Ченовскую серву хоть и старались мы на ноги поставить разогнать и улучшить, но всё портит отсутствие нормальной программы для настройки. Та что есть виснет всю дорогу, никак не хочет дружить с USB переходниками и т.д. Прога на асме очень туго портируется с камня на камень, исходники даже не выкладываю уже по причине того что за несколько лет в них никто и не заглянул.

   Сейчас занимаюсь с вариантом ServoStrap. Собрал стендик из ардуинки, L298 и 775 движка (фото). Погонял с разными нагрузками. Действительно настройка через терминал и далее в Processing_2.2.1  очень удобная. Исправил библиотеку Pid_V1, теперь интегратор работает нормально и выводит систему точно и быстро в нужные координаты без возбуждений и медленных доворотов. После этого исправления вижу смысл перевести нашу серву на эту основу. Скорее всего за недельку сделаю вариант на мегу8, чтобы уже ранее сделанные сервы были с новыми мозгами, и проблем с настройкой не возникало.     

Оффлайн s13

  • Разработчики
  • Старожил
  • *******
  • Сообщений: 321
  • Карма: +12/-0
Re: Простой сервоконтроллер Часть 3
« Ответ #201 : 02 Февраль 2017, 02:19:53 »
 Выбросил библиотеку PID_V1, изменил принцип обратных связей. Даже с исправленным интегратором не удавалось избавиться от небольших перелётов (коцек) на некоторых движках. Всё получилось гораздо компактнее и эффективнее. Для слишком шустрых движков понадобилось ограничение скорости kv, но думаю оно и для больших может пригодится. Добился от нескольких разных движков с разной нагрузкой чёткого и быстрого останова как на графике ниже (обращать внимание только на момент торможения) . Осталось портировать на мегу8. 

Оффлайн s13

  • Разработчики
  • Старожил
  • *******
  • Сообщений: 321
  • Карма: +12/-0
Re: Простой сервоконтроллер Часть 3
« Ответ #202 : 02 Февраль 2017, 10:12:53 »
Забыл показать стендик от графика :)

Оффлайн s13

  • Разработчики
  • Старожил
  • *******
  • Сообщений: 321
  • Карма: +12/-0
Re: Простой сервоконтроллер Часть 3
« Ответ #203 : 03 Февраль 2017, 10:15:05 »
   Ребята подскажите как лучше сделать сервоошибку. Пока что сделал таймер на 3 секунды если задание на шим максимальное (обычно при разрыве контура регулирования или в случае пропажи силы задание сразу на максимум растёт). Если дать команду на перемещение, например на 100000 позиций (Х100000) то всё нормально работает, нет ошибки. Нужно ли нам моментальное ограничение как раньше, например на 20000 ?

Оффлайн Ermak Александр Владимирович

  • Авторы проектов
  • Ветеран
  • *
  • Сообщений: 729
  • Карма: +3/-0
Re: Re: Простой сервоконтроллер Часть 3
« Ответ #204 : 03 Февраль 2017, 13:17:30 »
У вас опыта больше в этом деле. Моментальное, наверное лучше будет.
Здоровья вам и долгих лет жизни! Вельма понеже.

Оффлайн Propovednik (Иван)

  • Спонсоры
  • Постоялец
  • *****
  • Сообщений: 153
  • Карма: +6/-0
Re: Re: Простой сервоконтроллер Часть 3
« Ответ #205 : 03 Февраль 2017, 14:14:49 »
Я могу рассказать только как сделано у меня, советовать вам бесполезно, вы много опытнее в этом деле.

Оффлайн s13

  • Разработчики
  • Старожил
  • *******
  • Сообщений: 321
  • Карма: +12/-0
Re: Простой сервоконтроллер Часть 3
« Ответ #206 : 03 Февраль 2017, 22:42:24 »
 
Я могу рассказать только как сделано у меня
Ну Иван давайте выкладывайте уже, всегда есть что улучшить.

И ещё вопросик. Как у Вас насчёт полного шима? 100% или есть пульсики для подпитки  ?
Почти доделал версию на мегу 8. Это просто жуткое сражение с нехваткой памяти и со средой ардуино.. еле отжал таймер0 для входа step :).  Компилится с перевесом по размеру (104%) но если шить проггером без бутлоадера - лезет, и ещё прям чуток FF-ов в конце есть, это радует, может ещё что добавлю. Погонял новую версию для m8 на 100% шиме с полевиками - срыв верхнего ключа случается. Сделал как раньше - 95%.


Оффлайн Propovednik (Иван)

  • Спонсоры
  • Постоялец
  • *****
  • Сообщений: 153
  • Карма: +6/-0
Re: Re: Простой сервоконтроллер Часть 3
« Ответ #207 : 03 Февраль 2017, 23:54:17 »
Здравствуйте. Шим у меня действительно 100%.  Но с учетом того что я использую свой драйвер на 12В на полевиках. Кстати я думаю вы его видели, получился выше всех моих ожиданий и проверен Сергеем, он оставил хорошие отзывы о ном. Скорее всего сгорит движок чем он. И Вячеслав я думаю все же стоит разделить высоковольтные драйвера и низковольтные. Схемотехника разная и временные задержки тоже разные. Я вообще уверен что на 12 вольт для полевиков драйвера в виде IR не нужны.  С памятью действительно проблема, хотя память у меня занята всего на 30% но вот тактового цикла действительно нехватает для поднятия скорости обработки. У меня получилось всего по 3000 циклов прерывания по энкодеру и прерываний входа степ в секунду. Я как бы понимаю что это немного но все мои попытки как то ускорить программу привели к полному краху.  Нехватает тактовой частоты, думал использовать процессор СТМ но я с ними не разу не работал, поэтому не рискнул. 
 По поводу сервоошибок. Я сделал ошибку по двум критериям, как вы и говорили. 1) это превышение значения положения относительно нуля. 2) это превышение времени обработки одного импульса.
Первое думаю вам пояснять не нужно, но ошибка вылазит если диск не успел за истиной координатой на 2 оборота диска.
Второе выглядит следующим образом. Я в программе щитаю количество импульсов каждого пришедшего входного и с энкодера сигнала, что бы знать какая истиная скороть импульсов входа и выхода. Ну как всегда на теймере.  Каждый раз как пришол входной сигнал я знаю его длинну. Следовательно сервоошибка возникает после того как привышен временной лимит 200 таких импульсов. Тоесть если серва встала, или заклинил винт, даже если в размере одного шага, который ограничен минимальным временем поворота вала на 1 шаг, прога начинает щитать время. Обычно программа в течении этого времени старается вернуть вал в нужную координату, но если вал совсем не шевелится то выводит на сервоошибку.
 Ну вот как то так.

Оффлайн s13

  • Разработчики
  • Старожил
  • *******
  • Сообщений: 321
  • Карма: +12/-0
Re: Простой сервоконтроллер Часть 3
« Ответ #208 : 04 Февраль 2017, 05:10:10 »
   Насчет драйверов то да, разные движки, напряжения и токи.. тут одинаковым точно не обойтись, а если и сделать что то универсальное то по цене  будет излишним. Схему на драйвер и распиновку процессора я так и не увидел, почему то у меня нет доступа к файлам в заголовочном посте. Про рассогласование в 2 оборота понятно, а вот зачем таймером измерять импульсы так и не дошло пока..  видимо это и мешает развить скорость выше 3Кгц. Серва на 4.7 и 5.0 может работать до 220Кгц на входе step, новый вариант гонял пока только до 60, Выше буду тестировать с другими моторами и датчиками на след. неделе, но предполагаю будет выше 100.
  Всё таки я так и не понял как в вашем варианте идёт расчёт коэффициентов пид ? они жестко зашиты ? По видео Александра я видел перелёты позиции и возбуждения - соответственно или недостаток дифференциальной связи или переизбыток пропорциональной и/или интегральной,  как в Вашем случае подстроить эту неуравновешенность системы ? Даже если у Вас всё работает, то это совсем не факт что с другим мотором/датчиком всё будет отлично, в этом и сложность. Например угловатый движок с последнего моего фото на столе - Epson EM-115 имеет 1152 позиции по энкодеру,  высокий момент и небольшую скорость (2400об/мин). Тот что выше был с  патроном на валу (775) имеет небольшой момент (+патрон в инерцию), 20000об. и 1000позиций на самодельном датчике. Параметры после настройки у этих движков отличаются в разы. Хотя на глаз они оба просто встают, время остановки на графике у них разное, причем если патрон снять - движок продолжает чётко вставать на нужной позиции(хотя без такой нагрузки можно настроить выход в точку ещё быстрее). Соответственно настроить нужно на максимальную скорость и момент энерции.  Старый вариант на м8 или тини2313 вполне работоспособен,  единственная проблема это подбор параметров, ну и драйвера у людей горели, у кого в момент возбуждения, или ещё как, но это я считаю опять проблема настройки серв была.  Сейчас с новым вариантом надеюсь получится на пальцах обьяснить как подстроить параметры опираясь на снятый процессингом график выхода в точку.  Вся система имеет тонкий баланс, который необходимо поймать, только после этого будет работать жестко и чётко. Как вариант автонастройки вижу метод Зиглера–Никольса, но это явно уже в мегу 8 не влезет, да и 100% точности он не даёт, скорее как стартовые параметры для более тонкой настройки. Так что ручками.. :)

Оффлайн As Александр Иванович

  • Основатель
  • Ветеран
  • *****
  • Сообщений: 674
  • Карма: +6/-0
Re: Re: Простой сервоконтроллер Часть 3
« Ответ #209 : 04 Февраль 2017, 08:54:43 »
Цитировать
Схему на драйвер и распиновку процессора я так и не увидел, почему то у меня нет доступа к файлам в заголовочном посте.

Иван перезагрузите файлы в вашей теме. Похоже они побились.