Контроллер шаговых двигателей на L6474


Как обещал, публикую плату для станка ЧПУ. Это не совсем законченный вариант — хочется заменить JTAG (которого нет в STM32F051) на SWD, перенести энкодер на другие пины с возможностью аппаратного счёта. Также я пока не решил, как крепить радиатор.

Микросхемы L6474, в целях экономии ног, соединены по схеме Daisy-chain:

Это позволяет конфигурировать все микросхемы одновременно, экономя чуток времени. Хотя если нужно пообщаться только с одной микросхемой, то придётся предыдущие забивать нулями.
То есть, каждый байт, выданный в SPI до подъёма ~CS будет выталкивать предыдущие байты дальше по цепочке.
Пользуясь случаем, хочу сообщить об одной фиче STM32F051, благодаря которой чуть было не пришлось пользоваться программным SPI: если в регистр DR писать целые слова, то SPI выводит все свои 16 бит, даже если в CR2 DS указано 8 бит.
Подключение платы к USB через CP2102 с защитой и развязкой:

Светодиод можно поставить двухцветный, чтоб показывать режим SUSPEND.
Также на плате есть подстроечные резисторы для регулировки момента или других параметров и слот MicroSD, но их я ещё не проверял.
Прошивка в процессе написания, неспешно портирую с AT91SAM7S отсюда.
К теме приложено описание в PDF и проект в KiCAD.
  • +1
  • 14 сентября 2012, 13:55
  • Smirnov
  • 2
Файлы в топике: SD3F1a_pdf.zip, StepDriver3f1_kicad.zip

Комментарии (14)

RSS свернуть / развернуть
Когда же я Kicad осилю, каждый раз предпринимаю попытку перейти на него, мучаюсь мучаюсь и опять на Eagle возвращаюсь :)
+2
А мне очень нравится. Особенно работа с библиотеками. Хотя редактор плат простенький совсем.
0
Такая красивая плата и так изгажена канифолью :( Выглядит так, как будто уже сгорела.
А зачем SD-слотик?
+3
  • avatar
  • Vga
  • 14 сентября 2012, 16:28
SD — так, побаловаться… В перспективе можно допилить автономный режим и дисплей на I2C повесить.
0
перенести энкодер на другие пины с возможностью аппаратного счёта
Этого лучше не делать. На самом деле пользоваться энкодером в таком режиме весьма неудобно. Гораздо удобнее сделать обработку по прерываниям и генерировать в очередь события типа +1 и -1. Это позволит в каждом конкретном месте установить свои лимиты (или вообще не иметь таковых, например, для навигации по меню), свой реальный шаг счета и т.д. и т.п.
+1
  • avatar
  • evsi
  • 14 сентября 2012, 17:13
Очень может быть.
0
Попробуй паять с глицерином, как DI советовал. Брать к аптеке.
0
  • avatar
  • m0xf
  • 14 сентября 2012, 22:00
Чет полистал даташит и у меня возникло ощущение что L6474 можно управлять напрямую, без SPI. Не ошибся? У него ведь там DIR и STCK (step clock input) есть?
0
Без SPI не получится. Там, конечно, всё есть и даже внутренние регистры позиции с шаганием будут меняться(удобно для отладки). Но для включения силовых цепей микросхемы нужна команда Enable, которая подаётся по SPI. Иначе силовые мосты будут болтаться в HiZ.
0
А, вон оно как, про Enable чет я упустил второпях.
0
Добавлю, что при большом количестве одновременно работающих драйверов STEP/DIR становится неудобным — проводов много.
0
Для L6474 одинаково необходимы и STEP/DIR и SPI.
0
Плохо :(
0
Автор! Допилилась ли плата/программа до окончательно рабочего варианта?
ЗЫ: файл SD3F1a_pdf.zip не грузится
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.