85

Нижний подогрев из утюга.

Подогрев из утюга.

Привет ремонтникам.


Строго говоря, тема длиннопоста относится скорее к разработке, чем к ремонту.


Но поскольку разработка имеет практическую ценность в первую очередь для целей ремонта, я решил спросить у @gepka разрешения на публикацию в разделе ремонтников, с чем он любезно согласился.


Началось все с того, что мне принесли компактный дорожный утюг, с вопросом можно ли его починить. Разобрав его я увидел, что внутренние клеммы подгорели, регулятор из биметаллика частично оплавился, короче починить его я мог, но с только кастрацией термостабилизации. Поскольку стоимость утюга составляла что-то около 700 рублей, владелица решила, что ожидаемый результат все равно не стоит усилий и сказала, что можно выкинуть.


Я уже отрезал было шнур питания, но нечто внутри меня внезапно подтолкнуло уточнить, могу ли я забрать подошву. Разумеется нагреватель с подошвой для владелицы, как отдельная часть не представляли никакой ценности, и я получил добро делать со всем потрохами все, что мне заблагорассудится.


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


Но раз уж подвернулась оказия, было решено попробовать сделать подогрев из того, что упало в руки. Сразу оговорюсь, что я не ставил своей целью сделать устройство привлекательным. В данном случае мне требовалась только 1) функциональность и 2) безопасность прибора. Именно по этим двум причинам оно и сделано 1) невзрачно и в довольно короткие сроки 2) но все-таки в корпусе.


Прикинув, в какой корпус засунуть все потребное я остановился на корпусе CD-ROM.

Морда

LED семисегментник (текущая температура, установки, меню) тумблер отключения текущей работы (но не выключения устройства), индикатор работы и включенного нагревателя, ротационный энкодер с кнопкой, справа - разъем для обновления прошивки


Корпус

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

По силовой части – просто разъем Е14, выключатель, небольшая плата с предохранителем и фильтром мне показалась здоровой идеей, поскольку на момент сборки я не исключал, что буду использовать ШИМ на килогерцовых частотах, а шуметь относительно мощным потребителем в сеть – не лучшая идея. Позднее я обнаружил, что все, имеющиеся у меня IGBT имеют встроенный диод, что потребовало бы городить выпрямитель и, возможно, демпфер, а места внутри не так много. Так что отказался от этой мысли в пользу твердотелого реле.


Для управления полученным использован ротационный энкодер и семисегментник. МК взял первый, который удовлетворял потребностям по числу выводов. Удобнее всего показалось взять ATMega328p в виде готовой платы Arduino. Питание – обычный зарядник, кажется от nokia, с последующим DC-DC стабилизатором. Мог взять сразу на пять вольт, но на пяти вольтах как-то совсем вяло крутился вентилятор, а использовать длительное время нагреватель с питанием от 220в, при температуре в 200С, в самодельном устройстве руководствуясь «да авось не нагреется» мне показалось не лучшим подходом.


Примерно так я прикинул что у меня куда подключится (ну ладно, на самом деле сперва распаял как мне распаялось, а потом перерисовал, чтобы не путаться)

Вот так я скомпоновал модули.

Да, признаю, видок на троечку, как и аккуратность исполнения. Но поскольку повторять такое изделие мне наверняка более никогда не представится (а Вам часто приносят в ремонт утюги ?) – решил, что изготовление отдельного шилда нецелесообразно. Сомневаюсь, что при наличии альтернативы в виде дешевой плитки из Ашана кто-то из Вас пойдет покупать утюг, отрывать от него подошву и делать корпус по образу и подобию моего поделия.

Контроль температуры производится термопарой K-типа (можно было и по другому, но взял то, что было под рукой), термопара прикреплена в подошве снизу, на фото ее не видно, только шлейф с разъемами. Рассчет ОУ для контроля взят из интернета (в конце поста будут ссылки на источники – не вижу причин нагружать пост результатами чужих статей)


Рассчет термостабилизации – стандартный тепловой рассчет. Масса подошвы нам известна, (325 грамм, в моем случае) материал, как я предположил – сталь. Теплоемкость стали 460дж/(кг*градус). Текущую температуру берем через АЦП с термопары, зная на сколько градусов нам нужно подогреть – вычисляем мощность: 225вольт^2/сопротивление нагревателя= в моем случае 750Вт. Одна Ватт/секунда – один джоуль. В экселе прикидываем, проверяем экспериментально – все расчеты почти идеально подтвержаются практической работой.

Инициализация АЦП

void adc_init(void)

{

ADCSRA = (1<<ADEN)|(1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2); // устанавливаем делитель в 128, включаем ADC

DIDR0=0x01; // отключаем цифровые функции ноги ADC0

}


Снятие данных с АЦП (Обратите внимание ! Спева читаем ADCL !)


void start_adc()

{

ADMUX = 0x60|6; // выбран канал adc6, AREF=VCC чипа, результат измерений в ADCH,

// в ADCL 7,6 - младшие два бита.

ADCSRA|=0x40; // запускаем ADC на измерение (ADSC=1)

}


unsigned int get_temp()

{

unsigned char z,i;

i=ADCL>>6;

z=ADCH;

adc=(z<<2) | i;

res=tempraw[0];

start_adc();

}


unsigned int adc_to_temp()

{

float temp;

temp=adc/2.25+5;

return temp;

}


В программе все константы сведены в одну. Компилятор почти наверняка и так бы это сделал, но в силу привычки оформлено примерно так


unsigned int calc_heat(unsigned char t)

{

// Разницу температур, помножить на требуемую энергию для поднятия

// температуры на 1 гр С (149,5), делить на мощность (750Вт)=5,016722

// округляем до пяти, умножаем на 1000 (миллисекунд)

return((t-now_t)*200); // то же, что (t-now_t)/5*1000

}


Таймер у меня сконфигурирован на 1 мс, там у меня код


// desired value: 1000Hz

#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF

void timer0_ovf_isr(void)

{

TCNT0 = 0x06; //reload counter value (10mSec)

if (heat_timer) heat_timer--; // таймер нагрева

if (heat_pause) heat_pause--; // таймер паузы нагрева

if (press>0) press--; // таймер паузы нагрева

ind_no++;

if (ind_no>4) ind_no=0;

PORTB=(4<<ind_no) | (symbol[ind_no] & 0x03); //PB5-2 - номер индикатора, PB0-1 - LED

PORTD=(symbol[ind_no] & 0xF8) | 0x04; // скинули два младших бита - ими управляют PB0, PB1, оставили подтяжку pd2

}



А в главном теле программы


if (run) // запущен режим стабилизации заданной температуры

{

// сама стабилизация

if (heat_pause==0) // если вышла пауза после нагрева

{

if (now_t<end_temp)

{

heat_timer=calc_heat(end_temp);

heat_pause=heat_timer+5000;

}

else

{

if (run==1) // запущен режим стабилизации заданной температуры

{

if (now_t>=end_temp) beep(1000); // сигнал достижения температуры

run=2; // признак - продолжать выполнение, отключить сигнал.

}

}

}


Простите за форматирование, не нашел способа использовать разметочный тэг #CODE


В принципе это практически все главное, что Вам нужно от программы МК. Таймер, ноги, и меню, думаю все осилят. Если нет – не вопрос, выложу, не жалко, но разбираться Вам все равно придется, а это по опыту всегда лучше делать самому, а не ковыряясь в чужом коде.


Данные АЦП с термопары имеют практически идеальную линейную зависимость к температуре. Я не стал городить подстроечные резисторы для схемотехнической регулировки, а коррекцию производил вычислительно. Да, это потребовало использование float, чего я вообще-то очень не люблю, но в данном случае я очень далек от тому, чтобы упереться в производительность чипа, так что счел допустимым. Калибровка производилась вот этим (одолжил на пару дней у наших кондиционерщиков), Вы можете использовать все ту же термопару и мультиметр.

Правда диапазон прибора только до 200гр.С, а подогрев я рассчитывал до 250гр.С но в диапазоне от 30 до 200гр линейность практически идеальна, так что думаю, что и до 250 она такая же.



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



Используемые ссыли и ресурсы


Теплоемкость материалов http://steelcast.ru/steel_heat_capacity

Подключение термопары к мк http://avrproject.ru/publ/kak_podkljuchit/podkljuchaem_termo...

Модуль Arduino Pro Mini http://all-arduino.ru/arduino-pro-mini/

Даташит на ATMega 328p http://www.atmel.com/Images/Atmel-42735-8-bit-AVR-Microcontr...

Сообщество Ремонтёров

8.2K постов44.4K подписчиков

Правила сообщества

ЕСЛИ НЕ ХОТИТЕ, ЧТОБЫ ВАС ЗАМИНУСИЛИ НЕ ПУБЛИКУЙТЕ В ЭТОМ СООБЩЕСТВЕ ПРОСЬБЫ О ПОМОЩИ В РЕМОНТЕ, ДЛЯ ЭТОГО ЕСТЬ ВТОРОЕ СООБЩЕСТВО:


Посты с просьбами о помощи в ремонте создаются в дочернем сообществе: https://pikabu.ru/community/HelpRemont

К публикации допускаются только тематические статьи с тегом "Ремонт техники".

В сообществе строго запрещено и карается баном всего две вещи:

1. Оскорбления.

2. Реклама.

В остальном действуют базовые правила Пикабу.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества