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

Подписаться на 3Dtoday
JiP
Идет загрузка
Загрузка
16.12.17
4694
22
печатает на Anet A8
Техничка
16
Статья относится к принтерам:
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.
Заявление интересное, пробуем.
09bf39ad7f5d4cc1d5f6350f2b4831e5.jpg
Бегло глянув на схему платы, стало понятно, что нас интересует 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 оставлять в работе, чтоб каретка не сползала. Но она, кажется, итак никуда не ползет :).
В общем, интересуйтесь.
Подписаться на 3Dtoday
16
Комментарии к статье

Комментарии

16.12.17 в 20:12
0
Вот вы себя озадачили. Поставил себе NTC 3950, выбрал beta в настройках, сделал калибровку PID и никаких расхождений с мультиметром. Вывод? Это у вас сенсор какой-то кривой.
16.12.17 в 22:46
3
Выводы каждый делает свои. У некоторых они неверные, к сожалению.
Я себя не озадачивал. Принтер не является источником дохода, это хобби. Появилось время и желание- решил поковырять, сдув с него пыль.
В чем принципиальное отличие NTC3950? Тот же термистор на 100к.
Замена резистора в плече резистивного делителя позволит "растянуть" рабочий диапазон для АЦП, что ведет к повышению точности измерений. Изменение температуры на один градус приведет к бОльшему изменению напряжения на входе АЦП. Здесь в этом фишка, а не в том, "кривой" ли "сенсор". Месье не может в электротехнику?:)
17.12.17 в 00:33
0
С родным термистором что идет в комплекте к голове МК8 у Анет - термистор врет после 200 где-то градусов на 10 бывает. В то время как Эпкос или Мурата - всегда дают точные показания. Давно работаю по части автоэлектрики и там где нужно снимать данные по температуре, то всегда беру бренд заранее зная что у него нет сюрпризов.
17.12.17 в 00:55
1
Принято.
Цель поста, все же, не добиться идеальных показаний температуры, а показать возможности. В любом случае показания температур на принтере принято называть "попугаями" и подбирать "на глаз" для конкретного пластика.
Еще раз- замена сопротивления в плече делителя даст большее изменение вольт/градус на входе АЦП. Именно в этом мякотка. И на более точном датчике оно тоже сработает положительно.
17.12.17 в 03:58
1
Пожалуй, приложу выдержки из таблиц калибровки датчиков на температурах 3D-печати:
(Первое число- значение ADC, второе- соответствующая температура)
Подтяжка 4.7 кОм:
{ 78 * OVERSAMPLENR, 220 },
{ 84 * OVERSAMPLENR, 215 },
{ 92 * OVERSAMPLENR, 210 },
{ 100 * OVERSAMPLENR, 205 },
{ 109 * OVERSAMPLENR, 200 },
{ 120 * OVERSAMPLENR, 195 },
{ 131 * OVERSAMPLENR, 190 },

Подтяжка 1 кОм:
{ 283 * OVERSAMPLENR, 220 },
{ 302 * OVERSAMPLENR, 215 },
{ 322 * OVERSAMPLENR, 210 },
{ 344 * OVERSAMPLENR, 205 },
{ 366 * OVERSAMPLENR, 200 },
{ 390 * OVERSAMPLENR, 195 },
{ 415 * OVERSAMPLENR, 190 },


Видно, что на каждые 5 градусов изменения температуры приходится от 11 до 6 уровней при плече в 4.7 кОм и от 25 до 19 уровней при 1 кОм.
Очевидно, что при одинаковых датчиках плечо в 1 кОм позволяет точнее измерять температуру. Соответствие ее реальной и показания выводимые на дисплей- это другие два вопроса. Но работа PID регулятора должна быть значительно качественнее- он работает с изменениями значения АЦП (фактически температуры) во времени и скоростью этих изменений.
Сдобрю комментарием разработчика Marlin из того же файла с таблицей:
"// Advantage: Twice the resolution and better linearity from 150C to 200C"
В переводе- Удвоенное разрешение (измерений) и лучше линейность на температурах 150-200 градусов.
17.12.17 в 05:13
0
Не увидел главного в статье - что получили на выходе? Качество печати сильно улучшилось, или это всё было затеяно только ради "просто поковыряться"?
17.12.17 в 05:47
2
Скажем так, мое мнение, что какие-то апгрейды софта на том же железе кардинальных улучшений (чтоб вот прямо-вау! вот теперь офигенно!) в качестве печати не дадут. Прошивки, в части обработки команд G-кода, думается, уже вылизаны. Но, в целом, лучшая стабильность температуры экструдера потенциально должна повысить качество печати, может быть, в проработке мелких деталей, или прокидывании бриджей. В общем, думается, что, если есть возможность с минимальными усилиями что-то улучшить- почему бы и нет?
Мне больше было интересно использование свободного пина, если честно :)
Подумываю после НГ отключить иллюминацию и прикрутить автоуправление кулером охлаждения хотэнда. Задолбала эта турбина на максималках.
17.12.17 в 09:53
1
Ну значит "просто поковыряться". Ибо даже сама идея повышения точности устройства, собранного на компонентах с 10% точностью, без замены этих компонент, выглядит забавно.
23.12.17 в 01:32
0
Пруфы, Билли. У каких деталей в измерительных трактах точность 10%?
Механика тут ни при чем.
23.12.17 в 00:36
0
Спасибо за статью. Вы мне "дали пендаля", более детально посмотреть прошивку и почерпнуть полезное для будущих модингов. Особенно понравилось о повышении точности измерения температуры."легким движением.....и попугаи превращаются в градусы".:D
23.12.17 в 01:30
0
Кстати да. Совершенно забыл отписаться о замерах.
Первое: В прошивке надо проставить
#define TEMP_SENSOR_0 51
это гораздо более часто встречающийся epcos.
Второе: Откалибровал PID заново и встал термопарой мультиметра в точку, где установлен термистор- показания на дисплеях принтера и мультиметра расходились в основном в 1-2 градуса при температуре уставки (на разогреве было больше). Так что теперь действительно можно сказать, что попугаи в градусы превратились.
Третье: По случаю прикупил два десятка 0805 сопротивлений 1 кОм 1% отклонения (стандартные- 5%). Будет время- перепаяю быстренько. (Перфекционизм, будь он не ладен :D:D )
10.01.18 в 04:27
0
Лампочки, лампочки. Я вот так сделал, а то реле от щелкалось. Блок питания теплый, транзисторы теплые, кровать ОГОНЬ! Провода огонь, перепаял провода до кровати. Главное, что б не отлипало. MOSFET`а достаточно и одного, в режиме шим и если MAX_BAD_POWER меньше 255, можно и без радиатора. Стабилизатор на 5 вольт можно менее мощный установить (что было). Разница между показометрами датчика стола и поверхностью стекла 17 градусов. Стекло ничем не накрыто.
2d2b342b3d4fcb81338e270882ae6ecf.jpg
5e57ad92558e3819a36af0995ab0c3fd.jpg
10.01.18 в 05:56
0
Подожди, я правильно понял "схему"- ты ШИМ-выход с "BED" платы заводишь на линейный стабилизатор 7805, затем получившийся мусор из бывшего ШИМа размахом около 5 вольт вдуваешь в затворы пары мосфетов? При этом они даже без индекса L? Ещё до кучи сдабривая это запретом в прошивке 100%-ой скважности выхода ШИМ. Если ответ "да", то мсье знает толк в дичайших извращениях, при этом показывает полное отсутствие элементарных знаний электроники.
К слову, управление нагревом стола давно переделано, никак времени для поста не найду. И переделано ПРАВИЛЬНО, с использованием драйвера мосфета с выходом 2/2 и собственно планарного мосфета размером 5*5 мм, способного протащить ток ~80 А с радиатором не больше тех, что на драйверах шаговиков. Посмотрите в ответах моего предыдущего поста, где-то я выкладывал фотку. Грел стол ВООБЩЕ без радиатора на мосфете.
А "лампочки"- явление временное, к новому году, так сказать.
Рекомендую учить матчасть. Без обид.
10.01.18 в 06:09
1
Абажжи. Ещё раз грянул на схему и взоржал. Объясню на пальцах: мосфет на кровать n-канальный, как и на плате, управляется положительным смещением на затворе. Значит, на выходе с платы плюс постоянный, на минусе шим. Далее стаб пятивольтовый. Он берет постоянный плюс с платы, постоянный минус со стороны силовых мосфетов кровати (по фото справа) и дует постоянные 5 вольт в затворы силовых мосфетов управления стола. Попробуй выставить 60° на столе и встретишь неприятную неожиданность)))
И греются твои мосфеты только от неполного открытия и никак не из-за ШИМа)))
10.01.18 в 07:24
0
При 255 греется если один, в руке держать можно. Если 2 то чуть теплые, блок питания горячий как с релюхой, стол греется лучше чем с двумя реле на 10А.
На затворе стабильно +5 или 0 относительно минуса.
Чертилка радио-схем в тырЬнете не заработала по этой схеме, а схема работает и шума нет, на сколько мой осциллоскоп может показать. Фронты крутые,пики прямые, как на входе только 5вольт ограничение, если 254 или меньше. При 255, ну понятно что будет.

Выставил 40, 60, 55, 70. Всё ОК, БП холодный, полевики холодные, они вообще холодные до 100 градусов.

Какая должна быть неожиданность?

7805 это же транзистор, стабилитрон и пару резисторов, а 3205 надо не больше 5 вольт на затвор, амперы пофигу (амперы на затвор :D ). А плюс с контролера, без минуса с контроллера не потечет в затвор, а затвор разряжается через резистор в 7805. Открывается 3205 полностью, мой тестер не видит разницы в сопротивлении между замкнутыми щупами или через пАлевик. Все 3205 что у меня есть, полностью открываются при 4.87вольт. Вот только через тоненькую ножку даташитные амперы никак не лезут через китайские пАлевики, поэтому два.
06c02db69473f4e038fb6ec7dabedbbc.jpg
10.01.18 в 13:41
0
3205 надо не больше 5 вольт на затвор
Это кто так решил? Даташит прозрачно намекает, что это не low-level mosfet.
Вот основной график оттуда:
c8b0c8b73a9f1de2130c4ba41506abb3.png


Как видно из графика, при напряжении на гейте 5 Вольт доступный ток перехода- что-то около 12 Ампер. То есть, мосфет от 5 вольт не открыт полностью. И мультиметр в режиме измерения сопротивления не покажет разницы, так как счет идет на десятки миллиОм- это далеко за гранью возможностей мультиметра.
7805 это же транзистор, стабилитрон и пару резисторов
Серьезно? ))) Там все чуть сложнее- даташник рисует примерно такое внутри 7805:
b2c0a7461c9520f83e5cf5bcf1e2d8be.png

И у всей этой кучки транзисторов есть время открытия-закрытия. Что за осцил измеряет фронты? Достаточно его временного разрешения для отображения переходных процессов?
Что за плата на принтаке, точнее, какой у нее выход на подогрев стола? Очень удивительно, что ШИМит по плюсовому. Либо P-mosfet стоит, либо слаботочный выход. Судя по тексту- всё же слаботочка, раз "с контроллера".

амперы пофигу (амперы на затвор :D )
Что тут смешного тоже не понял. Амперы на затвор- вполне нормальное явление- его надо ЗАРЯЖАТЬ, ибо это конденсатор и на шиме он перезаряжается несколько раз в секунду. Суммарный заряд гейта немалый: Total Gate Charge 146
Время включения Rise Time 101 ns.
I = Q_g / t_open = 146e-9/101e-9 = 1,44А
Это идеальный разгон мосфета, с самым крутым фронтом, откроющий его за 101 наносекунду при 10 Вольт на гейте.
Один вопрос- контроллер вывезет 1,44 Ампера на выход? Максимум он отдаст 30-40 мА (внутреннее ограничение, если Atmel).
В целом- абсолютно не понятно назначение 7805 в этой схеме. Он тут лишний- 100%. Мосфет по гейту до 30 вольт держит в лёгкую, для разряда гейта достаточно резюк Ом в 300-500 (очень уж жирный затвор на полевике).
Вот только через тоненькую ножку даташитные амперы никак не лезут через китайские пАлевики, поэтому два.
Ножка более чем достаточная. Ампер 50 она протащит легко.
ЗЫ. И да, кровать на английском- это BED. А на схеме крупными буквами BAD (с английского ПЛОХО). Это действительно плохо.
10.01.18 в 16:42
0
Импульсами по одному тоненькому проводку можно обогреватель на киловатт разжечь. Вот уж не знаю, мои 3205 открываются и закрываются от прикосновения пальца. Закрывается всегда, а чтоб открыть нужно постараться.
10.01.18 в 13:50
0
Юзай драйвера мосфетов, это будет правильно. Примерно в какую сторону смотреть- IR4428S, IRS4427S, MC33152D и тд.
7805 в качестве "драйвера"- это просто за гранью добра и зла.
10.01.18 в 15:58
0
Неее... эти дешевые мосфеты пашут на ура, достались10шт 70руб. Осцилоскоп показывает почти 6 вольт на затворе, тестер 5;). Синий график с контролера, желтый после 7805. Думаю, 7805, запросто и четко 100Гц отработает без лагов, а больше и не надо. На трёх 3205 и одной Arduino, от нечего делать можно моторчик от жесткого диска запустить и раскрутить. А на электро-технику мене пофигу, вопреки ей много чего можно сделать и будет как то работать.
17feeb6015a26f29b1c144de212679bb.jpg
10.01.18 в 17:10
0
Всенепременно обзаведусь драйвером для транзистора, а пока и так пашет, лучше чем щелкающее реле или ждать пакетик от китайца. Еще и дешево. 3205 -20руб. 7805 -10руб. Почти сутки 130 градусов держит, полет нормальный, БП теплый, транзисторы прохладные. Единственное не пойму, почему же при MAX_BAD_POWER 255 стол на 5 минут дольше греется.
11.01.18 в 12:56
0
Отвечу сам себе, но может еще кто прочтёт. При Макс БЕД ПАВЕРЕ = 255 БП закружен и проседает напруга и ток не очень текЁт в конфорку. При 254 БП успевает набить кондеры током и пускает больше в стол по большему вольтажу.
10.01.18 в 14:36
0
примерно так это видится:
ffc267f6ac5a0725487f7b2ab69902e9.jpg

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Почти из коробки. Подкрутить и допилить, Geeetech A10M (3)

Дополнительная плата дисплея для Zav MAX PRO

XYZprinting приоткрыла завесу над четырьмя новыми фирменными 3D-принтерами

Бизнес КЕЙС по 3D печати : Каждой БУКВЕ по Принтеру от компании 3Dtool

В Бельгии создали самый большой транспортируемый 3D-принтер

КОМПАС-3D v17 Home. Основы 3D-проектирования. Часть 9. Эргономичный маркер.