Кремень FMZ Реклама
Kremen FMHM Реклама

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

JiP
Идет загрузка
Загрузка
16.12.2017
11479
22
Техничка

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

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

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

18
Статья относится к принтерам:
Anet A8
Снова здравствуйте.

Продолжим рубрику 'допили напильником Anet A8'.

В сегодняшнем выпуске повышаем точность измерения температуры и прикручиваем ленту адресуемых светодиодов NeoPixel, так как скоро Новый Год, пусть и принтер красиво светится)

По традиции- всё, что написано ниже, потенциально может вывести ваш принтер из строя с вероятностью, равной кривизне ВАШИХ рук и нести ответственность только Вам. Все, что описано- проверено на своем принтере и гарантировано работает. Получится ли у Вас- только Вам известно.

Ознакомившись с постом быстренько настроил и накатил Marlin на свой Anet. Завелось сразу.

Решил подробнее поковырять конфиг Марлина. Через какое-то время набрел на строчки конфига

* 1k ohm pullup tables - This is atypical, and requires changing out the 4.7k pullup for 1k.

* (but gives greater accuracy and more stable PID)

Вольный перевод- при подтяжке на термисторе 1 кОм вместо 4.7 получим лучшую точность измерения и более стабильную работу PID.

Заявление интересное, пробуем.
Повышаем точность температуры хотэнда и полезно украшаем.
Бегло глянув на схему платы, стало понятно, что нас интересует R41. Сдуваем феном, припаиваем резистор 1 кОм, типоразмер 0805 (у меня не нашлось, поставил поменьше габаритами- 0603). Вешаем плату обратно, правим в конфиг и заливаем прошивку. Править так:

#define TEMP_SENSOR_0 55

#define TEMP_SENSOR_1 0

#define TEMP_SENSOR_2 0

#define TEMP_SENSOR_3 0

#define TEMP_SENSOR_4 0

#define TEMP_SENSOR_BED 5

Если кто-то захочет тот же фокус с термистором стола- менять R37 и править строку:

#define TEMP_SENSOR_BED 55



После запуска дисплей принтера показал температуру хотэнда 23 градуса и стола 25 (стол остался с дефолтной подтяжкой). Собственно комнатная температура 23, поэтому, похоже да, измерения стали точнее.

Теперь к светодиодикам и новогодней красоте.

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

Бегло оценив варианты (BlTouch, датчик конца филамента, кнопка kill, etc.) и поняв, что железа под это у меня нет (ну, кроме кнопки :D), а также оценив близость надвигающегося НГ, было принято решение поискать, что там у нас с выводом на светоприколюшки в Марлине есть для одного выхода. А есть только NeoPixel (лента адресуемых светодиодов WS2812B), два метра которого мне как раз на днях прислали китайцы для моего AmbiLight. Прикинув, сколько уйдет на заднюю стенку монитора, отрезал 16 светодиодов, прикрутил питание на каком-то DC-ВС конвертере 12-5 Вольт и соединил вход данных ленты с анодом светодида на плате. На картинке- зеленый квадратик, второй вариант- тестпоинт51 в зеленом кружочке.

Осталось дело за внесением изменений в прошивку и там ждала небольшая засада. За настройки библиотеки NeoPixel отвечает секция (внесу свои камменты на русском):

// Support for Adafruit Neopixel LED driver

#define NEOPIXEL_LED

#if ENABLED(NEOPIXEL_LED)

#define NEOPIXEL_TYPE NEO_GRB // NEO_GRBW / NEO_GRB трех- или четырехканальная лента + порядок отправки байтов

#define NEOPIXEL_PIN 27 // Номер пина безхозного светодиода для платы Anet

#define NEOPIXEL_PIXELS 16 // Количество светодиодов на ленте

//#define NEOPIXEL_IS_SEQUENTIAL // Сегментирование полосы при отображении температуры (не тестил)

#define NEOPIXEL_BRIGHTNESS 127 // Яркость. 0-255

//#define NEOPIXEL_STARTUP_TEST // Прогон цветов на старте принтера !!!НЕ ВКЛЮЧАТЬ!!!

#endif

Первая засада крылась именно в строке с пометкой 'не включать'- при попытках включения, принтер успевал показать пару цветов и вис намертво. Копнул в обработку- оказывается реализовано на тупых delay(2000)! Это надо было догадаться- при инициализации периферии завешивать контроллер в nop'ы на 2 сек. Не иключаю, что заведется на RGB-полоске, но не в случае с Neopixel. Может руки дойдут- перепишу отдельными вставками в процесс инициализации без delay. Но это не точно:)

Вторая засада. Просто так светить белым цветом- неинтересно да и проще привязать белую ленту на питание и не париться. Поэтому смотрим в расширение функционала и находим:

/**

* Printer Event LEDs

*

* During printing, the LEDs will reflect the printer status:

*

* - Gradually change from blue to violet as the heated bed gets to target temp

* - Gradually change from violet to red as the hotend gets to temperature

* - Change to white to illuminate work surface

* - Change to green once print has finished

* - Turn off after the print has finished and the user has pushed a button

*/

Переведу:

- Переход из синего в фиолетовый при прогреве стола

- Переход из фиолетового в красный при прогреве хотэнда

- Светим белым пока идет печать

- Включаем зеленый, как закончили

- Гасим после окончания и нажатия пользуном любой кнопки

Звучит неплохо. Но тут Марлин подкинул свинью:) В оригинале такое:

#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632) || ENABLED(NEOPIXEL_RGBW_LED)

#define PRINTER_EVENT_LEDS

#endif

Выделенного дефайна не существует в исходниках. То есть, понадеявшись на разработчика световых событий на ленте Вы не увидите. Варианта два. Кошерный- исправить условие:

#if ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632) || ENABLED(NEOPIXEL_LED)

#define PRINTER_EVENT_LEDS

#endif

И попроще, но ответственнее, оставить чистый дефайн и комментить его при отключении полосы:

#define PRINTER_EVENT_LEDS

Выбор за Вами.

Все поправив и залив в принтер получил новогоднюю информативную иллюминацию 8)

Фоток/видео не будет, ибо все висит на проводочках. Как 'причешу'- может кину в камменты.

ЗЫ. Этот же бесхозный пин идет аж до платы дисплея. Является 3 пином в колодке LCD, рядом с пином земли по длинной стороне. На плате дисплея ни к чему не подключен.

ЗЫ2. Есть еще варианты допиливания, кому что интересно- вопросы в камментах, быстрый ответ не гарантирую из-за нехватки времени. Самый интересный, на мой взгляд- прикрутить энкодер при символьном дисплее. надо три пина- один свободный я описал. Второй появится при отказе от кнопок. А вот третий придется 'добывать' переводом драйвера оси Z на общую шину 'steppers enable'. Он имеет отдельное подключение, например, после окончания печати можно отключать три драйвера, а Z оставлять в работе, чтоб каретка не сползала. Но она, кажется, итак никуда не ползет :).

В общем, интересуйтесь.

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

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

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

18
Комментарии к статье