//select PWM freq for fan motor (see constats table)
TCCR2B = TCCR2B & 0b11111000 | 0x01;
ОУ использовал MCP602. Откалибровал по #129 сообщению. Пришлость ставить 4,7 кОм резистор между пином на геркон и 5 В. Без него экран начинал мигать и включался режим #. Все коды ошибок брал из #142 сообщения. Далее мои наблюдения.
При нагреве тэна чувствуется пование чем-то. При простой продувке - нет. При разборе фена источник не выявлен. Кажется это тэн. Выветрится с течением времени?
При старте нагрева паяльного фена до заданной температуры происходит быстрый нагрев выходящего воздуха (который измеряется термопарой, которую использовал при калибровке и не менял расположения относительно паяльного фена) до заданной температуры минус примерно 100 градусов и начинается плавный донагрев выходящего воздуха с течением времени. При этом показания температуры ТП самого паяльного фена находятся в пределах выставленной температуры. Это нормальное поведение?
Далее мне не совсем понравилось как ведет паяльный фен при установке ручки на подставку. При установке ручки на подставку включается режим # и через мгновение происходит, как мне кажется, снятие с этого режима и идет нагрев и включается режим 3, который снять можно только с помощью кнопки энкодера. Скорее всего надо немного подкоректировать расположение геркона внутри ручки, т.к. происходит дребеск контакта, как мне кажется.
Еще заметил, что если после нагрева до 400 градусов выключить нагрев кнопкой энкодера и включить заново через мгновение, то всегда идет нагрев выше выставленной температуры и включается режим 3. Режим 3 не включается, если только фен полностью остынет. Есть идеи?
Пришлость ставить 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;
}
/* 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) и минимальные размеры корпуса или поставить вентилятор, тем самым увеличив корпус.
Вы организовывали активное охлаждение своей платы? Не делали замеров температуры симистора под нагрузкой?
Охлаждение пассивное - небольшой радиатор под ТО-220, нагрев не измерял специально, но палец терпит.
Это по проекту ОПС, хотя тут всё аналогично в части фена.
Олег! извини что не по теме, никак не могу врубиться в реализацию ФИУ. ( не могу отделить энкодер от ФИУ) мозги закипают, помоги пожалуйсто. нужно просто разобраться в математике на реальном примере по трем точкам и выход
Ой Спасибо!!!! это уже совсем отдельно, буду думать как это еше воткнуть. надо вторую отладочную делать а то моя сейчас под атмегу16 заточена делаю 2паялиника +фен под LCD1602 (другие много места занимают да и не кчему) по схеме то мне все понятно ..... програмирование изучаю (с английским беда). нигде немог найти обучалку по ФИУ
#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
надо поддерживать не мощность , а температуру. Если не сложно пару слов на эту тему.
Не понял, что Вы хотите узнать?
Что алгоритм регулирования даёт на выходе определённое значение мощности, зависящее от температуры?
Цитата:
И не совсем понял работу таймера 1
Присваиваем нужное значение задержки открытия симистора и запускаем с этим значением - всё просто, вроде.
Если интересно, что происходит конкретно в этих процедурах, смотрите в исходнике CyberLib.
Как Вы определили, что максимальная температура при 60% мощности, а минимальная при 10% ?
Эмпирически.
Очевидно, что для минимальной температуры не нужно вдувать всю полную мощность, а достаточно
гораздо меньшей. Плюс это уменьшит перерегулирование вверх при достижении заданной точки.
Кстати, для разогрева до макс. температуры, этому фену достаточно 30%. При 100% он возможно сгорит.
Цитата:
прокоментируйте пож. как работает оператор constrain
У меня в руках другой фен (8018 с "каличной" термопарой), у него при максимальной мощности температура примерно 700градусов. При 60 процентах мощности, если зависимость линейная должно получится около 420градусов, но ведь зависимость по идее нелинейная. Просто при калибровке придется поиграться с этими значениями (10 и 60).
По constrain - Вы ограничиваете значение мощности значениями от 0 до max_power = map(SetT, min_hotair_temp, max_hotair_temp, 10, 60); Я так понимаю важно правильные значения в начале и в конце положения регулятора ( у меня в качестве регулятора переменный резистор на входе АЦП), остальная нелинейность неважна.
Для усилителя термопары не лучше ли использовать схему с термокомпенсацией?
Лучше, но:
1. Нужно найти кабель с дополнительными двумя жилами - под диод компенсационного датчика и второй конец ТП. Соответственно и про разъём не забыть.
2. Потратиться, кроме ОУ, на прецизионный ИОН и найти указанные на схеме резисторы.
Без всего этого переделка смысла не имеет.
Уважаемый OlegK ! Ваша станция супер! А можно как то добавить переменный резистор для регулировки потока воздуха фена ? Если можно то как , то есть показать изменния .Ведь это очень удобно вращать поток воздуха резистором . Ещё раз спасибо за конструкцию !
А можно как то добавить переменный резистор для регулировки потока воздуха фена ?
На самом деле, относительно несложно, но времязатратно, а мне в данное время некогда ковыряться.
Посмотрите в смежной теме, как там опрашиваются потенциометры и в соответствующие переменные заданных температуры и оборотов записывайте полученные с них значения. Соответственно, запись-чтение из EEPROM заданных значений тоже можно удалить - запоминание будет "механическое".
Также индикацию поправить - курсор выбора уже будет не нужен.
А ещё крепко подумать, как всё это будет управляться в режиме калибровки. Либо её вообще выкинуть и жёстко происывать, как в упомянутоом выше проекте.
Подозреваю, что проще взять за основу проект из смежной темы, выкинуть оттуда паяльник и оставить лишь фен с крутилками. ))
Спасибо за ответ ! Конечно я имею ввиду только фен , то есть выставлять энкодером температуру , а вот поток воздуха резистором . Я понимаю что опять ковырятся в коде нужно время , тем более если каждый будет просить свои хотелки , то времени не хватит . Но навреное буду привыкать как есть .Удачи Вам в делах !
просто надо изменить алгоритм работы энкодера, чтоб он находился постоянно в регулеровке оборотов а при нажатии переключался в рег Т и по таймеру возвращался обратно. хотя из-за одного фена вообще морочиться с энкодером... хотя вон некоторые, вообще пытаются из фена, прицензионный термометр зделать
Переменная 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 управляет напряжением, а не мощностью в нагрузке. Не лучше ли сделать так:
При power=50 будет запуск при ~65 градусах, напряжение д.б.~155в, мощность 1/2 от максимальной. Т.е. будет более плавное регулирование.
2. По схеме с термокомпенсацией
Дополнительные провода не нужны: Можно R3, R2, D1 (схема выше) припаять в ручке, а земля там уже есть, провод будет не от +термопары, а от D1. Геркон соединяется с -термопары и при его включении будет идти сигнал через термопару и R3.
Прецизионный ИОН необязателен, в принципе эта таже схема что и у вас, только с термокомпенсацией холодного спая термопары.
На своем двухканальном :) ИБП отключил плату от канала 5 вольт и к 24 вольт подключил DC-DC (с хорошей обвязкой) и сделал 5.5 вольт стало все стабильней
только надо убедиться чтоб стабилизация была только по 5 вольтам, чет по двусторонней печатке непонятно. если идет и с 24, то отключить, иначе мешаться будет
да похоже на то но от китайцев любые сюрпризы можно ожидать что-то много у оптопары нагорожено и верхней стороны печатки не видно. но по идее тогда вторая пара должна была быть
ну... это может только омметр сказать, берешь прибор и меряешь мы не экстросенсы. есть гальваническая развязка значит можно как угодно соеденять хоть вместе хоть... яб -24 прямо на мосфет повесил а + на разъем
При работе иногда бывают срабатывания геркона. Стоит ли увеличивать номинал резистора между пином на геркон и 5 В(сейчас стоит 4,7 кОм резистор)? Например, 10 кОм?
Прошу помощи аудитории. У меня проект на Меге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 для определения времени включения нагревателя и ШИМ управления двигателем?
С чего Вы это взяли? Для моторчика фена юзается пин 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 в самом деле в воздухе. На нее что конденсатор на землю повесить?
как показала практика, установка на AREF просто конденцатора, мало чего дает, необходима запитка от опорного источника. самый простой способ, (как делают китайцы) повесить на AVCC. а судя по схеме там все ацп в воздухе
например на атмеге16 (схожей по структуре с атмега8), если не запитать AREF, то все аналоговые пины соберутся в кучку (изменение потенциала на одном пине, изменяет показания на остальных). делал климат контроль на меге8, тоже все плыло, пока соплю между 20 и 21 ногой не повесил.
Здравствуйте OlegK, спасибо вам за ваш труд. Собрал я наконец то все вместе. Схема ваша полностью, питание убрал с печатной платы, буду запитывать отдельно. Но применил LM 358, мне точность страшная не нужна. Схему взял такую:
Запустил, как ни странно ничего не сгорело. Но появляется ошибка !2, я понял, что проблема с термопарой или ОУ. Термопара рабочая проверил. В связи с этим вопрос: какое примерно должно быть напряжение на выходе ОУ при комнатной и максимальной температуре? Вот думаю, что что то с обвязкой ОУ не то? Буду благодарен за помощь.
В Вашей схеме нет цепи смещения, которая задаёт начальную величину при комнатной температуре, а значит, выходное напряжение усилителя будет 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 - необязательны.
ну, или кромсать код, с учётом работы без смещения. Но это уже самостоятельно ))
Добавил смещение, вроде нормально. Спасибо. Но появилось другая засада. В режиме калибровки при пплвном повышении мощности поведение не нормальное, для наглядности вместо нагревателя подключил лампу. При входе в калибровку Р-0.0 лампа не горит, при плавном повышении начинает мигать и в начале очень ярко потом слабее и на всем промежутке до Р-50.0 примерно одинаково. При уменьшении почти тоже самое, а вот при Р-0.0 лампа горит опять ярко, но если крутнуть ещё ниже высвесивается Р- -(минус)0.1, лампа тухнет и при возвращении в р- 0.0 уже не загорается. Не могу понять что происходит. На питание грешить не могу испробовал 3 разных в том числе и не импульсный, результат тот же. Схема один в один как у OlegK, стоит МОС3023, тиристор Т138. Выкладывая свою печатную плату пока без элементов смещения, может кто увидит ошибку а то глаз уже замылен. Новый взгляд увидит то, что я не вижу. На плате перемычка на запитку реле на 24в, но я использую на 12в, по этоиу вместо перемычки запаивал гасящий резистор на 300 Ом.
Поэкспериментил на лампочке, да, у меня иногда проявляется описанное Вами.
Попробуйте, для устранения "эффекта -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 мксек.
3- Ссылку на плату в Lay выложу позже, пока не разобрался как тут ссылки на файл добавить.
Сегодня купил ВТ139-600Е, буду пробовать, кстати нигде не нашел чем отличаются ВТ139-600Е от ВТ139-600, кроме цены. Может кто то подскажет, буду благодарен.
а зачем использовать оперционники с дрифтом нуля и без термокомпенсации когда для термопары есть недорогие спец микросхемы MAX31855 с точностью -+2С и термокомпенсацией? писал библиотеку под такую. скорость и точность совпадает. тут подробнее - https://elchupanibrei.livejournal.com/37378.html
Так победил писк ветилятора:
ОУ использовал MCP602. Откалибровал по #129 сообщению. Пришлость ставить 4,7 кОм резистор между пином на геркон и 5 В. Без него экран начинал мигать и включался режим #. Все коды ошибок брал из #142 сообщения. Далее мои наблюдения.
При нагреве тэна чувствуется пование чем-то. При простой продувке - нет. При разборе фена источник не выявлен. Кажется это тэн. Выветрится с течением времени?
При старте нагрева паяльного фена до заданной температуры происходит быстрый нагрев выходящего воздуха (который измеряется термопарой, которую использовал при калибровке и не менял расположения относительно паяльного фена) до заданной температуры минус примерно 100 градусов и начинается плавный донагрев выходящего воздуха с течением времени. При этом показания температуры ТП самого паяльного фена находятся в пределах выставленной температуры. Это нормальное поведение?
Далее мне не совсем понравилось как ведет паяльный фен при установке ручки на подставку. При установке ручки на подставку включается режим # и через мгновение происходит, как мне кажется, снятие с этого режима и идет нагрев и включается режим 3, который снять можно только с помощью кнопки энкодера. Скорее всего надо немного подкоректировать расположение геркона внутри ручки, т.к. происходит дребеск контакта, как мне кажется.
Еще заметил, что если после нагрева до 400 градусов выключить нагрев кнопкой энкодера и включить заново через мгновение, то всегда идет нагрев выше выставленной температуры и включается режим 3. Режим 3 не включается, если только фен полностью остынет. Есть идеи?
Да, провод относительно длинный, внутренней подтяжки недостаточно. Лучше сразу добавлять внешний резистор.
Возможно, китайский пластик, при нагреве запах даёт или спираль ещё не выгорела (можно до макс. температуры нагреть, погонять). У меня тоже запах был, сейчас сильно слабее стал. Или я привык ))
Да, нормально.
Или положение магнита. Или применить более мощный магнит.
Это, в общем-то, не режим 3, а код защиты. Свидетельствует о забросе температуры выше выставленной на величину больше 20 град. Попробуйте не сразу включать повторно, а дать немного сдуть температуру, градусов на 50. Можно ещё попробовать немного увеличить уставку, градусов до 30.
В процедуре DoProtect -
В процедуре DoProtect -
Мне помогло.
Вы организовывали активное охлаждение своей платы? Не делали замеров температуры симистора под нагрузкой? У меня при 350 градусах фена (~450W) симистор разогревается минимум до 60. Я ушел от идеи с 7812 и 7805 и сделал питание 5В от отдельного изолированного источника. Вот думаю, оставить пассивное охлаждение платы(на симистор повесил радиатор для ТО-220) и минимальные размеры корпуса или поставить вентилятор, тем самым увеличив корпус.
Охлаждение пассивное - небольшой радиатор под ТО-220, нагрев не измерял специально, но палец терпит.
Это по проекту ОПС, хотя тут всё аналогично в части фена.
Олег! извини что не по теме, никак не могу врубиться в реализацию ФИУ. ( не могу отделить энкодер от ФИУ) мозги закипают, помоги пожалуйсто. нужно просто разобраться в математике на реальном примере по трем точкам и выход
Вот так отдельно
для схемы

Ой Спасибо!!!! это уже совсем отдельно, буду думать как это еше воткнуть. надо вторую отладочную делать а то моя сейчас под атмегу16 заточена делаю 2паялиника +фен под LCD1602 (другие много места занимают да и не кчему) по схеме то мне все понятно ..... програмирование изучаю (с английским беда). нигде немог найти обучалку по ФИУ
Вот так отдельно
Здравствуйте. С ФИУ как бы понятно. Я так понял, что это регулятор мощности. Мы фактически регулируем мощность нагревателя, но надо поддерживать не мощность , а температуру. Если не сложно пару слов на эту тему. И не совсем понял работу таймера 1
Прошу пояснить .
Не понял, что Вы хотите узнать?
Что алгоритм регулирования даёт на выходе определённое значение мощности, зависящее от температуры?
Присваиваем нужное значение задержки открытия симистора и запускаем с этим значением - всё просто, вроде.
Если интересно, что происходит конкретно в этих процедурах, смотрите в исходнике CyberLib.
Подсмотрев в библиотеу 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; ?
Эмпирически.
Очевидно, что для минимальной температуры не нужно вдувать всю полную мощность, а достаточно
гораздо меньшей. Плюс это уменьшит перерегулирование вверх при достижении заданной точки.
Кстати, для разогрева до макс. температуры, этому фену достаточно 30%. При 100% он возможно сгорит.
Вам сюда.
У меня в руках другой фен (8018 с "каличной" термопарой), у него при максимальной мощности температура примерно 700градусов. При 60 процентах мощности, если зависимость линейная должно получится около 420градусов, но ведь зависимость по идее нелинейная. Просто при калибровке придется поиграться с этими значениями (10 и 60).
По constrain - Вы ограничиваете значение мощности значениями от 0 до max_power = map(SetT, min_hotair_temp, max_hotair_temp, 10, 60); Я так понимаю важно правильные значения в начале и в конце положения регулятора ( у меня в качестве регулятора переменный резистор на входе АЦП), остальная нелинейность неважна.
Вопросы OlegK.
1. В строке 839 все верно?
50.0 - это максимум power? Сейчас оно = 60.
2. Для усилителя термопары не лучше ли использовать схему с термокомпенсацией?
OlegK ! А можно как то добавить переменный резистор для регулировки потока воздуха фена ? Если можно то как , то есть показать изменния .
Всё верно там.
Это из другой "оперы".
Лучше, но:
1. Нужно найти кабель с дополнительными двумя жилами - под диод компенсационного датчика и второй конец ТП. Соответственно и про разъём не забыть.
2. Потратиться, кроме ОУ, на прецизионный ИОН и найти указанные на схеме резисторы.
Без всего этого переделка смысла не имеет.
Уважаемый OlegK ! Ваша станция супер! А можно как то добавить переменный резистор для регулировки потока воздуха фена ? Если можно то как , то есть показать изменния .Ведь это очень удобно вращать поток воздуха резистором . Ещё раз спасибо за конструкцию !
На самом деле, относительно несложно, но времязатратно, а мне в данное время некогда ковыряться.
Посмотрите в смежной теме, как там опрашиваются потенциометры и в соответствующие переменные заданных температуры и оборотов записывайте полученные с них значения. Соответственно, запись-чтение из EEPROM заданных значений тоже можно удалить - запоминание будет "механическое".
Также индикацию поправить - курсор выбора уже будет не нужен.
А ещё крепко подумать, как всё это будет управляться в режиме калибровки. Либо её вообще выкинуть и жёстко происывать, как в упомянутоом выше проекте.
Подозреваю, что проще взять за основу проект из смежной темы, выкинуть оттуда паяльник и оставить лишь фен с крутилками. ))
Спасибо за ответ ! Конечно я имею ввиду только фен , то есть выставлять энкодером температуру , а вот поток воздуха резистором . Я понимаю что опять ковырятся в коде нужно время , тем более если каждый будет просить свои хотелки , то времени не хватит . Но навреное буду привыкать как есть .Удачи Вам в делах !
просто надо изменить алгоритм работы энкодера, чтоб он находился постоянно в регулеровке оборотов а при нажатии переключался в рег Т и по таймеру возвращался обратно. хотя из-за одного фена вообще морочиться с энкодером... хотя вон некоторые, вообще пытаются из фена, прицензионный термометр зделать
Гляну возможность такого выбора, как будет время.
Т.е. при компиляции можно выбрать, что будет регулироваться по-дефолту.
Пасиба за идею ))
Точно !
2 OlegK:
1. Прошу уточнить, как работает процедура CalctImpulseControl().
Переменная power при вызове может принимать значение от 0 до 100 (реально ограничено диапазоном 10..60).
Правильно ли я понимаю - вызов
позволяет добиться более-менее линейной зависимости от power выходного действующего напряжения для синусоиды, 10мс - полупериод, максимальная задержка включения 9900=10000мкс-100мкс (длительность импульса включения симистора). Получаем задержку включения от 0 для power=100 (запуск 0 градусов) до 9900 при power=0 (запуск 180 градусов). При power=50 задержка соответственно = 9900/2 (запуск 90 градусов), действующее напряжение = 110в, мощность 1/4 от максимальной.
Получается, power управляет напряжением, а не мощностью в нагрузке. Не лучше ли сделать так:
При power=50 будет запуск при ~65 градусах, напряжение д.б.~155в, мощность 1/2 от максимальной. Т.е. будет более плавное регулирование.
2. По схеме с термокомпенсацией
Дополнительные провода не нужны: Можно R3, R2, D1 (схема выше) припаять в ручке, а земля там уже есть, провод будет не от +термопары, а от D1. Геркон соединяется с -термопары и при его включении будет идти сигнал через термопару и R3.
Прецизионный ИОН необязателен, в принципе эта таже схема что и у вас, только с термокомпенсацией холодного спая термопары.
P--
Попробуйте-поэкспериментируйте, практика нагляднее теории.
На своем двухканальном :) ИБП отключил плату от канала 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
Судя по плате, там два независимых выпрямителя со своим набором LC-фильтров, поэтому ничего не мешает объединению.
только надо убедиться чтоб стабилизация была только по 5 вольтам, чет по двусторонней печатке непонятно. если идет и с 24, то отключить, иначе мешаться будет
Похоже, по 5В каналу и стабилизируется - со стороны оптрона номинал фильтрующих электролитов 1000х10В, а по 24В-каналу 220х35В.
да похоже на то но от китайцев любые сюрпризы можно ожидать что-то много у оптопары нагорожено и верхней стороны печатки не видно. но по идее тогда вторая пара должна была быть
Итого: какой вывод, можно ли объединить землю?
Нашел вот еще такой обзор по нему: http://http://radiokot.ru/forum/viewtopic.php?f=55&t=138324
ну... это может только омметр сказать, берешь прибор и меряешь мы не экстросенсы. есть гальваническая развязка значит можно как угодно соеденять хоть вместе хоть... яб -24 прямо на мосфет повесил а + на разъем
а лучше вот
прекрасно себя зарекомендовала
Замкнул землю. БП вроде работает нормально, без нагрузки выдаёт +5 и +23.3
При работе иногда бывают срабатывания геркона. Стоит ли увеличивать номинал резистора между пином на геркон и 5 В(сейчас стоит 4,7 кОм резистор)? Например, 10 кОм?
Здравствуйте,reactor333 попробуйте поставить конденсатор(100нф)параллельно геркону.
Прошу помощи аудитории. У меня проект на Меге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 для определения времени включения нагревателя и ШИМ управления двигателем?
С чего Вы это взяли? Для моторчика фена юзается пин 3, который "висит" на Таймер2.
а учли? что под 8ю мегу надо другую распиновку делать? и AREF небось в воздухе висит, вот температура и гуляет
С чего Вы это взяли? Для моторчика фена юзается пин 3, который "висит" на Таймер2.
У меги8 на PD3 (пин 3 Ардуины) не выводится ШИМ с таймера2, это только в 328-й (если я не ошибаюсь). У меня этот пин задействован на управление оптотриаком нагревателя. А моторчик у меня висит на
int pinHotAirCoolerOut = 9; // PB1 Выход для вентилятора фена ( PWM )15 нога Меги8 в дипе
а настраивается ШИМ на этот выход так как и у Вас
TCCR1B = TCCR1B & 0b11111000 | 0x01;
TCCR1B - это ведь управление частотой таймера 1, а не 2. (Сформулировано не очень корректно, но я думаю что все понимают о какой частоте идет речь - частота ШИМ сигнала на ноге Меги для управления моторчиком). Или и 2 тоже?
а учли? что под 8ю мегу надо другую распиновку делать? и AREF небось в воздухе висит, вот температура и гуляет
Распиновка почти совпадает. А вот AREF в самом деле в воздухе. На нее что конденсатор на землю повесить?
http://dropmefiles.com/XvDIo
моя схема
как показала практика, установка на AREF просто конденцатора, мало чего дает, необходима запитка от опорного источника. самый простой способ, (как делают китайцы) повесить на AVCC. а судя по схеме там все ацп в воздухе
например на атмеге16 (схожей по структуре с атмега8), если не запитать AREF, то все аналоговые пины соберутся в кучку (изменение потенциала на одном пине, изменяет показания на остальных). делал климат контроль на меге8, тоже все плыло, пока соплю между 20 и 21 ногой не повесил.
удалено
Здравствуйте OlegK, спасибо вам за ваш труд. Собрал я наконец то все вместе. Схема ваша полностью, питание убрал с печатной платы, буду запитывать отдельно. Но применил LM 358, мне точность страшная не нужна. Схему взял такую:
Запустил, как ни странно ничего не сгорело. Но появляется ошибка !2, я понял, что проблема с термопарой или ОУ. Термопара рабочая проверил. В связи с этим вопрос: какое примерно должно быть напряжение на выходе ОУ при комнатной и максимальной температуре? Вот думаю, что что то с обвязкой ОУ не то? Буду благодарен за помощь.
В Вашей схеме нет цепи смещения, которая задаёт начальную величину при комнатной температуре, а значит, выходное напряжение усилителя будет 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 - необязательны.

ну, или кромсать код, с учётом работы без смещения. Но это уже самостоятельно ))
Спасибо я все понял, но у меня LM358, годится ли эта схема для него? Кроме замены номиналов резисторов нужно добавить ещё цепь смещения "начало"?
Да.
Добавил смещение, вроде нормально. Спасибо. Но появилось другая засада. В режиме калибровки при пплвном повышении мощности поведение не нормальное, для наглядности вместо нагревателя подключил лампу. При входе в калибровку Р-0.0 лампа не горит, при плавном повышении начинает мигать и в начале очень ярко потом слабее и на всем промежутке до Р-50.0 примерно одинаково. При уменьшении почти тоже самое, а вот при Р-0.0 лампа горит опять ярко, но если крутнуть ещё ниже высвесивается Р- -(минус)0.1, лампа тухнет и при возвращении в р- 0.0 уже не загорается. Не могу понять что происходит. На питание грешить не могу испробовал 3 разных в том числе и не импульсный, результат тот же. Схема один в один как у OlegK, стоит МОС3023, тиристор Т138. Выкладывая свою печатную плату пока без элементов смещения, может кто увидит ошибку а то глаз уже замылен. Новый взгляд увидит то, что я не вижу. На плате перемычка на запитку реле на 24в, но я использую на 12в, по этоиу вместо перемычки запаивал гасящий резистор на 300 Ом.
По идее, не должно такого быть, в минус ограничивается -
Оптопара в узле контроля 0 какая?
Мутновато, однако, плохо видно. Хорошо бы или почётче картинку или (лучше) сам lay-файл закинуть.
Поэкспериментил на лампочке, да, у меня иногда проявляется описанное Вами.
Попробуйте, для устранения "эффекта -0.1" в прерывании ISR(PCINT1_vect), в строке, примерно 662
эту конструкцию
заменить на эту
Далее - мерцания.
В процедуре открытия симистора HeaterOn(), строка 542.
Длительность задержки 100 мксек, нужно уменьшить до 30-50 мксек.
1- Таки да было на индикаторе минус 0.1
2- Оптопара 814
3- Ссылку на плату в Lay выложу позже, пока не разобрался как тут ссылки на файл добавить.
Сегодня купил ВТ139-600Е, буду пробовать, кстати нигде не нашел чем отличаются ВТ139-600Е от ВТ139-600, кроме цены. Может кто то подскажет, буду благодарен.
а зачем использовать оперционники с дрифтом нуля и без термокомпенсации когда для термопары есть недорогие спец микросхемы MAX31855 с точностью -+2С и термокомпенсацией? писал библиотеку под такую. скорость и точность совпадает. тут подробнее - https://elchupanibrei.livejournal.com/37378.html