Усовершенствованный сервопривод Чена

dominatoress
crashzoom:

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

Если думать логически, тогда в режиме позиция (режим-который имитирует работу от ПК) сразу начинает крутиться двигатель то помеха идет и по STEP и по DIR каналу, если же от небольшого вращения рукой(задание DIR)-помеха идет только по STEP. Думаю надо попробовать для тестирования изолировать входы STEP и DIR ножки 4, 26 в АТмегу(для Servotuning они не нужны), и если неисправность останется без изменений- тогда будем смотреть выходы -15,16. Также думаю можно пробовать без оптопары, шаг и направление в СерТюн идут через UART.

crashzoom:

При включении сервопривода сразу начинает крутиться и срабатывает ошибка.

Получается двигатель крутится пока не наступает рассогласование более 20000 шагов-и срабатывает ошибка, значит обратная связь на компораторе IC1A, IC1B не выполняет свою функцию.
P.S. Заметил что напряжение на выходе TL783 играет: 11,83-11,84-11,83-11,84В(на исправной плате=const)

ATLab
dominatoress:

…P.S. Заметил что напряжение на выходе TL783 играет: 11,83-11,84-11,83-11,84В(на исправной плате=const)

Скорее, это Ваш мультиметр так “играет” (из-за конечной точности):

  • если на выходе TL783 напряжение 11,83 5 В, а у мультиметра на этом пределе 2 знака после запятой, что он покажет?
  • а если а выходе TL783 напряжение 11,83 49 (11,83 51) В, что он покажет?
    Замеченные Вами 0,01 В составляют всего 0,085 % от измеряемого значения, сравните с точностью Вашего мультиметра. 😁
    “Болтание” последней цифры (младшего разряда) в цифровых приборах - обычное дело.
dominatoress
ATLab:

Скорее, это Ваш мультиметр так “играет” (из-за конечной точности):

  • если на выходе TL783 напряжение 11,83 5 В, а у мультиметра на этом пределе 2 знака после запятой, что он покажет?
  • а если а выходе TL783 напряжение 11,83 49 (11,83 51) В, что он покажет?
    Замеченные Вами 0,01 В составляют всего 0,085 % от измеряемого значения, сравните с точностью Вашего мультиметра. 😁
    “Болтание” последней цифры (младшего разряда) в цифровых приборах - обычное дело.

Когда решить проблему не просто, начинаешь искать любую возможную причину неисправности, тем не менее на исправной плате напряжение измеренное тем же прибором стабильно 11,82 и не меняется; вы правы нужно попробовать приборы подороже мультиметра.

crashzoom
dominatoress:

Получается двигатель крутится пока не наступает рассогласование более 20000 шагов-и срабатывает ошибка, значит обратная связь на компораторе IC1A, IC1B не выполняет свою функцию.

Ошибка устанавливается в коде программы. Рассогласование от 3 до 20000. 3 Шага - зона нечувствительности.

24 days later
9 days later
lmusic

Может не в тему, но не хотелось отдельную создавать.
У меня вопрос по оригинальному Ченовскому контроллеру.
Скажите, в режим “позиция” - M3, его нужно каждый раз устанавливать через терминал (после включения)?

18 days later
Jina

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

BosniaCNC
arisov77:

Начну с того, что изготовленные мною 2 сервоконтроллера успешно работают более месяца (по нескольку часов в рабочие дни).
Но для успешной работы пришлось в процессе монтажа-наладки устранить 2 программных «глюка». Первый проявлялся в виде кратковременного останова движения во время быстрых перемещений (4м/мин) и был быстро устранён – увеличением времени срабатывания WatcgDog таймера до 125ms. («Подсмотрел» у UHU rcopen.com/forum/f110/topic40457/185 rev 2.17, видимо у него это тоже происходило в первых версиях).
Второй «глюк» изрядно мне «потрепал нервишки». Проявлялся в виде перехода в режим “ServoError”, причём это могло как во время движения, так и во время «стоянки», но чаще всего (в 95%) в момент начала первого движения после включения питания. Мог и сразу без движения, после подачи питания. Проявлялось всё это очень редко - 3-5 раз(а) в день (иногда «везло»-было чаще), а иногда вообще ни разу не было. Происходило это в обоих приводах, независимо друг от друга.
Путём написания различных тестовых подпрограмм и считыванием информации в этот момент ServoTuning выяснилось, что происходила ошибка из большого рассогласования заданного и фактического положений (в подпрограмме +/-20000 Step). Исключение этой подпрограммы анализа рассогласования дало бы только то, что привод «ускакал бы семимильными шагами» 😃 к новой позиции. А если учесть что рассогласование в этот момент достигало несколько миллионов шагов, то «поля» может и не хватить.
Также выяснил, что такое количество «ложных» шагов выдавали цепи энкодера. Причём эти шаги всегда имели отрицательное значение. С «таймерной» прошивкой рассогласование было существенно меньше (20 000-30 000шагов), что косвенно подтверждает, что с прошивкой с прерываниями по компаратору сервопривод будет «шустрее».
Установка различных конденсаторов в цепях энкодера не помогла. Пробовал в подпрограмме обработке прерывания от компаратора ANA_COMP ввести программную фильтрацию (трёхкратный опрос и проверка на равенство с предыдущим состоянием) – тоже не помогло. Задержка при включении тоже не помогает.
Что конкретно помогло, я так до конца и не понял, т.к. нормальная работа стала возможной только после «группового» изменения в программе (переустановка в первоначальной инициализации, сброс флага прерывания от компаратора, очистка некоторых регистров, …). Кстати у UHU тоже была перестановка последовательности инициализации (rev 2.16). Интересно как потом Uli их обновлял, тем кому уже продал старые?
Предположительно помогла очистка регистров zl и zh. Выяснять конкретную причину не стал (из–за недостатка времени). Так что просто выкладываю новую, исправленную прошивку под AtMega88 с опросом энкодера по прерываниям от компаратора. В ней также исправлены несколько замеченных мною багов, которые на работу сервоконтроллера никак не влияли. В исходнике есть их описание и настройки под мои приводы.
Если, всё таки найдутся желающие повторить, то для повышения быстродействия в подпрограмме ANA_COMP можно отключить программную фильтрацию (переписать из предыдущей версии прошивки). Она хоть и не помогла в борьбе с «ложным» ServoError, но т.к. у меня энкодер с низким разрешением (240имп/об), то я её оставил («кашу маслом не испортишь»).
Самое главное из-за чего собственно я и начал переделку прошивки – «слёта» EEPROM ни разу не было!
По прошивке вроде всё, если кому надо скомпелирую c этими изменениями под AtMega8 и под AtMega88 с опросом энкодера по таймеру или без “программной фильтрации” по входу энкодера, но без 100% гарантии работоспособности, т.к. проверить не на чем. Если что не так, опишите «симптомы», исправлю и снова Ваше тестирование.

К сожалению, в схеме токового ограничения обнаружил свою ошибку. electronix.ru/forum/index.php?showtopic=58750
В момент когда открыты два нижних транзистора ток самоиндукции от двигателя «замыкается» через эти транзисторы «минуя» токоизмерительный резистор и соответственно контроля тока нет. Это может вывести из строя транзисторы. У меня установлены транзисторы с «запасом», поэтому из-за этого последствий пока нет, надеюсь, что и не будет и переделывать работающий конструктив не буду.

Ещё раз обращаю внимание, что при наличии даже небольшого люфта между валом двигателя и энкодером сервопривод нормально работать не будет. У меня на одной оси люфт есть (который без «сёрьезной» мех. переделке мне не удалось устранить) и в совокупности с изношенной местами передачей шестерня-рейка это вызывает рывки (дёрганья) на медленных скоростях. Эти рывки всегда проявляются в одних и тех же местах относительно рейки. Если в этот момент привод «подпереть» руками, то подача идёт ровно. На другой (многократно тяжелее первой) всё идет плавненько и ровненько. Недавно оператор, который раньше работал на этой газорезательной машине рассказал, что так было и до замены сервопривода. По одной оси рез ровный, по другой – не совсем good. Делаю вывод, что сервоконтроллер не виноват. Пока качество получаемых деталей заказчика устраивает и в случае чего они пообещали сами устранить все люфты.

До снятия видео всё никак «руки не дойдут», это надо опять ехать, снимать кожуха, чтобы показать, что именно эти платы крутят движки…

По поводу глюков с FT232 при работе с сервоконтроллером кое-что написано здесь kazus.ru/forum/topics/14286.html

Кстати, вот появился симпатичный вариант этого сервоконтроллера www.c-n-c.cz/viewtopic.php?t=2395 и www.cnczone.com/forums/showthread.php?t=69640.
Наконец то хоть кто-то повторил. А то я думал, что мне это только одному надо.
Выкладываю оттуда схему с платой.

Andrej
rcopen.com/forum/f110/topic40981/161
В Вашем письме #198 Вы говорите о версии сделано Jozef (pajac), но есть кое-что, что я не понимаю.Фотографии ATmega88 как DIP28 где угодно, но я не могу найти код для этой версии, потому что она везде:
, --------- (± íîćĺę (PIN) óęŕçŕíű æ ˙ A ATmega48/88/168 ęîđďóńĺ TQPF-32) ------
Есть ли альтернатива asm, hex код ATmega88 PDIP28? 😃
С уважением,
Славолюб

23 days later
dominatoress
BosniaCNC:

Andrej
rcopen.com/forum/f110/topic40981/161
В Вашем письме #198 Вы говорите о версии сделано Jozef (pajac), но есть кое-что, что я не понимаю.Фотографии ATmega88 как DIP28 где угодно, но я не могу найти код для этой версии, потому что она везде:
, --------- (± íîćĺę (PIN) óęŕçŕíű æ ˙ A ATmega48/88/168 ęîđďóńĺ TQPF-32) ------
Есть ли альтернатива asm, hex код ATmega88 PDIP28? 😃
С уважением,
Славолюб

Я думаю Славолюб, Арисов вам не ответит, поэтому выскажу своё мнение:
Андрей(Арисов) делал свои контроллеры по 3-й своей схеме (сообщение №161) используя ATmega88 TQPF-32.
Jozef (pajac) переделал схему Арисова под ATmega88 PDIP28 и разработал печатную плату (сообщение №198).

Asm, hex коды для ATmega88 одинаковы как для PDIP28 так и TQPF-32, разница лишь в печатных платах, IMHO.

BosniaCNC
dominatoress:

Я думаю Славолюб, Арисов вам не ответит, поэтому выскажу своё мнение:
Андрей(Арисов) делал свои контроллеры по 3-й своей схеме (сообщение №161) используя ATmega88 TQPF-32.
Jozef (pajac) переделал схему Арисова под ATmega88 PDIP28 и разработал печатную плату (сообщение №198).

Asm, hex коды для ATmega88 одинаковы как для PDIP28 так и TQPF-32, разница лишь в печатных платах, IMHO.

Друг, Павел
Спасибо за ответ!
приветствие

lmusic
maxvovk:

Ничего не изменилось, кроме вывода отклонения.
Главная ошибка - чистый ПИД без учета реакций мотора, параметров нагрузки. Также привод должен ругаться на превышение своих возможностей, он главный в системе.
Исходник Чена я изучил и выбросил, свой писал с чистого листа. Уперся только в скорость МК, АВР не способен с нужной скоростью обработать все входные параметры. Есть большое подозрение, что и АРМа может не хватить…
И в исходнике обнаружены непонятки. Это или ляпсусы, или фьючи.

Кто-то упоминал (не помню кто и где), что параметры мотора, например момент инерции ротора, слабо влияет на динамику по отдельно взятой координате (в сборе). Это совсем не так. Поставив на тестовую координату специализированный серво-мотор (картинка снизу) с енкодером 1000cpr, убедился, что на высоких (> 1000) оборотах мотор с малый моментом инерции, но с шустрой динамикой даёт в разы меньшую погрешность позиционирования.

Мой вывод простой: на небыстром МК серва способна нормально управлять мотором до 800-1000 оборотов. Дальше - уже совсем другой уровень вычислений, и примитивный ПИД тут не катит.

У меня такой же двигатель.
Вам удалось подобрать коэффициенты?

3 months later
frolikum

Только я дочитал до конца не обращая внимания на даты как обнаружил что все заглохло ещё как год назад, а так хотелось какой нибудь “Улучшенной модификации” от arisov77.

1 month later
1 month later
igoryan

Доброе время суток люди, помогите пожалуйста я собрал, привод из поста №198 Jozefp_Scheme+PCB.zip.проблема такого плана когда подключаю привод к компу не подключается, пишет контроллер не отвечает контроллер атмега8 и 88 то же самое адаптер на транзисторах после извлечения контроллера из привода и вставления его в программатор AVR910 CodeVisionAVR
Программа пишет перевидите контроллер в режим программирования. Помогите что не так.

crashzoom

Очень похоже, что фьюзы неправильно выставлены. Возможно reset был сброшен под порт.

igoryan

Добрый вечер фьюзы не перепутаны, потому что если не пытаюсь подключать, к компу то контроллер читается, но только подключаю, перестает читаться. Переходник проверял всё правильно. Не пойму в чём дело? Насколько я понял привод этого, типа уже повторяли и проблем, не было прошивку, брал из архива поста №198 Jozefp_Scheme+PCB.zip.

igoryan

Снова добрый вечер, подскажите пожалуйста если я правильно понимаю то для того чтобы связать контроллер с компом через ком порт мне достаточно подать питание на мегу и подключиться к 2и3 ноге и программа серво тюнинг увидит его?

КСВ

igoryan, какую печатную плату использовали? Если из сообщения 204, то там есть ошибка.В этой разводке не подаётся +5V на разъём, к которому подключается переходник для связи с компом.На прикреплённом рисунке красная перемычка, внутри жёлтого круга.

igoryan

Добрый день спасибо за помощь да я делал по этой плате, но я её немного изменил, убрал пару перемычек и этот провод по +5 я увидел, выкладываю изменённую плату с маркированными деталями.

КСВ

igoryan, так привод удалось запустить? Я делал 2шт., с энкодерами на 200имп. на оборот – работают замечательно.Пробовал с движками СЛ на 110В и двигателями, которые раньше применялись в подающих механизмах сварочных полуавтоматов (48 В, независимое возбуждение). Последние довольно сильно греются, но с принудительным охлаждением всё Ок.

igoryan

Доброе утро пока не получается подключить к кому уграл четыре проца щас собираю фьюзы
Бит доктора, возможно, подыму хотя бы половину, потом буду пробовать, снова и выкладываю файл с маркировкой, деталей гляньте, пожалуйста, всёли правильно?

Servo1.rar