Паяльная станция из ардуино

kang2k
Offline
Зарегистрирован: 15.05.2015

Спасибо за проект, немного не дотерпел. с 6 раза, более менее получилась плата. Кошмар, давно я столько дырок вручную не сверлил. Раньше в чпу загонял и все... Теперь вопрос по плате, в наличии нет транзистора irf1010 есть irf1404, вроде бы по характеристикам он подойдет? Мне по сути осталось, транзистор припаять и сделать плату переходник, под экран (нужного нет, есть побольше).

И прошу прощения, за "недалекость", нет резистора R20 на 2,7kOm, есть 2,2кОм и 3кОм. какой лучше поставить, и что надо будет пересчитать...

a5021
Offline
Зарегистрирован: 07.07.2013

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

Нормально плата получилась? Я немного побаивался, что плотновато дороги положил.

Полевик в схеме может быть вообще любым, лишь бы подходил по току (не менее 5ампер) и напряжению (от 30в до 60в). У IRF1404 параметры шикарные, но есть один момент, который может сказаться не самым лучшим образом -- у него очень большая емкость затвора (как, впрочем, и у всех мосфетов на большие токи). Большая емкость затвора при отсутствии драйвера может привести к тому, что транзистор будет открываться и закрываться несколько дольше, чем того хотелось бы и что будет вызывать дополнительный нагрев. Я не могу так на глаз определить, как будет столь емкий затвор заряжаться и разряжаться от ноги ардуины, но вы ничем не рискуете, если выясните это на практике.

Резисторы R20+R21 и переменник образуют делитель напряжения таким образом, чтобы в точке соединения R21 и переменника получалось 1.1в. Смысл этой затеи в том, что будучи выкрученным до упора вправо, переменник со своего среднего вывода подавал бы на ардуину эти самые 1.1в, которые для последнего являются максимальным значениением для преобразования.

В идеале, при сопротивлении переменника 10килоом, суммарное сопротивление R20 и R21 должно быть 12681 ом. Причем, какой из них будет иметь какое сопротивление, совершенно не важно. Важно, чтобы оно в сумме было, как можно ближе, к вышеупомянутому значению. Например, его можно набрать и как 12ком + 680ом.

Если все уже запаяли и больше ничего нет, то ставьте лучше 3ком, т.к. это будет ближе к цели.

kang2k
Offline
Зарегистрирован: 15.05.2015

a5021 пишет:

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

Если все уже запаяли и больше ничего нет, то ставьте лучше 3ком, т.к. это будет ближе к цели.

Кому как, мне например проще под SMD.

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

начались проблемы.

Подключил индикатор (такого точно не было, но нашел похожий с ОА)

При включении питания, что-то мигает бледно на индикаторе и все... На кнопку не реагирует.

Куда копать ? Индикатор работает. Т.к. заливал простейший скетч

void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
  pinMode(A0, OUTPUT);
    pinMode(A1, OUTPUT);
      pinMode(A2, OUTPUT);
      pinMode(7, OUTPUT);
      digitalWrite(A0, HIGH);
      digitalWrite(7, LOW);
      digitalWrite(A1, LOW);
      digitalWrite(A2, LOW);
      
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(100);              // wait for a second
}

Разряды светятся и довольно ярко...

Только сейчас обратил внимание. в схеме стоят транзисторы 2N4403 p-n-p. Насколько я помню он должен при подаче на него питания закрывается, открывается только по низкому. И обычно его ставят на - питания. А в схеме на +, хотя конечно и так и так работать будет.

У меня при тестовом скетче так и происходит, там где LOW на аналоговых портах, светятся разряды, а там где HIGH то не светятся...

a5021
Offline
Зарегистрирован: 07.07.2013

А вы какие транзисторы поставили? Еще нужно помнить, что у 2n4403 несколько специфичная цоколевка.

kang2k
Offline
Зарегистрирован: 15.05.2015

2n4403, ставил так как у Вас на фото... По пдф посмотрел, все правильно.

Нарисовал схему в протеусе, только часть с индикацией. Тоже нет отоображения

a5021
Offline
Зарегистрирован: 07.07.2013

Схема при подаче напряжения первым делом уходит в стендбай. Вывод ее из этого состояния и переключение в рабочий режим происходит по долгому (в районе полутора-двух секунд) нажатию кнопки. Надеюсь вы не просто кратковременным нажатием пытались ее включить?

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

kang2k
Offline
Зарегистрирован: 15.05.2015

Я прошу прощения. Как говорится - сам себе, злобный буратино :)

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

Но значения показывает не реальные. Я подключил только терморезистор, при комнатной температуре показывает 298. Сопротивление терморезистора 48,5Ом. Чем регулировать ?

И еще одно, при повороте регулятора на минимум, показывает чуть-ли не отрицательные значения (горят все 8). Тоесть плавно уменьшается значение до 0, а потом зажигается ерунда.

Максимальное значение 526,  а не то, что в программе.

Простите за глупые вопросы....

a5021
Offline
Зарегистрирован: 07.07.2013

При сопротивлении 48,5 ом значение 298 никак не может случиться. Есть подозрение, что на делитель подаются не опорные 2.5в, а заметно больше. Измерьте напряжение в точке, где соединяются R2 и U1. Должно быть ровно 2.5в.

kang2k
Offline
Зарегистрирован: 15.05.2015

V_REF  2.515

REF_1V    1.017

a5021
Offline
Зарегистрирован: 07.07.2013

Тогда на входе А7 ардуины должно получаться 0.454 вольта (или близ того). Так и есть?

kang2k
Offline
Зарегистрирован: 15.05.2015

Разобрался. Опять не внимательность. А6 и а7 местами перепутал...Вроде все проверил, а такой косяк.
Температура показывается, немного помоему завышена 35.6
Вечером дома поставлю подстроечный вместо r20, подберу параметры...
Спасибо огромное.
С этой закончу, попробую сделать на смд. Кум попросил

a5021
Offline
Зарегистрирован: 07.07.2013

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

#define ADC_CALIBRATION_DATA_LOW     1658 
#define ADC_CALIBRATION_DATA_HIGH    2373
#define CALIBRATION_TEMP_LOW         2950
#define CALIBRATION_TEMP_HIGH        18300

  // low temperature margin  (185C)
#define LOW_TEMP_MARGIN              2382
  // low temperature degree (multiplied by 100)
#define LOW_TEMP_DEGREE              18500  
  // high temperature margin (460C)			 
#define HIGH_TEMP_MARGIN             3661
  // low temperature degree (multiplied by 100)
#define HIGH_TEMP_DEGREE             46000  

Для калибровки устройства сначала потребуется либо обычный градусник, либо тот же ардуина с подцепленным ds18b20.

Без подключения нагревателя нужно просто замерить, что там поступает с термодатчика паяльника. Измерения ведутся не в вольтах или иных физических величинах, а в отсчетах АЦП ардуины.

В первое определении (ADC_CALIBRATION_DATA_LOW) заносится значение, которое возвращает функция getOversampled() при комнатной температуре. Значение этой температуры (т.е. то, что показывает лежащий рядом термометр) заносится в виде "температура * 100" в опеределение CALIBRATION_TEMP_LOW. Когда я калибровал, дома было жарко и значение 2950 означает, что термометр показывал 29.5°С.

Калибровочные опеределения оканчивающиеся на _HIGH относятся к таким же параметрам, но уже для высокой температуры. В моем случае выставлены значения для температуры, когда олово на жале паяльника превращается в "кашу". По справочнику, это 183-185°С.

Ловля точки плавления олова процедура муторная, т.ч. можно упросить процесс калибровки, откалибровав верхее значение стаканом с кипятком. Наливаем воду из только что вскипевшего чайника и опускаем туда нагреватель и термометр. Через пару минут, когда это хозяйство прогреется, фиксируем, что показывает термометр и что выдает getOversampled().

kang2k
Offline
Зарегистрирован: 15.05.2015

a5021 пишет:

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

Спасибо за схему и скетч, сделал я станцию, осталось облагородить корпус (как закончу, покажу).

Но уже вчера меня выручила, на объекте использовал, с б/п от ноутбука (19В 6А). Инерция конечно есть, от сигнала станции о нагреве, до пайки секунд 15-20, но тут и понятно, пока металл нагреется... В общем меня вполне устроил результат.

Еще раз - Спасибо!

Ganster41
Offline
Зарегистрирован: 03.11.2014

kang2k пишет:

от сигнала станции о нагреве, до пайки секунд 15-20

Не многовато-ли? Может жало плохое, или нагреватель стоит немного вытянуть, как многие советуют? Я даже не представляю как можно с такой реакцией температуру поддерживать. У меня лично паяльник через эти же 20 секунд с нуля уже до паябельного состояния разогревается. Или под "сигналом о нагреве" подразумевается именно включение, а не готовность?

a5021
Offline
Зарегистрирован: 07.07.2013

Все правильно он говорит. Когда происходит начальный разогрев, то температура на термодатчике достигает заданного значения несколько раньше, чем на жале. У меня на своей "штатной" паялке даже "заброс" температуры сделан, когда при начальном разогреве вместо выставленных потенциометром, скажем, 260 градусов, паялка греет градусов на 20-30 выше. Расчет такой, что пока температура падает с завышенных значений, жало уже прогреется до все тех же 260 градусов, но в случае "заброса" это произойдет быстрее, чем если бы разогрев велся только до целевой температуры.

Еще я выяснил, что время разогрева очень сильно зависит от напряжения подаваемого на паяльник. Это оказалось полной неожиданностью, т.к. на глаз казалось, что эта разница совсем не велика.

Я соорудил простейший вольтметр из одной из подвернувшихся под руку демо-плат и встал этим "вольтметром" параллельно входу с термодатчика обсуждаемой здесь паялки. Ардуино работал в своем обычном режиме. Результаты замеров, которые велись с шагом в 0.2 секунды, передавались на комп, где записывались в лог. Потом, разбирая эти данные, я выяснил, что время разогрева от комнатной температуры до 280 градусов для напряжений 12 и 19 вольт отличается в четыре раза. Для разницы питающих напряжений в семь вольт такой результат сильно разошелся с тем, что можно было бы интуитивно представить.  Причем, это характеристика исключительно паяльника, т.к. во все время разогрева мосфет находится в полностью открытом состоянии и ардуина никак не управляет процессом, просто следя за достижением целевой температуры.

Таким образом, нельзя исключать, что разница в ваших наблюдениях и наблюдениях kang2k объясняется исключительно разными напряжениями, подаваемыми на паяльник. Хотя, тут и блок питания может подыграть. Если он просаживает напряжение под нагрузкой, то разогрев будет идти дольше. Повторюсь, что холодный паяльник может тянуть из БП больше десяти ампер.

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

Ganster41
Offline
Зарегистрирован: 03.11.2014

Ну я не спорю что есть задержка между разогревом нагревателя и самого жала, но не 20...30 секунд же. И да, я тоже ведь использую ноутбучный зарядник, правда чуть "разогнанный" до 21.5V. И греется жало от нуля до 300 градусов эти же 20-30 секунд.

А вот такая сильная зависимость от напряжения конечно не понятна. Нагрев же по идее зависит от заряда на нагревателе, а он прямо пропорциален силе тока, которая, опять же, прямо пропорциональна напряжению. Мистика...

a5021
Offline
Зарегистрирован: 07.07.2013

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

a5021
Offline
Зарегистрирован: 07.07.2013

Довел я до ума картинку с зависимостью скорости нагрева от подаваемого напряжения. Взял универсальный ноутбучный зарядник и он, повидимому, на делении 12в дает чуть выше напряжение, чем было с компа. На двенадцати вольтах время чуть снизилось, но все равно осталось очень большим. Так как показывать напряжение с делителя не очень информативно, по оси Y здесь приводится сопротивление термодатчика паяльника. При комнатной температуре оно равно примерно 46 ом, при температуре 280 градусов чуть больше 94 ом. Время разогрева в секундах отображается по оси X.

На 24 вольтах паяльник разогрелся за 9.4с, на 19в за 19.4с, на 15в за 33с и на 12в за 67с. 

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

a5021
Offline
Зарегистрирован: 07.07.2013

Точность слежения за температурой паяльника можно немного повысить, если изменить сопротивление резистора R1 c 220 ом на 100 ом. Величина в 220 ом была выбрана еще для устройства с первой страницы этой ветки, перекочевав потом и в последнюю схему без изменений. Это сопротивление определяет диапазон напряжений, цифруя которые ардуина делает вывод о температуре нагревателя. Чем больше этот диапазон, тем точнее ардуина вычисляет температуру. В свое время я не рассчитывал точно величину этого сопротивления, подобрав его значение "на глазок".  В принципе, попал близко к оптимуму, но не прямо в него. Теперь же решил вычислить оптимальное значение по возможности более точно. Расчет показывает, что сопротивление в 100 ом обеспечивает самый широкий диапазон напряжений на делителе при изменении температуры нагревателя. Уменьшение или увеличение этого сопротивления вызывает сужение диапазона, т.ч. теперь можно говорить о том, что оптимальная величина найдена.

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

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

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

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

и второй вопрос - какие плюсы минусы у этого проекта по сравнению с "конкурентом" в этом же разделе.

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

a5021
Offline
Зарегистрирован: 07.07.2013

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

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

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

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

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

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

a5021
Offline
Зарегистрирован: 07.07.2013

Как вам будет угодно. На всякий случай -- в подключении фена там есть одно очень сложнообъяснимое решение, последствия применения которого прогнозирвать невозможно. Где-то в здешней ветке мы касались вопросов семисторного подключения нагрузки к 220в и там чуть-чуть затрагивался вопрос, что может быть, если допускать вольности.

DimaD
Offline
Зарегистрирован: 26.03.2015

В схеме Ильи возможна замена moc3061 на moc3062 или moc3063?

Илья73
Offline
Зарегистрирован: 06.09.2013

Да, без проблем.

DimaD
Offline
Зарегистрирован: 26.03.2015

Илья73 пишет:

Да, без проблем.

Ок. В схеме корректировок по номиналам не будет?

Илья73
Offline
Зарегистрирован: 06.09.2013

Ни чего не надо менять.

AnarchySaur
Offline
Зарегистрирован: 31.12.2014

Илья73 и DimaD

Начинаю потихоньку собирать свою по вашим наработкам (2 платы от Ильи и 3 от Димы), а то платы лежат, а все некогда - огород, стройка, реомнт и днем работа.

Такой вопрос, буду использовать компактный атх бп и повышающий конвертер по рекомендации а5052 с 12 В до 24 В. Для питания 5В-потребителей буду использовать понижающий конвертер, его лучше запитать от 12В линии бп или от 5 В или от 24 В повышающего конвертера?

a5021 пишет:

Суммарное сопротивление RV4 и R18 должно быть 1 килоом. Точку "+", куда должна была подключаться термопара паяльника, подтянуть через резистор 360 ом к +5в.

Еще придется править код, т.к. значения с АЦП будут другие.

То есть сейчасу меня 47к + 150к, а в суме должно быть не больше 1 кОм? Не подскажите какие искать значения?

И R19 должен быть в 360 Ом?

Какие будут изменения в коде?

Dm77
Offline
Зарегистрирован: 18.07.2015

Добрый день всем.

a5021, спасибо за работу, повторил Ваш проект.

Все номиналы как у автора, паяльник прозванивается как 53 Ом и 4.7 Ом. Запитано пока от 12В. 

Из минусов:

1. имеющийса чуть больший по диаметру BUZZER  залезает на соседний резистор.
2. раз уж плата не маленькая, то конденсаторы можно и "положить" на плату
3. не логичто расположены разъемы. лучше 4-х - паяльник, 2-х - 24В

но это ИМХО

Dm77
Offline
Зарегистрирован: 18.07.2015

Калибрую:

Значения getOversampled() в комнате 28гр - 4092,1995,1995,1995,4092,1995,1995
Значения getOversampled() в кипятке 88гр - 521,2304,2304,2304,521,2304

Пишу в скетч значения:

#define ADC_CALIBRATION_DATA_LOW     1995 
#define ADC_CALIBRATION_DATA_HIGH    2304
#define CALIBRATION_TEMP_LOW         2800
#define CALIBRATION_TEMP_HIGH        8800

Замеры:

Выставляю 200, доходит до 122. Температура на жале по термопаре мультиметра 80
Выставляю 350, доходит до 260. Температура на жале по термопаре мультиметра 160

Может нужно поиграться с:

#define LOW_TEMP_MARGIN              2382
#define LOW_TEMP_DEGREE              18500  
#define HIGH_TEMP_MARGIN             3661
#define HIGH_TEMP_DEGREE             46000  
 
???
karl2233
Offline
Зарегистрирован: 05.07.2015

автору - спасибо за труды!

наверное сделаю себе такое же.

вопрос: коллеги, ктонить встречал для этого HAKKO 907/ESD 907 936 937 928 926 5PIN паяльника медные жала? привык я к медным.

Dm77
Offline
Зарегистрирован: 18.07.2015

karl2233 пишет:

вопрос: коллеги, ктонить встречал для этого HAKKO 907/ESD 907 936 937 928 926 5PIN паяльника медные жала? привык я к медным.

Конечно: Aliexpress Или искать "hakko cupper"

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

copper

Dm77
Offline
Зарегистрирован: 18.07.2015

Maverik пишет:

copper

Так точно

a5021
Offline
Зарегистрирован: 07.07.2013

Dm77 пишет:

Значения getOversampled() в комнате 28гр - 4092,1995,1995,1995,4092,1995,1995

Значения getOversampled() в кипятке 88гр - 521,2304,2304,2304,521,2304

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

Одним из объяснений наблюдающихся бросков, может быть непостоянство опорного напряжения. На плате это напряжение можно "посмотреть" в точке соединения резисторов R1 и R20. Лучше осциллографом, но, на крайняк, можно и обычным мультиметром. Величина этого напряжения должна составлять 2.5 вольта и не иметь заметных пульсаций.

Dm77
Offline
Зарегистрирован: 18.07.2015

В setup() добавил: Serial.begin(9600);

после sensorData = getOversampled(7); добавил Serial.println(sensorData);

Возвращаются данные при комнатной температуре 28гр.:
2024,2025,2024,2025...
В точке R1-R20 ровно 2,5В

Довел паяльник до температуры 200гр. на жале (замер термопарой мультиметра), возвращаются данные:
3286,3287,3288,3289...

В скетч пишу:

#define ADC_CALIBRATION_DATA_LOW     2024
#define CALIBRATION_TEMP_LOW         2800
#define ADC_CALIBRATION_DATA_HIGH    3287
#define CALIBRATION_TEMP_HIGH        20200

теперь я так понимаю нужно править это?

#define LOW_TEMP_MARGIN              2382
#define LOW_TEMP_DEGREE              18500
#define HIGH_TEMP_MARGIN             3661
#define HIGH_TEMP_DEGREE             46000

т.е. снимать показания с крайних положений ручки? при 460гр. паяльник не сгорит?
AnarchySaur
Offline
Зарегистрирован: 31.12.2014

Ответьте по моему 528 сообщению.. Спасибо..))

a5021
Offline
Зарегистрирован: 07.07.2013

Теперь становится понятным, откуда взялись "выпадающие" из ряда значения. Если вы выводите в последовательный порт значения именно таким образом, как написали, то здесь стоит пояснить, что getOversampled() вызывается три раза подряд для взятия значения с термодатчика и один раз для измерения положения переменного резистора.

Измерьте напряжение на терморезисторе паяльника при комнатной температуре. Просто подключитесь мультиметром парарллельно разъему.  Не совсем я понимаю, что там за странные цифры получаются.

a5021
Offline
Зарегистрирован: 07.07.2013

AnarchySaur пишет:

Ответьте по моему 528 сообщению.. Спасибо..))

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

Dm77
Offline
Зарегистрирован: 18.07.2015

a5021, ответте, пожалуйста на #536

a5021
Offline
Зарегистрирован: 07.07.2013

Напряжение измерьте на терморезисторе и приведите соответствующее ему значение, возвращаемое getOversampled(). Тогда сразу видно будет.

Dm77
Offline
Зарегистрирован: 18.07.2015

a5021 пишет:

Напряжение измерьте на терморезисторе и приведите соответствующее ему значение, возвращаемое getOversampled(). Тогда сразу видно будет.

Значения:

3108
3109
3110
3112
3114
3115
3126
3126
3126
3125
3125
3125
3125
3124
3124
3123
3123
3122
3122
3121
3120
3120
 
На резисторе 0.75В , 11.6кОм
 
a5021
Offline
Зарегистрирован: 07.07.2013

Резистор R1 и терморезистор паяльника образуют делитель напряжения, где зная величину опоры, выходное напряжение и сопротивление R1 можно вычислить сопротивление термодатчика. Для выходного 0.75в и R1=220, сопротивление терморезистора паяльника будет 220/(2.5/0.75 - 1) = 94.28 ома. С учетом разброса параметров термодатчиков на разных паяльниках, такое сопротивление соответствует температуре нагревателя 250-300 грудусов. Вы именно при такой температуре значения измеряли?

Dm77
Offline
Зарегистрирован: 18.07.2015

На жале около 200. На терморезисторе соответственно больше.

Я вот не понял про значения в скетче:

#define LOW_TEMP_MARGIN              2382
#define LOW_TEMP_DEGREE              18500
#define HIGH_TEMP_MARGIN             3661
#define HIGH_TEMP_DEGREE             46000

Их нужно подбирать?

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Баловался со своим клоном Хакко907, при комнатной температуре 56 Ом, кипящая вода и опущенный в неё нагреватель 70 Ом, начал плавится припой на жале 160 Ом, разогрел при 21 В и 2 А до 180 Ом, дальше без регулятора не стал, но вроде стабилизировалось сопротивление, выключил, припой продолжал плавится до 108 Ом. Похоже очень сильно отличаются нагеватели, ну и естественно инерция огромная, нужно лучше сделать контакт нагревателя с жалом, у меня оно вообще свободно болтается. Хороший проект! Но я свою паялку решил замутить, на 48 меге, есть в наличии, ну и индикатор другой, от этого проекта не подходит ничего, а переделывать лень, быстрее новое накидать. :)

a5021
Offline
Зарегистрирован: 07.07.2013

Dm77 пишет:

На жале около 200. На терморезисторе соответственно больше.

Я вот не понял про значения в скетче:

#define LOW_TEMP_MARGIN              2382
#define LOW_TEMP_DEGREE              18500
#define HIGH_TEMP_MARGIN             3661
#define HIGH_TEMP_DEGREE             46000

Их нужно подбирать?

Краткий ответ -- да. Подробно -- это границы рабочих температур паяльника и соответствующие им значения getOversampled(). Сами температуры (в представлении "температура * 100" -- дифайны оканчивающиеся на _DEGREE) может и нет особого смысла менять, но вот дифайны оканчивающиеся на _MARGIN нужно задавать в привяке к конкретному паяльнику и для значений конкретных граничных теператур (в данном случае -- 185 и 460 градусов).

Стоит еще заметить, что слово "подбирать" тут будет не совсем уместным, т.к. данные значения прекрасно пересчитываются из определений ADC_CALIBRATION_ и CALIBRATION_TEMP_ и я малость схалтурил здесь, включив вместо формулы пересчета просто готовые значения, посчитанные в экселе.
 

Dm77
Offline
Зарегистрирован: 18.07.2015

Спасибо. Все подобрал, работает. Только ограничил нагрев до 360 гр, т.к. значения возвращаемые ф-циец не хотят подниматься выше 4092. А это 360 на жале. В принципе ок. Вот такой вопрос: при смене питания с 12 до 24 в калибровать же не нужно будет заново?

a5021
Offline
Зарегистрирован: 07.07.2013

Отображение и регулировка температуры жестко привязаны к величине сопротивления термодатчика. Ардуина совсем ничего не знает о напряжении, которое подается на нагреватель. По этой причине работа регулятора никак от этого напряжения не зависит. Единственное, что я заметил при переходе с 12 вольт на 24 -- это недостаточная точность удержания целевой температуры -- цифры на индикаторе могут гулять в диапазоне нескольких единиц. Сия досадная недоработка с моей стороны была обусловлена тем, что разработку я вел при питании нагревателя от 12 вольт. По сравнению с 24 вольтами, разогрев происходит медленнее и заданной в алгоритме скорости опроса термодатчика достаточно для удержания температуры с точностью до градуса. При 24-х вольтовом питании, нагрев просиходит быстрее и алгоритм не успевает вовремя засечь точный момент выключения нагревателя. Такая неторопливость в опросе приводит к тому, что температура "вылетает" за целевую точку удержания на несколько градусов. Это никак не сказывается на удобстве в работе, но вот "мельтешашие" цифры на индикаторе, глазу не совсем приятны. Есть мысли изменить скорость опроса в следующей версии скетча, но вот когда я на это сподоблюсь, пока сказать не могу.

Насчет 360 градусов на жале -- это, практически, максимум, что можно получить на 12в. Во всяком случае, такой вывод я могу сделать на основании собственных экспериментов. Более высокие температуры требуют повышения вольтажа на нагревателе.

Dm77
Offline
Зарегистрирован: 18.07.2015

Как всегда очень доходчиво. Спасибо за разработку!

Dm77
Offline
Зарегистрирован: 18.07.2015

Столкнулся с ппроблемой. Имееется блок питания 24В 3А (китайская металическая уоробочка), так после включения с ней блок уходит в защиту и соответственно плата паяльника выключается.

Возможно ли ограничить шим мосфета программно при включении?