Activity

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

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

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

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

Усовершенствованный сервопривод Чена
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? 😃
С уважением,
Славолюб