eddy_em: (Default)
Сегодня весь день паял контроллер шаговиков. Пары элементов не хватает (не пришло еще с алиэкспресса), но это не критично для того, чтобы начать разрабатывать прошивку.
Рабочее место:

Дальше )
eddy_em: (Default)
Причесал плату, добавил поясняющие надписи. Вот, что получилось:

Остается еще BOM составить (полный и то, что надо закупить), и ждать, пока все это мне приобретут… Благо, делаться это будет из договорных денег, т.е. без проблем платы закажем на JLCPCB, а детали — на алиэкспрессе (100-ногий STM32F303, кстати, достаточно дорогущий: аж 1000р).
eddy_em: (Default)
Начал помаленьку рисовать управлялку восемью независимыми шаговиками (можно было бы и 9 прикрутить, но тогда или на DIAG не хватило бы ног, или нельзя было бы сделать возможность расширения до 8 независимых групп по 8 мультиплексируемых движков). 64-ногого МК совершенно не хватало (или пришлось бы заводить на ~EN/DIR сдвиговые регистры, что неудобно), поэтому пришлось брать 100-ногий. Вот, распределил роли по ногам (STM32F303VDT6):

Авось, четырехслойки мне хватит, т.к. здесь особо некуда ремап делать. И так постарался сгруппировать все, относящееся к конкретному двигателю, на соседних ногах.
По задумке плата должна уметь управлять драйверами TMC по UART (для этого в режиме single wire выделил USART2 и USART3) или SPI (SPI1). Вместо огромных перемычек думаю сделать SMD'шные под капельку припоя (все равно ведь один раз плату сконфигурировал, воткнул в прибор, и забыл). На каждый шаговик в режиме UART по 2 концевика, в режиме SPI — только один (т.к. L1 будет играть роль SPI CS). Еще опционально (на будущее, вдруг?) — подключение экранчика по SPI и до 7 кнопок (или джойстик, матричная клавиатура). Шесть каналов АЦП. Выход USART1 на RS-232 или RS-485. Три выхода на реле или мосфет. Управление — по CAN или USB.
Думаю, за пару дней схему нарисую, а вот сколько я ее разводить буду — ХЗ. С программированием базовых вещей проще, т.к. у меня уже есть часть сниппетов под F303, CAN там вроде бы такой же, как везде; а управление шаговиками — просто расширю функционал 3steppersLB (кстати, уже забыл, что я под LB имел в виду) с трех до восьми моторов.
eddy_em: (Default)
(дал заголовок на английском, т.к. сколько ни гуглил по этой теме, ничего толкового не попадалось).
Возможно (скорей всего), какие-то неровности еще остались, но в основном управление уже работает. Функционал с кнопками и концевиками уже в железе буду отрабатывать. Часть с CAN вообще не тестировал еще + не брался за I2C, ну и надо бы одновременно три шаговика погонять: интересно (правда, жалко разъемы тратить, ну да ладно, их есть у меня).
tl;dr )
eddy_em: (Default)
Накрылся один пусироботовский контроллер: его "не видно" по CAN-шине и не горит светодиод готовности при включении. Решили вскрыть и посмотреть, что там. Еле оторвали дно, а вот выдрать печатную плату не можем: драйвер приклеен к крышке-радиатору какой-то НËХ, аналогичная была на дне:

Похоже на силиконовый теплопроводящий клей. Однако, этанол его никак не берет, при нагреве градусов до трехста тоже ничего не происходит.

Чем это снять? Ацетон пробовать не рискую: мало ли, вдруг корпуса растворятся (кстати, китайцы, козлы, сошлифовали маркировку микросхем на плате!).
Update )
eddy_em: (Default)
Как-то незаметно я опять большую часть времени стал на работе проводить (хоть веб-морду для спектрографа вполне можно и дома писать). Решил вернуться к временно заброшенному контроллеру шаговых двигателей:

Дальше )
eddy_em: (Default)
Еще ковыряясь в первый раз с этими приводами, обратил внимание на непонятные вещи, творящиеся с концевиками: то они работали, то вдруг переставали.
Сейчас добавил в управлялку возможность отображения значений всех объектов, которые я использую или предполагаю использовать (заодно добавил к перечню текст — расшифровку объектов). И вот, что получается.
Во-первых, то, что в нужной позиции регистра External emergency stop enable (объект 0x600F, подындекс 1) в EEPROM находится единица, после включения этот концевик все равно не будет работать! Нужно опять записать в этот объект единицу, чтобы он заработал!!!
Во-вторых, биты The trigger mode of external emergency stop (подындекс 2 этого же объекта) по документации имеют значения: 0 - спадающий фронт, 1 - нарастающий. Однако, для настройки спадающего фронта на EXT1 и нарастающего на EXT2, я должен сделать такую запись: 0x600F, 2, 3! Т.е. получается, что для EXT1 этот параметр "внезапно" является инвертированным!
В-третьих, настройка подтяжек: что ни пиши в бит 0 Sensor type (подындекс 3), все равно EXT1 настроена с подтяжкой к нулю, т.к. рассчитана на вход с питанием от 3.3 до 24В и, соответственно, верхней внутренней подтяжки иметь не может. Хорошо хоть, в плане EXT2 документация не соврала, и верхнюю подтяжку включаем записью 0x600F, 3, 2.

В общем, при каждом обращении к приводу с намерением куда-то ехать, нужно сначала разрешить работу концевиков!

October 2025

S M T W T F S
   1234
567 89 1011
121314 15161718
19202122232425
2627 28293031 

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 24th, 2026 06:34 am
Powered by Dreamwidth Studios