Доработка овощесушилки под сушку пластика для 3D-печати

Представляю вниманию доработку простой дешёвой овощесушилки с целью приспособить её под сушку пластика для 3D-печати.



Предисловие


Испытав немалое разочарование от результатов доработки сушилки eSun eBOX, озадачился поисками более подходящего для этого агрегата, пусть и не такого удобного в плане хранения катушек.

Ещё до приобретения eBOX покупал дешёвую овощесушилку Olto HD-20. Выпилил промежуточные решётки и прикрутил к крышке удобную ручку. Девайс получился в целом неплохой, свою задачу выполнял вполне сносно.



Однако есть у него некоторые фатальные недостатки. Во-первых, чисто условная стабильность температуры. Настраивается она классическим биметаллическим терморегулятором (далее просто «терморегулятор»). Погрешность в два-три десятка градусов для такой конструкции — это вполне норма. Под сушку овощей сойдёт, но для пластика неприемлемо абсолютно. Если PETG при температуре 60℃ будет чувствовать себя прекрасно, то PLA запросто может «поплыть». Во-вторых, установка температуры ручкой тоже очень приблизительная, каждый раз приходится калибровать по внешнему термометру. В-третьих, нет никакого таймера и нужно как-то засекать время сушки.

Конечно же, можно было бы просто выкинуть эту сушилку и пойти купить другую, с цифровым управлением и таймером. Не настолько уж она дороже. Однако, у неё также есть существенный недостаток, уже в плане юзабилити. Существуют таблицы температуры/времени сушки пластика, наподобие такой. И каждый раз вспоминать её и вводить значения заново откровенно лениво.

В общем, как нельзя кстати вспомнился девиз «наши руки не для скуки!». Сушилка уже есть, нужно просто слегка доработать её напильником. Приступим!

Изучение


Разбираем сушилку. Снимаем решётки, откручиваем крышку. И видим такое:



В середине находится труба с нагревательным элементом внутри. Рядом с ней установлен вентилятор с двигателем, какие когда-то ставились в проигрыватели пластинок. Спереди выключатель сети и терморегулятор с ручкой-крутилкой. Всё очень просто и скромно. Производитель пожлобился даже на стеклянный предохранитель. Хотя, справедливости ради, термопредохранитель всё-таки поставили прямо внутри трубы с нагревателем:



Принцип действия незамысловат. Установленная на вентиляторе крыльчатка через отверстия в днище сушилки затягивает воздух, пропускает через трубу нагревателя и выбрасывает наверх, к сеткам с овощами/фруктами. Ручка терморегулятора в зависимости от угла поворота сильнее или меньше поджимает биметаллическую пластинку, которая обмотана нихромовой проволокой. По мере прогрева проволоки пластинка изгибается и размыкает контакты. То есть, по сути, это регулирование не по температуре воздуха, а по времени нагрева пластинки. Которое сильно зависит от окружающей среды и подобрано примерно, «на глаз». Отсюда и такие поразительные «точность» и «стабильность».

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

Изучив конструкцию, приступаем к переделке.

Схема


Рисуем новую схему управления стабилизацией температуры:



К разъёму «LINE» подключается сеть 230 В, к разъёму «FAN» — вентилятор, к разъёму «HEATER» — нагреватель. Подключение датчика, дисплея и энкодера:



Выводить информацию будем на дешёвый, популярный и удобный в применении LCD-дисплей 1602 (две строки по 16 символов). Взята версия с дополнительным модулем I2C, что позволяет существенно сократить количество линий подключения.

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

Отдельно стоит отметить, что подключен энкодер по достаточно интересной, на мой взгляд, схеме из делителей напряжения на резисторах R1~R4. Это позволяет считывать с него информацию, используя всего один вход контроллера. Однако, есть у такой схемы и существенный недостаток — в ней полностью отсутствует аппаратное подавление дребезга контактов. Его требуется реализовывать программно в прошивке. Это не слишком сложно, но не всегда приемлемо, поскольку требует добавления блокировок и задержек. В моём случае такое вполне допустимо, поскольку никакое управление сушилкой во время её работы не предусмотрено и не требуется.

В качестве термодатчика применим DS18B20. По началу хотел использовать AM2302, более известный как DHT22. Он весьма удобен тем, что предоставляет также данные о влажности воздуха, что для сушилки очень актуально. Однако, собрав и протестировав схему на макете, выяснилось, что данный датчик обладает просто колоссальной инертностью. Мало того, что показания с него можно считывать с частотой не более 0.5 Гц, так они ещё и изменяются крайне медленно в обе стороны (повышения/понижения). Превышение заданной температуры на прогреве достигало 35℃, давая фору даже неторопливому аналоговому терморегулятору. Поэтому в финальной версии схемы применяется именно DS18B20, который обладает куда большей чувствительностью и меньшей тепловой инерцией.

Для управления нагревателем применено твердотельное реле KSD205AC3 с номинальным током коммутации 5 А. Значение тока взято с большим запасом, нагреватель потребляет не более 1.2 А. Поэтому реле вообще не нагревается при работе. Можно было бы сделать ШИМ-регуляцию, но предварительные тесты на макете показали, что и реле вполне может обеспечить поддержание температуры с точностью ±2℃.

Питание обеспечивает MeanWell IRM-01-5 (5 В 200 мА). Вся электроника в целом потребляет 35~60 мА, так что хватает с большим запасом.

Так же в схему добавлена «пищалка» со встроенным генератором для уведомления о различных событиях (сушилка включилась, сушка закончена, произошла ошибка).

Платы


Разводим платы. Их две — управление и силовая часть с блоком питания:



Обе платы односторонние. Единственная дорожка по второй стороне (синего цвета) — это «паразитная» дорожка самой Arduino, которая использована чтобы не делать свою собственную перемычку. Весь процесс изготовления плат не показываю, всё стандартно и по классике: лазерный принтер, глянцевая бумага, ламинатор, травление в перекиси с лимонной кислотой. Собранные платы:



Разумеется, не обошлось без проблем и ошибок. Отверстия в плате управления расставлены таким образом, чтобы она вставала «вторым этажом» на плату дисплея. Однако по невыясненным причинам размеры в EasyEDA и в реальном мире разошлись на несколько миллиметров. И выяснилось это, по закону подлости, только при попытке собрать всё это вместе. Пришлось поработать напильником…

Также изготавливаем комплект кабелей:



На термодатчик и питание запущен монтажный провод МГТФЭ 0.2 мм. Не столько для защиты от помех, просто обычные мои монтажные провода AWG 24 невозможно обжать в контактах разъёмов из-за их (проводов) слишком толстой силиконовой изоляции.

Прошивка


Прошивка получилась достаточно длинной, но простой и линейной. Постарался прокомментировать все наиболее неочевидные места. Если будут какие-то вопросы и/или предложения — прошу в комментарии.

Развернуть очень длинный листинг на 552 строки

#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>

// Примерное время дребезга контактов энкодера, мс.
#define ENCODER_JITTER (5)
// Таймаут на ожидание следующего события от энкодера, мс.
#define ENCODER_TIMEOUT (350)

// Параметры длительности сигналов азбуки Морзе, мс. >:3
#define DOT_LEN (500)
#define DASH_LEN (3 * DOT_LEN)
#define SIGN_DELAY (DOT_LEN)
#define LETTER_DELAY (3 * DOT_LEN)
#define REPEAT_DELAY (7 * DOT_LEN)

// Макрос для удобства записи часов.
#define HOURS(value) (value * 3600UL)

// Пин термодатчика.
#define SENSOR_PIN (2)
// Пин "пищалки".
#define BEEPER_PIN (11)
// Пин твердотельного реле управления нагревателем.
#define HEATER_PIN (12)
// Пин сигналов от энкодера.
#define ENCODER_PIN (A0)

// Действие, произведённое энкодером.
enum EncoderAction
{
    NoAction, // Бездействие.
    ActionNext, // Вращение в одну сторону.
    ActionPrev, // Вращение в другую сторону.
    ActionConfirm, // Нажатие кнопки.
};

// Стадия (состояние) сушки.
enum HeatingStage
{
    Idle, // Выключено (бездействие).
    PreHeating, // Прогрев.
    Working, // Стабилизация температуры.
};

// Описание настроек пластика.
typedef struct
{
    const char *const name; // Название.
    const uint8_t temp; // Температура сушки.
    const unsigned long time_sec; // Время сушки, с.
} Filament;

// Таблица с настройками для разных видов пластика.
const Filament filaments[] = {
    {
        .name = "PLA",
        .temp = 45,
        .time_sec = HOURS(6),
    },
    {
        .name = "ABS",
        .temp = 60,
        .time_sec = HOURS(4),
    },
    {
        .name = "PETG",
        .temp = 65,
        .time_sec = HOURS(4),
    },
    {
        .name = "TPU",
        .temp = 50,
        .time_sec = HOURS(8),
    },
    {
        .name = "Nylon",
        .temp = 70,
        .time_sec = HOURS(12),
    },
};

// Минимальный индекс таблицы с настройками пластиков.
#define MIN_IDX (0)
// Максимальный индекс таблицы с настройками пластиков.
#define MAX_IDX ((sizeof(filaments) / sizeof(filaments[0])) - 1)

// Настройка шины 1-wire и термодатчика DS18B20.
OneWire ow_bus(SENSOR_PIN);
DallasTemperature sensor(&ow_bus);
// Настройка LCD-дисплея 1602.
LiquidCrystal_I2C screen(0x27, 16, 2);

// Выбранный пластик.
volatile const Filament *filament = NULL;
// Флаг, показывающий что пора обновить значения на дисплее.
volatile bool refresh_screen = false;
// Счётчик секунд, прошедших с момента запуска текущей стадии.
volatile unsigned long seconds = 0;
// Флаг, показывающий включен сейчас нагрев или выключен.
// На дисплее отображается буквой 'H'.
volatile bool heater_is_on = false;
// Флаг, показывающий что есть событие от энкодера.
volatile bool event_on_encoder = false;
// Текущая стадия сушки.
volatile HeatingStage heating_stage = Idle;

// Обработчик прерывания от таймера. Срабатывает 1 раз в секунду.
ISR(TIMER1_COMPA_vect)
{
    seconds++;
    refresh_screen = true;
}

// Обработчик прерывания с пина энкодера.
// Срабатывает по изменению напряжения
// в любую сторону (уменьшение/увеличение).
ISR(PCINT1_vect)
{
    event_on_encoder = true;
}

// Сброс таймера.
void reset_timer(void)
{
    // На время сброса запрещаем прерывания
    // чтобы значение счётчика не изменилось.
    noInterrupts();
    seconds = 0;
    refresh_screen = false;
    interrupts();
}

// Включение нагрева.
void turn_on(void)
{
    digitalWrite(HEATER_PIN, HIGH);
    heater_is_on = true;
}

// Выключение нагрева.
void turn_off(void)
{
    digitalWrite(HEATER_PIN, LOW);
    heater_is_on = false;
}

// Пищание "пищалкой".
void beep(uint16_t duration)
{
    digitalWrite(BEEPER_PIN, HIGH);
    delay(duration);
    digitalWrite(BEEPER_PIN, LOW);
}

// Полностью очистить дисплей.
void clear_screen(void)
{
    screen.clear();
    screen.home();
}

// Обработчик ошибок.
// Аргументом получает сообщение об ошибке.
// Играет "пищалкой" сигнал 'S.O.S' азбукой Морзе.
void panic(const char *const reason)
{
    turn_off();

    clear_screen();

    screen.setCursor(0, 0);
    screen.print("PANIC! Reason:");
    screen.setCursor(0, 1);
    screen.print(reason);

    for (;;) {
        // 'S': ...
        beep(DOT_LEN);
        delay(SIGN_DELAY);
        beep(DOT_LEN);
        delay(SIGN_DELAY);
        beep(DOT_LEN);
        delay(LETTER_DELAY);
        // 'O': ---
        beep(DASH_LEN);
        delay(SIGN_DELAY);
        beep(DASH_LEN);
        delay(SIGN_DELAY);
        beep(DASH_LEN);
        delay(LETTER_DELAY);
        // 'S': ...
        beep(DOT_LEN);
        delay(SIGN_DELAY);
        beep(DOT_LEN);
        delay(SIGN_DELAY);
        beep(DOT_LEN);
        delay(LETTER_DELAY);

        delay(REPEAT_DELAY);
    }
}

// Получение текущей температуры с термодатчика.
uint8_t query_sensor(void)
{
    sensor.requestTemperatures();
    const float value = sensor.getTempCByIndex(0);

    if (value == DEVICE_DISCONNECTED_C)
        panic("Temp NaN.");

    const uint8_t temp = ((unsigned int) value) & 0xFF;
    if (temp <= 1)
        panic("Frozen.");
    if (temp >= 120)
        panic("Burned.");

    return temp;
}

// Показывает на дисплее температуру и время сушки
// выбранного пластика.
void present_filament(void)
{
    screen.setCursor(0, 0);
    screen.print(filament->name);
    screen.print(" ?   ");

    screen.setCursor(0, 1);
    screen.print(filament->time_sec / 3600);
    screen.print(" hours at ");
    screen.print(filament->temp);
    screen.print("*      ");
}

// Чтение действия энкодера.
// Выполняется до тех пор, пока не определит действие,
// игнорируя случайные срабатывания.
// Значения настраиваются эмпирическим путём.
// Текущие значения указаны для номиналов резисторов согласно схеме,
// при точности резисторов 1%.
EncoderAction read_action(void)
{
    int value = 0;
    for (;;) {
        value = analogRead(ENCODER_PIN);
        if (value == 0)
            return NoAction;
        if (value > 840 && value < 850)
            return ActionPrev;
        if (value > 690 && value < 705)
            return ActionNext;
        if (value > 560 && value < 610)
            return ActionConfirm;
    }
}

// Дожидается любого действия от энкодера и возвращает его.
EncoderAction wait_for_action(void)
{
    // Ждём пока на энкодере произойдёт какое-либо действие.
    while (!event_on_encoder)
        delay(1);

    const EncoderAction action = read_action();

    // Если энкодер бездействует, то сразу же выходим.
    if (action == NoAction)
        return NoAction;

    unsigned long time_diff = 0;
    unsigned long time_begin = millis();

    /*
    Алгоритм обработки вращения энкодера и подавления дребезга контактов.
    Основан на механике работы энкодера. При вращении в любую сторону сначала
    замыкается один контакт, затем пока он замкнут замыкается другой контакт.
    За счёт того, что в схеме реализован делитель напряжения на резисторах,
    два этих замыкания контактов дают разное значение напряжения. И мы здесь
    получаем два события: сначала о том, что замкнулся один контакт, затем
    что замкнулся второй.
    При вращении в одну сторону (action == ActionPrev) ожидаем прихода
    следующего действие (ActionNext). Однако здесь есть гонка! Если из-за
    дребезга контактов или тормозов в АЦП раньше фронта сигнала со второго
    контакта напряжение упало до нуля, то придёт действие NoAction. Поэтому
    ограничиваем ожидание таймаутом.
    При вращении в другую сторону всё точно также, только порядок замыкания
    контактов меняется местами.
  */

    if (action == ActionPrev) {
        for (;;) {
            if (read_action() == ActionNext)
                break;
            delay(1);
            if (millis() - time_begin > ENCODER_TIMEOUT)
                break;
        }
    }

    if (action == ActionNext) {
        for (;;) {
            if (read_action() == ActionPrev)
                break;
            delay(1);
            if (millis() - time_begin > ENCODER_TIMEOUT)
                break;
        }
    }

    /*
    Когда при вращении оба контакта отработали, напряжение возвращается
    в ноль (действие NoAction). Дожидаемся этого. Если нажимали кнопку,
    то ждём пока её отпустят.
  */
    while (read_action() != NoAction)
        delay(1);

    /*
    Если нажимали кнопку, тогда спим в пределах погрешности энкодера
    (приблизительного времени, в течение которого контакты дребезжат).
    Если энкодер крутили, тогда спим в два раза большее время, чем заняла
    длительность импульса, начавшегося с замыкания одного контакта и
    закончившаяся с размыканием любого из контактов. Это с достаточно
    высокой вероятностью гарантирует, что контакты отработали и даёт
    защиту от ложных срабатываний при слишком быстром вращении энкодера.
  */
    if (action == ActionConfirm)
        time_diff = 0;
    else
        time_diff = millis() - time_begin;
    delay(time_diff * 2 + ENCODER_JITTER);

    // Сбрасываем флаг, показывающий что от энкодера приходили события.
    // Это нужно для подавления дребезга контактов, событий могло прийти
    // множество, но одно мы уже обработали. Остальные будут обработаны
    // позже.
    noInterrupts();
    event_on_encoder = false;
    interrupts();

    return action;
}

// Цикл отображения меню выбора пластика.
void choose_filament(void)
{
    clear_screen();

    size_t cur_idx = MIN_IDX;
    filament = &(filaments[cur_idx]);
    present_filament();

    for (;;) {
        EncoderAction action = wait_for_action();
        if (action == ActionConfirm)
            return;
        if (action == ActionNext) {
            // Если добрались до конца таблицы, переходим в её начало.
            if (cur_idx == MAX_IDX)
                cur_idx = 0;
            else
                cur_idx++;
        }
        if (action == ActionPrev) {
            // Если добрались до начала таблицы, переходим в её начало.
            if (cur_idx == MIN_IDX)
                cur_idx = MAX_IDX;
            else
                cur_idx--;
        }
        filament = &(filaments[cur_idx]);
        present_filament();
    }
}

// Включаем/выключаем нагреватель и переключаем стадию сушки.
void set_heater_state(const uint8_t temp)
{
    if (filament == NULL)
        panic("Heater state.");

    if (temp > filament->temp) {
        turn_off();
        // Если сушилка была в состоянии прогрева, значит с первого выключения
        // нагревателя включается основной рабочий режим просушки. Сбрасываем
        // счётчик времени, чтобы начать обратный отсчёт.
        // Если сушилка была в состоянии бездействия, но температура уже выше
        // нужной, значит плаcтик начали сушить не дождавшись пока она остынет.
        // Тоже переключаемся в основной режим.
        if (heating_stage == Idle || heating_stage == PreHeating) {
            heating_stage = Working;
            reset_timer();
        }
    } else {
        turn_on();
        if (heating_stage == Idle) {
            // Если сушилка бездействовала, значит с первого включения нагревателя
            // начинаем прогрев. Сбрасываем счётчик времени, чтобы показать, сколько
            // уже идёт прогрев.
            heating_stage = PreHeating;
            reset_timer();
        }
    }
}

// Обновление данных на дисплее.
void update_screen(const uint8_t temp)
{
    screen.setCursor(0, 0);
    screen.print(filament->name);
    screen.print(" ");
    screen.print(filament->temp);
    screen.print(" / ");
    screen.print(temp);
    screen.print("* ");
    // Если нагреватель включен, рисуем в конце первой строки букву 'H'.
    if (heater_is_on)
        screen.print("H");
    // Добавляем в конец несколько пробелов чтобы гарантированно корректно
    // отрисовать всю строку и в ней не осталось "призраков" от предыдущих
    // символов, если прежняя строка была короче по длине.
    screen.print("      ");

    screen.setCursor(0, 1);

    unsigned long time_val = 0;

    // Если сушилка находится в стадии сушки, отображаем
    // сколько времени осталось до окончания.
    if (heating_stage == Working) {
        screen.print("ETA ");
        time_val = filament->time_sec - seconds;
        const uint8_t hours = (time_val / 3600) & 0xFF;
        if (hours < 10)
            screen.print("0");
        screen.print(hours);
        screen.print(":");
    } else {
        // Если сушилка находится в состоянии прогрева, тогда
        // показываем, сколько времени прошло с момента его
        // начала.
        screen.print("Preheating ");
        time_val = seconds;
        // Если в течение часа так и не удалось прогреть сушилку
        // до заданной температуры, значит что-то точно идёт не так.
        if (time_val >= 3600)
            panic("Preheating.");
    }

    const uint8_t mins = ((time_val % 3600) / 60) & 0xFF;
    if (mins < 10)
        screen.print("0");
    screen.print(mins);
    screen.print(":");

    const uint8_t secs = (time_val % 60) & 0xFF;
    if (secs < 10)
        screen.print("0");
    screen.print(secs);

    screen.print("      ");
}

void setup()
{
    // Настраиваем пины на выход.
    pinMode(BEEPER_PIN, OUTPUT);
    pinMode(HEATER_PIN, OUTPUT);

    // Сразу же выключаем нагреватель.
    turn_off();

    // Настраиваем экран, выводим приветствие и пищим.
    screen.init();
    screen.backlight();
    clear_screen();
    screen.print("Hello world!");
    beep(250);

    // Настраиваем термодатчик.
    sensor.begin();

    // Настраиваем обработчик прерывания от таймера.
    // Подробнее см.: https://habr.com/ru/post/453276/
    noInterrupts();
    TCCR1A = 0;
    TCCR1B = 0;
    OCR1A = 15624;
    TCCR1B |= (1 << WGM12);
    TCCR1B |= (1 << CS10);
    TCCR1B |= (1 << CS12);
    TIMSK1 |= (1 << OCIE1A);
    interrupts();

    // Настраиваем прерывания от пина, куда подключен энкодер.
    // Подробнее см.:
    // https://tsibrov.blogspot.com/2019/06/arduino-interrupts-part2.html
    PCICR |= (1 << PCIE1);
    PCMSK1 |= (1 << PC0);
}

void loop()
{
    uint8_t temp = 0;

    // Если пластик ещё не выбран, показываем меню выбора.
    // Затем запускаем прогрев.
    if (filament == NULL) {
        turn_off();
        choose_filament();
        clear_screen();
        reset_timer();
        heating_stage = Idle;
        refresh_screen = true;
    }

    // Если идёт сушка и время подошло к концу, показываем сообщение,
    // пищим, ожидаем нажатия на кнопку энкодера и снова показываем
    // меню выбора пластика.
    if (heating_stage == Working && seconds > filament->time_sec) {
        turn_off();

        clear_screen();
        screen.setCursor(0, 0);
        screen.print("Finished!");

        beep(2000);
        delay(1000);
        beep(2000);
        delay(1000);
        beep(2000);

        screen.setCursor(0, 1);
        screen.print("Press any key...");

        while (wait_for_action() != ActionConfirm)
            ;

        filament = NULL;
        return;
    }

    temp = query_sensor();
    set_heater_state(temp);

    if (refresh_screen) {
        refresh_screen = false;
        update_screen(temp);
    }
}



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

Дополнительные детали


Для крепления и размещения плат, дисплея и энкодера замоделил и напечатал несколько деталей. В первую очередь перенёс на заднюю сторону сушилки выключатель и добавил разъём, чтобы кабель подключения к сети был съёмным:



Собираем корпус для плат дисплея, управления и энкодера:







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

Далее собираем силовую часть. Плату крепим к днищу на уголки. Добавляем стеклянный предохранитель на 2 А в разъёмном корпусе:



Термодатчик крепим максимально близко к трубе нагревателя, чтобы он обязательно находился в потоке выходящего воздуха. Это необходимо для максимально быстрой реакции на изменение температуры и наиболее точных показаний. Пробовал разместить датчик на периферии, поближе к краю, однако это сильно увеличивает время реакции и погрешность поддержания заданной температуры. К тому же, как показали измерения и эксперименты, за счёт высокой скорости потока воздуха и достаточной мощности нагревателя, разница в температуре непосредственно у выхода из трубы и на периферии у края не превышает 3℃. Датчик крепим за кабель кусочком листовой латуни:



Собираем всё вместе. В итоге получаем вот такой аппарат:



Сразу же отвечая на резонный вопрос — а не поплавятся ли печатные детали, особенно внутри сушилки? Нет, не поплавятся. Всё напечатано из PLA. В «подвале» сушилки температура едва превышает комнатную, поскольку именно снизу крыльчатка вентилятора забирает воздух. Тестовый прогон в течение суток при максимальной температуре 70℃ с последующей разборкой и исследованием деталей никаких деформаций не выявил. Для полной уверенности можно напечатать их из ABS. Тогда они точно выдержат, поскольку корпус самой сушилки отлит из именно этого пластика, и делать детали более термостойкими нет никакого смысла.

Испытания


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



Заключение


Предыдущую попытку доработать сушилку eSun eBOX нельзя назвать совсем уже полным провалом, кое-что улучшить мне всё-таки удалось. Однако и разогнать температуру выше 48℃ не получилось даже после нескольких часов непрерывной сушки.

В данном случае ситуация совсем иная. Благодаря более мощному нагревателю и более быстрому потоку воздуха доработанная овощесушилка легко и непринуждённо набирает температуру 70℃ меньше чем за минуту. Вдобавок, за счёт адаптированного под себя управления ею намного удобнее пользоваться — достаточно просто выбрать нужный пластик, всё остальное (температура и время) уже настроено заранее. При необходимости всегда можно добавить другие пластики и новую функциональность.

Так что этой переделкой я остался крайне доволен. Да, к сожалению эту сушилку не выйдет поставить рядом с принтером и печатать прямо из неё, как позволяет eBOX. Зато свою основную задачу она теперь выполняет отлично.

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

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

На этом всё, благодарю за внимание! Вопросы и конструктивная критика — приветствуются.

Ссылки


Схема и платы в EasyEDA.

Модели печатных деталей.
Добавить в избранное +72 +114
+
avatar
+14
Никак не пойму зачем такие узкие дорожки делают, чтобы побольше меди вытравить?
+
avatar
  • vimusov
  • 02 ноября 2020, 20:24
+7
зачем такие узкие дорожки делают
Всё просто — мне так больше нравится. Чисто эстетически, «на вкус и цвет». Никаких других причин нет.
+
avatar
  • kc_duke
  • 03 ноября 2020, 04:12
+13
Чтобы потом когда они отслоятся- поепаца.
+
avatar
  • Stress
  • 03 ноября 2020, 04:22
+4
согласен, можно было оставить экраном и травилось бы наверняка быстрее
+
avatar
  • bazis13
  • 03 ноября 2020, 23:45
+1
И экран и дорожки максимальной толщины, чтобы защититься от брака ЛУТ.
+
avatar
  • tedbeer
  • 02 ноября 2020, 19:31
+7
круто!
можно еще поставить на датчики весов и сообщать сколько влаги было удалено :)
+
avatar
+1
Высчитывать долю ангелов? Слишком точные весы нужны. Проще взвесить моток до и после, кмк. Хватит кухонных уже
+
avatar
  • tedbeer
  • 02 ноября 2020, 22:58
0
Про какую долю ангелов вы говорите я не понимаю, я не самогонщик. Я про весы и говорю — фактически встроить весы в устройство и считать разницу между до и после удаления влаги.
+
avatar
  • u3712
  • 03 ноября 2020, 03:23
+1
К сожалению, датчик «течет».
К 5 кг датчику подвесил 2.5 кг и оставил на выходные — в понедельник получил 2.4 кг и «0» уплыл на те-же 0.1 кг.
+
avatar
  • Aostspb
  • 03 ноября 2020, 11:22
-1
К сожалению, датчик «течет».
Надо дополнительно городить механизм разгрузки датчика между измерениями.
+
avatar
  • Corvair
  • 03 ноября 2020, 03:43
+1
Это уже анализатор влагосодержания получается :)
+
avatar
  • skleroz
  • 02 ноября 2020, 19:52
+3
Погрешность в два-три десятка градусов для такой конструкции — это вполне норма
Есть хоть какие-то замеры? Или так, «к слову пришлось»?
+
avatar
  • vimusov
  • 02 ноября 2020, 20:22
+5
Есть хоть какие-то замеры
Конечно есть. Я бы не стал просто так браться за доработку, не будь погрешность такой дикой. Замерял термометром UT320D — это лучшее из того, что у меня есть. В идеале бы тепловизор конечно, но жаба вусмерть душит покупать ради того чтобы изредка что-то померять.
+
avatar
  • bpg
  • 02 ноября 2020, 19:54
0
Плюс заслуженный. Сам задумывался как раз над такой переработкой, но все было лень и боязнь, вдруг херню придумал??? Вдруг не получиться. Теперь после этого поста свою точно переделаю, благо все детали есть.
Кстати, вместо AM2302 лучше поставить BME280, там как раз тоже i2C
+
avatar
  • vimusov
  • 02 ноября 2020, 20:26
0
вместо AM2302 лучше поставить BME280
Поправьте если ошибаюсь, но вроде бы BME280 ещё более тормозной в плане частоты опроса?
+
avatar
0
Кстати, проверяли на предмет «правдивости» температуры от китайского далласа?
+
avatar
  • vimusov
  • 03 ноября 2020, 05:46
0
проверяли на предмет «правдивости» температуры от китайского далласа?
Да, проверял, по прибору UT320D. Показания сходятся.
+
avatar
0
Самое безынерционное это термистор в виде мелкой бусинки, но тогда бы усложнилась калибровка.
+
avatar
  • sim31r
  • 05 ноября 2020, 01:49
0
Там не нужна особая точность, +-20 градусов хватит вполне, это же сушка, а не запекание какое-то.
+
avatar
  • vimusov
  • 05 ноября 2020, 10:10
+1
+-20 градусов хватит вполне
К сожалению не хватит. Если сушим PLA и поставили 45℃, а получили 65℃, то после сушки получим катушку с монолитным куском пластика вместо нити.
+
avatar
  • sim31r
  • 06 ноября 2020, 21:52
0
Это вряд ли, можно попробовать на десятке витков. Думаю не слипнется.
+
avatar
  • brn
  • 19 ноября 2020, 20:23
+1
ПЛА уже при 50 градусах начинает размягчаться и деформироваться, в итоге при длительном воздействии 50 градусов ухудшится качество печати, а на 65 превратится в печёный пирожок — glass transition temperature (Tg) of amorphous PLA lies between 55 to 60 °C :)

Если что, в машинах летом даже белый PLA плывёт )
+
avatar
+3
За прямые руки, безусловно, плюс, но не понял зачем было городить внешний добавочный корпус. Вся электроника поместилась бы и в родной корпус. Полно же места.
+
avatar
  • vimusov
  • 02 ноября 2020, 20:40
+4
не понял зачем было городить внешний добавочный корпус
Сушилку ставлю на стол. Высота стола 80 см. Мой рост 182 см. Если запихивать электронику прямо в корпус, дисплей будет на одном уровне с её «подвалом» и направлен в сторону. И чтобы на него посмотреть и покрутить энкодер, нужно будет нагибаться вдвое. На свой дисплей я смотрю нисколько не наклоняясь, почти под прямым углом. Эргономика, однако. Удобно, однако. И ещё не забываем, что даже с катушкой внутри сушилка всё равно лёгкая, а кнопка энкодера — тугая. Поэтому всё это будет легко и радостно кататься по акрилу на столе от попытки нажать на кнопку. В принципе, можно сделать корпус, чтобы дисплей был под углом около 45° к горизонтали. Тоже неплохо будет, в принципе. Но сушилка круглая, причём диаметр достаточно большой (234 мм). И к тому же имеет неровный борт хитрой формы. Чтобы это компенсировать, вынос всё равно будет большим. В общем, может быть в перспективе переделаю, эстетики ради, но пока более чем устраивает текущий вариант. Им действительно удобно пользоваться.
+
avatar
0
Можно ещё приспособить стойку на которую будет надеваться катушка с филаментом, в боковой стенке просверлить отверстие для нити. Таким образом можно было бы использовать сушилку одновременно печатая тем же пластиком.
Или одновременно нельзя использовать по каким-то другим причинам?
+
avatar
  • vimusov
  • 02 ноября 2020, 20:41
+1
Можно ещё приспособить стойку на которую будет надеваться катушка с филаментом
Совсем не понял, как это должно выглядеть по вашей задумке. Можете пожалуйста пояснить подробнее?
+
avatar
  • Zardek
  • 03 ноября 2020, 00:48
+2
Закрепить внутри по центру держатель для катушки с подшипником внутри, просверлить дырку в стенке для выхода нити. Надеть на держатель катушку с пластиком и высунуть нить через дырку. Так и печатать.
Ещё можно сделать фильтры на дырках, чтобы пыль отсеивать и провести тефлоновую трубку напрямик к экструдеру.
+
avatar
  • vimusov
  • 03 ноября 2020, 05:53
0
внутри по центру держатель для катушки с подшипником внутри
По центру — это прямо там, где выходит труба с находящимся внутри неё нагревателем? А как туда поставить этот держатель, чтобы не остаться при этом без нагревателя?
+
avatar
  • Zardek
  • 03 ноября 2020, 06:32
0
А какие проблемы? Если хотите, то можно к крышке держатель приделать. Катушка с пластиком и держателем весит максимум 1,1 кг. Это не такой уж большой вес.
+
avatar
  • vimusov
  • 03 ноября 2020, 06:46
0
А какие проблемы?
На третьем в этом посте фото, где показан термопредохранитель, вполне отчётливо видно, что спираль нагревателя заполняет трубу по центру полностью. Поэтому мне сложно представить, где и как там можно провести ось вращения катушки?

можно к крышке держатель приделать
А вот это уже интересная идея, спасибо! Надо будет подумать…
+
avatar
  • Zardek
  • 03 ноября 2020, 09:57
0
На третьем в этом посте фото, где показан термопредохранитель, вполне отчётливо видно, что спираль нагревателя заполняет трубу по центру полностью.
У вас пластик сушится прямо на этой трубе, в основании сушилки, или всё же в стандартной рабочей зоне для сушки продуктов? Что мешает закрепить держатель пластика к верхней крышке данной трубы?
Вообще, держатель катушки можно закрепить как угодно, можно даже за стенки сушилки — было бы желание, пластик и небольшое умение чертить 3д модели.
+
avatar
  • vimusov
  • 03 ноября 2020, 10:05
0
Да, вы правы. Там действительно есть куда пристроить крепёж под катушку. Надо будет подумать как это лучше обустроить. Тогда реально получится отличная замена eBOX.
+
avatar
  • Demz
  • 03 ноября 2020, 12:00
0
попробуйте по принципу тарелки в микроволновке — жесткое кольцо, по которому свободно катается 3лучевая подставка на колесиках, на которую и класть пластик. Крышку для бобины допилить бортами, чтобы витки не спадали. И сверлить дырку в сушилке не надо, достаточно небольшого паза в боковине — тогда катушку можно менять «на ходу».
Както так, нюансы уже по месту))

зы. конструкцию лучше делать съемной — тогда сушилку и для фруктов можно использовать пока не печатаете…
+
avatar
+3
Осталось PID-регулятор запилить, а не вот это вот))
+
avatar
  • vimusov
  • 02 ноября 2020, 21:41
0
Осталось PID-регулятор запилить
И зачем же? Чисто чтобы был, «для галочки»? Это не 3D-принтер, это сушилка пластика для него.
+
avatar
+1
Я сначала тоже подумал: «А где ПИД-регулирование?». А потом посмотрел видео, и понял, что овершут там всего в градус, и можно на ПИД вообще не заморачиваться.
+
avatar
  • vimusov
  • 03 ноября 2020, 10:28
0
можно на ПИД вообще не заморачиваться
Всё именно так. Во-первых, овершут по факту действительно невелик. Во-вторых, он компенсируется некоторым дифферентом по температуре в пространстве между выходом из трубы и бортами. В-третьих, он ещё больше компенсируется высокой тепловой инертностью. В-четвёртых, будь овершут даже больше, порядка 5~6℃ — для решаемой задачи (сушки пластика) это вообще никакой существенной роли не играет. Таким образом, зачем делать PID, я вообще не понимаю — это не хотэнд принтера и не паяльная станция, чтобы единицы и десятые доли градусов вылавливать. Главное чтобы не колбасило на десятки градусов, как на термопаре.
+
avatar
  • sim31r
  • 05 ноября 2020, 01:51
+1
10 градусов тоже особо не проблема.
+
avatar
  • Bald
  • 02 ноября 2020, 22:24
0
Мысль вынашиваю замутить свою сушилку. Термоконтроллер купил давно, нагреватель со встроенным вентиляторо недавно. Верхнюю часть корпуса из акрила есть мысль кто сделает. У меня одно сомнение как лучше. Воздух гоняется и греется в замкнутом пространстве, или крышка с отверстиями и воздух приходит из комнаты и уходит туда же
+
avatar
  • vimusov
  • 03 ноября 2020, 07:37
+1
У меня одно сомнение как лучше
В идеале надо делать как в промышленных дегидраторах — замкнутый контур с камерой осушения. Гоняем тёплый воздух по кругу так, чтобы он по пути проходил через катушку и на обратной дороге — через камеру с абсорбентом, например селикагелем. Тоже задумывался о постройке такого агрегата, но пока не нашёл где по приемлемой цене и без геморроя с доставкой купить подходящие вентиляторы. Они должны иметь рабочую (не максимально допустимую кратковременную, а именно рабочую неограниченную по времени!) температуру 80~100℃. Например вот такие или такие.
+
avatar
0
Если силикагель свежий и не наевшийся влаги, то он и без нагрева и вентиляторов будет на отлично отнимать влагу с окружающего пространства. Я собираю с заказов с digikey силикагель и индикаторные карточки в герметичную банку. Делал эксперимент: оставлял капельки воды внутри пластиковой 0,5л бутылки от колы. Одну закрывал так, во вторую вкладывал пакетик с силикагелем и за 30 минут капельки внутри второй исчезали…
Аналогично, когда после океанских купаний с гопро и не полной просушкой увидел испарину внутри стекла. Стеклянный лоток для обедов с пластиковой крышкой с резиновым уплотнителем и пакетик туда с камерой с открытым батарейным отсеком и вся влага высосана и без подогрева и циркуляции…
Кстати, одноюнитовые вентилляторы от серверов по даташиту выдерживают +70, и их везде как грязи…
+
avatar
  • vimusov
  • 03 ноября 2020, 09:13
0
одноюнитовые вентилляторы от серверов по даташиту выдерживают +70
К сожалению, чтобы их использовать, для сушилки придётся построить отдельный бункер метрах в тридцати под землёй. Иначе находиться рядом с этим танком с вертикальным взлётом и посадкой будет физически невозможно. В этом несложно убедиться, достаточно зайти в ближайшую серверную и насладиться бодрящим стройный хором голосов этих вентиляторов. И можно не бояться ошибиться дверью — нужную услышите за несколько метров ещё на подходе, даже если она из цельной стали в полметра толщиной.
+
avatar
0
Сам из мира датацентров. Если их выставить на 1/3 от номинала, то ок. Если же найти 2U размером и больше, то ещё больше ок.
Ключевой момент здесь в том, что в случае с силикагелем греть всё до 90 не нужно, а значит подойдёт любой практически вентилятор на подшипниках, коими серверные и являются, и не нужно колхоза с выносом мотора вне зоны нагрева. В вашей же таблице написано, что силикагель сушат при 65 :) вот и дайте +70, что вписывается в паспортную температуру вентиллятора.
+
avatar
  • vimusov
  • 03 ноября 2020, 17:29
0
В вашей же таблице написано, что силикагель сушат при 65
Это пластики при такой температуре сушат. А силикагелю без разницы. Однако вы навели меня на интересную мысль — а ведь действительно, если использовать силикагель, тогда зачем вообще греть воздух? Холодный в теории ничем не хуже. Главное создать его движение.
+
avatar
0
Это пластики при такой температуре сушат. А силикагелю без разницы
Вот температура сушки силикагеля указана явно:


Главное создать его движение
Можно и без движения. Греть немного ускоряет процесс, но когда уйма времени, то можно и не греть

Сушите повторно силикагель в сушке при 65, храните в стеклянной банке с крышкой. Да бросайте в коробку с филаментом, и найдите способ контроля влажности в коробке: 5% — аларм — меняем силикагель.

Я просто не знаю, насколько достоверно работают датчики влажности при околонулевом её значении.
+
avatar
  • vimusov
  • 03 ноября 2020, 18:57
0
Сушите повторно силикагель в сушке
Но зачем?! Не понимаю, серьёзно. Почему набравший воды после сушки силикагель нельзя просто взять и выбросить? Вы же не пытаетесь сушить комки из кошачьего лотка? Просто берёте и выбрасываете.
+
avatar
+1
Но зачем?!
The three R's – reduce, reuse and recycle – all help to cut down on the amount of waste we throw away

сушить комки
Ну аналогия не совсем уместна. Памперсы и кошачие лотки впитывают органику, которая даже после сушки не уйдёт из материала. Например азотосодержащие соединения.
А в случае с силикагелем это чистый водяной пар. Что делает его идеальным для повторного использования. Испарил пар и вперёд.
+
avatar
  • vimusov
  • 04 ноября 2020, 03:09
0
The three R's – reduce, reuse and recycle
Теперь понятно. Добавлю в прошивку ещё один режим.

Ну аналогия не совсем уместна. Памперсы и кошачие лотки
Привёл их в пример потому, что силикагель добываю в формате наполнителя для лотка, и что после его использования по назначению никто ни про какие RRR не вспоминает — просто берут и вываливают в общий мешок с мусором.
+
avatar
0
Было бы интересно положить индикаторную карточку в наполнитель? Конкретнее интересует 5% позиция, порозовеет или нет?

С сухим силикагелем — не розовеет.
Я его добываю из упаковок многокилобаксовых свичей в пакетиках, не россыпью… Ну и из посылок от digikey. Остановился добывать когда набрал пару кило :)
+
avatar
  • bazis13
  • 03 ноября 2020, 23:53
0
Хорошо, что мою посудомойку не вы проектировали.
+
avatar
  • Zardek
  • 03 ноября 2020, 10:47
+1
Они должны иметь рабочую (не максимально допустимую кратковременную, а именно рабочую неограниченную по времени!) температуру 80~100℃. 
В таких случаях мотор обычно выносят за рабочую область, оставляя в рабочей области лопасти вентилятора или турбины. Лопасти можно напечатать из abs, он такие температуры должен выдерживать. Либо тупо изъять из обычных вентиляторов. Моторчик — любой. Имхо, это будет дешевле, чем найти специализированный температуростойкий вентилятор.
+
avatar
  • vimusov
  • 03 ноября 2020, 11:39
0
мотор обычно выносят за рабочую область
Тоже вариант, в принципе. Взять какой-нибудь движок типа 775 и напечатать к нему крыльчатку. Балансировать её правда замучаешься, хотя один-то раз можно ухитриться.
+
avatar
  • Zardek
  • 03 ноября 2020, 13:31
+1
Поэтому и предложил вариант с каким-нибудь списанным вентилятором. Сдернуть с него крыльчатку и насадить на вал. У некоторых старых вентиляторов, помнится, крыльчатка вообще сидит на валу на винтике. Такой вентилятор был бы идеален. У других вал вмонтирован в крыльчатку и там надо думать, как его нарастить. Вообще вариантов уйма — всё зависит от величины требуемого вентилятора и наличия списанной техники под боком.
+
avatar
  • hcetih
  • 03 ноября 2020, 14:38
+1
Промышленные разные бывают, то же дерево сушат без всяких адсобрентов, просто заменяя часть воздуха на уличный. Правда я не знаю до какой влажности нужно сушить пластик, дерево то процентов до 6 сушат.
Вентилятор – как вариант разносить двигатель и крыльчатку по разным местам.
+
avatar
  • trembo
  • 02 ноября 2020, 23:57
+1
Тоже думал что-нибудь подобное сделать из своей сушилки.
Но ломать решётки не очень хочется.
Пусть остаются целые для грибов и яблок.
Поэтому если буду делать то скорее всего просто подниму верхнюю крышку дистансером.
Прикидывал его высоту — нужно миллиметров 50-60.
Если принтер был бы побольше то можно его напечатать.
Или отрезать полосу тонкого пластика и, соединив концы, свернуть её в трубу нужного диаметра.
+
avatar
  • Zardek
  • 03 ноября 2020, 00:42
+3
Прикольно. Ещё у народа есть мультиварки с режимом мультиповара. Тоже неплохо поддерживают температуру и имеют просторную бадью для размещения пластика. У моей режима мультиповара нет, но в режиме подогрева держит ровно 66С, что для Petg — великолепно и для ABS сойдёт. Сушит замечательно, главное не забывать подкладывать на дно полотнце и не прислонять катушку к стенкам кастрюли.
+
avatar
+2
вот читаю я периодически что народ с ардуиной делает и напоминает анекдот\хохму как программист к свадьбе готовился (писал программу для печати приглашений) ну или знаменитый мульт «крылья, лапы, хвост» после того как смотрю на стоимость аэрогрилей, где и таймеры и датчки Т нормальные ))

Но чисто из рук и головы из правильного места респект и уважуха, за проделанную работу.
Или еще добавлю напоминает как народ тратит время на моделирование и печать несколько часов того, что легко и быстро делается из деревяшек, уголков, алюм профилей и сопоставимой иди даже меньшей цене )) Если че — сам 3Д печатник )
+
avatar
  • vimusov
  • 03 ноября 2020, 07:20
+2
народ тратит время на моделирование и печать несколько часов того, что легко и быстро делается из деревяшек
Есть такое. Равно как и противоположные примеры. Страшно представить, какой потребуется парк станочного оборудования и ассортимент оснастки для изготовления вот этой детали «традиционными» методами:



3D-принтер откатает её легко и играючи. Даже без поддержек, они тут не требуются. Вообще, проникнувшись миром 3D печати, быстро понимаешь, что одна из главных проблем — понимание того, когда печать уместна и когда — нет.
+
avatar
+1
Ну так а если нет под рукой этого уголка и деревяшек, а принтер есть?
Плюс еще учиться моделировать тоже интереснее на чем-нибудь простом, но нужном, что потом будет печататься и в идеальном случае использоваться.
+
avatar
+1
Странный вы 3D печатник. Я к примеру в любом случае сначала делаю 3D модельку (пусть не фотореалистичную, но с соблюдением размеров), даже если потом будут деревяшки и уголки. Просто потому, что на 3D модели можно безболезненно изменения вносить или вообще всё переделать. А отпиленный не там уголок уже не нарастишь. Заодно можно посчитать сколько этих деревяшек и не только нужно покупать.
Да, и то что можно сделать быстро из деревяшек и уголков, моделить вообще минуты. Дольше печататься будет, но и за деревяшками нужно ехать покупать.
+
avatar
  • vimusov
  • 04 ноября 2020, 03:22
0
в любом случае сначала делаю 3D модельку
Не скажу за других, но мне лично такая смена мЫшленья даётся очень тяжко. Она правильна, удобна, полезна, даёт кучу преимуществ, которые вы перечислили. Но приучить себя сначала строить виртуальную модель, а потом уже браться за реальный материал, получается далеко не сразу. Постоянно хочется работать «по-старинке», принимаясь за дело сразу же, а не «без толку просиживая штаны» за компом. Сложно от этого отвыкнуть и перестроиться.
+
avatar
0
Дисплей не tft a lcd.
Я бы ещё добавил пункт «кастом», где можно накрутить самому температуру и время. Так, чисто для обратной совместимости с сушкой фруктов :)
А потом этот режим, я так думаю, и стал бы самым основным и удобным
+
avatar
  • vimusov
  • 03 ноября 2020, 06:14
+1
Дисплей не tft a lcd
Действительно. Спасибо, пофиксил.

чисто для обратной совместимости с сушкой фруктов
Эту сушилку никакие дополнительные пункты не уже спасут. После выпиливания промежуточных решёток склеил их на первый попавшийся в руки клей для пластика, никак не заботясь о его санитарной пригодности. Потому как кроме пластика сушить мне больше всё равно нечего. Но в целом идея о возможности что-то перенастроить — годная. Именно это я и подразумевал в заключении: "при необходимости всегда можно добавить другие пластики и новую функциональность".
+
avatar
  • Jet
  • 03 ноября 2020, 11:49
0
дисплей таки TFT LCD
+
avatar
+1
В нём есть Thin Film но нет Transistor :)
+
avatar
0
Хотя, справедливости ради, термопредохранитель всё-таки поставили прямо внутри трубы с нагревателем
У термопредохранителя есть забавная особенность дохнуть через определенное время использования. Обычно прибор после этого выбрасывается и покупается новый. Потому производители на них никогда не экономят, иногда даже парочку ставят последовательно.
+
avatar
  • Aostspb
  • 03 ноября 2020, 11:15
0
У термопредохранителя есть забавная особенность дохнуть через определенное время использования.
Это у поличвича есть такая «особенность». У плавкой вставки, чем по сути является одноразовый термопредохранитель — такой особенности нету.
+
avatar
  • Aostspb
  • 03 ноября 2020, 11:20
0
По-хорошему, для максимального эффекта осушения воздух должен циркулировать по замкнутому контуру, а водяные пары из него должны удаляться абсорбентом.
Феерично. :) Даже в промышленности так не делают, потому, что удаление влаги из абсорбента — процесс гораздо более длительный, чем поглощение влаги этим абсорбентом.

Иногда используется предварительное охлаждение воздуха с целью вымораживания влаги, но и здесь свое веское слово говорит экономика: энергия на вымораживание 1г влаги — одна и та же, а влагосодержание забортного воздуха в большинстве случаев ниже, чем выбрасываемого после сушки. Так зачем тратить лишнюю энергию там, где можно не тратить? :)
+
avatar
  • vimusov
  • 03 ноября 2020, 11:41
+1
удаление влаги из абсорбента
А зачем её вообще из него удалять? Отработанный абсорбент выкидывается, насыпается новый. Если очень сильно хочется, отработанный абсорбент можно попробовать просушить в духовке. Хотя я бы просто выкинул, он слишком дешёвый и его нужно слишком мало, чтобы так заморачиваться.
+
avatar
  • Aostspb
  • 03 ноября 2020, 13:44
0
А зачем её вообще из него удалять?
По условиям задачи. :) Так-то сорбент при сушке продувкой горячим воздухом — не нужен.
+
avatar
  • vimusov
  • 03 ноября 2020, 17:32
+1
Так-то сорбент при сушке продувкой горячим воздухом — не нужен
Я вот тоже серьёзно задумался в этом комменте — а зачем вообще греть воздух, если можно использовать абсорбент? Надо будет попробовать сделать сравнительные тесты.
+
avatar
  • Aostspb
  • 03 ноября 2020, 17:41
+1
зачем вообще греть воздух, если можно использовать абсорбент?
Там есть свои плюсы и минусы. Воздух греть — дешевле и технологически проще, иногда вещество не сохнет при комнатной температуре в разумные сроки… Или, как со сварочными электродами — поглощенная влага создает устойчивые кристаллогидраты, которые без нагрева не разрушаются.
+
avatar
  • vimusov
  • 03 ноября 2020, 18:59
0
Понятно, спасибо. Возможно, тогда наилучшим вариантом будет подогревать воздух в пределах разумного, градусов до 40. И одновременно с этим использовать силикагель как наиболее дешёвый и доступный абсорбент.
+
avatar
  • Aostspb
  • 05 ноября 2020, 10:47
0
градусов до 40. И одновременно с этим использовать силикагель
Это надо изучать. В общем случае — эффективность сорбентов падает с температурой.
+
avatar
  • sim31r
  • 05 ноября 2020, 02:00
0
его нужно слишком мало, чтобы так заморачиваться
Чтобы была большая площадь контакта с воздухом желательно 5-10 килограмм. Если граммы оставить, ждать наверное придется сутками.
+
avatar
0
Красиво получилось. Но у меня пластик как-то на батарее отопления отлично просыхает, если есть такая необходимость, а летом на балконе на солнышке.
+
avatar
  • vimusov
  • 03 ноября 2020, 12:36
0
летом на балконе на солнышке
И представить страшно, что станет с катушкой ABS после её качественной длительной прожарки «на балконе на солнышке»…
+
avatar
+1
Понятно, что не под прямыми лучами. Днем летом балкон разогревается до 40 градусов легко.
+
avatar
  • sim31r
  • 05 ноября 2020, 01:58
0
Под прямым солнцем может быть 80 градусов, если черная упаковка.
+
avatar
  • fazerr
  • 03 ноября 2020, 15:20
0
«Термопара в зависимости от угла поворота ручки сильнее или меньше поджимает биметаллическую пластинку, которая обмотана нихромовой проволокой»

Извините, не вижу термопары в оригинальной конструкции. По логике повествования сюда просится «регулятор температуры».
+
avatar
  • vimusov
  • 03 ноября 2020, 17:36
0
Извините, не вижу термопары в оригинальной конструкции
Вот она.



Стрелка указывает на саму биметаллическую пластину. С этого ракурса её действительно плохо видно.
+
avatar
  • fazerr
  • 04 ноября 2020, 15:33
+2
Это все-таки регулятор температуры на основе биметаллической пластины. Термопара там отсутствует за ненадобностью.
+
avatar
  • vimusov
  • 04 ноября 2020, 18:29
+1
Да, действительно. Термопара — пожалуй, слишком простонародный термин. По-научному это будет биметаллический терморегулятор. Поправил в статье, спасибо что заметили.
+
avatar
+1
Спасибо огромное! Очень познавательно.
+
avatar
+1
Я подумывал, насчет дешевой настольной печки/духовки с конвекцией для подобных целей.
Добавить туда аналогичное управление, но скорее даже удаленное, через Blynk.
Там как раз воздух по кругу гоняется. Заодно очень заинтересовала новомодная фишка типа «закалки» деталей в мелкой соли, в кухонной духовке не охота пластики «жарить».
+
avatar
  • sim31r
  • 05 ноября 2020, 01:56
0
По-хорошему, для максимального эффекта осушения воздух должен циркулировать по замкнутому контуру, а водяные пары из него должны удаляться абсорбентом. Здесь ничего этого нет, контур не замкнут, абсорбент отсутствует. Тем не менее и как ни странно, сушилка вполне неплохо справляется с пластиком.
Странная аксиома. Зачем замкнутый контур? Это на подводной лодке может актуально. В обычных условиях влажный воздух выбрасываем, свежий сухой со стороны засасываем.
В начале сушки, когда испаряется много влаги нужно подмешивать много сухого воздуха. В конце, когда последние капли влаги испаряются можно делать рециркуляцию почти без подмеса.
Можно датчик влажности прилепить. Но это актуально если электроэнергия дорогая.
На глазок можно 95% воздуха отправлять на рециркуляцию, а 5% подмешивать, постепенно вся влага выйдет. А в сушилках полностью воздух выбрасывается, что приводит к затратам электроэнергии на подогрев…
+
avatar
  • sim31r
  • 05 ноября 2020, 02:04
+1
Орехи грецкие в мультиварке сушу, приоткрыв крышку немного. Там есть и таймер и температуру любую можно задать, ставлю 50 градусов, сушит хорошо. Пластик тоже можно в ней сушить, если катушка влезет ))