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

Repetier Firmware. Температура

dagov
Идет загрузка
Загрузка
13.05.2016
12249
6
Обзоры

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

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

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

29
Repetier Firmware. Температура
И так, продолжаем разбирать прошивку дальше. К сожалению, никаких мануалов с пояснениями к прошивке нет, поэтому приходится самому разбираться. Мне это напоминает отношение к пользователям производителей CAD систем. Siemens с их NX дает возможность бесплатно скачать кучу литературы (разумеется на буржуйском), организовывает кучу вебинаров по расширенному изучению всех компонентов их систем. Другие (не будем показывать пальцем) тупо продают мануалы, готовы опять же на платной основе разъяснить все нюансы и функции. Вот и отношение. Одни стремятся облегчить изучение и привлечь как можно больше пользователей, заботясь об их грамотном пользовании программой, а другие просто тупо хотят стричь купоны. Ну это было лирическое отступление.

Раз уж мы разбираемся с температурой экструдера/кровати предлагаю разобраться в некоторых параметрах именно этой прошивки.

Измерение температуры

Прежде,чем управлять температурой мы должны ее правильно измерить. Можно использовать термопары со специальной платой, преобразующей аналоговый сигнал в цифровой, а можно проще и дешевле использовать терморезисторы. Чаще всего используют терморезисторы с отрицательным температурным коэффициентом, то есть при повышении температуры его сопротивление падает.

Измерение температуры на AVR реализовано так
Repetier Firmware. Температура
То есть снижение сопротивления, при повышении температуры, по закону Ома так же вызывает снижение напряжения на терморезисторе. Расчет сводится к простой формуле:

Vmeasured = VRef*RS / (RS+R2),

RS = R2, если у вас нет резистора R1.

RS = R * R1 / (R+R1), если у вас есть оба резистора. В основном тексте статьи не буду разбирать как происходит измерение с формулами и графиками, вставляю в конец статьи, для любознательных.

Так вот, у нас есть различные напряжения, для различных температур. Нужно их завести в прошивку. AVR контроллер имеет разрешение в 10 бит. Поэтому напряжения конвертируются в номера от 0 до 1023 для Vref для обычных +5V.

Для новых XMega AVR разрешение составляет 12 бит и градация от 0 до 4095.

К сожалению график температура-напряжение нелинеен и зависит от характеристик каждого термистора.

Поэтому для большинства распространенных термисторов есть таблицы типа:

#define USER_THERMISTORTABLE0 {

{1*4,864*8},{21*4,300*8},{25*4,290*8},{29*4,280*8},{33*4,270*8},{39*4,260*8},{46*4,250*8},{54*4,240*8},{64*4,230*8},{75*4,220*8},

{90*4,210*8},{107*4,200*8},{128*4,190*8},{154*4,180*8},{184*4,170*8},{221*4,160*8},{265*4,150*8},{316*4,140*8},{375*4,130*8},

{441*4,120*8},{513*4,110*8},{588*4,100*8},{734*4,80*8},{856*4,60*8},{938*4,40*8},{986*4,20*8},{1008*4,0*8},{1018*4,-20*8} }

Так вот, зная температуру мы можем ее контролировать. И это можно сделать двумя способами :

1. Bang Bang. Эдакий грубый способ. Если измеренная температура ниже заданной,то нагреватель шпарит в полную силу до достижения нужной. Если температура выше - он тупо выключен. Просто и надежно. Можно для визуализации подключить диод. Горит- греет.

2. PID. Ну такой способ позволяющий иметь меньший разброс температур. Но требует ШИМ (PWM). Греет небольшими импульсами. При перегреве - отключается. Для визуализации если подключить диод - будет беспрестанно и весьма назойливо моргать.

И мы плавно переходим к параметрам этих способов.

Стабилизация температурного корридора (Stibilize temperature corridor) ___°C. Это такая дельта между максимальной температурой, при которой нагреватель отключается и остывает, и минимальной, остыв до которой нагреватель греет. Эдакая амплитуда. Можно не включать эту функцию и выставив 0.

Температурный диапазон для регулировки (Temperature control range)___°C. Диапазон, внутри которой идет регулировка PID,а если температура выходит из этого диапазона, то нагреватель греет в полную мощность,а не импульсами.

Пропуск ожидания, пока до греется до целевой (Skip bed temp. wait if within) ___°C.

То бишь, задаем разницу температур между целевой температурой и начиная с которой начинает греться экструдер. А во время разогрева экструдера эта температура будет достигнута. Очень сокращает время ожидания когда же стол нагреется и начнет греться экструдер.

Включение охлаждения радиатора экструдера начиная с определенной температуры (enable extruder cooler at) ___°C. Ну вроде бы понятно, экструдер нагрелся до определенной температуры и включается вентилятор на нем. Экономия, зачем зазря воздух молотить.

Минимальная температура экструзии (minimum extruder temperature) ___°C.

Тут тоже все просто. При температуре нагревателя меньше заданной пластик давиться не будет. Двигатель будет блокироваться, дабы предотвратить поломку.

Максимальная температура нагрева экструдера (maximum extruder temperature) ___°C. Температура, выше которой экструдер не нагреется. Выдаст ошибку и будет остывать.

Минимальная температура ошибки (minimum defect temperature) ___°C.

Минимальная температура с термистора, получая которую контроллер будет считать,что термистор сломан.

Максимальная температура ошибки (maximum defect temperature) ___°C.

Максимальная температура с термистора, получая которую контроллер будет считать,что термистор сломан.

Максимальная длина прутка, которую можно выдавить за один раз (в смысле нажать кнопку extrude) (Maximum extrusion lenght) ____ mm filament going on. Если попытаться выдавить больше - принтер проигнорирует вашу команду.

Скорость ШИМ нагревателя (heater PWM speed). В этом пункте есть несколько вариантов выбора, начиная от '15Hz, 256 value' до '122Hz, 32 value'.

Ставить больше частоту есть смысл, если у вас очень мощные нагреватели, на 220В грелка на стол, например, которые очень быстро будут греться, и нужно повышать частоту импульсов,дабы удерживаться в заданном выше температурном корридоре.

Далее несколько пунктов с галочкой:

- Масштабирование коэффициентов PID до максимальных значений. Может дать лучшие результаты, если максимальные коэффициенты малы.

Просто PID имеет численные значения от 0 до 255. Если у вас 255,то все останется как и было,а если ближе к 0, то ваши значения отмасштабируются до максимальных. Не очень понятно зачем и почему, ну да ладно. Хотя, может кто владеет информацией и поснит.

- Включение продвинутого алгоритма (enable advance algorithm). Некий алгоритм работы по новой схеме. Но пока нестабилен. Хотите печатать, а не копаться - не пользуйте пока.

- Включение квадратичного улучшения (enable quadratic advance terms). Никакой информации о работе этого алгоритма не нашел, но в марлине он тоже есть.

- Включение поддержки горячего стола (enable heated bed support). Ну если есть стол и хотите им пользоваться - ставим.

И вылезает еще несколько строчек по настройке стола.

Максимальная температура стола (Max bed temperature) ___°C.

Пропуск некоторого количества градусов без ожидания (skip temp wait if within) ___°С. Ну в принципе тоже самое,что и выше. Начинаем печатать с температурой стола на это количество градусов меньше,а в процессе температура дойдет до целевой.

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

Так же можно назначить к какому из пинов подключаем нагреватели.

Менеджер температуры (Temperature manager). Подпрограмма отвечающая за выбор типа подогрева. Это либо Bang-bang, либо PID контроллер, либо Bang Bang определенное время ___ s, либо Dead time control, то есть работа заданное время, эдакий таймер, как на старых стиральных машинках.

При выборе любого варианта вылезают его настройки. Это максимальный и минимальный PID с кучей коэффициентов. И время задержки и время работы. Думаю все и так понятно.

Теперь пришло время настройки двигателя экструдера.

Словом - все тоже самое,что и для настройки двигателей в предыдущей статье.

Пин, направление вращения, отключение, если не используется, шагов на выдавливание 1 мм прутка, начальная скорость, максимальная скорость, ускорения...Далее пины для терморезисторов и нагревателей. Если у вас 2 и больше экструдеров - нужно задать смещение по X и Y осям (offset)___ mm, между центрами сопел.

Пин кулера, тот который на радиаторе экструдера. Не путать с тем,что на охлаждение детали.

И последний пункт:

Ретракт при прогреве (wait retract distance) ____ mm. Если вы поставили прогрев экструдера перед печатью, то по достижении минимальной температуры экструзии, экструдер вытащит обратно указанное количество прутка. Это делается,что бы пластик не сочился из сопла при прогреве.

_________

Итак, вернемся к нашим баранам измерениям.

С таким большим пределом измерений от комнатной в +20° до +270° градусов внутри термоблока температуру достаточно точно можно измерить с помощью термистора. Сопротивление терморезистора очень и очень нелинейно. Поэтому эту экспоненциальную кривую сопротивлений градуируют, проводя соотношения между сопротивлением и абсолютной температурой. В прошивках наших принтеров эти соотношения записаны в таблицах. Формула расчета сопротивления резистора и зависимости этого сопротивления от температуры рассчитывается так:
Repetier Firmware. Температура
,где

R0- сопротивление терморезистора при 25°C.

В - вторая характеристика термистора, которая рассчитывается исходя из знания, что есть 2 известных температуры, для которых известны сопротивления.

К примеру термистор Epcos B57540G0103+ имеет сопротивление R0 при 25°C = 10кОм и В=3500. Несколько значений из даташита для различных температур иллюстрируют зависимости температуры от сопротивления. Разумеется, из картинки видно,что сопротивление меняется незначительно с ростом температуры выше 100 градусов. И нужно сделать график более линейным, сгладить резкие снижения и увеличить разницу в более пологих участках.
Repetier Firmware. Температура
Аппроксимацию дают резисторы из уже опубликованной в начале статьи картинки.

[IMG ID=350419file]

То есть сглаживание достигается за счет изменения общего сопротивления.
Repetier Firmware. Температура
как видно это уже более приемлемо для предела наших температур. Однако, для измерения температуры нам нужно изменение напряжения.

Изначально было
Repetier Firmware. Температура
И расчет сводился к формуле

V = Vref . Rth / (R + Rth)

При Vref =5V получаем такой график
Repetier Firmware. Температура
Другая проблема состоит в том,что бы узнать насколько много мощности питания будет рассеяно в терморезисторе на его нагрев и это будет мешать получению с него информации. Максимальное рассеяние произойдет, когда его сопротивление станет таким как и сопротивление резистора.

В этой точке половина напряжения на термисторе будет равна рассеянию на нем.

P = (Vref / 2)2 / R

По данной схеме и с этим терморезистором это 1,3мВт. Исходя из даташита на него тратится 18мВт и коэффициент рассеяния (в воздухе) - 0,4мВт/К. Из-за этого температура поднимается до 33°С по причине самонагрева.

Ошибка была бы меньше,будь это не в воздухе.

Тут была использована Vref =1,5 V. Так как тут квадрат в формуле и рассеяние 1,2мВт приведет к нагреву на 3°С.

В 5-вольтовых системах приходится жертвовать разрешением в угоду точности,так как ошибка при нагреве будет еще больше.
Repetier Firmware. Температура
Ставим второй резистор. Формулы приводил выше. Кривая будет менее пологая, за то ошибка будет очень и очень небольшая.

Этим маленьким бонусом я заканчиваю рассмотрение температурной вкладки в конфигураторе прошивки.

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

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

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

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