Усовершенствованный сервопривод Чена
У меня такого никогда не было. Попробуйте «кусками» заменять части программ (константы, инициализация,…). Очень интересно «докопаться» до истины. Защиты кода никакой нет. Попробуйте новый вариант прошивки…
Нет предела совершенствованию…и исправлению ошибок, но надо на чём-то останавливаться.
-----------------------------------------------------------------------------------------------------------------------
Предлагаю к рассмотрению модернизированный вариант усовершенствованного сервоконтроллера.
По схеме и плате:
Оптопару по Step/Dir наверное всё таки лучше использовать сдвоенную HCPL-2631, т.к. по сравнению с двумя H11L1 она займёт немного меньше места на плате, а разница в 20р. здесь уже роли не играет. А за одну только HCPL-2231 мне, например, жалко платить половину стоимости всех комплектующих.
Диоды и резисторы перед входами IN IR2184, которые я раньше ставил для защиты AtMegи от возможного пробоя выходных транзисторов и их драйверов, можно исключить, т.к. у меня при трёх пробоях полевиков «вылетали» только они сами и стабилитроны.
Не помешает установка диода параллельно питанию для защиты от неправильной полярности питающего напряжения - может сберечь кучу дорогих деталей.
Иногда, (на плате с IRFP260) при максимальной нагрузке (удержании вала и увеличенным током защиты) происходил «срыв» движка. Как выяснилось из-за «просадки» напряжения питания драйверов (+12В) до 7-8В. Импульсный трансформатор входил в насыщение. Если кто будет повторять мой вариант конструкции и такое произойдёт, то надо ввести небольшой зазор между половинками ферритового кольца или увеличить площадь сердечника. Я использовал два сложенных вместе кольца (разломленных и склеенных).
Пока проводил «экскременты» - «спалил» единственный COM-порт на компе. Видимо из-за частых «дёрганий» СОМ-шнурка при включенных сервоконтроллере и компе. Пришлось соединяться через преобразователь USB/UART (я использовал переделанный («подтяжка» до 5В) программатор для мобильников UniBOX – с «родными» драйверами). Как говориться, не было бы счастья, да несчастье помогло. Т.к. обычно делают 2-3 комплекта сервоприводов, то логичнее использовать один преобразователь-шнурок и тем самым освободить дополнительное место на плате. У меня с UniBox работает нестабильно, графики сильно «тормозят», через СОМ-порт было гораздо «веселее», но деваться некуда приходиться с ним работать. Возможно с другим преобразователем USB/UART , будет работать лучше. Осторожнее с преобразователями USB/COM, которые выдают +/-12В для стандарта RS-232 - их напрямую к МК подсоединять нельзя!
Добавил «концевики» ограничения хода (к РВ4 и РВ5). Тип контактной группы «концевиков» (нормально-замкнутые (НЗК) или нормально-разомкнутые (НРК)) выбирается с помощью перемычки (джампера) между РВ3 и общим проводом. Если перемычка установлена (U на РВ3=0В) (у меня устанавливается на разъём для программирования), то – НЗК, если перемычка отсутствует (U на РВ3=5В), то – НРК. Для безопасности в промышленных станках, подобные ограничители чаще используются с НЗК.
Одновременное срабатывание «концевиков эквивалентно нажатию кнопки аварийного стопа (EMERGENCY STOP). Переходит в состояние Error с одновременной индикацией этого состояния. Выход из этого состояния через выкл.-вкл. питания, сброс по Reset или в ServoTuning нажатие кн. Стоп или смена режима.
Если «концевики» не используются, то детали их цепи можно не устанавливать. «Подтягивающие» резисторы к РВ3, РВ4 и РВ5 установлены программно в МК.
Выбор типа контактов можно было бы, как вариант, сделать программно в ServoTuning, если бы её код был открыт, но…
С PC4 (pin27) и РС5 (pin28) выводится направление движения. Можно использовать с другим драйвером или «подцепить» светодиодики для индикации. Или через диоды с них можно попробовать использовать сигнал Brake (тормоз). Но иногда выключение одного из этих выходов не происходит, в ситуации когда двигатель останавливается +/- 1шаг контроллер выдаёт слишком малую амплитуду сигнала рассогласования на двигатель и он не «осиляет» крутануть вал до нужной позиции. При этом один из выводов направления активен.
Опрос состояния энкодера (для повышения быстродействия) теперь осуществляется по прерываниям от компаратора (с соответсвующей прошивкой). Т.к. с энкодера не может быть сигналов перехода с 00 на 11 и с 11 на 00, то на элементах VD2,VD3, R23-R25, R29 и внутреннем компараторе собран эквивалент логического элемента «исключающие ИЛИ». Что делается у UHU с компаратором я так и не узнал (я задавал вопрос выше на этой ветке форума).
----------------------------------------------------
Изменения в «прошивке» (отличия от первоначальной от Художника):
- при первоначальном включении производиться мажоритирование данный в EEPROM. Считываются данные одного параметра расположенного в трёх разных областях, затем их сравнение между собой и если один из них не равен двум другим, то производиться перезапись этой «битой» ячейки. Если все три ячейки не равны между собою, что очень маловероятно, то во все три ячейки записывается значение ячейки из второй (в середине) области EEPROM, предположительно - как наиболее «целой» части (будем надеяться). Этот процесс производиться для всех параметров, хранящих в EEPROM
- При сохранении ПИД-настроек в EEPROM из ServoTuning запись каждого параметра производится во все ячейки расположенные в трёх разных областях
- При загрузке параметров из EEPROM в ServoTuning считываются данные только из одной области (без проверки на равенство)
- После сохранения и загрузки параметров адрес EEPROM меняется на адрес не содержащих данных.
Выше указанные изменения направлены на увеличение надёжности хранения ПИД-настроек. У меня пока «слёта» не происходило, надеюсь что и не будет. - Активирован WatchDog (период 38мс)
- Добавлена работа аварийных ограничителей движения (Limit_L и Limit_R) и выбор типа их контакной группы. Опрос их состояния через 20мс (для устранения «дребезга»).
- Вход E-Stop и выход “Error” (описание работы было немного выше)
- «Слежение» за рассогласованием между заданным и фактическим положением сервопривода и формирование состояния Errror при большом рассогласование. Алгоритм я описывал в ранних постах.
- удаленна подпрограмма обработки прерывания от Int1, т.к. у Художника даже не активировано разрешение на это прерывание (от вывода PD3 (Int1) – по схеме от Художника на этот вывод идёт сигнал Reserved c энкодера) и у меня нет такого энкодера с 3 выходами. Также исключено прерывание от Timer2, т.к. в прошивке от Художника он тоже роли не играет. Поэтому разницы в работе сервоконтроллера между прошивками от Художника с прерываниями (servo_mega8_int.asm) и без них (servo_mega8.asm) – нет. Это заметил ещё в начале этой ветки maxvovk (1стр., сообщение №4).
С новым вариантом схемы лучше использовать прошивку с опросом состояния энкодера прерываниями от компаратора. Разницы в работе я не заметил, но теоретически она лучше, чем с опросом энкодера по прерыванию от Timer0 (12мкс).
Я сделал четыре варианта прошивки Servo_AtMega_TimerInt - для AtMega8, по таймеру, Servo_AtMega_CompInt – для AtMega8, по компаратору и такие же для AtMega88 - Servo_AtMega88_TimerInt и Servo_AtMega88_CompInt. Прошивки с прерываниями от Timer0 можно использовать как со схемами, которые я выкладывал ранее, так и новым вариантом. С прерываниями от компаратора, только с новым вариантом схемы. Прошивку с прерываниями от компаратора я проверил только с AtMega88, с AtMega8 только частично (неохота было припаивать дополнительные детальки), но ручаюсь на 95%, что она будет работать.
Более того, AtM8 я заменил на AtM88, т.к. AtM8 у меня всего одна, а 88 около 30шт. К тому же, я её уже столько раз «прошил», что скоро ресурс её (10 000раз) будет исчерпан и где-то я читал, что такие МК уже ненадёжны. Поэтому если, что и появится новое, то протестировать на AtMega8 не смогу. Лучше всего в данных схемах применить AtMega 48, она дешевле всех и её можно разогнать до 24МГц (с изменениями в прошивке) и тогда с прерываниями по компаратору можно будет «потягаться» с UHU. Если надо могу указанны выше прошивки скомпелировать под AtMega48.
При настройке в ServoTuning значения для Вашего двигателя сохраняйте в нулевом банке, т. к. стартует с него.
----------------------------------
Хотелось ещё приспособить исходник smc3a от Чена, но потратив пару вечеров добился только работы в режиме ШИМ. В других режимах предположительно не работает из-за нестыковки с данными из ServoTuning или у меня «мозгов» не хватает. Время поджимает – оставил до лучших времён.
Также можно было бы для «скорострельности» изменить подпрограмму умножения – использовать аппаратное умножение (есть только в AtMegaх), но тоже наверное останется для потомков…
… Уход потому что время сервоцикла 200 мкс…
Время сервоцикла у Художника равно 1мс, а не 200мкс. Я пробовал 200мкс, вроде всё работает, но настроить в ServoTuning почему-то оказалось труднее и движок как-то по другому звучит. Замучился подбирать коэффициенты. И также из-за не достатка времени оставил это.
Все изменения в прошивках и в схеме – на плате я проверял «навесным» монтажом. Так что печатки с изменениями нет.
stano4nek буду рад, если Вы примете “эстафетную” палочку и продолжите усовершенствовать этот сервоконтроллер.
stano4nek буду рад, если Вы примете “эстафетную” палочку и продолжите усовершенствовать этот сервоконтроллер.
Да, конечно. Я так и буду делать и разбираться и усовершенствовать.
По поводу моей проблемы. Может у меня какието проблемы с компилятором в Аврстудии, не сталкивались?
Спасибо!
Я пользуюсь AVR Studio ver. 4.14 Build 589. Раньше каким то другим пользовался, там были «глюки». Но если Вы «зашиваете» мой скомпилированный hex, то отладчик тогда не причём.
stano4nek буду рад, если Вы примете “эстафетную” палочку и продолжите усовершенствовать этот сервоконтроллер.
Сейчас зашил чистый ваш HEX файл, работает как и у меня. Значит проблема не в компиляторе.
И еще - по вашей новой схеме с FT232R - рвботать не будет, точнее будет но будет постоянно зависать FT232R и изза наводок от двигателя. Ее надо ставить с опторазвязкой, чтобы отделить земли ПК и серводрайвера. Я на этом собаку съел.
И еще - по вашей новой схеме с FT232R - рвботать не будет, точнее будет но будет постоянно зависать FT232R и изза наводок от двигателя. Ее надо ставить с опторазвязкой, чтобы отделить земли ПК и серводрайвера. Я на этом собаку съел.
Спасибо. Поэтому наверное, у меня UniBox на FT232BM часто зависает, иногда с 10 попытки соединяется. Схемкой с опторазвязкой не поделитесь?
Сейчас зашил чистый ваш HEX файл, работает как и у меня. Значит проблема не в компиляторе.
Fuse-биты правильно установлены? Сравните с ScreenShot, которые в архиве выше. Может из за них что-нибудь?
Спасибо. Поэтому наверное, у меня UniBox на FT232BM часто зависает, иногда с 10 попытки соединяется. Схемкой с опторазвязкой не поделитесь?
Конечно с удовольствием!
Но все равно это тоже не 100% вариант, будут глюки. Чтобы совсем было нормально - надо делать опторазвязанный интерфейс на RS485 - не зря его в промышленности используют.
Но все равно это тоже не 100% вариант, будут глюки. Чтобы совсем было нормально - надо делать опторазвязанный интерфейс на RS485 - не зря его в промышленности используют.
Да, конечно 485 лучше, у меня на работе один частотник от компа по нему управляется. Провод проходит около движка - помех много, но связь устойчивая.
Но для того, чтобы один раз настроить сервопривод, преобразователя USB/RS485 - RS485/UART наверное для этого контроллера уже лишнее.
Спасибо за схему, сам я уже собирать не буду, нет ADUM в наличии, “помучаюсь” без опторазвязки. В будующем, буду учитывать это.
И еще - по вашей новой схеме с FT232R - рвботать не будет, точнее будет но будет постоянно зависать FT232R и изза наводок от двигателя. Ее надо ставить с опторазвязкой, чтобы отделить земли ПК и серводрайвера. Я на этом собаку съел.
А если настраивать от ноутбука при его автономном питании?
А если настраивать от ноутбука при его автономном питании?
Глючит все время стоит стартануть двигатель. Пока двигатель не работает все хорошо, чтот запусть сразу ошибки. Особенно хорошо видно когда в режиме ШИм крутите движок влево вправо - на больших скоростях тут же вылезает ошибка связи.
FTDI даже оталивается стоит только массу станка соединить с землей ПК.
По поводу прошивки. После заливки ПО, на ножке 13(OC1A) появляется этот импульс паразитный, причем в зависимсоти от того сколько раз пощелкаеш питанием его скважность разная. Не могу понят что это.
По поводу прошивки. После заливки ПО, на ножке 13(OC1A) появляется этот импульс паразитный, причем в зависимсоти от того сколько раз пощелкаеш питанием его скважность разная. Не могу понят что это.
Попробуйте вставить подпрограмму LoadHardParamEEPROM; Загрузка параметров аппаратуры от Художника может там проблема - в разных инициализациях работы Timer1. Но в AVR STudio я смотрел после неё ничего не меняется. Пробуйте “кусками”.
Вы программатор отключаете от платы при тестировании? Если нет, попробуйте отключить.
А с новой прошивкой Servo_AtMega_TimerInt также?
“Напугали” Вы меня stano4nek про нестыковку с USB. На всякий случай “побыстренькому” собрал внешний преобразователь RS-232/UART на ST232BN (MAX232), т.к. на станке (компе) куда буду устанавливать 2 рабочих COM порта.
stano4nek Вы связываете комп с сервоконтроллером по USB? Если да, то попробуйте через нормальный комп порт. Возможно в Вашей конструкции глюки пропадут.
Сегодня я спаял опторазвязку между своим UniBox (FT232) и контроллером. Т.к. у меня ADUM нет, то попробовал на оптронах. Взял кусочек отсюда caxapa.ru/sch/rs232.html. На своих любимых РС817 связи совсем нет, а HCPL-2531 связь есть, соединяеться хорошо, НО появились глюки наподобие, тех которые Вы описывали. При перемещении движка в ШИМ иногда резко стартует (не всегда), в режиме скорость немного поуправляется, затем перестаёт “слушаться” , движок крутиться, связь пропадает - переключениями режимами связь восстанавливается.
Глюков гораздо больше, чем просто без опторазвязки, но возможно это из-за HCPL-2531.
Правда это не объяснет, почему у Вас это зависит от прошивки. Подпрограммы связи идентичны.
Правда это не объяснет, почему у Вас это зависит от прошивки. Подпрограммы связи идентичны.
Но объясняет другое. После перепрошивки МК всё равно стартует с “нуля” (после Reset), а после выкл.-вкл. питания связь с FT232 нарушается.
Но объясняет другое. После перепрошивки МК всё равно стартует с “нуля” (после Reset), а после выкл.-вкл. питания связь с FT232 нарушается.
Все вроде заработало, был видимо подгорелый микроконтроллер. Я его поменял и все ОК.
По поводу связи с ПК - работаю только с СОМ, УСБ глючит. Собирал опторазвязку на 6n137 - работает намного лучше чем без нее но все равно не идеал.
Все вроде заработало, был видимо подгорелый микроконтроллер. Я его поменял и все ОК.
Странно как-то, но как поётся в одной песенке: …и невозможное - возможно…
А Вы не пробовали мою последнюю прошивку? Только светодиодики от выводов 15-17, про которые Вы упоминали, надо будет отключить, иначе может не заработать.
Хай.
У меня вопрос по силовой части привода на УХУ.
Собственно там два варианта: до 60 Вольт и до 160 Вольт, зависит от половиков , само - собой.
В 60-и вольтовом стоят IRF 540N, по данным максимальное напряжение 100 Вольт, я собираюсь подать 75 Вольт,
Там никаких “граблей” не возникнет?
Второе:
Есть у меня пара DC двигунов на 220-240 Вольт, сервы, но по описанию УХУ надо подавать напряжение процентов на тридцать больше, хотелось бы эти двигуны на шпиндель поставить и управлять УХУшкой.
Что посоветуете поставить, в смысле какие полевики? И как быть с напряжением?
И третье:
Есть транс от блока питания, выдавал он +/- 75 Вольт со средней точкой, мне надо просто 75 Вольт -
надо разьеденить среднюю точту и соединить “начало-начало” и “конец-конец” - тогда будет 75 Вольт и
двойной ток - это правильно? Или я опять чтонибудь забыл/попутал.
Подскажите пожалуйста.
В первом вопросе, никаких граблей не будет.
Во втором вопросе, ответить сложнее. Я просто не знаю всех транзисторов. А вот с напряжением уже серьезно. При таких напряжениях на конденсаторах, они смертельно опасны. Мой совет, избегай таких напряжений.
В третьем вопросе, разъеденить и соединить начало с началом, конец с концом. Все правильно, ничего не напутал. Только убедись, что напряжения на каждой обмотке одинаковы. Если нет, выровняй.
Попробуй IRF332, IRF333, IRF340-343, IRF341 у них 350- 400 вольт и ток от 4,5 ампер до 10.
- IRF540N подойдет по напряжению, для Ваших 75В.
При этом RC цепочка и защитные диоды, на выходе , должны подавлять паразитные высоковольтные импульсы.
А какую мощность хотите снимать? У IRF540N 120Вт при 25 градусах!!! Хватит ли?
Транзисторы можно и другие ставить. Я для экпериментов ставил IRFP90N20D (абсолютно максимальные параметры: 94А, 580Вт, 200В при
25 градусах 😋 ) , крутил движок на 4Н.
- Надо искать высоковольтные полевики (вроде на 300В есть) или ставить IGBT.
Если транзисторы будут по напряжению подходить, пробуйте на номинальном напряжении погонять, а потом и на повышеном попробовать можно.
Посмотрите на форуме CNCZONE.COM.
Нужно экспериментировать!!!
- Какое железо? Как намотано???
Отключите все от вторичек. В первичку подбирайте предохранитель ниже номинала, но чтоб не горел при включении и на холостом ходу.
Включайте “начало-начало” и “конец-конец”. Если будет косяк, полетит педохранитель, тогда поменяете фазировку.
Удачи