Уже давно я припас все детали, перечисленные ниже, и осталось собрать все вместе и получить модуль управления мотором для удобной установки на конструктор. Конечно, сначала мы подключили катушки шагового мотора с помощью простого H-bridge и оценили, почему так делать не стоит. Далее мотор был подключен с помощью драйвера и разница оказалась более чем наглядной. 
2 вывода питания с коннекторами Фишертехник, 4 вывода для подключения мотора и 5 выводов для подключения микроконтроллера (step, dir, enable). Отверстия в крышке пропилены с помощью Dremel, равно как и проточено отверстие в шестеренке под вал мотора — предупреждаю, пластик Фишертехника, хоть он и гибкий, обрабатывается не проще металла! Нам захотелось сделать стандартный блок Фишертехник, который быстро и удобно устанавливается на любую модель и позволяет управлять шаговым мотором Nema 14, закрепленном в стандартном креплении Фишертехник. При этом, обеспечить «правильное» управление мотором (с ограничением рабочего тока) и тихое и быстрое его вращение. Соответственно, мы попробовали разные способы управления мотором и убедились, что специализированный драйвер представляет собой оптимальное решение. Двумя катушками шагового мотора Nema можно управлять как двумя обычными моторами с помощью PWM (широтно-импульсной модуляции) и H-bridge, выбрав подходящее значение питающего напряжения так, чтобы не слишком превышать допустимый ток, и переключая их по очереди. Для управления двигателями у нас есть как копеечная микросхема SN754410NE Quadruple Half-H Driver так и плата расширения Kitronik Compact All-In-One Robotics Board for BBC micro:bit, преимущество платы расширения в том, что она включает в себя I2C расширитель портов на 16 выходов с подключенными H-bridge на 4 мотора и коннекторами для 8 сервоприводов и блоки для управления в среде разработки MakeCode, а также обеспечивает питание вставленного микроконтроллера Microbit от питающего напряжения до 10.8 В. Из каталога Фишертехник потребовались следующие детали: С Aliexpress были заказаны: С британского сайта компании Pimoroni приехали: Все это спаяно паяльной станцией QUECOO с жалом T12 при температуре 330°C бессвинцовым припоем 0.8 мм. Кстати, припой японский HIROSAKI M705 с 3% серебра — выбран как самый доступный :) В Таиланде оказалось сложно найти бессвинцовый припой в розницу (оптом — пожалуйста, большой выбор), да еще и малого диаметра. Припой хороший и, по ощущениям, более текучий, чем припой без серебра Pimoroni Lead Free Solder, но в целом, большой разницы мы не заметили. Для развлечений с детьми свинцовый припой не рассматриваю в принципе, впрочем, мы не испытываем каких-либо затруднений при пайке бессвинцовым — в том числе, компонентов поверхностного монтажа. Поскольку наш мотор по спецификации на 1.2 А и сопротивлением обмотки 4 Ом, рабочее напряжение для него должно быть примерно 3.5 В (4 Ом*1.2 А/2/0.7 = 3.4 В). С учетом падения напряжения на источнике и проводах можно воспользоваться и аккумулятором на 5 В, при этом замеренный ток батареи составляет 1.8 А. При этом мотор ощутимо греется — примерно до 60°C на 60 оборотах, шумит, и вращается достаточно медленно (плата расширения использует PWM 50 Гц для управления моторами и сервоприводами). В целом, пользоваться можно, если нам достаточно повернуть вал на заданное число оборотов и потом обесточить обмотки (при этом вал начнет свободно вращаться без удержания положения). Практически такой метод хоть и работает, но плохо — мотор стартует рывком, буквально разламывая собранную с ним модель, шумит и греется, притом быстро разряжая аккумулятор. При длительной работе возможно «спалить» мотор из-за превышения допустимого тока, хотя, скорее, при таком токе потребления раньше батарея разрядится. Драйвер осуществляет управление мотором посредством контроля тока через обмотки, что гарантирует сохранность двигателя (соответствие спецификации по допустимому току) и позволяет подавать на двигатель высокое напряжение до 35 В (обеспечивая более быстрое перемещение вала за счет быстрого нарастания тока до предельного). Такой контроль можно реализовать и непосредственно на микроконтроллере, используя аналоговые входы и вычисление управляющего сигнала с синусоидальной огибающей, хотя для практического использования это не очень удобно (потребуются лишняя «обвязка» и занятые входы). Указанные драйверы шагового мотора требуют питающее напряжение не ниже 8 В, а плата расширения позволяет подключать питающее напряжение в широком диапазоне, включая стандартные 5 В и 9 В от батареи Фишертехник. Для универсальности мы добавили преобразователь напряжения на 12 В для питания мотора, так что полученный модуль работает и от USB блоков питания и от батарей Фишертехник, притом обеспечивая достаточно быстрый поворот мотора. Микрошаги нам пока не нужны, так что соответствующие входы драйвера не подключены, что обеспечивает работу в так называемом режиме полного шага.  Подробнее смотрите A4988 Stepper Motor Driver Carrier Для управления драйвером достаточно двух пинов Step и Dir (шаг и направление), при этом их необходимо «подтянуть» к «земле» (нулю) для исключения самопроизвольного подергивания двигателя при включении или перезагрузке управляющего микроконтроллера из-за «наводок». Номинал подтягивающих резисторов зависит от длины проводов и их расположения, например, 4.7 кОм нам обычно достаточно (хотя для длинных проводов в несколько метров могут понадобиться подтягивающие резисторы в 1 кОм и даже менее), а 10 кОм порой приводят к нестабильной работе. Впрочем, мы не стали подключать эти резисторы и воспользовались другим методом. Пин драйвера Enable не является обязательным к использованию и позволяет заблокировать драйвер и обесточить мотор ценой потери удерживающего момента на нем. По умолчанию этот пин уже «подтянут» к нулю. Поскольку мы хотели иметь возможность отключать мотор для экономии батареи, то решили добавить подтягивающий резистор 4.7 кОм к питанию микроконтроллера. Так мы получили выключенный по умолчанию драйвер и двигатель, для включения нужно подать ноль (низкий логический уровень) на пин Enable. При таком подключении можно обойтись без «подтяжки» пинов Step и Dir, управляя ими программно с микроконтроллера. Для настройки тока драйвера можно настроить максимальный ток одной из обмоток как половину максимального тока мотора поделенную на 0.7 (поскольку квадрат суммарного тока равен сумме квадратов токов двух обмоток) или использовать формулу зависимости выходного тока от напряжения на потенциометре (если нам известен номинал тококонтролирующего резистора на плате драйвера) или просто измерять потребляемый от батареи ток (внимание — ток на обмотках мотора не равен току от батареи, зато мощность двигателя почти равна потребляемой мощности). Как результат, с драйвером мы получили втрое меньшее потребление тока батареи 0.6 А при мягком старте и бесшумной работе двигателя и намного более быстром его вращении. Двигатель теперь практически не греется, хотя, разумеется, продолжает потреблять указанный ток даже при остановке (так уж устроен шаговый двигатель). Наличие выведенного пина Enable позволяет выключать двигатель на то время, когда не требуется удержание вала (например, для перемещения конвейера в удержании позиции нет необходимости).  Сделанный согласно вышеизложенному модуль со снятой крышкой выглядит так: 
Провод питания проведен через весь модуль, чтобы избежать открывания крышки при рывках питающего провода. Радиаторы на преобразователь напряжения и драйвер мотора не нужны, поскольку они ощутимо не нагреваются, работая примерно на треть допустимой мощности. Типовый Nema двигатель обеспечивает 200 RPM (оборотов в минуту) при 200 шагах на оборот, что соответствует 1.5 миллисекунды на шаг. Для управления можно использовать PWM с соответствующим периодом или просто переключать логические уровни с нужной задержкой. Притом драйвер управляется возрастающим фронтом на входе Step, а по спецификации, высокий логический уровень достаточно подать на 1 микросекунду. Таким образом, управление модулем осуществляется очень просто. Пример кода в среде MakeCode для вращения по часовой стрелке и против нее (направление зависит от подключения мотора к модулю — если перевернуть коннектор мотора, направление инвертируется):  Сегодня мы дополнили конструктор Фишертехник полезным модулем и в процессе обсудили с детьми много всего интересного и полезного. Дальше было бы интересно подготовить печатную плату и заказать ее, к примеру, на JLCPCB, благо доставка из Гонконга в Таиланд стоит недорого. Аналогично, можно заказать и 3D печать — было бы удобнее напечатать подходящую крышку модуля, вместо того, чтобы резать оригинальную дремелем. Еще у нас лежит блок управления панелями адресных светодиодов на микроконтроллере Raspberry Pi Pico в точно такой же коробочке Фишертехник, который мы делали на Новый год — радуга для подсветки комнаты, расположенная за телевизором. Pico хорош в том числе и тем, что легко помещается в такой корпус, даже вместе с макетной платой Pico Proto. Если доберусь, напишу и об этой самоделке, детям она очень нравится :) Geoscience R&D and Geophysical Modeling