В принципе, многое уже сказали, поэтому только обобщу и дополню:
— Основное непонимание при работе с шаговым двигателем, это то, что он питается током, а не напряжением, и задача всех микросхем и готовых устройств это поддержание тока через обмотки (ну и вращение результирующего вектора с учетом дробления) чоппером с фиксированной или настраиваемой частотой. По сути, отсюда все эти проблемы с вибрацией и потерей момента. И питание для такого стабилизатора нужно чем больше, тем лучше (есть готовые драйвера и на 100В). Иначе момент начнет падать при скорости вращения хоть немного больше 0, тк индуктивность ограничивает скорость нарастания тока(=момента). Да, я видел, что в ТЗ стоит 12В, но это ваша задача как исполнителя объяснить, почему это не подходит. Но, допустим, питание не поменять вообще никак, даже мощный повышающий преобразователь поставить нельзя (хм, почему ?). тогда…
— Основное непонимание номер 2 — каждой (категории) задаче свое решение, и шаговики применяются там, где заранее известен диапазон скорость/момент, и под этот диапазон выбирается и шаговик, и драйвер, и напряжение питания. Если у вас появляется какая-то рука человека с неизвестными характеристиками и вы пытаетесь компенсировать это энкодером, то шаговик тут становится лишним. На рынке представлено достаточно двигателей (как синхронных, так и коллекторных) с энкодером на одном валу и редуктором на другом (Faulhaber, Maxon, да хотя бы GYEMS), тем более 3Н*м это очень небольшое требование. Далее двигатель подключается к готовому блоку управления, который подключается к вашему микроконтроллеру управления объектом и все.
Ну, и почему я все это написал:
Думаю, эта статья принесет практическую пользу и поможет читателю лучше понять принципы управления шаговым двигателем.
— извините, нет. Вы собрали почти все грабли, не разобравшись в теории.
И нет, готовые микросхемы/драйверы не имеют отношения к ШИМ вообще.
Ну а чтобы быть не совсем голословным, проект, реализованный пару лет назад: платформа колесная на рельсах, примерно 21кг весом, управляется с пульта по типу взад/вперед или до заданного расстояния, вес не меняется, внешних воздействий нет, диапазон передвижения около 8м, скорость 0,45 м/с. Для движения выбран шаговик NEMA23H76 на ~1Н*м, готовый драйвер типа step/dir с регулировкой максимального тока до 3А, микрошагом до 16. Управляется с микроконтроллера pic16f887, который рассчитывает ускорения, расстояние торможения, посылает импульсы (до 24кГц), показывает, что происходит оператору на дисплей. При этом время разгона 0,51с с ускорением около 0,87 м/с^2 и усилием 18,3Н.
Не то, чтобы я страдал синдромом «в интернете кто-то не прав», но уж очень не люблю такие категоричные комментарии, ничем не подкрепленные, поэтому не поленился, и собрал на макетке следующую схему (номиналы такие же, светодиод так же от 2.7В меандра работает, оптопара pc817b от Sharp):
схема
Как и ожидалось, модель в Ltspice немного кривовата, даже ISIS симулирует лучше, но схема вполне рабочая, вот осциллограмма с токового компаратора:
pc817
Единственный оптрон с выводом базы, который нашелся у меня в закромах, это аот128а, схему почти не менял, только добавил базовый резистор в 47к, результат еще лучше:
aot128a
В принципе, можно резистор к светодиоду заменить на (1к || (50..200 ом + 1н)), но принципиально ситуацию это не изменит. Диод шоттки в базу-коллектор тоже не влияет, ведь потенциал коллектора не меняется. Это во 1.
Во 2-х, комментирующим про ток светодиода, почитайте, пожалуйста даташит на оптрон повнимательнее, и посмотрите на схему еще раз.
По температуре: поплывет в основном только CTR, это решается правильным выбором порога компаратора с запасом для необходимого диапазона.
Вывод: вполне годная схема, добавлением пары корпусов SC-70 можно протащить какой-нибудь UART 115200 или даже немного больше или SPI в одну сторону, а для развязки ШИМа, использовать рискованно.
— Основное непонимание при работе с шаговым двигателем, это то, что он питается током, а не напряжением, и задача всех микросхем и готовых устройств это поддержание тока через обмотки (ну и вращение результирующего вектора с учетом дробления) чоппером с фиксированной или настраиваемой частотой. По сути, отсюда все эти проблемы с вибрацией и потерей момента. И питание для такого стабилизатора нужно чем больше, тем лучше (есть готовые драйвера и на 100В). Иначе момент начнет падать при скорости вращения хоть немного больше 0, тк индуктивность ограничивает скорость нарастания тока(=момента). Да, я видел, что в ТЗ стоит 12В, но это ваша задача как исполнителя объяснить, почему это не подходит. Но, допустим, питание не поменять вообще никак, даже мощный повышающий преобразователь поставить нельзя (хм, почему ?). тогда…
— Основное непонимание номер 2 — каждой (категории) задаче свое решение, и шаговики применяются там, где заранее известен диапазон скорость/момент, и под этот диапазон выбирается и шаговик, и драйвер, и напряжение питания. Если у вас появляется какая-то рука человека с неизвестными характеристиками и вы пытаетесь компенсировать это энкодером, то шаговик тут становится лишним. На рынке представлено достаточно двигателей (как синхронных, так и коллекторных) с энкодером на одном валу и редуктором на другом (Faulhaber, Maxon, да хотя бы GYEMS), тем более 3Н*м это очень небольшое требование. Далее двигатель подключается к готовому блоку управления, который подключается к вашему микроконтроллеру управления объектом и все.
Ну, и почему я все это написал:
— извините, нет. Вы собрали почти все грабли, не разобравшись в теории.
И нет, готовые микросхемы/драйверы не имеют отношения к ШИМ вообще.
Ну а чтобы быть не совсем голословным, проект, реализованный пару лет назад: платформа колесная на рельсах, примерно 21кг весом, управляется с пульта по типу взад/вперед или до заданного расстояния, вес не меняется, внешних воздействий нет, диапазон передвижения около 8м, скорость 0,45 м/с. Для движения выбран шаговик NEMA23H76 на ~1Н*м, готовый драйвер типа step/dir с регулировкой максимального тока до 3А, микрошагом до 16. Управляется с микроконтроллера pic16f887, который рассчитывает ускорения, расстояние торможения, посылает импульсы (до 24кГц), показывает, что происходит оператору на дисплей. При этом время разгона 0,51с с ускорением около 0,87 м/с^2 и усилием 18,3Н.
Как и ожидалось, модель в Ltspice немного кривовата, даже ISIS симулирует лучше, но схема вполне рабочая, вот осциллограмма с токового компаратора:
Единственный оптрон с выводом базы, который нашелся у меня в закромах, это аот128а, схему почти не менял, только добавил базовый резистор в 47к, результат еще лучше:
В принципе, можно резистор к светодиоду заменить на (1к || (50..200 ом + 1н)), но принципиально ситуацию это не изменит. Диод шоттки в базу-коллектор тоже не влияет, ведь потенциал коллектора не меняется. Это во 1.
Во 2-х, комментирующим про ток светодиода, почитайте, пожалуйста даташит на оптрон повнимательнее, и посмотрите на схему еще раз.
По температуре: поплывет в основном только CTR, это решается правильным выбором порога компаратора с запасом для необходимого диапазона.
Вывод: вполне годная схема, добавлением пары корпусов SC-70 можно протащить какой-нибудь UART 115200 или даже немного больше или SPI в одну сторону, а для развязки ШИМа, использовать рискованно.