Как-то незаметно я опять большую часть времени стал на работе проводить (хоть веб-морду для спектрографа вполне можно и дома писать). Решил вернуться к временно заброшенному контроллеру шаговых двигателей:
В прошлый раз (судя по предпоследнему коммиту, это три месяца назад было; коммит двухмесячной давности я после багфикса в работе CAN-шины сделал; надо еще проверить, что у меня USB без бага) остановился на том, что подопытный драйвер грелся, а двигатель не крутился. Попробовал и A4988 помимо DRV8825 — ноль реакции. Причем, на ножках все правильно, никакого криминала. И меандр на CLK бежит... Сейчас воткнул вместо него другой (благо, я их десяток прикупил зимой на али), опаньки! Двигатель стал дергаться. Между нулем и одной фазой вроде бы нормально:
Межфазное на обмотке измерить не могу: я сдуру воткнул на стенку розетку с заземлением, поэтому в ней земля осциллографа коротится с землей компьютера. Но, посмотрев на схемку подключения драйвера, заметил свой косяк: вместо того, чтобы обозначить обмотки как A1/A2 и B1/B2, я написал 1B/2B и 1A/2A. Потому и подключил обмотки к 1A/1B и 2A/2B. После правильного включения двигатель стал вращаться. Но вот старые подопытные 8825 и 4988 так и не заработали. Похоже, сжег я их, когда пытался разработать алгоритм автоматического определения подключенного драйвера (у меня еще есть TMC2130 с SPI, очень надеюсь, что он не пал жертвой моих опытов; все-таки, дорогая штука). Но для начала надо переделать способ задания максимальной скорости вращения вала: не в условных единицах периода микрошагов, а в шагах в секунду. Еще почему-то после инициализации двигателя выскакивает ошибка CAN-шины (которая должна появляться только при попытке передачи данных по CAN). Надо будет косяк искать: возможно, что-то с чем-то конфликтует.