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

chkmatulla

Я думаю что время не обязательно вводить, достаточно и количества шагов. Если например, нагрузка на инструменте возрастет но, не остановит инструмент и количество шагов, на которое допустимо отставание или опережение будет оставаться в пределах допуска, таймер может выключить машину, хотя все в пределах нормы.
А вот сколько шагов, это зависит от конкретной ситуации. Я думаю что больше 5.000 не потребуется. По UHU это почти 2,5 оборота двигателя. Хотя, запас карман не тянет… Опять же, процессору нет нужды расходовать ресурсы, на обработку команд для таймера, imho.

arisov77

Но тогда в ситуации когда привод упрёться и затем через какое-то время прекратятся импульсы не превысив 5 000 – 20 000 шагов ошибки не произойдёт, а движок может «подгореть». Вот поэтому я и ввёл задержку по времени. А если возрастёт нагрузка на инструмент и двигатель не будет успевать, то это значит, что двигатель не «осиляет» и с такой нагрузкой он тоже долго не проработает. Чтобы не было такой ситуации, надо двигатель тогда мощнее или понизить скорость обработки.
Немного поразмыслив, я прихожу к выводу, что 1 порог слежения рассогласования надо устанавливать чётвертой части числа импульсов на 1 оборот (четверть оборота движка). Для энкодера 2000имп/об значит 500 шагов. Или может всё таки другие значения?
И мне кажется если будет такое отставание, тогда, например при обработке круга из-за разных нагрузок на привода X и Y получиться овальчик.
А МК не расходует время, у меня программный счётчик, работающий не по прерываниям. А выставление флагов занимает мало времени.

chkmatulla

А почему импульсы прекратятся ? Я полагал что, эти 50.000 циклов отсчитывает сам контроллер, на основании заданного и действительного положения инструмента. И если движок встал… Кажется дошло. А чем тогда занимается WatchDog ? Разве это не его область ?

Baha

Если watchdog включен, то прикладное программное обеспечение должно через определенный промежуток времени сообщать ему (путем вызова специальной процедуры) о своей функциональности. Если этого не происходит, например, по причине “зависания” программного обеспечения, то сторожевой таймер автоматически сгенерирует сигнал сброса, тем самым, вызвав его перезагрузку. Кроме того, сигнал сброса может быть инициирован самим программным обеспечением, что может быть полезно при обнаружении каких либо ошибок, устранение которых возможно путем перезагрузки системы.

chkmatulla

Идея с таймером в общем- то не плохая. Я пару моментов уточню. При упоре двигатель не подгорит по двум причинам. Первая, ограничение по току и вторая это сам принцип работы. Ток через двигатель идет всегда. При покое половину цикла в одном направлении, втору

chkmatulla

Что- то глюкнуло…
Идея с таймером в общем- то не плохая. Я пару моментов уточню. При упоре двигатель не подгорит по двум причинам. Первая, ограничение по току и вторая, это сам принцип работы. Ток через двигатель идет всегда. При покое, половину цикла в одном направлении, вторую половину, в другом. При рабочих ходах меняется соотношение в цикле. Если конечно напряжение питания выбрано правильно.
У Ули кстати, тоже нет сообщения об ошибке в такой ситуации. Контроллер упорно толкает движок.
А допустимое количество импульсов, для ошибки, каждый может сам задать. Под свои нужды.

Creolka

Хай.
Спрошу здесь.
Этот UHU контроллер может управлять тормозами на “серве”, есть ли там такая возможность?
Если нет, то как это можно осуществить? Управление тормозом.
Или там тормоз нужен только в выключеном состоянии? Ну скажем чтобы Z в низ не уехала.

Хочу поменять ШД-привода на “серво” - шаговики надоели своими трелями.

Baha
Creolka:

Хай.
Спрошу здесь.
Этот UHU контроллер может управлять тормозами на “серве”, есть ли там такая возможность?
Если нет, то как это можно осуществить? Управление тормозом.
Или там тормоз нужен только в выключеном состоянии? Ну скажем чтобы Z в низ не уехала.

Хочу поменять ШД-привода на “серво” - шаговики надоели своими трелями.

Валентин, привет. Вот здесь продаются готовые наборы, не дорого. www.cadcamcadcam.com/cnckits.aspx

chkmatulla

В общем- то там это не предусмотрено но, imho, серво в тормозах не нуждается. Она постоянно находится под действием электромагнитных сил. Другими словами, если серво достигла заданной точки то, теперь контроллер старается удержать вал двигателя в этом положении. И сдвинуть его из него достаточно трудно. Во всяком случае нужно превысить момент вращения двигателя. Если тормоз нужен когда контроллер отключается то, можно задействовать либо по сигналу Ошибка, либо то же реле, которое отключает питание контроллера.

Creolka

Вальтер и Бакыт, спасибо вам.
В принципе мне надо только по Z, голова весит 6 кг.
и на выключеном станке боюсь поплывёт.

chkmatulla

Тогда тормоз по питанию контроллера запитывать. Можно и другие варианты придумать.

Baha
Creolka:

Вальтер и Бакыт, спасибо вам.
В принципе мне надо только по Z, голова весит 6 кг.
и на выключеном станке боюсь поплывёт.

У американцев через редуктор сидит.

Creolka

У меня тоже будет, правда не знаю пока 1:2 или 1:3.
Шаг винта 4мм. Возможно что и не понадобится.

arisov77
chkmatulla:

Идея с таймером в общем- то не плохая. Я пару моментов уточню. При упоре двигатель не подгорит по двум причинам. Первая, ограничение по току и вторая, это сам принцип работы. Ток через двигатель идет всегда. При покое, половину цикла в одном направлении, вторую половину, в другом. При рабочих ходах меняется соотношение в цикле. Если конечно напряжение питания выбрано правильно. …А допустимое количество импульсов, для ошибки, каждый может сам задать. Под свои нужды.

Ток ограничения надо выставлять чуть меньше максимального. Иначе никакой динамики. В данном контроллере, в отличии от UHU (если не ошибаюсь), ток через двигатель и транзисторы при покое прекращается совсем. И следовательно, они в этот момент не греют атмосферу. При этом нижние транзисторы открыты - как бы происходит притормаживание через них. Если не трудно посмотрите в UHU контроллере, какое напряжение на 16 выводе (PB4) микроконтроллера в покое. Если около 0В, то драйвер включен и тогда действительно ШИМ 50/50.
Путём эксперементов выяснил, что если в Mach выставляешь максимальное ускорение и максимальную скорость, то даже при малейшем прикосновении к валу двигателю (при нагрузке) контроллер переходит в состояние Error (при установке 1/4 от числа имп/об и с алгоритмом, который я описывал ранее). И если поставить ещё меньшее значение, то уже при старте (при разгоне) происходил сбой. При увеличении числа шагов до равного числа имп/об. контроллер переставал отключаться, но тогда защита становилась “грубее”.
Поэтому изменил алгоритм: если нет импульсов по Step, а выход ШИМ включен и рассогласование превышает 3 шага, то запускается таймер и если в течении 12 сек. импульсы со Step не поступят или двигатель не достигнет нужной позиции, то в Error. Если рассогласование достигнет 20 000 шагов раньше 12 сек, то в Errorr – сразу, без задержки. Пока оставлю эти значения, думаю, что для большинства применений они сгодятся.

chkmatulla

В контроллере UHU на 16 ножке 4,88 вольта. ШИМ включен. Об этом написано и на схеме 1= Endstufe ein.

arisov77
chkmatulla:

В контроллере UHU на 16 ножке 4,88 вольта. ШИМ включен. Об этом написано и на схеме 1= Endstufe ein.

Да я ошибся, при лог.1 разрешена работа вых. ключей.

Zon:

Андрей как человек разбирающийся в программировании что можно сказать вот по этому контроллеру собран на dspic30f4012 usinages.com/carte-servos-a-dspic-t648-165.html

Я с немецким, французским и Си не особо силён. Иногда, быстрее получается свою программку написать, чем разбираться с другой и гадать, что автор хотел «изобразить». Я с Чено-Художнивской только недавно разобрался, так что ничего Вам сказать не могу. Теоретически должна лучше, т.к. МК «заточен» под управление двигателями и имеет «на борту» квадратурный кодер. Если не трудно переведите в картинку и выложите здесь схему этого сервоконтроллера.

stano4nek

уважаемый arisov77!

Подскажите пожалуйста по своей прошивке. Наблюдается такая картина.

  1. Прошиваю вашей прошивкой - в режиме ШИМ, как я уже писал, скорость двигателя меняется наоборот. Если смотреть осциллографом - то на одном плече Н моста импульсы пропорционально меняют скважность - а на другом откудато появляется паразитный прямоугольный импульс с скважностью 0.5 - хотя там должен быть 0 (плечо на земле).

  2. Прошиваю прошивкой Художника - все прекрасно работает.

  3. После прошивки Художника, прошиваю вашей (без выключения питания) - ваша тоже отлично работает! Но стоит включить и выключить питание - ваша прошивка перестает работать.

Ситуация какаято абсурдная. Толи прошивка Художника чтото выставляет в памяти и ваша подхватывает, а когда выключается питание - эти настройки пропадают. Никак не пойму. Хотя я пробывал дописывать код который чистит все память - не влияет.
Может у меня чтото аппаратное не так работает, подскажите пож варианты поиска, или может вы сами сталкивались с этим.

arisov77

Наводящие вопросы:
Прошивка:

  1. С UART - ?

  2. с WatcDog - ?

  3. В режимах “Крутящий момент” и “Скорость” ползунок также влияет, или только всё таки в режиме “ШИМ” -?

У меня отличается инициализация портов. У Вас в схеме ничего к другим выводам не подключенно? Непосредсвенно на выходе МК тоже паразитный импульс? И это в обоих направлениях?

stano4nek
arisov77:

Наводящие вопросы:
Прошивка:

  1. С UART - ?

  2. с WatcDog - ?

  3. В режимах “Крутящий момент” и “Скорость” ползунок также влияет, или только всё таки в режиме “ШИМ” -?

У меня отличается инициализация портов. У Вас в схеме ничего к другим выводам не подключенно? Непосредсвенно на выходе МК тоже паразитный импульс? И это в обоих направлениях?

Смотрите.

  1. Отлично работает оригинальная Художника прошивка. Но есть подвох. Если я начинаю ее ковырять - пусть просто меняю таблицу его прерываний на стандартную (у него не очень красиво сделано, нет компенсации если случайно будет прыжок на неверный адрес) - то после этого прогрмма начинает некорректно работать в режиме скорость - дрожит вал, хотя праметры пида теже самые. В ШИм работает нормально. Это странно, наводит на мысль о том что гдето стоит защита кода по длинне или прочее. Вы с этим не сталкивались когда ее переделывали?
    Эта прошивка работает всегда, не зависимо от выключения питания.

  2. Записываю ваши прошивки из последнего архива с ватчдогом.

  3. Из этого архива прошивка Servo_mega8_int (это от Художника но исправлена таблица прерываний и порчее) - работает как при моих исправления п.1 т.е. ШИМ работает нормально а в режиме скорость - дрожит вал. Работает одинаково и не зависит от питания. не зависит от п.6

  4. Из этого архива прошивка ServoUART - как раз выдает странный лишний импульс ШИМ. зависит от п.6

  5. ServoFinishArtistInt - тоже не работает. зависит от п.6

  6. Но все ваши прошивки запускаются нормально если залить оригинальную Художника (или вашу первую Servo_mega8_int ) и не выключать питаание, а потом ваши ServoUART или ServoFinishArtistInt. При выключении питания они перестают работать.

Железная схема - как у вас, нет разницы. есть светодиоды на ножках 15 16 17. Ножка для INT1 подтянута к + (прерывание это отключено в программе, не используется ли нигде эта ножка случайно???). Потому что INT1 ножка это единственная разница.

Паразитный импульс переходит с плеча на плечо при изменении направления - т.е. это что то программное.
Раз прошивка художника работает можно сделать вывод что железо рабочее или я ошибаюсь?
Да, и к тому же уарт и все регулирование работает. Значит МК не глючит, и проблемы именно гдето в серво части программы.

паразитный импульс я смотрю прямо на ножке микроконтроллера