ШИМ против линейного регулятора тока в микрошаговом драйвере для униполярного двигателя.
так можно регулировать усиление в каналах ОС по току.
А если подумать?
Если установить опорное напряжение для L297 на максимальное значение тока в обмотке, то снизить ток в обмотке можно только усилением сигнала с Rизм. Соответственно, огребем и усилим все импульсные помехи. И, при этом, в любом случае будет невозможно получить нулевой ток в обмотке.
Другая причина в том, что нет никакого смысла вообще использовать L297 для микрошага - она не заточена под это - да и схема с генераторами тока получается проще, дешевле и стабильнее.
В самом деле, ОУ можно взять практически любой, транзистор TIP122 или что-то аналогичное - тоже не дефицит и достаточно дешев. При этом никаких проблем с установкой требуемого уровня тока в обмотке, скорость шагания можно установить достаточно большой - я уже пробовал на 4SHG до 900 шагов/сек., это 14400 микрошагов/сек. И планирую попробовать довести с плавным разгоном до 1500 шагов/сек (24000 микрошагов/сек.).
Какая там L297 с ее частотой ШИМ 18-20 кГц? У нее один период генератора будет длиннее времени микрошага, что уж говорить про регулирование? Нет, эта идея был мертва еще до рождения 😉
P.S. В предыдущем посте в ссылке на Linistepper ошибка, должно быть
Tech*ref без звездочки внутри.
<a href=“www.piclist.com/Tech*ref/io/stepper/…/index.htm” target=“www.piclist.com/Tech*ref/io/stepper/…/index.htm”></a>
Почему то движок упорно ее туда вбивает…
А если подумать?
<a href=“www.piclist.com/Tech*ref/io/stepper/…/index.htm”</a>
а вы с этого сайта схему собираете? или свою?
а вы с этого сайта схему собираете? или свою?
Мой пост под №3 в этой ветке:
“На двух ШИМ генераторах PIC16F873 сделана генерация SIN/COS (16 микрошагов), на сдвоенном 5-ти вольтовом rail-to-rail ОУ MCP6022 и четырех TIP122 сделаны генератоы тока, питающие обмотки. Для выбора фазы вместо транзисторов BC337 (как в Linistepper) использованы выходы PIC.”
Т.о. очевидно, что схема своя.
Я уже писал, что у Linistepper есть недостатки не связанные с необходимостью рассеивать много тепла:
- неточно резисторами/диодами формируется аппроксимация SIN, сложно настраивать уровни,
- параметры генератора тока зависят от конкретных экземпляров транзисторов TIP122,
- температурная нестабильность,
- регулировка тока производится подбором мощных постоянных резисторов (это очень неудобно).
Я не знаю, почему автор пошел по этому пути. Возможно это были его первые эксперименты с микроконтроллерами. Ничем другим объяснить любовь к PIC16F84 (на котором первоначально был сделан Linistepper) я не могу - его использование явно неадекватно поставленной задаче.
У меня схема лишена всех этих недостатков. Если будет достаточно много желающих - нарисую и выложу в свободный доступ. Однако сразу предупрежу, что практического толка с этого будет пока немного: - работа над схемой не закончена, продолжаю искать пути снижения рассеиваемой мощности,
- уже имеющаяся прошивка микроконтроллера чисто тестовая,
- вращение двигателя управляется кнопками, а не от компьютера, так удобнее отлаживать железо и прошивку микроконтроллера.
У меня схема лишена всех этих недостатков. Если будет достаточно много желающих - нарисую и выложу в свободный доступ. Однако сразу предупрежу, что практического толка с этого будет пока немного:
- работа над схемой не закончена, продолжаю искать пути снижения рассеиваемой мощности,
- уже имеющаяся прошивка микроконтроллера чисто тестовая,
- вращение двигателя управляется кнопками, а не от компьютера, так удобнее отлаживать железо и прошивку микроконтроллера.
Желающих много, потому что многи не дружат электроникой. Я например купил у imafania контроллер на PIC с полевиками на выходе для униполярного двигателя, ну и что самое что мог разогнать до 400 мм мин, а дальше уходит в резонанс. Не мог разобраться, знания не хватает. Еще греются как утюги - когда греются, самое смешное иногда и не греются. Хотел с продавцом проконсультироваться, а он не отвечает, продавать продает. 😦 . Для меня главное что бы контроллер выдавал стабильно мощность и динамику, а лишнее тепло можно гасить радиаторами и куллерами если это приемлемо. Вот такое мое дилетанское мнение.
продолжаю искать пути снижения рассеиваемой мощности
синусоиду создавайте ШИМ-ом.
синусоиду создавайте ШИМ-ом.
- Антон, Вы опять невнимательно читаете:
"На двух ШИМ генераторах PIC16F873 сделана генерация SIN/COS (16 микрошагов)… " - То, что SIN/COS формируются ШИМ а не линейным ЦАП, никак не поможет снизить рассеиваемую мощность генератора тока, работающего в линейном режиме. Фактически ШИМ это просто однобитная разновидность ЦАП.
Ключевой режим не предлагать! Я не хочу (по крайней мере сейчас) связываться с ключевыми режимами регулирования тока.
…ну и что самое что мог разогнать до 400 мм мин, а дальше уходит в резонанс.
Что значит 400 мм мин?
Если 400 полных оборотов в минуту, да еще при 200 шагов на оборот, то выходит совсем неплохо:
(400/60)*200=1333 шагов в секунду!
Для ДШИ200-2, 200-3 максимальная частота приемистости 1000 Гц (шагов в секунду).
А если, все же, мм - то пересчитайте их в обороты, исходя из параметров своей механики.
Может, все же, все совсем не так плохо как кажется?
Кстати, неплохое средство для повышения скорости шагания - увеличение напряжения питания двигателя. У вас оно какое?
Кстати, неплохое средство для повышения скорости шагания - увеличение напряжения питания двигателя. У вас оно какое?
Полный шаг или полушаг, или что еще выдает контроллер не знаю. Продовец не ответил, я сам не удосужился посчитать. Напряжение подавал 12в от компьютерного блок питания, гонял через ТурбоСНС, выставляя максимальную частоту и длину импульса, на котором стабильно шагал движок, без пропуска и резонанса, ТС пересчитывает и показывает скорость. Не помню какую частоту задавал, но скорость макимальная без сбоя получилась 400 мм/мин при шаге винта 2мм. Движок униполярный 3в, 3А, на 1ом между центральным и крайними проводами.
Полный шаг или полушаг, или что еще выдает контроллер не знаю. Продовец не ответил, я сам не удосужился посчитать. Напряжение подавал 12в от компьютерного блок питания, гонял через ТурбоСНС, выставляя максимальную частоту и длину импульса, на котором стабильно шагал движок, без пропуска и резонанса, ТС пересчитывает и показывает скорость. Не помню какую частоту задавал, но скорость макимальная без сбоя получилась 400 мм/мин при шаге винта 2мм. Движок униполярный 3в, 3А, на 1ом между центральным и крайними проводами.
Получается 400/2=200 (об/мин)
Если двигатель делает полный оборот за 200 шагов, то выходит:
(200/60)*200= 667 (шагов/сек) - совсем наплохо для 12 В питания.
А какое напряжение двигателя? Если на нем не написано, можно посчитать:
- померить сопротивление обмотки фазы
- умножить сопротивление на ток (3 А)
По моей практике с маломощными ДШИ200, 4SHG выходило, что напряжение нужно выше 20 В, чтобы он шагал 1000 и больше в секунду.
Попробуйте поднять напряжение питания двигателей, должно помочь.
А какое напряжение двигателя? Если на нем не написано, можно посчитать:
- померить сопротивление обмотки фазы
- умножить сопротивление на ток (3 А)
Выше писал напряжение 3В, ток 3А, сопротивление одной ветки обмотки 1ом, униполярный.
Выше писал напряжение 3В, ток 3А, сопротивление одной ветки обмотки 1ом, униполярный.
Старость, маразм, слепота… 😉
Сложно это, заочно что-то советовать.
По параметрам, на первый взгляд, должно быть достаточно 12 В.
А он вообще с какой скоростью может шагать? Что-нибудь известно?
Может там ротор пару килограмм весит, да еще нагрузка - обязательно нужно плавно разгонять.
Предусмотрен в программе плавный разгон (я то с CNC софтом не знаком, мне предстоит самому его писать, поэтому и вопрос такой)?
Предусмотрен в программе плавный разгон (я то с CNC софтом не знаком, мне предстоит самому его писать, поэтому и вопрос такой)?
Да, есть опция где шаг разгона можно выставлять. И зачем писать, есть отличный TurboCNC, бесплатный поддерживает 8 координат. Простой до чертиков. 😃
Да, есть опция где шаг разгона можно выставлять. И зачем писать, есть отличный TurboCNC, бесплатный поддерживает 8 координат. Простой до чертиков. 😃
Может попробовать поманипулировать разгоном?
Моя задачка отличается от CNC в том смысле, что не фрезер/гравер/сверлилка/струна и т.п.
Нужно просто перемещать головку от заданной координаты к другой с максимально возможной скоростью и плавностью. Управление должно быть обязательно под Windows. По моему, проще написать специальную программу, которая бы просто слала очередные координаты контроллеру, а он уж сам крутил движок, чем приспосабливать TurboCNC. Хотя не буду утверждать категорически.
GOOD DAY
ATLab, при всем уважении
По моему разумению двигатель шаговый
и естно должен шагать или полушагать.
Дальнейшее дробление шага никакой практической
пользы для шаговика не имеет. (потеря мощности, нестабильность при нагрузках и т.п.)
Пусть кто нить напишет что он режет на 1/16 шага или 1/4 шага?
Например при шаге винта 2мм (в режиме полного шага)
получим точность 2/200= 0,01мм, в полушаге 2/400=0,005мм
думаю достаточно для станка хобийного класса.
для плавности муфты (судя по постам) вполне достаточно.
Это не высказывание против Вашей идеи
но было бы неплохо сделать разгон на 1/16 шага
и плавно переходить на 1/8 - 1/4 - 1/2 - полный шаг.
для контроллера работающего в линейном режиме
это возможно?
такой режим думаю был бы не плох.
GOOD LUCK
Это не высказывание против Вашей идеи
но было бы неплохо сделать разгон на 1/16 шага
и плавно переходить на 1/8 - 1/4 - 1/2 - полный шаг.
для контроллера работающего в линейном режиме
это возможно?
такой режим думаю был бы не плох.GOOD LUCK
Я против нечеого не имею ,но думаю что это невозможно ! т.к Вы в софт-е ставите кол-во шагов на оборот а следовательно если Ваш контроллер будет менять это значение то и будет получаться на выходе некорректное изделие. Есть конечно вариант сделать умный контроллер жрущий Ж-код и конролирующий изменение дробления шага.
По моему разумению двигатель шаговый
и естно должен шагать или полушагать.
Дальнейшее дробление шага никакой практической
пользы для шаговика не имеет. (потеря мощности, нестабильность при нагрузках и т.п.)
Пусть кто нить напишет что он режет на 1/16 шага или 1/4 шага?
А я и не собираюсь резать, у меня совсем другая задача. Я так и написал об этом в предыдущем посте.
Насчет потери мощности и нестабильности не совсем согласен: наоборот, момент всегда имеет постоянное значение (в идеале), тогда как в полушаговом режиме без компенсации момента (обычное дело в простых контроллерах на L297) имеет место постоянное колебание величины момента - из-за того, что под током находится 2 или 1 катушка.
Например при шаге винта 2мм (в режиме полного шага)
получим точность 2/200= 0,01мм, в полушаге 2/400=0,005мм
думаю достаточно для станка хобийного класса.
для плавности муфты (судя по постам) вполне достаточно.
Это у Вас винт с шагом 2 (4) мм, и скорость перемещения, скажем, 10 (20) мм/сек.
А мне нужно хотя бы 300 мм/сек.
Это не высказывание против Вашей идеи
но было бы неплохо сделать разгон на 1/16 шага
и плавно переходить на 1/8 - 1/4 - 1/2 - полный шаг.
для контроллера работающего в линейном режиме
это возможно?
такой режим думаю был бы не плох.
Переключение размера шага при достижении определенной скорости можно сделать и в контроллере,
репу почесать и сделать. Проблема в другом - как это будет стыковаться с управляющей программой?
По-моему, никак. Все доступные мне схемы задают параметр шага перемычками/переключателями, в управляющих сигналах видел только DIR/STEP, изредка переход на пониженную мощность при простое. Я, правда, не знаток CNC софта, пусть меня поправят, если не то ляпнул 😃
Режим регулирования тока - ШИМ или линейный - никак не влияет на функционал контроллера.