Т.к. возникает довольно много вопросов, касаемо работы ШИМ в данной схеме, то должен уточнить, что ШИМ в конструкции носит скорее демонстрационный характер (а не рабочий) и пригоден лишь для малых ШД, током не более 0.1-0.3А.

Параметры:
Использование универсальных сигналов Step\Dir_________Да
Предельная частота следования сигнала Step___________100кГц
Минимальная длительность сигнала Step________________1мкс
Количество каналов управления ШД____________________3
Количество каналов с ШИМ____________________________3
Частота ШИМ________________________________________до 20кГц
Режим удержания малым током________________________Soft (через 2с простоя, 25% тока)
Режимы шага________________________________________3
Ручное управление___________________________________Да (джойстик Sega MegaDrive)
Управление внешними нагрузками______________________Да (2 реле)
Подключение концевиков и кнопки EStop________________Да (3 концевых + кнопка)
Ток ШД_____________________________________________до 0.3А
Ток ШД (без использования ШИМ)______________________до 2А
Максимальное входное напряжение_____________________до 12В
Упрощённый вариант схемы контроллера:

Схема полной версии контроллера.
По этой схеме контроллер работает в режиме полушага, с переходом в режим удержания (35% тока) через 2с. МК программируется на тактирование от внутренней RC-цепочки на 8мГц.
Внимание! При использовании ATMega32 возможна некорректная обработка оси Z в режиме полушага (было два случая). Причина остаётся не выявленной.
Полная версия платы контроллера даст вам регулировку тока осей внешним аппаратным ШИМом, произвольный выбор режима шага для каждой оси, ручное управление при помощи джойстика.
Номер пина LPT Сигнал
2 Реле 1
3 Реле 2
4 Dir X
5 Step X
6 Step Y
7 Dir Y
8 Dir Z
9 Step Z
10 Стоповая кнопка EStop
11 Концевик Limit 1
12 Концевик Limit 2
13 Концевик Limit 3
18-25 Общий (минус, земля, GND)
Сигнал Step инвертированный, т.е. логической единице соответствует низкий уровень напряжения на входах контроллера. Проще говоря, управление по спаду фронта.
Линии концевых выключателей и стоповой кнопки подтянуты к плюсу питания. Т.е. в простейшем случае эти линии можно банально замыкать на землю кнопками или герконами.
Ручное управление:
Управление организованно стандартным трёх или шести кнопочным джойстиком от шестадцатибитных приставок СегаМегаДрайв или аналогов. Джойстик не требует каких либо доработок или изменений.

Возможно, ваш джойстик будет выглядеть иначе. Это нормально. За историю было множество разновидностей.
Поддерживается одновременное перемещение нескольких осей.
“Выбор скорости” можно нажимать как отдельно, так и во время перемещения осей. Функция перебирает возможные скорости (примерно 20) от медленной до быстрой, и далее по кругу.
Возврат осей в “ноль”, при нажатии кнопки, осуществляет автоматический выход всех осей в начальную позицию. Начальной позицией считается то положение, которое было зафиксировано при подаче питания на контроллер. Возврат работает не только при ручном перемещении. Возможно вернуть все оси на исходную позицию даже если перемещения производились при помощи компьютера.
Внешний вид полной версии контроллера:

Возможные вопросы:
Почему только один токосъёмный резистор на ШД? В других схемах везде по два…
Когда дело не доходит до микрошага, то нет острой необходимости в контроле тока отдельных фаз. Даже полушаг будет работать точно так же, как и в схемах с раздельным регулированием пар обмоток.
Можно ли вообще без кварца?
Особого смысла во внешнем кварце нет, т.к. контроллер отлично работает даже на тактировании от внутреннего генератора на 8мГц. На 16мГц рекомендую ставить людям с хорошим слухом, для того, что бы режим удержания не “ездил по ушам”.
А где опторазвязка? Не вредно без неё?
То, что в CNC-контроллерах называют опторазвязкой. не реализует основную свою функцию – гальваническую развязку контроллера от ПК. Кроме того, оптроны средней паршивости вызывают серьезные помехи в работе контроллеров на длительностях сигналов Step близким к 1мкс). Что по поводу безопасности – неаккуратное обращение не убережет вам LPT-порт в любом случае.
А можно не ставить защитные диоды?
Можно. А при малых мощностях ШД иногда даже полезно. Транзисторы в ключах драйвера имею защитный диод, так что, за них опасаться не стоит. А вот при токах ШД более 2А уже нужно ставить защитные диоды, а-то обратные всплески по питанию могут стать причиной зависания МК в контроллере и другим бедам.
Почему джойстик, а не клавиатура? Там же кнопок мало…
Клавиатура избыточна по своей сути. К тому же, для её обслуживания уходило ценное прерывание и некоторое время ядра, что значительно ухудшало все остальные параметры контроллера.
Архив с докай, моделью Протеуса (по упрощённой схеме), прошивкой и печаткой для полной версии в Лае качать сдесь, (зеркало).
Исходник (Bascom).
Если нужно, то вот версия прошивки без ШИМа и снижения тока в удержании. Просто транслятор из Step\Dir в параллельный вид, с джойстиком. Тактирование от внутренних 8мГц.
Список дефолтовых компонентов:
Резистор 0.1 Ом, 5Вт, керамический - 3шт.
Резистор 4.7к, 0.125Вт - 8шт.
Резистор 2к, 0.125Вт - 6шт.
Резистор 390 Ом, 0.125Вт - 14шт.
Резистор 10к, 0.125Вт - 4шт.
Резистор 4.7к, 0.125Вт - 8шт.
Резистор 500к, 0.125Вт - 3шт.
Резистор 10 Ом, 2Вт - 1шт.
Резистор подстроечный 10к - 3шт.
Конденсатор 0.1мКф,керамический - 4шт.
Конденсатор 1500пФ,керамический - 3шт.
Конденсатор 22пФ, керамический - 2шт.
Конденсатор эл. 1000x50В - 2шт.
Кварц, 16мГц - 1шт.
Светодиод, 5мм - 6шт.
Панелька на 40 ног - 1шт.
МК ATMega16 (ATMega32, ATMega8535) - 1шт.
Транзистор КТ829А - 14шт.
Компаратор LM393 - 2шт.
Диод КД521 (КД522) - 6шт.
Диод FR307 - 12шт.
Реле HJR-3FF-5VDC-S-Z - 2шт.
Стабилизатор 7805 - 1шт.
Дип-переключатель на шесть - 1шт.
Полоска с ногами, шаг 2.54 - 37 ног.
Кусок платы 100х150 - 1шт.
Синий клемник на 3 болта - 2шт.
Синий клемник на 2 болта - 1шт.
Зелёный клемник на 3 болта - 8шт.
Планка с DB9, папа - 1шт.
Планка с DB25, мама - 1шт.
Ню и провода, джойстик, и т.п. по вкусу.
Архив со старой версией контроллера hCNC3 качать сдесь.. Была и такая..
Ню, примерно как-то так ^___^