Усовершенствованный сервопривод Чена
- устранили установкой конденсаторов на питающие выводы входной оптопары?
Да, и переразвел землю на плате.
Да, и переразвел землю на плате.
Установил конденсатор на питающие выводы оптопары-не помогло, после устранения разных косяков состояние как у вас:
Когда в программе ServoTuning устанавливаю на серво режим скорость. Все нормально, срабатывает удержание. А при переключении в режим позиция начинает крутиться в одну сторону.
Не могли бы вы выложить фотографию как развести “землю” на плате? ,чтобы избежать помех.
По программе:
Не пойму как работать с программой. Как установить настройки и записать их в иипром? Не могу найти коррекцию ошибки.
Сообщение 41:
Для этого я поступил следующим образом: сначала в контроллер записываю прошивку от Художника, я использовал servo_mega8_int.hex (Flash) и servo_mega8_int.eep (EEPROM). Затем в ServoTuning «гоняю» движок, меняю ПИД-коэффициенты, записываю их на бумагу. Потом полученные десятичные значения перевожу в шестнадцатеричные (по 2 байта). Эти hex в AVRStudio c прошивкой ServoFinishArtistInt.asm или ServoFinishArtist.asm ввожу в подпрограмме LoadPIDParamRAM (там есть комментарии), перекомпилирую и уже конечный (финишный) hex-файл в CodeVision «шью» в контроллер.
Как-то так надо записывать свои коэф-ты в ЕЕПРОМ, вам удалось?
Землю разводить надо от питания отдельно на проц, отдельно на ирки, ну и кондеры по 0.1 фильтровать.
На сколько я понял коэффициенты читаются с первого банка. Надо изменить коэффициенты и сохранить их в первом банке.
Землю разводить надо от питания отдельно на проц, отдельно на ирки, ну и кондеры по 0.1 фильтровать.
С конденсаторами понятно. Извиняюсь возможно за глупый вопрос, я так понимаю вы отрезали на плате дорожки “минус” к АТмеге и ИРкам в нескольких местах и пустили навесным монтажем провода от общего разъёма питания ХР4 на плате к их минусовым выводам?
С конденсаторами понятно. Извиняюсь возможно за глупый вопрос, я так понимаю вы отрезали на плате дорожки “минус” к АТмеге и ИРкам в нескольких местах и пустили навесным монтажем провода от общего разъёма питания ХР4 на плате к их минусовым выводам?
Я полностью переразвел плату под детали которые у меня есть. Почти все делал в smd исполнении. Поставил оптопару на степ 6n137, остальное pc817. Ирки поставил в dip корпусе, так как могут вылететь, чтоб удобно было менять. Остальное вроде тоже. Пока для двигателя на 15А 80V хватает. Для более мощных надо ставить опторазвязку перед ирками с проца. Прошивку использую Servo_AtMega88_CompInt_Modif. Осталось все теперь проверить не на стенде, а в боевых условиях.
Я полностью переразвел плату под детали которые у меня есть. Почти все делал в smd исполнении. Поставил оптопару на степ 6n137, остальное pc817. Ирки поставил в dip корпусе, так как могут вылететь, чтоб удобно было менять. Остальное вроде тоже. Пока для двигателя на 15А 80V хватает. Для более мощных надо ставить опторазвязку перед ирками с проца. Прошивку использую Servo_AtMega88_CompInt_Modif. Осталось все теперь проверить не на стенде, а в боевых условиях.
Нехило!
Я полностью переразвел плату под детали которые у меня есть. Почти все делал в smd исполнении. Поставил оптопару на степ 6n137, остальное pc817. Ирки поставил в dip корпусе, так как могут вылететь, чтоб удобно было менять. Остальное вроде тоже.
А можно попросить посмотреть разводку. Очень интересно посмотреть разводку силовой части. Заранее спасибо.
Забавно, у меня пока 2 одинаковых платы по Чеху (сообщение198), при тестировании их с одним и тем же двигателем у одной из них такая беда:
При запуске устройства, если крутнуть немого двигатель, он начинает крутиться в одну сторону, пока не сработает ошибка.
Когда в программе ServoTuning устанавливаю на серво режим скорость. Все нормально, срабатывает удержание. А при переключении в режим позиция начинает крутиться в одну сторону.
А у второй нет проблем- в режиме позиция (режим-который имитирует работы от ПК) нормально срабатывает удержание, и вращение только по команде. Взаимная перестановка микроконтроллеров ничего не дает, поэтому я думаю проблема в дискретной части схемы одной платы, либо в каком-нибудь элементе, при данных обстоятельствах делать переразводку платы делать не хотелось бы, надо разобраться с проблемной платой.
У меня проблема - помеха гуляла и на опторазвязке импульсы иногда проскакивали.
Хотелось бы узнать:
- в какой части схемы появлялась помеха( в какой точке определили помеху осциллографом)?
- ваш промышленный энкодер сразу подключается к плате, или через усилитель на CD4093?
Развел землю неправильно, не отделил силовую часть. Осциллографом помеху не видно, вычислил логически. Вытаскивал ирки, помеха исчезала, как только вставлял, помеха шла. Ну а на что наводило, вычислил, что на оптопару. Так как двигатель всегда крутился в одну сторону. Получается при включении ирки не генерят сигнал, но как только немного повернешь вал, ирки начинают генерить, чтоб восстановить исходную позицию, и создают помеху, которая начинает генерить шаги. Как то так.
Промышленный энкодер подключается напрямую.
Ну а на что наводило, вычислил, что на оптопару. Так как двигатель всегда крутился в одну сторону. Получается при включении ирки не генерят сигнал, но как только немного повернешь вал, ирки начинают генерить, чтоб восстановить исходную позицию, и создают помеху, которая начинает генерить шаги.
Если думать логически, тогда в режиме позиция (режим-который имитирует работу от ПК) сразу начинает крутиться двигатель то помеха идет и по STEP и по DIR каналу, если же от небольшого вращения рукой(задание DIR)-помеха идет только по STEP. Думаю надо попробовать для тестирования изолировать входы STEP и DIR ножки 4, 26 в АТмегу(для Servotuning они не нужны), и если неисправность останется без изменений- тогда будем смотреть выходы -15,16. Также думаю можно пробовать без оптопары, шаг и направление в СерТюн идут через UART.
При включении сервопривода сразу начинает крутиться и срабатывает ошибка.
Получается двигатель крутится пока не наступает рассогласование более 20000 шагов-и срабатывает ошибка, значит обратная связь на компораторе IC1A, IC1B не выполняет свою функцию.
P.S. Заметил что напряжение на выходе TL783 играет: 11,83-11,84-11,83-11,84В(на исправной плате=const)
…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 % от измеряемого значения, сравните с точностью Вашего мультиметра. 😁
“Болтание” последней цифры (младшего разряда) в цифровых приборах - обычное дело.
Скорее, это Ваш мультиметр так “играет” (из-за конечной точности):
- если на выходе TL783 напряжение 11,83 5 В, а у мультиметра на этом пределе 2 знака после запятой, что он покажет?
- а если а выходе TL783 напряжение 11,83 49 (11,83 51) В, что он покажет?
Замеченные Вами 0,01 В составляют всего 0,085 % от измеряемого значения, сравните с точностью Вашего мультиметра. 😁
“Болтание” последней цифры (младшего разряда) в цифровых приборах - обычное дело.
Когда решить проблему не просто, начинаешь искать любую возможную причину неисправности, тем не менее на исправной плате напряжение измеренное тем же прибором стабильно 11,82 и не меняется; вы правы нужно попробовать приборы подороже мультиметра.
Получается двигатель крутится пока не наступает рассогласование более 20000 шагов-и срабатывает ошибка, значит обратная связь на компораторе IC1A, IC1B не выполняет свою функцию.
Ошибка устанавливается в коде программы. Рассогласование от 3 до 20000. 3 Шага - зона нечувствительности.
Тоже занимался сервой чена, чтобы не повторяться, всё можно посмотреть тут:
Сверлилка на сервах
и тут:
Простой сервоконтроллер
Буду рад если инфа пригодится.
Может не в тему, но не хотелось отдельную создавать.
У меня вопрос по оригинальному Ченовскому контроллеру.
Скажите, в режим “позиция” - M3, его нужно каждый раз устанавливать через терминал (после включения)?
всё можно посмотреть тут:
Простой сервоконтроллер
вообще не реально посмотреть, на каждую ссылку ошибка зарегистрируйтесь, после пятой экзекуции охота посмотреть пропадает
Начну с того, что изготовленные мною 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? 😃
С уважением,
Славолюб
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.
Я думаю Славолюб, Арисов вам не ответит, поэтому выскажу своё мнение:
Андрей(Арисов) делал свои контроллеры по 3-й своей схеме (сообщение №161) используя ATmega88 TQPF-32.
Jozef (pajac) переделал схему Арисова под ATmega88 PDIP28 и разработал печатную плату (сообщение №198).Asm, hex коды для ATmega88 одинаковы как для PDIP28 так и TQPF-32, разница лишь в печатных платах, IMHO.
Друг, Павел
Спасибо за ответ!
приветствие
Ничего не изменилось, кроме вывода отклонения.
Главная ошибка - чистый ПИД без учета реакций мотора, параметров нагрузки. Также привод должен ругаться на превышение своих возможностей, он главный в системе.
Исходник Чена я изучил и выбросил, свой писал с чистого листа. Уперся только в скорость МК, АВР не способен с нужной скоростью обработать все входные параметры. Есть большое подозрение, что и АРМа может не хватить…
И в исходнике обнаружены непонятки. Это или ляпсусы, или фьючи.Кто-то упоминал (не помню кто и где), что параметры мотора, например момент инерции ротора, слабо влияет на динамику по отдельно взятой координате (в сборе). Это совсем не так. Поставив на тестовую координату специализированный серво-мотор (картинка снизу) с енкодером 1000cpr, убедился, что на высоких (> 1000) оборотах мотор с малый моментом инерции, но с шустрой динамикой даёт в разы меньшую погрешность позиционирования.
Мой вывод простой: на небыстром МК серва способна нормально управлять мотором до 800-1000 оборотов. Дальше - уже совсем другой уровень вычислений, и примитивный ПИД тут не катит.
У меня такой же двигатель.
Вам удалось подобрать коэффициенты?
Только я дочитал до конца не обращая внимания на даты как обнаружил что все заглохло ещё как год назад, а так хотелось какой нибудь “Улучшенной модификации” от arisov77.