Работал с несколькими типами драйверов, в т.ч. тринамиковскими. И везде одна и та же проблема: управление - исключительно через интерфейс STEP/DIR. А мне нужно независимо восемью шаговиками управлять. И найти STM32, у которого будет 8 независимых ШИМ-каналов, я вряд ли смогу. Рукоблудить, как китайцы, дрыгая ногами (а эти ненормальные еще и 7 раздельных каналов софтового уарта завели!), я не собираюсь. Я вот, честно, не представляю себе, как можно при делении шага на 256 таким ногодрыгом организовать хотя бы трапецеидальный рамп софтово, особенно когда максимальная скорость - 5000 шагов в секунду (несложно посчитать, что это - 1.28МГц, это с какой же скоростью прерывания должны лупасить?)
Вот и вопрос знатокам: есть ли хоть у того же тринамика, хоть еще у кого такой интегрированный драйвер ШД, где управление полностью было бы реализовано по UART/SPI/I2C? Без дебильного интерфейса STEP/DIR.
Ну и второй вопрос: минимальный ток нужен 50мА, а не аж 200, как у того же TMC2209. Потому как моторчики очень миниатюрные, да еще и биполярные (т.е. дарлингтоны дергать, по таймеру гоняя DMA в BSRR, не выйдет). При подключении к TMC2209 адово греются на минимальном токе.
Ну или, может быть, есть в линейке простых STM32 (Cortex-M3 или Cortex-M4) такие, где есть 8 (или даже больше) независимых каналов ШИМ? Хочется все как можно компактней собрать, т.к. места немного. И изготавливать индивидуальный контроллер на каждый ШД будет уж совсем жирно.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Они не независимые, т.к. управляются одним таймером. Нужно именно 8 независимых ШИМ каналов, чтобы была возможность управлять восемью ШД: плавный разгон, движение с постоянной скоростью, торможение… Т.е. нужно не меньше восьми таймеров, чтобы у каждого был хотя бы один ШИМ-выход.
Так-то у меня есть STM32F072CBT6, там 6 таймеров имеют ноги наружу. Я тремя ШД управляю, а три оставшихся таймера использую для обратной связи по инкрементным энкодерам. Здесь такое точное позиционирование не нужно, но вот получится лишь 6 независимых двигателей.
На самый худой конец сделаю 4 независимых двигателя и две пары мультиплексируемых (т.е. работать в один момент времени сможет лишь один из двух). А если наплевать на разгон-торможение, то вообще можно 4 движка на 1 таймер посадить (правда, придется часто их на концевики загонять для уточнения положения).
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
а еще ненавистный куб утверждает, что самый дешевый вариант - это STM32F373C8T6 - 2.9861 долларов, таймеры 2х32, 2х16, 4х16, у каждого минимум 1 канал PWM, и корпус приятный - LQFP48
Martian, о, спасибо! И правда, у F401CBT6 есть ШИМ-выходы таймеров 1, 2, 3, 4, 5, 9, 10 и 11. На разных лапах. Здорово.
Вот жаль, что на сайте у ST нет выбора по этим критериям - только по общему количеству таймеров.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Ага. а ещё там как-то неполно информируется, я попробовал сконфигурировать в кубе у всех таймеров один выход PWM и получил у STM32F373C8T6 аж 11 каналов, хотя вроде по описанию 8...
Да, F373 даже лучше: у него есть CAN, а у F401 — нет. Остается лишь глянуть в даташите, могут ли там CAN и USB одновременно работать.
А вот с драйверами все куда хуже: проштудировал даташиты на все тринамиковские - нигде нет команд вида "ехать на заданное число шагов". И уж, тем паче - с отработкой рампа! Зато наткнулся на интересный TMC2300-LA, который всего лишь 3х3мм и подходит для очень маломощных движков (разве что для такой "блохи" придется четырехслойку разводить).
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Программно. Но там все элементарно: раз в миллисекунду проверяй себе...
Я ж трапецию формирую, а не синус
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Так через DMA и самих каналов DMA не хватит!.. Плюс понадобится еще по одному таймеру на каждый шаговик…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Eddy_Em писал(а):Плюс понадобится еще по одному таймеру на каждый шаговик…
Для TIM1 и TIM8 может и не понадобится по второму таймеру, если хватит 8 бит для замера длительности между переключениями. Ещё заметь, что у старших F7, в отличии от F4, счётчик переполнений имеет разрядность не 8, а 16 бит, так что у четырёх таймеров рампу можно делать через DMA.