Моя паяльная станция

Valdr
Offline
Зарегистрирован: 03.09.2015

Ок. Подожду до понедельника.
Я так понимаю, при использовании делителя, ОУ не используете.
Кроме делителя еще нужно в коде менять коефициенты?

gug
Offline
Зарегистрирован: 07.04.2015

жизнь вносит свои коррективы, вызвали на работу, у меня стоит подстроечник (порядка 200 Ом) к +, терморезистор на землю, со средней точки на атмегу, к сожалению коофициэнты прийдёться Вам считать самому, не могу найти в своей файло помойке, изменения вносяться сюда - int solderTCouple = map(analogRead(pinSolderTCouple), 0, 780, 0, 480), 

Gres пишет:

int solderTCouple = map(analogRead(pinSolderTCouple), 0, 780, 0, 480); В данной строке значению solderTCouple присваивается считанные с аналогового, одноимённого порта значение, которое может принимать реальное, числовое значение от 0 до 780, с помощью функции map этот диапазон сжимается до диапазона от 0 до 480, то-есть до пределов возможной температуры. Что то мутно я объяснил, посмотрите в мануале, тут на сайте описание функции map, там очень подробно все описано. http://arduino.ru/Reference/Map

gug пишет:

Читал я то описание, для меня там один матерный язык)))), Вы обьяснили гораздо лучше, и я понял, спасибо!!!!!

Поправьте меня если я не прав. Число 780 это соответсвует 3,8 вольта с выхода операционника, т.е. 780 шагов АЦП по 0.0049 вольта?

т.е первая пара 0, 780 это то что выдаёт на вход атмеги, вторая пара 0, 480 шкала температуры которая отображаеться на индикаторе, я надеюсь понятно написал? 

считаеться просто на нужной температуре допустим при комнатной температуре, возьмём 20 градусов, на вх атмеги поступает 2В делишь на 0,0049 получаем 408 а при 250 градусов на вх атмеги поступает 3 вольта делишь на 0,0049 получаешь нужную циферку 612, и того   int solderTCouple = map(analogRead(pinSolderTCouple), 408, 612, 20, 250)

Valdr
Offline
Зарегистрирован: 03.09.2015

Ок. Спасибо. 

Получается с делителем я правильно понял. А про коэфициенты не знал, про них узнал только вчера, перечитывая заново тему и увидя ваш пост) А как считать, тогда не понял.
Сейчас все понятно написали, сегодня вечером поиграюсь. Получается что подстроечник тут не особо нужен, температура подстраивается коефициентами. Лучше, наверное, даже поставить на "+" обычный резистор ом на 200, а подстроечник, ом на 10, поставить последовательно к термистору, чтоб скорректировать разницу термистора в жалах разного происхождения.

gug
Offline
Зарегистрирован: 07.04.2015

смысла убирать один подстроечник и ставить другой в нижнем плече нету совсем, всё можно сделать и тем что в верхнем плече стоит))

6441bm3
Offline
Зарегистрирован: 16.01.2016

Vln пишет:

 

Прошивка автора под 12В фен, с 24В надо подбирать в прошивке диапазон регулировки.

что надо изменить в прошивке для плавной регулировки?мега 328

gug
Offline
Зарегистрирован: 07.04.2015

там принцип тот же что и у паяльника

6441bm3
Offline
Зарегистрирован: 16.01.2016

gug пишет:

там принцип тот же что и у паяльника

я просто в прошивках 0 ,если б ткнули носом где что поменять))

Valdr
Offline
Зарегистрирован: 03.09.2015

У вас фен 24В, блок питания как у автора?
24В фен - "+" вентилятора подключить на вход "+24В", в прошивке не нужно ничего менять!
Если при уменьшениия оборотов вентилятор в фене останавливается, то это беда БП. 
​На Ютубе Олегу не вы вопрос задавали?

6441bm3
Offline
Зарегистрирован: 16.01.2016

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

Valdr
Offline
Зарегистрирован: 03.09.2015

У меня была беда с феном на таком блоке как у автора, на новом блоке фен регулируется отлично, пробовал подключать и на 24В и на 12В, фен не пищит, а вот новый блок писклявый, но он писчит когда идет нагрев на паялинике.

6441bm3
Offline
Зарегистрирован: 16.01.2016

вот этот товарищ  писал: 

Собрал Вашу станцию. Лайк однозначно. Была та же проблема, как тут люди пишут, с вентилятором фена на 24В, не регулировались обороты или максимум или вырубался... Полез в инет и накопал вот,что. Почитайте http://arduino.ru/forum/obshchii/shim-ili-kak-vzorvat-mosfet. Вобщем снизил частоту ШИМ. В коде 0х01 заменил на 0х02 и регулировка заработала. Фен правда издает писк в определенных режимах. Подозрение у меня возникло, что полевики IRFZ44 из Китая, имеют разные параметры, одни могут работать на такой частоте другие нет....Наверно из десятка можно выбрать какой будет работать ...не проверял. И с писком этим надо бы определиться...хотя можно и так оставить. Продолжайте творить. Будем следить :)

Valdr
Offline
Зарегистрирован: 03.09.2015

Пишут некоторые что IRFZ44 сильно греются, у меня холодный, меняют на IRL3705
Ради интереса, подключил снова прошлый блок питания и подпаял на 24В керамику 4мкф (другой не оказалось)
Фен все так же, нормально не регулируется. И как прошлый раз, БП уходил в защиту при подключении паяльника, но тогда оказалось что у меня коротил нагреватель на термопару, теперь нагреватель керамический, но БП с ним тоже уходит в защиту

Valdr
Offline
Зарегистрирован: 03.09.2015

gug пишет:

жизнь вносит свои коррективы, вызвали на работу, у меня стоит подстроечник (порядка 200 Ом) к +, терморезистор на землю, со средней точки на атмегу, к сожалению коофициэнты прийдёться Вам считать самому, не могу найти в своей файло помойке, изменения вносяться сюда - int solderTCouple = map(analogRead(pinSolderTCouple), 0, 780, 0, 480), 

т.е первая пара 0, 780 это то что выдаёт на вход атмеги, вторая пара 0, 480 шкала температуры которая отображаеться на индикаторе, я надеюсь понятно написал? 

считаеться просто на нужной температуре допустим при комнатной температуре, возьмём 20 градусов, на вх атмеги поступает 2В делишь на 0,0049 получаем 408 а при 250 градусов на вх атмеги поступает 3 вольта делишь на 0,0049 получаешь нужную циферку 612, и того   int solderTCouple = map(analogRead(pinSolderTCouple), 408, 612, 20, 250)


Посчитал так:
температура тестера - напряжение - посчитанное значение:
         200                -        1.48       -             302
         350                -        1.73       -             353
И того получается:   int solderTCouple = map(analogRead(pinSolderTCouple), 302, 353, 200, 350);
Значения правдоподобны?

gug
Offline
Зарегистрирован: 07.04.2015

проверь на практике )

gug
Offline
Зарегистрирован: 07.04.2015

Valdr пишет:

 но БП с ним тоже уходит в защиту

посмотри 112 и 113 сообщения в теме

Valdr
Offline
Зарегистрирован: 03.09.2015

И 114, походу, с готовым фрагментом кода.
Пока не буду это трогать, нужно еще решить проблему с регулировкой скорости вентилятора фена на том блоке питания.
На новом блоке питания вчера пробовал регулировать обороты и заметил что минимальная скорость на которой вентилятор крутится (вентилятор 24В) - это 64%, поток минимальный. Я так понимаю в этой строчке:   int displayHotAirCooler = map(analogRead(pinHotAirCoolerIn), 0, 1023, 0, 99);  нужно пересчитать минимальное значение для скорости 65%, чтоб оно соответствовало 0% на дисплее.
Вот типа так: int displayHotAirCooler = map(analogRead(pinHotAirCoolerIn), 6, 1023, 0, 99);

6441bm3
Offline
Зарегистрирован: 16.01.2016

победил я фен (блок как у автора)обороты регулируются от 0 до 99 плавно да присутствует маленький писк но можно не обращать внимание всё работает(прошивка 0.5)

Valdr
Offline
Зарегистрирован: 03.09.2015

Чет я не пойму, где я туплю.
Делаю замеры:
Дисплей - напряжение - замер - коэф.
  200      -       1.42        - 185   - 290
  250      -       1.51        - 220   - 308
  300      -       1.58        - 252   - 322
  350      -       1.66        - 285   - 339
  400      -       1.76        - 327   - 359
В коде изменяю   int solderTCouple = map(analogRead(pinSolderTCouple), 290, 361, 185, 330);
Заливаю и делаю замер по новой:
Дисплей - напряжение - замер
  200      -       1.40        - 100
  250      -       1.52        - 130
  300      -       1.63        - 185
  350      -       1.74        - 205
  400      -       1.85        - 247
Толи я не выспался, толи не пойму...

gug
Offline
Зарегистрирован: 07.04.2015

int solderTCouple = map(analogRead(pinSolderTCouple), 290, 361, 185, 330)

у тебя первая пара писана с 200 до 400 градусов, а на индикатор расширяеться другой диапазан с 185 до 330, чуствуешь разницу?

и слишком уж большую точность тут не получишь

Valdr
Offline
Зарегистрирован: 03.09.2015

У меня первая пара - это то что было на дисплее станции в момент замера тестером, а вторая пара - это то что было на тестере при замере.

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

И еще, я расширяю диапазон, допустим с 200 до 300, а на станции все равно задается температура от 0 до 480.
Не может быть тут так что я задаю диапазон от 200 до 300, а не сходится результат, так как оно на дисплей его все равно выводит из расчета от 0 до 480?
 

gug
Offline
Зарегистрирован: 07.04.2015

если честноне помню до конца что и как я точно делал, пол года прошло))), впредедущей строке в коде естьнастройки регулятора температуры там расширено 0, 480, попробуй там ограничь второй парой циферок

6441bm3
Offline
Зарегистрирован: 16.01.2016

оформил станцию и могу подтвердить что блок питания автора хватает с головой(одновремено запускаю фен и паяльник всё очень хорошо работает)

Maverik
Offline
Зарегистрирован: 12.09.2012

друзья, кстати насчет мощности.  всё не могу понять. я правильно понимаю, что фен хочет 3А при переменке 220В, т.е. до 660 Ватт мощности ?? и всё это идёт в фен на тоненьких проводках 0.25 мм ?

Vln
Offline
Зарегистрирован: 17.12.2015

Maverik пишет:

друзья, кстати насчет мощности.  всё не могу понять. я правильно понимаю, что фен хочет 3А при переменке 220В, т.е. до 660 Ватт мощности ?? и всё это идёт в фен на тоненьких проводках 0.25 мм ?

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

Vln
Offline
Зарегистрирован: 17.12.2015

6441bm3 пишет:

победил я фен (блок как у автора)обороты регулируются от 0 до 99 плавно да присутствует маленький писк но можно не обращать внимание всё работает(прошивка 0.5)

Это путем уменьшения частоты ШИМ? У меня тоже так фен на 24 В нормально заработал, но есть писк.

TCCR2B = TCCR2B & 0b11111000 | 0x02; // Частота ШИМ 11 и 3

При такой установке  и частота ШИМ паяльника изменится? Как это повлияет на его работу?

6441bm3
Offline
Зарегистрирован: 16.01.2016

не знаю пока всё работает

 

Vln
Offline
Зарегистрирован: 17.12.2015

6441bm3 пишет:

не знаю пока всё работает

А на сколько полевик паяльника греется?

У меня касаешься - гарячий, но палец терпит.

6441bm3
Offline
Зарегистрирован: 16.01.2016

у меня стоят радиаторы + вентилятор(корпус бп) радиатор холодный

 

VitaliyDF
Offline
Зарегистрирован: 02.02.2016

https://yadi.sk/d/2m8kfRCOoT4ia Сделал станцию по этому скетчу. Если температуру фена выставить на максимум 480, то показания термопары останавливаются на 460, и фен начинает бесконтрольно разогреваться((( Подскажите куда копать?

VitaliyDF
Offline
Зарегистрирован: 02.02.2016

Залил скетч ver 0.5 

Если выставить температуру фена или паяльника на максимум 480 - на экране пишет Error и продолжает разогревать дальше. Можно это исправить? Боюсь случайно спалить. Я начинающий, и в программировании ноль)))

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

VitaliyDF пишет:
Если температуру фена выставить на максимум 480, то показания термопары останавливаются на 460, и фен начинает бесконтрольно разогреваться((( Подскажите куда копать?

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

int hotAirTCouple = map(analogRead(pinHotAirTCouple), 0, 750, 0, 480);

Значит ОУ у вас выдаёт не 750 отчсётов АЦП, а меньше (к примеру 720). Соотвественно, контроллер "видит", что температура всего 460 градусов и пытается нагреть её дальше, не "понимая", что измерить выше уже не получится. Необходимо настроить заново входной усилитель и уточнить его максимальное значение, при котором выход ОУ уходит в насыщение. Лучше "разогнать" диапазон до 500 град., а ещё лучше (но, конечно, подороже) - применить rail-to-rail ОУ (к примеру AD8551/AD8552 - одиночный и сдвоенный, соответственно) и сделать верхней границей 511 градусов

int hotAirTCouple = map(analogRead(pinHotAirTCouple), 0, 1023, 0, 511);

В этом случае получится два отсчёта АЦП на градус и будет лучше держать температуру без применения , как у автора, устранения "прыгания" цифр (с допуском аж в 10 град. в обе стороны) и будет запас по измерению.

Цитата:
Если выставить температуру фена или паяльника на максимум 480 - на экране пишет Error и продолжает разогревать дальше.
По идее, у автора, ошибка выводится при измеренной температуре большей или равной 480 град. Если она меньше, то не выводится. У вас же, как вы указывали выше измеряется лишь до 460. Где-то нестыковка...

 

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

1. При не очень качественных потенциометрах задания температуры или при их износе, лучше считывать значения АЦП несколько раз и делать усреднение.
2. Как я выразился выше, применение более точного ОУ повысит разрешающую способность при измерении до 0.5 град., что даст более быстрый отклик при регулировании, т.к. изменение температуры будет отслеживаться точнее.
3. Изменение схемы входного усилителя на схему с регулировкой смещения и величины обратной связи, позволит "загнать" диапазон измерения в требуемые рамки, с запасом, и обеспечит детектирование обрыва и КЗ в цепи термодатчика.
4. Защиту можно сделать с учётом определения КЗ и обрыва термодатчиков, а также при превышении (можно и при понижении) измереннного значения относительно выставленного, к примеру на 50 град., тогда можно отреагировать и на неисправности цепей термодатчиков, на обрыв в цепи нагревателя и пробой регулирующего элемента. В последнем случае, потребуется доп. реле, иначе нагрузку невозможно будет отключить.
5. Для уменьшения времени отклика системы на возмущения при стабилизации температуры -
а) Убрать delay в конце главного цикла а DigitalWrite и Read-ы заменить на аналоги из CyberLib. Выводить на дисплей через определённые промежутки (не через delay, а через подсчёт миллискунд.)
б) задержку в "регулировании" фена уменьшить со 100 мсек (за это время успевает проскочить 5 периодов) до 10-20 - тогда регулирование вблизи точки стабилизации будет происходить меньшими "порциями", без перерегулирования.
6. Ну и последнее - при отключении фена, делать продувку воздухом, при отключенном нагревателе.
Тут стоит учитывать, что при отключении обдува, температура существенно "подскакивает". К примеру, продули до 50 градусов и отключили. Температура внутри фена будет расти до, примерно, 90 градусов. А до скольки она вырастет, если отключить на 400 и не продувать?

 

 

 

VitaliyDF
Offline
Зарегистрирован: 02.02.2016

OlegK пишет:
По идее, у автора, ошибка выводится при измеренной температуре большей или равной 480 град. Если она меньше, то не выводится. У вас же, как вы указывали выше измеряется лишь до 460. Где-то нестыковка...

Измерялось до 460 в прошлой прошивке, в прошивке 0,5 меряет до 480. Но при достижении 480 градусов выдает на экран Error и продолжает разогревать дальше. Меня интересует как сделать так, что-бы нагреватель не грел свыше 480. Если я правильно понял, нужно поднять порог измеряемой температуры изменив строчку hotAirTCouple = map(analogRead(pinHotAirTCouple), 0, 780, 0, 480);

По поводу продувки фена она есть

 if (hotAirTCouple < 85 && digitalRead(pinHotAirButton) == LOW){

    analogWrite(pinHotAirCoolerOut, 0);
  }
  else{ 
    analogWrite(pinHotAirCoolerOut, setHotAirCooler);
  }

 

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

VitaliyDF пишет:
Если я правильно понял, нужно поднять порог измеряемой температуры изменив строчку hotAirTCouple = map(analogRead(pinHotAirTCouple), 0, 780, 0, 480);

Попробуйте так - отключите термофен от станции и на вход ОУ подайте через резистор в пару десятков килоом напряжение с + питания. Выведите в терминал, что показывает АЦП. К примеру, получится 760. Вот это значение и вводите. Второй параметр (480) исправьте на 500. Тогда у вас будет небольшой запас вверх.

Цитата:
По поводу продувки фена она есть

Это хорошо. Просмотрел я, значит ))

 

 

 

Vln
Offline
Зарегистрирован: 17.12.2015

OlegK пишет:

Попробуйте так - отключите термофен от станции и на вход ОУ подайте через резистор в пару десятков килоом напряжение с + питания. Выведите в терминал, что показывает АЦП. К примеру, получится 760. Вот это значение и вводите. Второй параметр (480) исправьте на 500. Тогда у вас будет небольшой запас вверх.

В версии прошивки 0.5 уже исправлено на 750, но все равно на 480 - "Error" и нагрев не прекращаеся.

На ютубе в обсужденни:

Немного поправил Вашу прошивку:
int hotAirTCouple = map(analogRead(pinHotAirTCouple), 0, 690, 0, 480);
Вместо 780 поставил 690 и термопара смогла принимать максимальное значение в 525С.
На прошивке v.0.4 без правки этого участка кода, есть шанс сжечь фен. Молодой экспериментатор, установит температуру фена в 480С, фен разогреется до 465С, а это предел захвата температуры термопарой, программный цикл не завершится и нагрев будет продолжатся бесконечно, масса незабываемых впечатлений ему обеспечена :)
 
photo.jpg
В прошивке v.0.4 параметры указаны 750, это по значениям моего фена, максимальное значение превышает 750, фен не может сгореть. А вот в старой прошивке значение было 780.

Надо попробовать уменьшать параметр 750

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

Vln пишет:
Надо попробовать уменьшать параметр 750

Так его можно сильно доуменьшаться )) Для термопары, типа К, температуре 500 градусов соответствует значение 19-20 мВ. К примеру, усилитель на ОУ при таком входном напряжении  выдаст на выходе 2 вольта - это, примерно, 410 отсчётов АЦП. А программа "думает", что температура ещё низкая и будет жарить фен, пока он не сгорит.

Дело, значит, не только в том, что бы задать значение, при котором выход ОУ уходит в насыщение, но и в усилении самого каскада.
Нужно, что бы усилитель имел такое усиление, которое позволит ему достигать насыщения несколько позже, чем будет достигнута максимальная измеряемая температура.
К примеру, подаём на вход усилителя напряжение, имитируя термопару (можно от батарейки, через подстроечник) и добиваемся, что бы при напряжении чуть выше 20, а то и 21 мВ выходное напряжение ОУ было максимально возможным. Тогда температура от 500 град. и ниже будет попадать в диапазон и программа "сможет увидеть" температуру выше максимальной 480 град.

 

 

 

Vln
Offline
Зарегистрирован: 17.12.2015

OlegK пишет:

... Тогда температура от 500 град. и ниже будет попадать в диапазон и программа "сможет увидеть" температуру выше максимальной 480 град.

Я закоментировал строку  

119:    lcd.print(" Error");

и увеличил вывод до 525:

111:      if (solderTCouple < 525) {

установил температуру 480 и программа "видит" - температура растет и останавливается на 480 градусов, но паяльник продолжает греться, не пойму почему не отрабатывает?:
 
61:  if (solderTCouple > 480) {
62:    setSolderTemp = 0;
63:  }
 
может надо?:
61:  if (solderTCouple >= 480) {
 
OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

Vln пишет:

61:  if (solderTCouple > 480) {
62:    setSolderTemp = 0;

Так а с чего бы ему не греться? Смотрите -

Вы считали с датчика 480, а по условию setSolderTemp обнулится, только если будет больше.
Далее.

// Поддержка установленной температуры паяльника
  if (setSolderTemp >= solderTCouple && digitalRead(pinSolderButton) == HIGH)
  {
    digitalWrite(pinSolderOut, LOW);
    // delay(100);
    digitalWrite(pinSolderOut, HIGH);
  }
  else {
    digitalWrite(pinSolderOut, LOW);
  }

Потому и выполняется условие - греть дальше. А дальше не растёт по индикатору, так как измерить выше уже не может.

И закомментируйте пока кусок, где "устраняется прыгание цифр", что бы не мешалось.

 

Цитата:
if (solderTCouple >= 480)
 
Условие > 480 у вас не выполнится никогда в жизни, так как вы сами ограничиваете его тут -
int solderTCouple = map(analogRead(pinSolderTCouple), 0, 750, 0, 480);

 

 

Vln
Offline
Зарегистрирован: 17.12.2015

Vln пишет:

может надо?:
61:  if (solderTCouple >= 480) {
Это не помогло, изменил предел до 485 в строках 54 и 56 (думаю на "реальные" показатели повлияет мало)
 
52:  // Преобразовываем значения
53:  int setSolderTemp = map(analogRead(pinSolderIn), 0, 1023, 0, 480);
54:  int solderTCouple = map(analogRead(pinSolderTCouple), 0, 750, 0, 485);
55:  int setHotAirTemp = map(analogRead(pinHotAirIn), 0, 1023, 0, 480);
56:  int hotAirTCouple = map(analogRead(pinHotAirTCouple), 0, 750, 0, 485);
57:  int setHotAirCooler = map(analogRead(pinHotAirCoolerIn), 0, 1023, 130, 255);
58:  int displayHotAirCooler = map(analogRead(pinHotAirCoolerIn), 0, 1023, 1, 99);
 
и теперь при установленных 480 доходит до 480 и пишет "Error",
но непрерывный нагрев прекращается и переходит в поддержку температуры (светодиод начинает мигать),
хоть и выводит "Error".
Если установить 479 - доходит до 479 и держит 479.

 

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

Vln пишет:
и теперь при установленных 480 доходит до 480 и пишет "Error"

Ну так условие вывода ошибки тоже подправить нужно.

 

Vln
Offline
Зарегистрирован: 17.12.2015

Тоже сначала подумал, что нужно, а потом решил не трогать.

Надо еще проверить при отключенных термодатчиках.

Хотя можно 481 поставить. И реле прикрутить.

Хватит 4 градусов "запаса"?

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

Vln пишет:
И реле прикрутить.

К фену крайне обязательно, а к паяльнику желательно.
У меня прикручено к обоим.

Что бы не было как тут - http://www.youtube.com/watch?v=XwJdYxe_HFQ

Vln
Offline
Зарегистрирован: 17.12.2015

OlegK пишет:

К фену крайне обязательно, а к паяльнику желательно.
У меня прикручено к обоим.

Что бы не было как тут - http://www.youtube.com/watch?v=XwJdYxe_HFQ

Угу :)

К обоим! Паяльник $5, а фен $14 ! А пара релюшек $1.27 не считая возможных последствий.

Я только начинаю разбираться в Ардуине, на какие свободные порты и как это написать правильно?

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

Vln пишет:
Паяльник $5, а фен $14 !

А квартира? А жизнь?

Цитата:
на какие свободные порты и как это написать правильно

На любые цифровые порты, я не знаю, какая у вас *дуина. У вас счас имеется, как минимум 7 порт, да и аналоговые можно использовать как цифровые, если не хватает.
Реле подключаете через транзисторный ключ, а обмотки реле запитываете от 24 вольт питания паяльника через стабилизатор 7812, если реле 12-вольтовые или непосредственно, если реле на 24в.
Управляете через DigitalRead и DigitalWrite. Почитайте тут - http://arduino.ru/Tutorial/DigitalPins

Защиту лучше делать триггерной - если сработала, то вывод в нормальное состояние что бы не происходил самостоятельно - только при повторном включении вручную.

 

 

Vln
Offline
Зарегистрирован: 17.12.2015

Vln пишет:

Я только начинаю разбираться в Ардуине, на какие свободные порты и как это написать правильно?

Гляньте схему http://d-serviss.lv/index.php?mod=pages&pageName=solderingstation и черкните пару строк :)

Я так понимаю сюда:

  // Защита, если не работает термопара
  if (solderTCouple > 481) {
    setSolderTemp = 0;
 
  }
  if (hotAirTCouple > 481) {
    setHotAirTemp = 0;
 
А реле я вот эти  заказал http://ru.aliexpress.com/item/Free-Shipping-2PCS-LOT-5V-2-Channel-Relay-Module-Shield-for-Arduino-ARM-PIC-AVR-DSP/2036251815.html , вроде даже их порты "тянут", тригер только надо сделать.
 
VitaliyDF
Offline
Зарегистрирован: 02.02.2016

int hotAirTCouple = map(analogRead(pinHotAirTCouple), 0, 720, 0, 490);

У меня фен адекватно заработал при таких настройках, а паяльник начал дико врать. Выставляю подстроечником на паяльнике 280 при заданной 280. Увеличиваю до 400 - на жале 380. Причем чем дальше тем больше разбег.

Vln
Offline
Зарегистрирован: 17.12.2015

А если вернуть 750?

VitaliyDF
Offline
Зарегистрирован: 02.02.2016

Сейчас буду пробовать, вчера бросил настройку)))

 

VitaliyDF
Offline
Зарегистрирован: 02.02.2016
 int setSolderTemp = map(analogRead(pinSolderIn), 0, 1023, 0, 450);
  int solderTCouple = map(analogRead(pinSolderTCouple), 0, 780, 0, 480);
С такими параметрами регулировка стала точной, правда пришлось урезать температуру до 450, т.к. термопару определяет до 459.
Мне впринципе 480 и ненужно)
Vln
Offline
Зарегистрирован: 17.12.2015

Так и защиту надо поставить 455 вместо 480

VitaliyDF
Offline
Зарегистрирован: 02.02.2016

Поднял температуру до 480, пришлось повозится. Добавил в скетч вывод в терминал состояния аналогового входа. Далее выставив температуру паяльника на максимум, подстроечным резистором поднял температуру на жале до 505 градусов и записал показания с терминала (у меня получилось 690). Затем отключил питание нагревателя, и зафиксировал температуру на жале при которой показания в терминале упали до нуля (у меня получилось 45 градусов). Полученные значения ввел в скетч  int solderTCouple = map(analogRead(pinSolderTCouple), 0, 690, 45, 505);

Скетч https://yadi.sk/d/cF_Fxq2-omUYD