Металл2024 Реклама
Метобр2024 Реклама

Комплект MKS DLP (плата с дисплеями ) на поиграться

AndyBig
Идет загрузка
Загрузка
23.07.2020
5322
55
Личные дневники

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

20

Получил тут на днях комплект MKS DLP - https://aliexpress.ru/item/4000027986113.html 

В комплекте материнская плата версии 1.1, сенсорный дисплей интерфейса и 2к-дисплей засветки. В принципе, плата аналогична подобным платам от Chitu и Anycubic. Даже компоновка платы практически один-в-один. Только вместо FPGA стоит CPLD, что несколько странно, но не принципиально. Как и на тех платах, на этой есть:

  • вход питания (12-24 вольта)
  • выход на паралед или матрицу засветки
  • выход вентилятора для параледа
  • выход для вентилятора общего охлаждения
  • разъем USB-хост для втыкания флэшек
  • драйвер ШД (A4988) с разъемом для ШД
  • предусмотрен разъем для подключения внешнего драйвера ШД
  • входы для концевиков Z+ и Z-

Еще тут предусмотрены разъемы для WiFi-модуля.

Самое интересное в этом комплекте - что он идет как открытый проект. То есть для него доступны и схема и исходники прошивки. Поэтому я и взял его с дальним прицелом заменить в своем Фотоне S, подправив в прошивке все так как мне хотелось бы.

Ну что сказать... Во-первых, родная прошивка сырая. Вот прям совсем на грани того, что пользоваться ею нельзя. Из того, что на вскидку сейчас вспомню:

  • - ускорения по умолчанию просто дикие для фотополимерной печати, и даже настроив их в конфиге мне как-то все равно не очень нравится как он двигает ось
  • - ооооооочень меееееедленно читает с флэшки каждый слой, примерно 5-7 секунд. Причем он как-то странно вообще с этим работает - читать новый слой начинает во время поднятия платформы и пока слой не будет дочитан до конца, платформа вниз не поедет. При этом, алгоритм чтения на нижних и основных слоях отличается, на нижних он как-то по-другому читает, не помню уже деталей. И в процессе чтения слоя принтер никак не реагирует на нажатия экрана, он целиком поглощен этим процессом :)
  • во время печати нельзя поменять параметры - время засветки, высоту и скорость подъема и т.д.
  • при нажатии паузы печати он немедленно поднимает платформу, даже если время засветки еще не вышло.
  • реакция на нажатия тач-панели на дисплее очень невнятная - то не реагирует, то реагирует несколько раз на одно нажатие

Из плюсов - как я понял он пытается продолжить печать после пропадания питания во время печати. Правда, я совершенно не понимаю как он это сможет. Тут ведь, в отличии от FDM-дрыгостола нельзя заново отхомить Z если часть модели уже напечаталась. По крайней мере когда концевик Z стоит внизу, как это сделано практически во всех принтерах.

Когда я залез в исходники (которые, кстати, еще и с ошибками, пришлось их исправлять, чтобы откомпилировалось), то понял, что ловить там в плане правок нечего. Это ужаснейшая мешанина кода, 80% которого растут из FDM-принтеров. К этим 80% какими только можно костылями прикрутили особенности фотополимерной печати и кое-как заставили это хоть как-то работать. В составе прошивки - полный Мерлин! С работой по всем осям! И ардуина для STM32 там же участвует - ну ёмаё... В общем, править нормально это просто невозможно, если только сам это не писал и не помнишь обо всех примененных костылях.

В общем, решил я писать прошивку заново.

Начал с оживления дисплея. Основной код инициализации взял из исходников MKS, однако основные процедуры написал сам заново, потому что в их исходниках 70% - ненужный мусор. Доработал и адаптировал свою библиотеку для пропорциональных шрифтов, потому что мне не нравятся стандартные моноширинные шрифты, кочующие по почти всем проектам в интернете. К тому же и места они занимают больше. В моей библиотеке была еще возможность отрисовки с антиалиасингом, но эту часть я выкинул. Рисуется медленнее, размера жрет в два раза больше... Отрисовка шрифтов в оригинальных исходниках не отличается оригинальностью (прошу прощения за тавтологию). Стандартная процедура, взятая из какой-нибудь ардуины или адафруит.

После отладки сравнил ради интереса скорость вывода текста процедурой из оригинальной прошивки и моей библиотеки:

Комплект MKS DLP (плата с дисплеями ) на поиграться

Голубой и верхний белый тексты выведены моей библиотекой. Нижний белый текст - стандартной библиотекой. Мало того, что стандартные моноширинные шрифты жрут слишком много пространства на экране (в верхней строке еще осталось место на экране справа, а в нижней экрана не хватило на всю строку) и весят больше в прошивке, так еще и скорость отрисовки у моей библиотеки оказалась выше примерно в 15 раз. Вон тот большой голубой текст нарисовался в несколько раз быстрее, чем короткая нижняя белая строчка. Хотя это, конечно, вопросы не столько к типу шрифтов, сколько к криворукости программистов.

Кстати, попробовал перевести вывод данных в дисплей на DMA, но прирост скорости составил всего 3-5%. Сама шина данных дисплея не позволяет использовать преимущества DMA на частоте этого микроконтроллера (168 МГц), DMA все равно вынужден ждать готовность этой шины.

После запуска дисплея и вывод на него текста я взялся за USB-хост для подключения флэшек и файловую систему. Инициализацию периферии и создание низкоуровневых функций для FatFS отдал на откуп CubeMX. Но после генерации проекта обновил сам FatFS и немного перелопатил полученные исходники для своего удобства. Хотя я впервые возился и с USB-хостом и с библиотекой FatFS, все получилось достаточно легко и быстро. Флэшки определяются, читаются. Был затык с парой флэшек - FatFS не хотела находить на них файловую систему, не помогало ни форматирование, ни переразбивка. Потом я обнаружил, что эти флэшки были подготовлены специальной утилитой как загрузочные для установки винды. После приведения их в стандартный вид той же утилитой, они стали нормально видеться прошивкой :)

Заодно перелопатил весь код для поддержки в выводимых текстах кодировки UTF-8 и добавил несколько функций для работы с UNICODE - это необходимо для нормального чтения русских имен файлов.

Скорость чтения в принципе получилась нормальная.

Комплект MKS DLP (плата с дисплеями ) на поиграться

Не максимальные для USB FS 12 Мбит/сек, но вполне приличные 6-9 МБит/сек - зависит от флэшки. То есть один слой файла для печати, который весит с учетом сжатия 30-50 КБ, должен считываться не больше, чем за 0.1 секунды. Ну пусть еще 5 раз по столько уйдет на его распаковку (хотя скорее всего гораздо меньше), все равно это будет далеко до тех 5-7 секунд, которые тратит родная прошивка на его чтение.

Потом освоил тач-панель дисплея. Не стал разбираться как это сделано в оригинальных исходниках и почему там все так отвратительно работает, просто написал свою библиотеку. Нажатия теперь воспринимаются четко, координаты усредняются по 16 значениям. Библиотека рапортует о состояниях:

  • короткое нажатие
  • отпущено после короткого нажатия
  • длительное нажатие
  • отпущено после длительного нажатия
  • количество "тиков" за время длительного нажатия

При этом произошедшее нажатие будет сохранено даже если основная прошивка в это время чем-то занята и сможет быть обработано позже.

Единственное, чего не стал делать - это обработки свапов. Да и стоит ли... Если только сделать какие-то элементы управления на дисплее в виде ползунков, но надо ли оно - не уверен.

Последнее, что я на сегодня сделал - это отрисовка картинок. Причем, их не нужно ничем конвертировать - жрет обычные .bmp-файлы. Единственное требование - 16-битный формат в виде R5G6B5.

Комплект MKS DLP (плата с дисплеями ) на поиграться

Пока что тестовая картинка - загрузочное лого - встроена прямо в прошивку. Отрисовывается эта картинка размером на весь экран (480х320) всего за 20 мс.

Комплект MKS DLP (плата с дисплеями ) на поиграться

Вот так выглядит на дисплее:

Комплект MKS DLP (плата с дисплеями ) на поиграться

Дизайнер из меня никакой, так что сделал как смог, лишь бы было :))

За несколько часов мучений получилось вот такое, не побоюсь этого слова, убожество для главного экрана :)

Комплект MKS DLP (плата с дисплеями ) на поиграться

И для экрана "Сервис":

Комплект MKS DLP (плата с дисплеями ) на поиграться

Вот кстати, о часах на главном экране - в микроконтроллер встроены часы реального времени с календарем. Для их работы предусмотрено отдельное питание, на которое можно повесить 3-вольтовую батарейку. По моим подсчетам элемента CR2032 должно хватать по потреблению лет на 10 минимум. На плате эта батарейка не предусмотрена, но я собираюсь в будущем это исправить :)

В родных исходниках MKS интерфейс рисуется отдельными элементами, для каждого из которых есть свое изображение. Но я решил пойти по пути Эникубика - не рисовать интерфейс из отдельных окошек, кнопок, элементов, а сразу весь дизайн оформлять как одну фоновую картинку . Для каждого меню или состояния принтера - свой фон со всем интерфейсом (кроме текстов). И храниться они должны, конечно, в отдельной SPI-флэшке размером 8 МБ, которая для этого и имеется на плате. Все же каждая такая фоновая картинка весит больше 300 КБ, а места в микроконтроллере всего 512 КБ.

Все тексты будут не встроены в картинки, а рисоваться отдельно, шрифтами. Нужно переключиться в меню теста - считали из SPI-флэшки полную картинку интерфейса этого меню и поверх нарисовали нужные надписи на текущем языке.

Сейчас потихоньку обдумываю организацию работы интерфейса в целом, чтобы при желании что-то изменить в нем (перенести кнопку в другое место, или добавить новую кнопку) не приходилось перелопачивать половину прошивки. У меня уже есть моя библиотека, решающая подобную задачу именно для сенсорного дисплея, нужно будет посмотреть как она сюда впишется.

Ну и остальной работы, конечно, еще выше крыши. Работа с мотором оси Z, работа с засвечивающим дисплеем, чтение и раскодировка файлов для печати, организация самого процесса печати... Возиться и возиться. Интересных вечеров предстоит еще очень много :))

ЗЫ: И, к сожалению, эти товарищи не предоставляют исходники для CPLD, которая управляет засвечивающим дисплеем. Может быть был бы шанс адаптироваться для подключения монохромного дисплея :) Так, на будущее :)

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

20
Комментарии к статье
Кремень КБ Реклама
Кремень КМ Реклама