Вот уже третий пост про перемотчик а я всё никак не перестану его дорабатывать. Можно было бы перестать это делать но как оказалось перемотчик нужен не только мне а взять его негде.
На фото выше мой, так называемый, испытательный стенд. У перемотчика два блока питания 12 и 48 вольт. Включаются они в розетку 200в. Три драйвера моторов, две кнопки, датчик оборотов, модуль управления с сенсорным дисплеем. Всё это соединяется кучей проводов и таскать его по столу и со стола на стол надоело, хотелось удобства и цельную конструкцию. Что бы временно соединить сам перемотчик с креплением донорской катушки был использован экструдированный алюминиевый профиль 20х20. Но как мы знаем нет ничего более постоянного чем временное)
Конструкция получилась жесткая и прочная. Можно браться за любую часть не боясь, что-то оторвать.
В этой версии был переработан дизайн. Он стал более строгий и в нём, для удобства оператора, было добавлено много кнопок.
Теперь шаг укладчика относительно оборота приёмной катушки можно настраивать с точностью до сотки. Об этом меня просили пользователи. Оказалось, что перемотка не такой тривиальный процесс как может показаться на первый взгляд и требует тщательной и точной настройки. В нижнем левом углу появилась кнопка "настройки" в виде шестерёнки.
Здесь мы можем перейти в настройки каждого мотора. Остальные кнопочки сделаны исключительно для того, что бы заполнить пустое место на экране. Так сказать на будущее. А дальше случилась ЖОПА. Количество настроек драйвера шагового мотора стремится к бесконечности. Это конешно преувеличение но их действительно много и я пока вынес только основные. Если пользователь менял мотор или ему не нравился его режим работы то ему приходилось писать мне а мне в свою очередь приходилось лезть в прошивку, править её, отправлять человеку, тот её заливал в микроконтролер... И так повторялось несколько раз до тех пор пока мы удалённо не сможем подобрать правильный конфиг. Теперь это можно делать самостоятельно прямо с экрана.
Так вот, вернёмся к ЖОПЕ. В начале проектирования и разработки этого девайса я намеренно решил использовать сенсорный дисплей для того, что бы не городить много механических кнопок потому как даже не знал сколько их может понадобиться. Сейчас примерно 120 кнопок:
54 команды — кнопки + / −
9 — APPLY / CANCEL / DEFAULT для X, Y и Z;
60 — остальные команды интерфейса: START, STOP, HOME, SET 0, TEST Y, изменение технологических параметров, переходы и т. п.;
120 КАРЛ!!!
Мне пришлось перелопатить весь код, поправить логику, изменить запись и чтение EEPROM(энергонезависимая память). Божечки какая радость, что для этого сейчас есть нейросети которые чудесно справляются с такими задачами. Я бы устал вручную переписывать все адреса кнопок.
Дальше фоточки и техническая информация
Шаг по Y и шаг по Z задаются независимо с экрана. То есть можно специально сделать шаг немного меньше или больше реального диаметра материала, если конкретная намотка этого требует. В прошивке для этого сейчас вообще отдельные параметры с шагом изменения 0.01, 0.1 и 1.
Физических концевиков рабочей области у меня нет. Перед началом работы я вручную ставлю укладчик туда, откуда хочу начать намотку, и нажимаю:
Текущая позиция Y и Z становится рабочим нулём. После этого задаю ширину катушки. Есть отдельная кнопка:
Укладчик проезжает заданную ширину, и можно посмотреть, правильно ли всё выставлено и не пытается ли он уехать в стену.
После работы кнопка с домиком возвращает Y и Z в сохранённый ноль.
Сам процесс намотки
Основной мотор X вращает катушку.
Укладчик Y должен двигаться синхронно с ним.
Если просто задать Y постоянную скорость, то при изменении скорости катушки изменится шаг укладки. А нам нужно, чтобы витки лежали примерно одинаково независимо от того, насколько быстро сейчас вращается катушка. Поэтому скорость Y рассчитывается относительно фактической скорости X и заданного шага укладки.
Разворот у края катушки
Если Y просто доезжает до края и мгновенно разворачивается, края получаются заметно хуже середины. Нужно дать катушке сделать дополнительный оборот, пока укладчик стоит у бортика.
Когда Y достигает края, программа запоминает позицию основного двигателя X.
После этого Y стоит на месте, а основная катушка продолжает вращаться.
Когда X проходит заданное количество шагов, выдержка заканчивается, Z поднимается и Y отправляется обратно.
EEPROM
Когда параметров стало много, довольно быстро надоело после каждого включения выставлять всё заново. Поэтому основные технологические настройки сохраняются в EEPROM. Сейчас там живут:
плюс отдельные структуры настроек всех трёх драйверов.
Основные параметры сохраняются при запуске перемотки. Настройки драйвера — при отдельном нажатии APPLY.
Физические кнопки
Сенсорный экран прекрасен ровно до того момента, когда ты реально стоишь возле работающего механизма. Поэтому есть и физические кнопки управления.
START и STOP должны работать абсолютно так же, как их экранные аналоги.
Датчик реального вращения катушки
Вот эта штука пока физически ещё не установлена на моей машине, но вход на плате есть, датчик у меня есть и код уже написан. Это отдельный индуктивный датчик оборотов промежуточного ролика.
Почему это вообще нужно? Потому что есть существенная разница между:
«контроллер сказал двигателю вращаться» и: «катушка действительно вращается».
оборвался механический привод;
или просто двигатель по какой-то причине фактически не вращает катушку. Драйвер при этом вполне может считать, что всё хорошо. А отдельный датчик смотрит непосредственно на механику. В прошивке под него уже выделен отдельный вход. Программа измеряет время между срабатываниями датчика, хранит длительность предыдущего оборота и считает количество зарегистрированных оборотов. После начала перемотки есть отдельный стартовый интервал, чтобы защита не срабатывала до появления нормального первого сигнала. После нескольких оборотов начинает работать контроль. Если очередной импульс слишком сильно запаздывает относительно предыдущего периода, программа считает, что катушка перестала нормально вращаться. После этого основной двигатель останавливается и перемотка сбрасывается в аварийное состояние. То есть это уже не просто счётчик оборотов, а независимый контроль фактического движения механики. Датчик пока не установлен, поэтому систему можно отключить с экрана.
Количество оборотов и торможение
Устройство умеет работать не просто «пока не нажал STOP», а на заданное количество оборотов. На экране задаётся количество, после чего датчик должен уменьшать оставшееся значение по мере вращения. Кроме того, в коде есть отдельная логика снижения скорости перед окончанием намотки. Идея простая:
не крутить на полной скорости до последнего оборота, а заранее перейти на меньшую скорость и закончить процесс спокойнее.