Спасибо за проект, немного не дотерпел. с 6 раза, более менее получилась плата. Кошмар, давно я столько дырок вручную не сверлил. Раньше в чпу загонял и все... Теперь вопрос по плате, в наличии нет транзистора irf1010 есть irf1404, вроде бы по характеристикам он подойдет? Мне по сути осталось, транзистор припаять и сделать плату переходник, под экран (нужного нет, есть побольше).
И прошу прощения, за "недалекость", нет резистора R20 на 2,7kOm, есть 2,2кОм и 3кОм. какой лучше поставить, и что надо будет пересчитать...
Я тоже дырки сверлить вешаюсь, когда приходится. Но тут были выссказывания, что для простоты лучше под выводные компоненты делать дизайн, вот и пришлось.
Нормально плата получилась? Я немного побаивался, что плотновато дороги положил.
Полевик в схеме может быть вообще любым, лишь бы подходил по току (не менее 5ампер) и напряжению (от 30в до 60в). У IRF1404 параметры шикарные, но есть один момент, который может сказаться не самым лучшим образом -- у него очень большая емкость затвора (как, впрочем, и у всех мосфетов на большие токи). Большая емкость затвора при отсутствии драйвера может привести к тому, что транзистор будет открываться и закрываться несколько дольше, чем того хотелось бы и что будет вызывать дополнительный нагрев. Я не могу так на глаз определить, как будет столь емкий затвор заряжаться и разряжаться от ноги ардуины, но вы ничем не рискуете, если выясните это на практике.
Резисторы R20+R21 и переменник образуют делитель напряжения таким образом, чтобы в точке соединения R21 и переменника получалось 1.1в. Смысл этой затеи в том, что будучи выкрученным до упора вправо, переменник со своего среднего вывода подавал бы на ардуину эти самые 1.1в, которые для последнего являются максимальным значениением для преобразования.
В идеале, при сопротивлении переменника 10килоом, суммарное сопротивление R20 и R21 должно быть 12681 ом. Причем, какой из них будет иметь какое сопротивление, совершенно не важно. Важно, чтобы оно в сумме было, как можно ближе, к вышеупомянутому значению. Например, его можно набрать и как 12ком + 680ом.
Если все уже запаяли и больше ничего нет, то ставьте лучше 3ком, т.к. это будет ближе к цели.
Я тоже дырки сверлить вешаюсь, когда приходится. Но тут были выссказывания, что для простоты лучше под выводные компоненты делать дизайн, вот и пришлось.
Если все уже запаяли и больше ничего нет, то ставьте лучше 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 то не светятся...
Схема при подаче напряжения первым делом уходит в стендбай. Вывод ее из этого состояния и переключение в рабочий режим происходит по долгому (в районе полутора-двух секунд) нажатию кнопки. Надеюсь вы не просто кратковременным нажатием пытались ее включить?
Если сегменты светятся, то значит, как минимум, в части индикации собрано все верно.
Я прошу прощения. Как говорится - сам себе, злобный буратино :)
Ситуация в том, что нужного резистора, переменного не было. и я поставил похожий. У Вас земля в районе кнопки, соединяется с остальной землей, через корпус резистора. Мне пришлось ставить перемычку... Кнопка работает, значения какие то показывает.
Но значения показывает не реальные. Я подключил только терморезистор, при комнатной температуре показывает 298. Сопротивление терморезистора 48,5Ом. Чем регулировать ?
И еще одно, при повороте регулятора на минимум, показывает чуть-ли не отрицательные значения (горят все 8). Тоесть плавно уменьшается значение до 0, а потом зажигается ерунда.
Максимальное значение 526, а не то, что в программе.
При сопротивлении 48,5 ом значение 298 никак не может случиться. Есть подозрение, что на делитель подаются не опорные 2.5в, а заметно больше. Измерьте напряжение в точке, где соединяются R2 и U1. Должно быть ровно 2.5в.
Разобрался. Опять не внимательность. А6 и а7 местами перепутал...Вроде все проверил, а такой косяк.
Температура показывается, немного помоему завышена 35.6
Вечером дома поставлю подстроечный вместо r20, подберу параметры...
Спасибо огромное.
С этой закончу, попробую сделать на смд. Кум попросил
Температуры при подключении разных паяльников и будут показываться разные. Все дело в разбросе параметров термодатчиков. Тут уже можно не заморачиваться никакими подстроечниками, а калибровать чисто программно. В начале скетча есть секция определений, от которых отталкиваются все измерения и отображения температур:
#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().
Температуры при подключении разных паяльников и будут показываться разные. Все дело в разбросе параметров термодатчиков. Тут уже можно не заморачиваться никакими подстроечниками, а калибровать чисто программно. В начале скетча есть секция определений, от которых отталкиваются все измерения и отображения температур:
Спасибо за схему и скетч, сделал я станцию, осталось облагородить корпус (как закончу, покажу).
Но уже вчера меня выручила, на объекте использовал, с б/п от ноутбука (19В 6А). Инерция конечно есть, от сигнала станции о нагреве, до пайки секунд 15-20, но тут и понятно, пока металл нагреется... В общем меня вполне устроил результат.
от сигнала станции о нагреве, до пайки секунд 15-20
Не многовато-ли? Может жало плохое, или нагреватель стоит немного вытянуть, как многие советуют? Я даже не представляю как можно с такой реакцией температуру поддерживать. У меня лично паяльник через эти же 20 секунд с нуля уже до паябельного состояния разогревается. Или под "сигналом о нагреве" подразумевается именно включение, а не готовность?
Все правильно он говорит. Когда происходит начальный разогрев, то температура на термодатчике достигает заданного значения несколько раньше, чем на жале. У меня на своей "штатной" паялке даже "заброс" температуры сделан, когда при начальном разогреве вместо выставленных потенциометром, скажем, 260 градусов, паялка греет градусов на 20-30 выше. Расчет такой, что пока температура падает с завышенных значений, жало уже прогреется до все тех же 260 градусов, но в случае "заброса" это произойдет быстрее, чем если бы разогрев велся только до целевой температуры.
Еще я выяснил, что время разогрева очень сильно зависит от напряжения подаваемого на паяльник. Это оказалось полной неожиданностью, т.к. на глаз казалось, что эта разница совсем не велика.
Я соорудил простейший вольтметр из одной из подвернувшихся под руку демо-плат и встал этим "вольтметром" параллельно входу с термодатчика обсуждаемой здесь паялки. Ардуино работал в своем обычном режиме. Результаты замеров, которые велись с шагом в 0.2 секунды, передавались на комп, где записывались в лог. Потом, разбирая эти данные, я выяснил, что время разогрева от комнатной температуры до 280 градусов для напряжений 12 и 19 вольт отличается в четыре раза. Для разницы питающих напряжений в семь вольт такой результат сильно разошелся с тем, что можно было бы интуитивно представить. Причем, это характеристика исключительно паяльника, т.к. во все время разогрева мосфет находится в полностью открытом состоянии и ардуина никак не управляет процессом, просто следя за достижением целевой температуры.
Таким образом, нельзя исключать, что разница в ваших наблюдениях и наблюдениях kang2k объясняется исключительно разными напряжениями, подаваемыми на паяльник. Хотя, тут и блок питания может подыграть. Если он просаживает напряжение под нагрузкой, то разогрев будет идти дольше. Повторюсь, что холодный паяльник может тянуть из БП больше десяти ампер.
Я чуть позже собираюсь дополнить результаты замеров данными для 15 и 24 вольт и оформив в виде графиков опубликовать здесь.
Ну я не спорю что есть задержка между разогревом нагревателя и самого жала, но не 20...30 секунд же. И да, я тоже ведь использую ноутбучный зарядник, правда чуть "разогнанный" до 21.5V. И греется жало от нуля до 300 градусов эти же 20-30 секунд.
А вот такая сильная зависимость от напряжения конечно не понятна. Нагрев же по идее зависит от заряда на нагревателе, а он прямо пропорциален силе тока, которая, опять же, прямо пропорциональна напряжению. Мистика...
Здесь нужно учитывать еще теплопередачу в окружающую среду, а это может оказаться несколько сложнее закона Ома. Факт, что любые графики нагрева не линейные, с характерным завалом по мере повышения температуры.
Довел я до ума картинку с зависимостью скорости нагрева от подаваемого напряжения. Взял универсальный ноутбучный зарядник и он, повидимому, на делении 12в дает чуть выше напряжение, чем было с компа. На двенадцати вольтах время чуть снизилось, но все равно осталось очень большим. Так как показывать напряжение с делителя не очень информативно, по оси Y здесь приводится сопротивление термодатчика паяльника. При комнатной температуре оно равно примерно 46 ом, при температуре 280 градусов чуть больше 94 ом. Время разогрева в секундах отображается по оси X.
На 24 вольтах паяльник разогрелся за 9.4с, на 19в за 19.4с, на 15в за 33с и на 12в за 67с.
Разница во времени между 12-и и 24-х вольтовым разогревом, конечно, устрашающая. Тем не менее, еще до этих замеров я активно пользовался этой паялкой на 12 вольтах от компа и какого-то серьезного дискомфорта не испытывал.
Точность слежения за температурой паяльника можно немного повысить, если изменить сопротивление резистора R1 c 220 ом на 100 ом. Величина в 220 ом была выбрана еще для устройства с первой страницы этой ветки, перекочевав потом и в последнюю схему без изменений. Это сопротивление определяет диапазон напряжений, цифруя которые ардуина делает вывод о температуре нагревателя. Чем больше этот диапазон, тем точнее ардуина вычисляет температуру. В свое время я не рассчитывал точно величину этого сопротивления, подобрав его значение "на глазок". В принципе, попал близко к оптимуму, но не прямо в него. Теперь же решил вычислить оптимальное значение по возможности более точно. Расчет показывает, что сопротивление в 100 ом обеспечивает самый широкий диапазон напряжений на делителе при изменении температуры нагревателя. Уменьшение или увеличение этого сопротивления вызывает сужение диапазона, т.ч. теперь можно говорить о том, что оптимальная величина найдена.
Как я сказал в начале, точность увеличивается лишь на немного. В числовом выражении это 16%. Тем не менее, на своей плате данное сопротивление я собираюсь заменить. Еще не успел, т.к. только сейчас закончил с рассчетом.
Замена сопротивления потребует перекалибровки устройства, т.к. контрольные величины немного сдвинутся. Процедура самой калибровки не меняется и о том, как это делать я писал раньше.
Лейаутом я практически не пользуюсь и мне сложно подсказать так сходу. Слышал, что шестой лейаут умеет делать импорт герберов, т.ч. могу выгрузить гербер из протеуса, а вы уж у себя поробуете его затянуть в лейаут. Что из этого получится, заранее не могу предсказать.
На всякий случай: гербер -- это неофициальный отраслевой стандарт на формат электронных чертежей для производства печатных плат.
Обсуждать конкурентов не считаю этичным, но вы можете сами сравнить схему и скетч. У меня нет фена, но функционал паялки немного побогаче.
Как вам будет угодно. На всякий случай -- в подключении фена там есть одно очень сложнообъяснимое решение, последствия применения которого прогнозирвать невозможно. Где-то в здешней ветке мы касались вопросов семисторного подключения нагрузки к 220в и там чуть-чуть затрагивался вопрос, что может быть, если допускать вольности.
Начинаю потихоньку собирать свою по вашим наработкам (2 платы от Ильи и 3 от Димы), а то платы лежат, а все некогда - огород, стройка, реомнт и днем работа.
Такой вопрос, буду использовать компактный атх бп и повышающий конвертер по рекомендации а5052 с 12 В до 24 В. Для питания 5В-потребителей буду использовать понижающий конвертер, его лучше запитать от 12В линии бп или от 5 В или от 24 В повышающего конвертера?
a5021 пишет:
Суммарное сопротивление RV4 и R18 должно быть 1 килоом. Точку "+", куда должна была подключаться термопара паяльника, подтянуть через резистор 360 ом к +5в.
Еще придется править код, т.к. значения с АЦП будут другие.
То есть сейчасу меня 47к + 150к, а в суме должно быть не больше 1 кОм? Не подскажите какие искать значения?
Все номиналы как у автора, паяльник прозванивается как 53 Ом и 4.7 Ом. Запитано пока от 12В.
Из минусов:
1. имеющийса чуть больший по диаметру BUZZER залезает на соседний резистор.
2. раз уж плата не маленькая, то конденсаторы можно и "положить" на плату
3. не логичто расположены разъемы. лучше 4-х - паяльник, 2-х - 24В
Выставляю 200, доходит до 122. Температура на жале по термопаре мультиметра 80
Выставляю 350, доходит до 260. Температура на жале по термопаре мультиметра 160
Значения getOversampled() в комнате 28гр - 4092,1995,1995,1995,4092,1995,1995
Значения getOversampled() в кипятке 88гр - 521,2304,2304,2304,521,2304
Значения, которые вызвращает getOversampled() при неизменной температуре терморезистора не должны отличаться более, чем на несколько единиц. В вышеприведенных рядах значений присутствуют какие-то совершенно необъяснимые и весьма значительные броски, чего никак не должно быть при исправных компонентах и правильно собранной схеме.
Одним из объяснений наблюдающихся бросков, может быть непостоянство опорного напряжения. На плате это напряжение можно "посмотреть" в точке соединения резисторов R1 и R20. Лучше осциллографом, но, на крайняк, можно и обычным мультиметром. Величина этого напряжения должна составлять 2.5 вольта и не иметь заметных пульсаций.
Теперь становится понятным, откуда взялись "выпадающие" из ряда значения. Если вы выводите в последовательный порт значения именно таким образом, как написали, то здесь стоит пояснить, что getOversampled() вызывается три раза подряд для взятия значения с термодатчика и один раз для измерения положения переменного резистора.
Измерьте напряжение на терморезисторе паяльника при комнатной температуре. Просто подключитесь мультиметром парарллельно разъему. Не совсем я понимаю, что там за странные цифры получаются.
Так я же уже все написал подробно изначально. R19 можно попробовать вообще исключить из схемы, но лучше это проверить опытным путем. Резистор на 360 ом это не R19, а дополнительный элемент, который нужно добавить в схему. Смысл его ровно тот же, как и R1 в моей схеме -- сделать резистивный делить напряжения, с которого производятся измерения.
Резистор R1 и терморезистор паяльника образуют делитель напряжения, где зная величину опоры, выходное напряжение и сопротивление R1 можно вычислить сопротивление термодатчика. Для выходного 0.75в и R1=220, сопротивление терморезистора паяльника будет 220/(2.5/0.75 - 1) = 94.28 ома. С учетом разброса параметров термодатчиков на разных паяльниках, такое сопротивление соответствует температуре нагревателя 250-300 грудусов. Вы именно при такой температуре значения измеряли?
Баловался со своим клоном Хакко907, при комнатной температуре 56 Ом, кипящая вода и опущенный в неё нагреватель 70 Ом, начал плавится припой на жале 160 Ом, разогрел при 21 В и 2 А до 180 Ом, дальше без регулятора не стал, но вроде стабилизировалось сопротивление, выключил, припой продолжал плавится до 108 Ом. Похоже очень сильно отличаются нагеватели, ну и естественно инерция огромная, нужно лучше сделать контакт нагревателя с жалом, у меня оно вообще свободно болтается. Хороший проект! Но я свою паялку решил замутить, на 48 меге, есть в наличии, ну и индикатор другой, от этого проекта не подходит ничего, а переделывать лень, быстрее новое накидать. :)
Краткий ответ -- да. Подробно -- это границы рабочих температур паяльника и соответствующие им значения getOversampled(). Сами температуры (в представлении "температура * 100" -- дифайны оканчивающиеся на _DEGREE) может и нет особого смысла менять, но вот дифайны оканчивающиеся на _MARGIN нужно задавать в привяке к конкретному паяльнику и для значений конкретных граничных теператур (в данном случае -- 185 и 460 градусов).
Стоит еще заметить, что слово "подбирать" тут будет не совсем уместным, т.к. данные значения прекрасно пересчитываются из определений ADC_CALIBRATION_ и CALIBRATION_TEMP_ и я малость схалтурил здесь, включив вместо формулы пересчета просто готовые значения, посчитанные в экселе.
Спасибо. Все подобрал, работает. Только ограничил нагрев до 360 гр, т.к. значения возвращаемые ф-циец не хотят подниматься выше 4092. А это 360 на жале. В принципе ок. Вот такой вопрос: при смене питания с 12 до 24 в калибровать же не нужно будет заново?
Отображение и регулировка температуры жестко привязаны к величине сопротивления термодатчика. Ардуина совсем ничего не знает о напряжении, которое подается на нагреватель. По этой причине работа регулятора никак от этого напряжения не зависит. Единственное, что я заметил при переходе с 12 вольт на 24 -- это недостаточная точность удержания целевой температуры -- цифры на индикаторе могут гулять в диапазоне нескольких единиц. Сия досадная недоработка с моей стороны была обусловлена тем, что разработку я вел при питании нагревателя от 12 вольт. По сравнению с 24 вольтами, разогрев происходит медленнее и заданной в алгоритме скорости опроса термодатчика достаточно для удержания температуры с точностью до градуса. При 24-х вольтовом питании, нагрев просиходит быстрее и алгоритм не успевает вовремя засечь точный момент выключения нагревателя. Такая неторопливость в опросе приводит к тому, что температура "вылетает" за целевую точку удержания на несколько градусов. Это никак не сказывается на удобстве в работе, но вот "мельтешашие" цифры на индикаторе, глазу не совсем приятны. Есть мысли изменить скорость опроса в следующей версии скетча, но вот когда я на это сподоблюсь, пока сказать не могу.
Насчет 360 градусов на жале -- это, практически, максимум, что можно получить на 12в. Во всяком случае, такой вывод я могу сделать на основании собственных экспериментов. Более высокие температуры требуют повышения вольтажа на нагревателе.
Столкнулся с ппроблемой. Имееется блок питания 24В 3А (китайская металическая уоробочка), так после включения с ней блок уходит в защиту и соответственно плата паяльника выключается.
Возможно ли ограничить шим мосфета программно при включении?
Проект полностью.
Спасибо за проект, немного не дотерпел. с 6 раза, более менее получилась плата. Кошмар, давно я столько дырок вручную не сверлил. Раньше в чпу загонял и все... Теперь вопрос по плате, в наличии нет транзистора irf1010 есть irf1404, вроде бы по характеристикам он подойдет? Мне по сути осталось, транзистор припаять и сделать плату переходник, под экран (нужного нет, есть побольше).
И прошу прощения, за "недалекость", нет резистора R20 на 2,7kOm, есть 2,2кОм и 3кОм. какой лучше поставить, и что надо будет пересчитать...
Я тоже дырки сверлить вешаюсь, когда приходится. Но тут были выссказывания, что для простоты лучше под выводные компоненты делать дизайн, вот и пришлось.
Нормально плата получилась? Я немного побаивался, что плотновато дороги положил.
Полевик в схеме может быть вообще любым, лишь бы подходил по току (не менее 5ампер) и напряжению (от 30в до 60в). У IRF1404 параметры шикарные, но есть один момент, который может сказаться не самым лучшим образом -- у него очень большая емкость затвора (как, впрочем, и у всех мосфетов на большие токи). Большая емкость затвора при отсутствии драйвера может привести к тому, что транзистор будет открываться и закрываться несколько дольше, чем того хотелось бы и что будет вызывать дополнительный нагрев. Я не могу так на глаз определить, как будет столь емкий затвор заряжаться и разряжаться от ноги ардуины, но вы ничем не рискуете, если выясните это на практике.
Резисторы R20+R21 и переменник образуют делитель напряжения таким образом, чтобы в точке соединения R21 и переменника получалось 1.1в. Смысл этой затеи в том, что будучи выкрученным до упора вправо, переменник со своего среднего вывода подавал бы на ардуину эти самые 1.1в, которые для последнего являются максимальным значениением для преобразования.
В идеале, при сопротивлении переменника 10килоом, суммарное сопротивление R20 и R21 должно быть 12681 ом. Причем, какой из них будет иметь какое сопротивление, совершенно не важно. Важно, чтобы оно в сумме было, как можно ближе, к вышеупомянутому значению. Например, его можно набрать и как 12ком + 680ом.
Если все уже запаяли и больше ничего нет, то ставьте лучше 3ком, т.к. это будет ближе к цели.
Я тоже дырки сверлить вешаюсь, когда приходится. Но тут были выссказывания, что для простоты лучше под выводные компоненты делать дизайн, вот и пришлось.
Если все уже запаяли и больше ничего нет, то ставьте лучше 3ком, т.к. это будет ближе к цели.
Кому как, мне например проще под SMD.
Плата вполне нормально получилась, правда не так аккуратно как у Вас. Единственное большие полигоны почему-то плохо пропечатывались с картинки (странная ситуация с принтером, когда печатал из протеуса, все четко, а тут bmp да еще и пришлось маштабировать)
начались проблемы.
Подключил индикатор (такого точно не было, но нашел похожий с ОА)
При включении питания, что-то мигает бледно на индикаторе и все... На кнопку не реагирует.
Куда копать ? Индикатор работает. Т.к. заливал простейший скетч
Разряды светятся и довольно ярко...
Только сейчас обратил внимание. в схеме стоят транзисторы 2N4403 p-n-p. Насколько я помню он должен при подаче на него питания закрывается, открывается только по низкому. И обычно его ставят на - питания. А в схеме на +, хотя конечно и так и так работать будет.
У меня при тестовом скетче так и происходит, там где LOW на аналоговых портах, светятся разряды, а там где HIGH то не светятся...
А вы какие транзисторы поставили? Еще нужно помнить, что у 2n4403 несколько специфичная цоколевка.
2n4403, ставил так как у Вас на фото... По пдф посмотрел, все правильно.
Нарисовал схему в протеусе, только часть с индикацией. Тоже нет отоображения
Схема при подаче напряжения первым делом уходит в стендбай. Вывод ее из этого состояния и переключение в рабочий режим происходит по долгому (в районе полутора-двух секунд) нажатию кнопки. Надеюсь вы не просто кратковременным нажатием пытались ее включить?
Если сегменты светятся, то значит, как минимум, в части индикации собрано все верно.
Я прошу прощения. Как говорится - сам себе, злобный буратино :)
Ситуация в том, что нужного резистора, переменного не было. и я поставил похожий. У Вас земля в районе кнопки, соединяется с остальной землей, через корпус резистора. Мне пришлось ставить перемычку... Кнопка работает, значения какие то показывает.
Но значения показывает не реальные. Я подключил только терморезистор, при комнатной температуре показывает 298. Сопротивление терморезистора 48,5Ом. Чем регулировать ?
И еще одно, при повороте регулятора на минимум, показывает чуть-ли не отрицательные значения (горят все 8). Тоесть плавно уменьшается значение до 0, а потом зажигается ерунда.
Максимальное значение 526, а не то, что в программе.
Простите за глупые вопросы....
При сопротивлении 48,5 ом значение 298 никак не может случиться. Есть подозрение, что на делитель подаются не опорные 2.5в, а заметно больше. Измерьте напряжение в точке, где соединяются R2 и U1. Должно быть ровно 2.5в.
V_REF 2.515
REF_1V 1.017
Тогда на входе А7 ардуины должно получаться 0.454 вольта (или близ того). Так и есть?
Разобрался. Опять не внимательность. А6 и а7 местами перепутал...Вроде все проверил, а такой косяк.
Температура показывается, немного помоему завышена 35.6
Вечером дома поставлю подстроечный вместо r20, подберу параметры...
Спасибо огромное.
С этой закончу, попробую сделать на смд. Кум попросил
Температуры при подключении разных паяльников и будут показываться разные. Все дело в разбросе параметров термодатчиков. Тут уже можно не заморачиваться никакими подстроечниками, а калибровать чисто программно. В начале скетча есть секция определений, от которых отталкиваются все измерения и отображения температур:
Для калибровки устройства сначала потребуется либо обычный градусник, либо тот же ардуина с подцепленным ds18b20.
Без подключения нагревателя нужно просто замерить, что там поступает с термодатчика паяльника. Измерения ведутся не в вольтах или иных физических величинах, а в отсчетах АЦП ардуины.
В первое определении (ADC_CALIBRATION_DATA_LOW) заносится значение, которое возвращает функция getOversampled() при комнатной температуре. Значение этой температуры (т.е. то, что показывает лежащий рядом термометр) заносится в виде "температура * 100" в опеределение CALIBRATION_TEMP_LOW. Когда я калибровал, дома было жарко и значение 2950 означает, что термометр показывал 29.5°С.
Калибровочные опеределения оканчивающиеся на _HIGH относятся к таким же параметрам, но уже для высокой температуры. В моем случае выставлены значения для температуры, когда олово на жале паяльника превращается в "кашу". По справочнику, это 183-185°С.
Ловля точки плавления олова процедура муторная, т.ч. можно упросить процесс калибровки, откалибровав верхее значение стаканом с кипятком. Наливаем воду из только что вскипевшего чайника и опускаем туда нагреватель и термометр. Через пару минут, когда это хозяйство прогреется, фиксируем, что показывает термометр и что выдает getOversampled().
Температуры при подключении разных паяльников и будут показываться разные. Все дело в разбросе параметров термодатчиков. Тут уже можно не заморачиваться никакими подстроечниками, а калибровать чисто программно. В начале скетча есть секция определений, от которых отталкиваются все измерения и отображения температур:
Спасибо за схему и скетч, сделал я станцию, осталось облагородить корпус (как закончу, покажу).
Но уже вчера меня выручила, на объекте использовал, с б/п от ноутбука (19В 6А). Инерция конечно есть, от сигнала станции о нагреве, до пайки секунд 15-20, но тут и понятно, пока металл нагреется... В общем меня вполне устроил результат.
Еще раз - Спасибо!
от сигнала станции о нагреве, до пайки секунд 15-20
Не многовато-ли? Может жало плохое, или нагреватель стоит немного вытянуть, как многие советуют? Я даже не представляю как можно с такой реакцией температуру поддерживать. У меня лично паяльник через эти же 20 секунд с нуля уже до паябельного состояния разогревается. Или под "сигналом о нагреве" подразумевается именно включение, а не готовность?
Все правильно он говорит. Когда происходит начальный разогрев, то температура на термодатчике достигает заданного значения несколько раньше, чем на жале. У меня на своей "штатной" паялке даже "заброс" температуры сделан, когда при начальном разогреве вместо выставленных потенциометром, скажем, 260 градусов, паялка греет градусов на 20-30 выше. Расчет такой, что пока температура падает с завышенных значений, жало уже прогреется до все тех же 260 градусов, но в случае "заброса" это произойдет быстрее, чем если бы разогрев велся только до целевой температуры.
Еще я выяснил, что время разогрева очень сильно зависит от напряжения подаваемого на паяльник. Это оказалось полной неожиданностью, т.к. на глаз казалось, что эта разница совсем не велика.
Я соорудил простейший вольтметр из одной из подвернувшихся под руку демо-плат и встал этим "вольтметром" параллельно входу с термодатчика обсуждаемой здесь паялки. Ардуино работал в своем обычном режиме. Результаты замеров, которые велись с шагом в 0.2 секунды, передавались на комп, где записывались в лог. Потом, разбирая эти данные, я выяснил, что время разогрева от комнатной температуры до 280 градусов для напряжений 12 и 19 вольт отличается в четыре раза. Для разницы питающих напряжений в семь вольт такой результат сильно разошелся с тем, что можно было бы интуитивно представить. Причем, это характеристика исключительно паяльника, т.к. во все время разогрева мосфет находится в полностью открытом состоянии и ардуина никак не управляет процессом, просто следя за достижением целевой температуры.
Таким образом, нельзя исключать, что разница в ваших наблюдениях и наблюдениях kang2k объясняется исключительно разными напряжениями, подаваемыми на паяльник. Хотя, тут и блок питания может подыграть. Если он просаживает напряжение под нагрузкой, то разогрев будет идти дольше. Повторюсь, что холодный паяльник может тянуть из БП больше десяти ампер.
Я чуть позже собираюсь дополнить результаты замеров данными для 15 и 24 вольт и оформив в виде графиков опубликовать здесь.
Ну я не спорю что есть задержка между разогревом нагревателя и самого жала, но не 20...30 секунд же. И да, я тоже ведь использую ноутбучный зарядник, правда чуть "разогнанный" до 21.5V. И греется жало от нуля до 300 градусов эти же 20-30 секунд.
А вот такая сильная зависимость от напряжения конечно не понятна. Нагрев же по идее зависит от заряда на нагревателе, а он прямо пропорциален силе тока, которая, опять же, прямо пропорциональна напряжению. Мистика...
Здесь нужно учитывать еще теплопередачу в окружающую среду, а это может оказаться несколько сложнее закона Ома. Факт, что любые графики нагрева не линейные, с характерным завалом по мере повышения температуры.
Довел я до ума картинку с зависимостью скорости нагрева от подаваемого напряжения. Взял универсальный ноутбучный зарядник и он, повидимому, на делении 12в дает чуть выше напряжение, чем было с компа. На двенадцати вольтах время чуть снизилось, но все равно осталось очень большим. Так как показывать напряжение с делителя не очень информативно, по оси Y здесь приводится сопротивление термодатчика паяльника. При комнатной температуре оно равно примерно 46 ом, при температуре 280 градусов чуть больше 94 ом. Время разогрева в секундах отображается по оси X.
На 24 вольтах паяльник разогрелся за 9.4с, на 19в за 19.4с, на 15в за 33с и на 12в за 67с.
Разница во времени между 12-и и 24-х вольтовым разогревом, конечно, устрашающая. Тем не менее, еще до этих замеров я активно пользовался этой паялкой на 12 вольтах от компа и какого-то серьезного дискомфорта не испытывал.
Точность слежения за температурой паяльника можно немного повысить, если изменить сопротивление резистора R1 c 220 ом на 100 ом. Величина в 220 ом была выбрана еще для устройства с первой страницы этой ветки, перекочевав потом и в последнюю схему без изменений. Это сопротивление определяет диапазон напряжений, цифруя которые ардуина делает вывод о температуре нагревателя. Чем больше этот диапазон, тем точнее ардуина вычисляет температуру. В свое время я не рассчитывал точно величину этого сопротивления, подобрав его значение "на глазок". В принципе, попал близко к оптимуму, но не прямо в него. Теперь же решил вычислить оптимальное значение по возможности более точно. Расчет показывает, что сопротивление в 100 ом обеспечивает самый широкий диапазон напряжений на делителе при изменении температуры нагревателя. Уменьшение или увеличение этого сопротивления вызывает сужение диапазона, т.ч. теперь можно говорить о том, что оптимальная величина найдена.
Как я сказал в начале, точность увеличивается лишь на немного. В числовом выражении это 16%. Тем не менее, на своей плате данное сопротивление я собираюсь заменить. Еще не успел, т.к. только сейчас закончил с рассчетом.
Замена сопротивления потребует перекалибровки устройства, т.к. контрольные величины немного сдвинутся. Процедура самой калибровки не меняется и о том, как это делать я писал раньше.
подскажите, нельзя ли как-то экспортировать файл проекта из протеуса в спринт лейаут. протеус есть не у всех.
и второй вопрос - какие плюсы минусы у этого проекта по сравнению с "конкурентом" в этом же разделе.
хочу собрать паяльную станцию но не могу выбрать- оба проекта нравятся ))
Лейаутом я практически не пользуюсь и мне сложно подсказать так сходу. Слышал, что шестой лейаут умеет делать импорт герберов, т.ч. могу выгрузить гербер из протеуса, а вы уж у себя поробуете его затянуть в лейаут. Что из этого получится, заранее не могу предсказать.
На всякий случай: гербер -- это неофициальный отраслевой стандарт на формат электронных чертежей для производства печатных плат.
Обсуждать конкурентов не считаю этичным, но вы можете сами сравнить схему и скетч. У меня нет фена, но функционал паялки немного побогаче.
да фигня, не корову же делите, можно обсуждать. просто без переходов на личности и т.д.
ладно, видимо звезды склоняются к тому, что соберу соседний проект. там схема в лэй а главное есть фен.
Как вам будет угодно. На всякий случай -- в подключении фена там есть одно очень сложнообъяснимое решение, последствия применения которого прогнозирвать невозможно. Где-то в здешней ветке мы касались вопросов семисторного подключения нагрузки к 220в и там чуть-чуть затрагивался вопрос, что может быть, если допускать вольности.
В схеме Ильи возможна замена moc3061 на moc3062 или moc3063?
Да, без проблем.
Да, без проблем.
Ок. В схеме корректировок по номиналам не будет?
Ни чего не надо менять.
Илья73 и DimaD
Начинаю потихоньку собирать свою по вашим наработкам (2 платы от Ильи и 3 от Димы), а то платы лежат, а все некогда - огород, стройка, реомнт и днем работа.
Такой вопрос, буду использовать компактный атх бп и повышающий конвертер по рекомендации а5052 с 12 В до 24 В. Для питания 5В-потребителей буду использовать понижающий конвертер, его лучше запитать от 12В линии бп или от 5 В или от 24 В повышающего конвертера?
Суммарное сопротивление RV4 и R18 должно быть 1 килоом. Точку "+", куда должна была подключаться термопара паяльника, подтянуть через резистор 360 ом к +5в.
Еще придется править код, т.к. значения с АЦП будут другие.
То есть сейчасу меня 47к + 150к, а в суме должно быть не больше 1 кОм? Не подскажите какие искать значения?
И R19 должен быть в 360 Ом?
Какие будут изменения в коде?
Добрый день всем.
a5021, спасибо за работу, повторил Ваш проект.
Все номиналы как у автора, паяльник прозванивается как 53 Ом и 4.7 Ом. Запитано пока от 12В.
Из минусов:
1. имеющийса чуть больший по диаметру BUZZER залезает на соседний резистор.
2. раз уж плата не маленькая, то конденсаторы можно и "положить" на плату
3. не логичто расположены разъемы. лучше 4-х - паяльник, 2-х - 24В
но это ИМХО
Калибрую:
Значения 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
Может нужно поиграться с:
автору - спасибо за труды!
наверное сделаю себе такое же.
вопрос: коллеги, ктонить встречал для этого HAKKO 907/ESD 907 936 937 928 926 5PIN паяльника медные жала? привык я к медным.
вопрос: коллеги, ктонить встречал для этого HAKKO 907/ESD 907 936 937 928 926 5PIN паяльника медные жала? привык я к медным.
Конечно: Aliexpress Или искать "hakko cupper"
copper
copper
Так точно
Значения getOversampled() в комнате 28гр - 4092,1995,1995,1995,4092,1995,1995
Значения, которые вызвращает getOversampled() при неизменной температуре терморезистора не должны отличаться более, чем на несколько единиц. В вышеприведенных рядах значений присутствуют какие-то совершенно необъяснимые и весьма значительные броски, чего никак не должно быть при исправных компонентах и правильно собранной схеме.
Одним из объяснений наблюдающихся бросков, может быть непостоянство опорного напряжения. На плате это напряжение можно "посмотреть" в точке соединения резисторов R1 и R20. Лучше осциллографом, но, на крайняк, можно и обычным мультиметром. Величина этого напряжения должна составлять 2.5 вольта и не иметь заметных пульсаций.
В 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
Ответьте по моему 528 сообщению.. Спасибо..))
Теперь становится понятным, откуда взялись "выпадающие" из ряда значения. Если вы выводите в последовательный порт значения именно таким образом, как написали, то здесь стоит пояснить, что getOversampled() вызывается три раза подряд для взятия значения с термодатчика и один раз для измерения положения переменного резистора.
Измерьте напряжение на терморезисторе паяльника при комнатной температуре. Просто подключитесь мультиметром парарллельно разъему. Не совсем я понимаю, что там за странные цифры получаются.
Ответьте по моему 528 сообщению.. Спасибо..))
Так я же уже все написал подробно изначально. R19 можно попробовать вообще исключить из схемы, но лучше это проверить опытным путем. Резистор на 360 ом это не R19, а дополнительный элемент, который нужно добавить в схему. Смысл его ровно тот же, как и R1 в моей схеме -- сделать резистивный делить напряжения, с которого производятся измерения.
a5021, ответте, пожалуйста на #536
Напряжение измерьте на терморезисторе и приведите соответствующее ему значение, возвращаемое getOversampled(). Тогда сразу видно будет.
Напряжение измерьте на терморезисторе и приведите соответствующее ему значение, возвращаемое getOversampled(). Тогда сразу видно будет.
Значения:
Резистор R1 и терморезистор паяльника образуют делитель напряжения, где зная величину опоры, выходное напряжение и сопротивление R1 можно вычислить сопротивление термодатчика. Для выходного 0.75в и R1=220, сопротивление терморезистора паяльника будет 220/(2.5/0.75 - 1) = 94.28 ома. С учетом разброса параметров термодатчиков на разных паяльниках, такое сопротивление соответствует температуре нагревателя 250-300 грудусов. Вы именно при такой температуре значения измеряли?
На жале около 200. На терморезисторе соответственно больше.
Я вот не понял про значения в скетче:
#define LOW_TEMP_MARGIN 2382
#define LOW_TEMP_DEGREE 18500
#define HIGH_TEMP_MARGIN 3661
#define HIGH_TEMP_DEGREE 46000
Их нужно подбирать?
Баловался со своим клоном Хакко907, при комнатной температуре 56 Ом, кипящая вода и опущенный в неё нагреватель 70 Ом, начал плавится припой на жале 160 Ом, разогрел при 21 В и 2 А до 180 Ом, дальше без регулятора не стал, но вроде стабилизировалось сопротивление, выключил, припой продолжал плавится до 108 Ом. Похоже очень сильно отличаются нагеватели, ну и естественно инерция огромная, нужно лучше сделать контакт нагревателя с жалом, у меня оно вообще свободно болтается. Хороший проект! Но я свою паялку решил замутить, на 48 меге, есть в наличии, ну и индикатор другой, от этого проекта не подходит ничего, а переделывать лень, быстрее новое накидать. :)
На жале около 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_ и я малость схалтурил здесь, включив вместо формулы пересчета просто готовые значения, посчитанные в экселе.
Спасибо. Все подобрал, работает. Только ограничил нагрев до 360 гр, т.к. значения возвращаемые ф-циец не хотят подниматься выше 4092. А это 360 на жале. В принципе ок. Вот такой вопрос: при смене питания с 12 до 24 в калибровать же не нужно будет заново?
Отображение и регулировка температуры жестко привязаны к величине сопротивления термодатчика. Ардуина совсем ничего не знает о напряжении, которое подается на нагреватель. По этой причине работа регулятора никак от этого напряжения не зависит. Единственное, что я заметил при переходе с 12 вольт на 24 -- это недостаточная точность удержания целевой температуры -- цифры на индикаторе могут гулять в диапазоне нескольких единиц. Сия досадная недоработка с моей стороны была обусловлена тем, что разработку я вел при питании нагревателя от 12 вольт. По сравнению с 24 вольтами, разогрев происходит медленнее и заданной в алгоритме скорости опроса термодатчика достаточно для удержания температуры с точностью до градуса. При 24-х вольтовом питании, нагрев просиходит быстрее и алгоритм не успевает вовремя засечь точный момент выключения нагревателя. Такая неторопливость в опросе приводит к тому, что температура "вылетает" за целевую точку удержания на несколько градусов. Это никак не сказывается на удобстве в работе, но вот "мельтешашие" цифры на индикаторе, глазу не совсем приятны. Есть мысли изменить скорость опроса в следующей версии скетча, но вот когда я на это сподоблюсь, пока сказать не могу.
Насчет 360 градусов на жале -- это, практически, максимум, что можно получить на 12в. Во всяком случае, такой вывод я могу сделать на основании собственных экспериментов. Более высокие температуры требуют повышения вольтажа на нагревателе.
Как всегда очень доходчиво. Спасибо за разработку!
Столкнулся с ппроблемой. Имееется блок питания 24В 3А (китайская металическая уоробочка), так после включения с ней блок уходит в защиту и соответственно плата паяльника выключается.
Возможно ли ограничить шим мосфета программно при включении?