Контроллер паяльного фена

reactor333
Offline
Зарегистрирован: 02.09.2017

reactor333 пишет:

Так победил писк ветилятора:

    //select PWM freq for fan motor (see constats table)
    TCCR2B = TCCR2B & 0b11111000 | 0x01;

ОУ использовал MCP602. Откалибровал по #129 сообщению. Пришлость ставить 4,7 кОм резистор между пином на геркон и 5 В. Без него экран начинал мигать и включался режим #. Все коды ошибок брал из #142 сообщения. Далее мои наблюдения. 

При нагреве тэна чувствуется пование чем-то. При простой продувке - нет. При разборе фена источник не выявлен. Кажется это тэн. Выветрится с течением времени?

При старте нагрева паяльного фена до заданной температуры происходит быстрый нагрев выходящего воздуха (который измеряется термопарой, которую использовал при калибровке и не менял расположения относительно паяльного фена) до заданной температуры минус примерно 100 градусов и начинается плавный донагрев выходящего воздуха с течением времени. При этом показания температуры ТП самого паяльного фена находятся в пределах выставленной температуры. Это нормальное поведение?

Далее мне не совсем понравилось как ведет паяльный фен при установке ручки на подставку. При установке ручки на подставку включается режим # и через мгновение происходит, как мне кажется, снятие с этого режима и идет нагрев и включается режим 3, который снять можно только с помощью кнопки энкодера. Скорее всего надо немного подкоректировать расположение геркона внутри ручки, т.к. происходит дребеск контакта, как мне кажется.

Еще заметил, что если после нагрева до 400 градусов выключить нагрев кнопкой энкодера и включить заново через мгновение, то всегда идет нагрев выше выставленной температуры и включается режим 3. Режим 3 не включается, если только фен полностью остынет. Есть идеи?

 

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

reactor333 пишет:
Пришлость ставить 4,7 кОм резистор между пином на геркон и 5 В. Без него экран начинал мигать и включался режим #.

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

Цитата:
Выветрится с течением времени?

Возможно, китайский пластик, при нагреве запах даёт или спираль ещё не выгорела (можно до макс. температуры нагреть, погонять). У меня тоже запах был, сейчас сильно слабее стал. Или я привык ))

Цитата:
Это нормальное поведение?

Да, нормально.

Цитата:
Скорее всего надо немного подкоректировать расположение геркона внутри ручки

Или положение магнита. Или применить более мощный магнит.

Цитата:
Еще заметил, что если после нагрева до 400 градусов выключить нагрев кнопкой энкодера и включить заново через мгновение, то всегда идет нагрев выше выставленной температуры и включается режим 3. Режим 3 не включается, если только фен полностью остынет. Есть идеи?

Это, в общем-то, не режим 3, а код защиты. Свидетельствует о забросе температуры выше выставленной на величину больше 20 град. Попробуйте не сразу включать повторно, а дать немного сдуть температуру, градусов на 50. Можно ещё попробовать немного увеличить уставку, градусов до 30.
В процедуре DoProtect -
 

/* Overheat protection */
    if (f1 && GetT > SetT + 30) {
        f1 = false;
        return 3;
    }

    if (f2 && GetT < SetT + 20) {
        f1 = true;
        f2 = false;
    }

 

reactor333
Offline
Зарегистрирован: 02.09.2017

OlegK пишет:

В процедуре DoProtect -

/* Overheat protection */
    if (f1 && GetT > SetT + 30) {
        f1 = false;
        return 3;
    }

    if (f2 && GetT < SetT + 20) {
        f1 = true;
        f2 = false;
    }

Мне помогло.

Вы организовывали активное охлаждение своей платы? Не делали замеров температуры симистора под нагрузкой? У меня при 350 градусах фена (~450W) симистор разогревается минимум до 60. Я ушел от идеи с 7812 и 7805 и сделал питание 5В от отдельного изолированного источника. Вот думаю, оставить пассивное охлаждение платы(на симистор повесил радиатор для ТО-220) и минимальные размеры корпуса или поставить вентилятор, тем самым увеличив корпус.

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

reactor333 пишет:
Вы организовывали активное охлаждение своей платы? Не делали замеров температуры симистора под нагрузкой?

Охлаждение пассивное - небольшой радиатор под ТО-220, нагрев не измерял специально, но палец терпит.
Это по проекту ОПС, хотя тут всё аналогично в части фена.

GEN
Offline
Зарегистрирован: 17.02.2017

Олег! извини что не по теме, никак не могу врубиться в реализацию ФИУ.  ( не могу отделить энкодер от ФИУ)  мозги закипают, помоги пожалуйсто. нужно просто разобраться в математике на реальном примере по трем точкам и выход

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

Вот так отдельно
 


#include <CyberLib.h>

volatile uint16_t ots = 9990; //max delay for 0% power
volatile byte power = 0;

void setup() {
    pinMode(2, INPUT_PULLUP);
    D5_Out; //Пин для симистора
    D5_Low;
    attachInterrupt(0, ZC, RISING);
}

void loop() {
    //присваиваем требуемую мощность
    power = тут читаем с потенциометра, например
    //рассчитываем задержку открывающего импульса
    CalctImpulseControl();
}

/* Прерывание по преходу через 0 сети */
void ZC() {
    StartTimer1(HeaterOn, ots);
    RestartTimer1();
}

/* Открывающий импульс для симистора */
void HeaterOn() {
    if (power > 0) {
        D5_High;
        delay_us(100);
    }
    D5_Low;
    StopTimer1();
}

/* Расчёт задержки открывающего импульса относительно полупериода */
void CalctImpulseControl() {
    ots = (uint16_t)(acos(power / 50.0 - 1.0 ) * 9900.0 / pi);
}

для схемы

GEN
Offline
Зарегистрирован: 17.02.2017

Ой Спасибо!!!! это уже совсем отдельно, буду думать как это еше воткнуть. надо вторую отладочную делать а то моя сейчас под атмегу16 заточена делаю 2паялиника +фен под LCD1602 (другие много места занимают да и не кчему) по схеме то мне все понятно ..... програмирование изучаю (с английским беда). нигде немог найти обучалку по ФИУ

8431
Offline
Зарегистрирован: 21.02.2018

OlegK пишет:

Вот так отдельно
 


#include <CyberLib.h>

volatile uint16_t ots = 9990; //max delay for 0% power
volatile byte power = 0;

void setup() {
    pinMode(2, INPUT_PULLUP);
    D5_Out; //Пин для симистора
    D5_Low;
    attachInterrupt(0, ZC, RISING);
}

void loop() {
    //присваиваем требуемую мощность
    power = тут читаем с потенциометра, например
    //рассчитываем задержку открывающего импульса
    CalctImpulseControl();
}

/* Прерывание по преходу через 0 сети */
void ZC() {
    StartTimer1(HeaterOn, ots);
    RestartTimer1();
}

/* Открывающий импульс для симистора */
void HeaterOn() {
    if (power > 0) {
        D5_High;
        delay_us(100);
    }
    D5_Low;
    StopTimer1();
}

/* Расчёт задержки открывающего импульса относительно полупериода */
void CalctImpulseControl() {
    ots = (uint16_t)(acos(power / 50.0 - 1.0 ) * 9900.0 / pi);
}

Здравствуйте. С ФИУ как бы понятно. Я так понял, что это регулятор мощности. Мы фактически регулируем мощность нагревателя, но надо поддерживать не мощность , а температуру. Если не сложно пару слов на эту тему. И не совсем понял работу таймера 1

 StartTimer1(HeaterOn, ots);
    RestartTimer1();

Прошу пояснить .

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

8431 пишет:
надо поддерживать не мощность , а температуру. Если не сложно пару слов на эту тему.

Не понял, что Вы хотите узнать?
Что алгоритм регулирования даёт на выходе определённое значение мощности, зависящее от температуры?

Цитата:
И не совсем понял работу таймера 1

Присваиваем нужное значение задержки открытия симистора и запускаем с этим значением - всё просто, вроде.
Если интересно, что происходит конкретно в этих процедурах, смотрите в исходнике CyberLib.

8431
Offline
Зарегистрирован: 21.02.2018

Подсмотрев в библиотеу CyberLib c  таймером я уже разобрался. 

По регулятору.  Не совсем понятно с power вот здесь

float tmp_power = ((Kp * err) + (Ki * integral));

float max_power = map(SetT, min_hotair_temp, max_hotair_temp, 10, 60);
    if (tmp_power < max_power && tmp_power > 0.0) integral += err;
    power = constrain(tmp_power, 0.0, max_power);

ots = (uint16_t)(acos(power / 50.0 - 1.0 ) * 9900.0 / pi);

 

Как Вы определили, что максимальная температура при 60% мощности, а минимальная при 10% ?

и прокоментируйте пож. как работает оператор constrain (power = constrain(tmp_power, 0.0, max_power);)

 

0.0 надо понимать как power = 0.0;  ?

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

8431 пишет:
Как Вы определили, что максимальная температура при 60% мощности, а минимальная при 10% ?

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

Цитата:
прокоментируйте пож. как работает оператор constrain

Вам сюда.

8431
Offline
Зарегистрирован: 21.02.2018

У меня в руках другой фен (8018 с "каличной" термопарой), у него при максимальной мощности температура примерно 700градусов.  При 60 процентах мощности,  если зависимость линейная должно получится около 420градусов,  но ведь зависимость по идее нелинейная. Просто при калибровке придется поиграться с этими значениями  (10 и 60). 

По constrain - Вы ограничиваете значение мощности значениями от 0 до max_power = map(SetT, min_hotair_temp, max_hotair_temp, 10, 60);  Я так понимаю важно правильные значения в начале и в конце положения регулятора ( у меня в качестве регулятора переменный резистор на входе АЦП), остальная нелинейность неважна.

p--
Offline
Зарегистрирован: 24.02.2018

Вопросы OlegK.

1. В строке 839 все верно?

ots = (uint16_t)(acos(power / 50.0 - 1.0 ) * 9900.0 / pi);

50.0 - это максимум power? Сейчас оно = 60.

2. Для усилителя термопары не лучше ли использовать схему с термокомпенсацией?

samosval55
Offline
Зарегистрирован: 30.01.2018

OlegK ! А можно как то добавить переменный резистор для регулировки потока воздуха  фена ? Если можно то как , то есть показать изменния . 

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

p-- пишет:
В строке 839 все верно?

Всё верно там.

Цитата:
Сейчас оно = 60

Это из другой "оперы".

Цитата:
Для усилителя термопары не лучше ли использовать схему с термокомпенсацией?

Лучше, но:
1. Нужно найти кабель с дополнительными двумя жилами - под диод компенсационного датчика и второй конец ТП. Соответственно и про разъём не забыть.
2. Потратиться, кроме ОУ, на прецизионный ИОН и найти указанные на схеме резисторы.
Без всего этого переделка смысла не имеет.

samosval55
Offline
Зарегистрирован: 30.01.2018

Уважаемый OlegK ! Ваша станция супер! А можно как то добавить переменный резистор для регулировки потока воздуха  фена ? Если можно то как , то есть показать изменния .Ведь это очень удобно вращать поток воздуха резистором . Ещё раз спасибо за конструкцию !

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

samosval55 пишет:
А можно как то добавить переменный резистор для регулировки потока воздуха  фена ?

На самом деле, относительно несложно, но времязатратно, а мне в данное время некогда ковыряться.
Посмотрите в смежной теме, как там опрашиваются потенциометры и в соответствующие переменные заданных температуры и оборотов записывайте полученные с них значения. Соответственно, запись-чтение из EEPROM заданных значений тоже можно удалить - запоминание будет "механическое".
Также индикацию поправить - курсор выбора уже будет не нужен.
А  ещё крепко подумать, как всё это будет управляться в режиме калибровки. Либо её вообще выкинуть и жёстко происывать, как в упомянутоом выше проекте.

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

 

samosval55
Offline
Зарегистрирован: 30.01.2018

Спасибо за ответ ! Конечно я имею ввиду только фен , то есть выставлять энкодером температуру , а вот поток воздуха резистором . Я понимаю что опять ковырятся в коде нужно время , тем более если каждый будет просить свои хотелки , то времени не хватит . Но навреное буду привыкать как есть .Удачи Вам в делах !

GEN
Offline
Зарегистрирован: 17.02.2017

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

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

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

samosval55
Offline
Зарегистрирован: 30.01.2018

Точно !

samosval55
Offline
Зарегистрирован: 30.01.2018

 

 

 

p--
Offline
Зарегистрирован: 24.02.2018

2 OlegK:

1. Прошу уточнить, как работает процедура CalctImpulseControl().

/* Calculate delay for triac */
void CalctImpulseControl() {
    ots = (uint16_t)(acos(power / 50.0 - 1.0 ) * 9900.0 / pi);
}

Переменная power при вызове может принимать значение от 0 до 100 (реально ограничено диапазоном 10..60).

Правильно ли я понимаю -  вызов

acos(power / 50.0 - 1.0 )

позволяет добиться более-менее линейной зависимости от power выходного действующего напряжения для синусоиды,  10мс - полупериод, максимальная задержка включения 9900=10000мкс-100мкс (длительность импульса включения симистора). Получаем задержку включения от 0 для power=100 (запуск 0 градусов) до 9900 при power=0 (запуск 180 градусов). При power=50 задержка соответственно = 9900/2 (запуск 90 градусов), действующее напряжение = 110в, мощность 1/4 от максимальной.

Получается, power управляет напряжением, а не мощностью в нагрузке. Не лучше ли сделать так:

/* Calculate delay for triac */
void CalctImpulseControl() {
    ots = (uint16_t)(acos( sqrt(power / 100.0)*2 - 1.0 ) * 9900.0 / pi);
}

При power=50 будет запуск при ~65 градусах, напряжение д.б.~155в, мощность 1/2 от максимальной. Т.е. будет более плавное регулирование.

2. По схеме с термокомпенсацией

Дополнительные провода не нужны: Можно R3, R2, D1 (схема выше) припаять в ручке, а земля там уже есть, провод будет не от +термопары, а от D1. Геркон соединяется с -термопары и при его включении будет идти сигнал через термопару и R3.

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

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

P--
Попробуйте-поэкспериментируйте, практика нагляднее теории.

afon
Offline
Зарегистрирован: 12.05.2017

Sergant пишет:

На своем двухканальном :) ИБП отключил плату от канала 5 вольт и к 24 вольт подключил DC-DC (с хорошей обвязкой) и сделал 5.5 вольт стало все стабильней

Т.е. объединить земли у этого БП нельзя?

https://www.aliexpress.com/item/Input-AC85-265V-Dual-Out-AC-to-DC-Power-Module-Supply-Isolation-Output-24V-5V-Y103/32787540181.html

 

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

afon пишет:
Т.е. объединить земли у этого БП нельзя?

Судя по плате, там два независимых выпрямителя со своим набором LC-фильтров, поэтому ничего не мешает объединению.

GEN
Offline
Зарегистрирован: 17.02.2017

только надо убедиться чтоб стабилизация  была только по 5 вольтам, чет по двусторонней печатке непонятно. если идет и с 24, то отключить, иначе мешаться будет

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

Похоже, по 5В каналу и стабилизируется - со стороны оптрона номинал фильтрующих электролитов 1000х10В, а по 24В-каналу 220х35В.

GEN
Offline
Зарегистрирован: 17.02.2017

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

afon
Offline
Зарегистрирован: 12.05.2017

Итого: какой вывод, можно ли объединить землю?
Нашел вот еще такой обзор по нему: http://http://radiokot.ru/forum/viewtopic.php?f=55&t=138324

GEN
Offline
Зарегистрирован: 17.02.2017

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

а лучше вотпрекрасно себя зарекомендовала

afon
Offline
Зарегистрирован: 12.05.2017

Замкнул землю. БП вроде работает нормально, без нагрузки выдаёт +5 и +23.3
 

reactor333
Offline
Зарегистрирован: 02.09.2017

При работе иногда бывают срабатывания геркона. Стоит ли увеличивать номинал резистора между пином на геркон и 5 В(сейчас стоит 4,7 кОм резистор)? Например, 10 кОм?

pter
Offline
Зарегистрирован: 15.02.2016

Здравствуйте,reactor333 попробуйте поставить конденсатор(100нф)параллельно геркону.

8431
Offline
Зарегистрирован: 21.02.2018

Прошу помощи аудитории.  У меня проект на Меге8 (ардуино NG). Работает, но плохо ( нет стабильности температури) -  я для определения времени задержки включения тиристора использую разность текущего и прошлого времени. Переделал как у автора темы - взял библиотеку CyberLib , убрал с нее все, кроме таймера1  (мне больше ничего с этой библиотеки не нужно). Подключил библиотеку к проекту и соответственно использую этот таймер1 для управления временем включения тиристора(симистора) как и автор темы. Для ардуино-про  на меге328 все компилируется,  а для ардуино NG на меге8 перестало (не может для этой плати). Проект претерпел изменения только здесь

void HeaterON() {

      if (ONFe)
  {
      if (PowerH > 0.0)
      {
      digitalWrite(pinHotAirOut, HIGH);   // triac firing
      delayMicroseconds(50);
      }
      digitalWrite(pinHotAirOut, LOW);    // triac Off
  }
  StopTimer1();
}
//отслеживание ZeroCros  (function to be fired at the zero crossing to dim the heating)
void ZC() {
//Htime = micros();
StartTimer1(HeaterON, ots);
  RestartTimer1();
}

Все остальное осталось без изменений. Таймер1 ведь и управление им как бы одинаковое и в 328-й и в 8-й мегах. Может я чего-то все же не знаю и не понимаю? Подтолкните идею  пож.

И еще вопрос. Этот же таймер1 мы используем и для управления (ШИМ) двигателем скорости потока воздуха.

TCCR1B = TCCR1B & 0b11111000 | 0x01;

Не дерутся ли между собой вызовы таймера1 для определения времени включения нагревателя и ШИМ управления двигателем?

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

8431 пишет:
Этот же таймер1 мы используем и для управления (ШИМ) двигателем скорости потока воздуха.

С чего Вы это взяли? Для моторчика фена юзается пин 3, который "висит" на Таймер2.

GEN
Offline
Зарегистрирован: 17.02.2017

а учли? что под 8ю мегу надо другую распиновку делать? и AREF небось в воздухе висит, вот температура и гуляет

8431
Offline
Зарегистрирован: 21.02.2018

OlegK пишет:

С чего Вы это взяли? Для моторчика фена юзается пин 3, который "висит" на Таймер2.

У меги8 на PD3  (пин 3 Ардуины) не выводится ШИМ с таймера2, это только в 328-й (если я не ошибаюсь). У меня этот пин задействован на управление оптотриаком нагревателя. А моторчик у меня висит на

int pinHotAirCoolerOut = 9;  // PB1 Выход для вентилятора фена ( PWM )15 нога Меги8 в дипе

а настраивается ШИМ на этот выход так как и у Вас

 TCCR1B = TCCR1B & 0b11111000 | 0x01;

 TCCR1B  - это ведь управление частотой таймера 1,  а не 2. (Сформулировано не очень корректно, но я думаю что все понимают о какой частоте идет речь - частота ШИМ сигнала на ноге Меги для управления моторчиком). Или и 2 тоже?

GEN пишет:

а учли? что под 8ю мегу надо другую распиновку делать? и AREF небось в воздухе висит, вот температура и гуляет

Распиновка почти совпадает. А вот AREF в самом деле в воздухе. На нее что конденсатор на землю повесить?

8431
Offline
Зарегистрирован: 21.02.2018

http://dropmefiles.com/XvDIo

моя схема

GEN
Offline
Зарегистрирован: 17.02.2017

как показала практика, установка на AREF просто конденцатора, мало чего дает, необходима запитка от опорного источника. самый простой способ, (как делают китайцы) повесить на AVCC. а судя по схеме там все ацп в воздухе

например на атмеге16 (схожей по структуре с атмега8), если не запитать AREF, то все аналоговые пины соберутся в кучку (изменение потенциала на одном пине, изменяет показания на остальных).  делал климат контроль на меге8, тоже все плыло, пока соплю между 20 и 21 ногой не повесил.

8431
Offline
Зарегистрирован: 21.02.2018

удалено

aleks.kav
Offline
Зарегистрирован: 24.12.2017

Здравствуйте OlegK, спасибо вам за ваш труд. Собрал я наконец то все вместе. Схема ваша полностью, питание убрал с печатной платы, буду запитывать отдельно. Но применил LM 358, мне точность страшная не нужна. Схему взял такую:

Запустил, как ни странно ничего не сгорело. Но появляется ошибка !2, я понял, что проблема с термопарой или ОУ. Термопара рабочая проверил. В связи с этим вопрос: какое примерно должно быть напряжение на выходе ОУ при комнатной и максимальной температуре? Вот думаю, что что то с обвязкой ОУ не то? Буду благодарен за помощь.

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

aleks.kav пишет:
Вот думаю, что что то с обвязкой ОУ не то?

В Вашей схеме нет цепи смещения, которая задаёт начальную величину при комнатной температуре, а значит, выходное напряжение усилителя будет 0. Термопара не умеет вырабатывать напряжение, если температуры горячего спая и свободных концов одинаковы.
Отсюда и ошибка 2. Если откроете код, найдёте функцию
/* Protection function */
byte DoProtect()

то в ней увидите описание ошибки
/* Crytical protection: thermocouple value is not valid or wires has short circuit */
    if (GetT < 10) {
        return 2;
    }

Что означает, что на входе усилителя меньше 10 градусов (в Вашем случае это 0).

Цитата:
В связи с этим вопрос: какое примерно должно быть напряжение на выходе ОУ при комнатной и максимальной температуре?

В скетче прямое преобразование, градусы = отсчётам АЦП, напряжение знать не требуется.
Но, если очень нужно, то посчитайте, из расчёта одного "попугая" АЦП = Uпит / 1023

Можете дополнить (переделать) усилитель по этой схеме (по выходу, после R5, забыл конденсатор на 0.1 нарисовать). Д1, Д2 - необязательны.

ну, или кромсать код, с учётом работы без смещения. Но это уже самостоятельно ))

aleks.kav
Offline
Зарегистрирован: 24.12.2017

Спасибо я все понял, но у меня LM358, годится ли эта схема для него? Кроме замены номиналов резисторов нужно добавить ещё цепь смещения "начало"?

 

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

Да.

aleks.kav
Offline
Зарегистрирован: 24.12.2017

Добавил смещение, вроде нормально. Спасибо. Но появилось другая засада. В режиме калибровки при пплвном повышении мощности поведение не нормальное, для наглядности вместо нагревателя подключил лампу. При входе в калибровку Р-0.0 лампа не горит, при плавном повышении начинает мигать и в начале очень ярко потом слабее и на всем промежутке до Р-50.0 примерно одинаково. При уменьшении почти тоже самое, а вот при Р-0.0 лампа горит опять ярко, но если крутнуть ещё ниже высвесивается Р- -(минус)0.1, лампа тухнет и при возвращении в р- 0.0 уже не загорается. Не могу понять что происходит. На питание грешить не могу испробовал 3 разных в том числе и не импульсный, результат тот же. Схема один в один как у OlegK, стоит МОС3023, тиристор Т138. Выкладывая свою печатную плату пока без элементов смещения, может кто увидит ошибку а то глаз уже замылен. Новый взгляд увидит то, что я не вижу. На плате перемычка на запитку реле на 24в, но я использую на 12в, по этоиу вместо перемычки запаивал гасящий резистор на 300 Ом.

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

aleks.kav пишет:
если крутнуть ещё ниже высвесивается Р- -(минус)0.1

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

(power > 0.0) ? (power -= 0.1) : (power = 0.0);

Цитата:
стоит МОС3023, тиристор Т138.

Оптопара в узле контроля 0 какая?

Цитата:
может кто увидит ошибку а то глаз уже замылен.

Мутновато, однако, плохо видно. Хорошо бы или почётче картинку или (лучше) сам lay-файл закинуть.

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

aleks.kav пишет:
Не могу понять что происходит.

Поэкспериментил на лампочке, да, у меня иногда проявляется описанное Вами.
Попробуйте, для устранения "эффекта -0.1" в прерывании ISR(PCINT1_vect), в строке, примерно 662
эту конструкцию

(power > 0.0) ? (power -= 0.1) : (power= 0.0);

заменить на эту

power -= 0.1;
if (power < 0.0) power= 0.0;

Далее - мерцания.
В процедуре открытия симистора HeaterOn(), строка 542.
Длительность задержки 100 мксек, нужно уменьшить до 30-50 мксек.

aleks.kav
Offline
Зарегистрирован: 24.12.2017

 1- Таки да было на индикаторе минус 0.1

2- Оптопара 814

3- Ссылку на плату в Lay выложу позже, пока не разобрался как тут ссылки на файл добавить.

Сегодня купил ВТ139-600Е, буду пробовать, кстати нигде не нашел чем отличаются ВТ139-600Е от ВТ139-600, кроме цены. Может кто то подскажет, буду благодарен.

enjoyneering
enjoyneering аватар
Offline
Зарегистрирован: 05.09.2016

а зачем использовать оперционники с дрифтом нуля и без термокомпенсации когда для термопары есть недорогие спец микросхемы MAX31855 с точностью -+2С и термокомпенсацией? писал библиотеку под такую. скорость и точность совпадает. тут подробнее - https://elchupanibrei.livejournal.com/37378.html