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

Miles_1985
Offline
Зарегистрирован: 23.10.2016

Здравствуйте, ув. учасники форума, не имел возможности зайти сюда раньше, конечно я выложу свою версию,  хотя я далеко не профи в программировании ,  а скорее наоборот). Кстати делал код для себя , говорю сразу, геркон я на данном этапе работы станции не использовал. Поэтому всё, что касается геркона я закоментировал и не вникал в его работу. Также в связи с подключением реле и прошивку подстаривал под него. Один контакт рвёт силовую цепь, второй управляющий провод, после чего фен переходит в off и на экране появл. надпись "AVARIYA". Сбрасывается она только кнопкой по питанию. Добавил таймер от "случайных" срабатываний защиты при резкой смене заданной температуры потенциометром. Также учитывая советы Oleg K. по работе с операц. усилтилем LM358N изменил рабочий диапазон значений.

https://drive.google.com/open?id=0B7lV_ckFyDIVaV9uWEFKWWhUVGs

saloed111
Offline
Зарегистрирован: 07.04.2016

Miles_1985 Спасибо большое, посмотрю для себя добавлю обязательно поддержание температуры и защиту, потому что я тоже не особо программист, но давно хотел довести защиту до ума, еще раз спасибо!!!!

1707
Offline
Зарегистрирован: 08.02.2017

Всем привет. Подскажите пожалуйста, как побороть свист фена на малых оборотах? С увеличением оборотов он пропадает, но бесит караул. Спасибо.

Miles_1985
Offline
Зарегистрирован: 23.10.2016

1707 пишет:

Всем привет. Подскажите пожалуйста, как побороть свист фена на малых оборотах? С увеличением оборотов он пропадает, но бесит караул. Спасибо.

Подобрать нужную частоту ШИМ как мне кажется в строке:

TCCR2B = TCCR2B & 0b11111000 | 0x02; //кулер фена 24v. Частота ШИМ 11 и 3

Какое к Вас значение и питание вентилятора?

1707
Offline
Зарегистрирован: 08.02.2017

Miles_1985 пишет:

Какое к Вас значение и питание вентилятора?

Значение 0x02 и питание 24В

При 0x01 некоректная регулировка оборотов, вплоть до остановки

При 0x03 на нижнем приделе довольно большие обороты

Miles_1985
Offline
Зарегистрирован: 23.10.2016

Значение частоты ШИМ для выводов 11 и 3

  • TCCR2B = TCCR2B & B11111000 | B00000001; // Таймер 2 делитель 1 для частоты ШИМ 31372.55 Hz
  • TCCR2B = TCCR2B & B11111000 | B00000010; // Таймер 2 делитель 8 для частоты ШИМ 3921.16 Hz
  • TCCR2B = TCCR2B & B11111000 | B00000011; // Таймер 2 делитель 32 для частоты ШИМ 980.39 Hz
  • TCCR2B = TCCR2B & B11111000 | B00000100; // Таймер 2 делитель 64 для частоты ШИМ 490.20 Hz (По умолчанию)
  • TCCR2B = TCCR2B & B11111000 | B00000101; // Таймер 2 делитель 128 для частоты ШИМ 245.10 Hz
  • TCCR2B = TCCR2B & B11111000 | B00000110; // Таймер 2 делитель 256 для частоты ШИМ 122.55 Hz
  • TCCR2B = TCCR2B & B11111000 | B00000111; // Таймер 2 делитель 1024 для частоты ШИМ 30.64 Hz

Или то же самое

  • TCCR2B = TCCR2B & B11111000 | 0x01; // Таймер 2 делитель 1 для частоты ШИМ 31372.55 Hz
  • TCCR2B = TCCR2B & B11111000 | 0x02; // Таймер 2 делитель 8 для частоты ШИМ 3921.16 Hz
  • TCCR2B = TCCR2B & B11111000 | 0x03; // Таймер 2 делитель 32 для частоты ШИМ 980.39 Hz
  • TCCR2B = TCCR2B & B11111000 | 0x04; // Таймер 2 делитель 64 для частоты ШИМ 490.20 Hz (По умолчанию)
  • TCCR2B = TCCR2B & B11111000 | 0x05; // Таймер 2 делитель 128 для частоты ШИМ 245.10 Hz
  • TCCR2B = TCCR2B & B11111000 | 0x06; // Таймер 2 делитель 256 для частоты ШИМ 122.55 Hz
  • TCCR2B = TCCR2B & B11111000 | 0x07; // Таймер 2 делитель 1024 для частоты ШИМ 30.64 Hz

Себе правда не менял, так как пока устраивает, да и фен уже в работе.

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

1707 пишет:

как побороть свист фена на малых оборотах?

как вариант 12V DC 50mm Blow Radial Cooling Fan

и ШИМ 31372.55 Hz убрать за предел слышимых частот

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

a5021 пишет:

 Здесь на форуме я уже выклдаывал обсчеты пропускания ШИМа через интегрирующую цепь.

 

Ссылочку дайте пожалуйста, ШИМ похерил в пользу ЦАП, но от идеи использования не отказался

Yahel
Offline
Зарегистрирован: 05.12.2016

pendulum пишет:

boba.s пишет:

проверь внимательно распайку LCD

и 2 перемычки не забудь на экране.

СПАСИБО  , все заработало , небыло перемычки (GND / RW).

Yahel
Offline
Зарегистрирован: 05.12.2016

У меня при включении пишет warning , ( нагреватель  паяльника 12,7 Ом, термопара это я так думаю т.к. при нагреве зажигалкой появляется  0 - 1mV...  Версия прошивки 0.6 . На 5 ножку  разема паяльника я подключил + , а на 4 - , подскажите что я делаю не так?

 

brda1
Offline
Зарегистрирован: 10.08.2016

Yahel пишет:

У меня при включении пишет warning , ( нагреватель  паяльника 12,7 Ом, термопара это я так думаю т.к. при нагреве зажигалкой появляется  0 - 1mV...  Версия прошивки 0.6 . На 5 ножку  разема паяльника я подключил + , а на 4 - , подскажите что я делаю не так?

 


 

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

 

Yahel
Offline
Зарегистрирован: 05.12.2016

  brda1 Спасибо, я померил и у меня так же вышло , все работает )))))))).

sabian
Offline
Зарегистрирован: 08.02.2017

Подскажите, есть в наличии AD8672, можно ли ее использовать взамен LM358? Обвязку ОУ буду делать под термистор с 9 стр., номиналы резисторов можно оставить те же или же придется расчитывать другие под ее КУ? Спасибо.

Woorhees
Woorhees аватар
Offline
Зарегистрирован: 18.09.2015

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

https://youtu.be/69r_RI3Y1qM

Miamin
Offline
Зарегистрирован: 29.02.2016

Замеряй напряжение на оптопаре для открытия семимтора, такое ощущение что просатка напряжения на оптопаре, не хватает сил открыть семистр. Или её поменяй

Miamin
Offline
Зарегистрирован: 29.02.2016

Светодиод на индекацию фена есть, мигает? Место него перемычку попробуйте поставить.

dimich
Offline
Зарегистрирован: 12.10.2016
 
 

Woorhees пишет:

на фене сразу падает температура

https://youtu.be/69r_RI3Y1qM

так тут не падает, а просто тупо отключается нагрев на фен. решение выше озвучено.

 
Woorhees
Woorhees аватар
Offline
Зарегистрирован: 18.09.2015

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

Woorhees
Woorhees аватар
Offline
Зарегистрирован: 18.09.2015

Woorhees пишет:

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

https://youtu.be/69r_RI3Y1qM

Не знаю в чем именно была проблема, но после установки подтягивающего резистора на 20кОм между плюсс 5 и герконом все заработало идеально, так же перестало моргать установленная температура фена если фен не на подставке (до этого переодически моргало как будто фен стоит на подставке, из-за чего долго прогревался).

Miamin
Offline
Зарегистрирован: 29.02.2016

В коде внутренний резистор подтянули на пин для геркона, если нет то пин попадал в z состояние от наводок сети. Поэтому если пин работает на вход его нужно подтягивать резистором или внутренний включать!

boba.s
Offline
Зарегистрирован: 05.02.2017

добрый вечер! всем. в скетчах вообще не силен.залил вашу прошивку все нормально.вопрос по геркону. на ножку контроллера надо подать минус чтобы он отключил нагрев?как реле подключать.я имею ввиду сигнал с контроллера идет во время аварии? то есть реле на нормально замкнутые контакты? скетч от Miles 1985

Miles_1985
Offline
Зарегистрирован: 23.10.2016

Miamin пишет:
В коде внутренний резистор подтянули на пин для геркона, если нет то пин попадал в z состояние от наводок сети. Поэтому если пин работает на вход его нужно подтягивать резистором или внутренний включать!

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

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

Miles_1985 пишет:
Один контакт рвёт силовую цепь, второй управляющий провод

КМК, логичнее бы (и надёжнее) рвать одним контактом один провод сети, другим другой. Помимо надёжности ещё и безопасность - учитывая, что выходной разъём - "папа" с торчащими штырьками, то, взависимости от фазировки сетевого провода, там может оказаться фаза...

Ну и пара мыслей по вашему скетчу.
К примеру -

if (setHotAirTemp+100 <= hotAirTCouple)

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

Далее, по регулированию, в канале термофена.

    digitalWrite(pinHotAirOut, HIGH);
    delay(70);
    digitalWrite(pinHotAirOut, LOW);
    delay(40);

Т.е. 70 мсек включенного состояния симистора означают ~3,5 периода сетевого напряжения, что, скорее всего, сильно "утаскивает" тепературу вверх. Я бы уменьшил задержку до 5-20 мсек (подобрать экспериментально, начиная с меньшей величины), что бы время воздействия стало короче и уменьшило вылеты температуры вверх, падение её в течении 120 мсек вниз, и, в итоге, "колбасню" температуры в целом.
Задержку 40 мсек убрал бы вовсе - это "мёртвое" время, которое просто вносит ненужный затык в основной цикл.
Аналогично и с дилэй(80) в конце цикла, что идаёт вышеуказанные 120 мсек.
Общему циклу лучше бы крутиться максимально быстро, а вот время обновления дисплея можно и нужно реализовать через миллис(). Всё, что относится к дисплею запихать в отдельную процедуру, которую вызывать по прошествии какого-то времени. К примеру 300-500 мсек:
 

    /* Обновляем LCD с 500ms интервалом */
    static uint32_t prev_LCD_millis = millis();
    if (millis() - prev_LCD_millis > 500) {
        prev_LCD_millis = millis();
        updateLCD(); //обновляем дисплей.
    }
Miles_1985
Offline
Зарегистрирован: 23.10.2016

OlegK спасибо Вам за коментарий, обязательно попробую использовать Ваши советы и оценить результат!

Yahel
Offline
Зарегистрирован: 05.12.2016

Добрый вечер , У меня цыфры в строке постоянно прыгают от 0 и до максимума , даже когда выключен паяльник off все равно температура паяльника прыгает  ?

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

sabian пишет:
Подскажите, есть в наличии AD8672, можно ли ее использовать взамен LM358?

Хороший ОУ, но сюда не пойдёт, т.к. него минимальное напряжение питания - двуполярное, +/-5 вольт.

sabian
Offline
Зарегистрирован: 08.02.2017

Нашел еще ADA4898-2, этот пойдет?

sabian
Offline
Зарегистрирован: 08.02.2017

Нашел еще ADA4898-2, этот пойдет?

morski21
Offline
Зарегистрирован: 12.02.2017
Привет,
следовать ваш проект, и я решил сделать то же самое с экраном TFT все должны контролироваться с помощью сенсорного экрана, вам нужно только настроить графики с помощью программы, ваша помощь будет приветствоваться, извините за перевод
спасибо заранее Марио
Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

всем привет коллеги.

поглядываю тоже на эту тему и все подумываю, собирать или нет все не как не решусь.

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

собирал ли кто схемку на микро? много ли там нужно править на плате?

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

morski21 пишет:

следовать ваш проект

красиво получилось!

source будете сюда загружать?

trimmer1979
Offline
Зарегистрирован: 11.02.2017

Для  Baks.

Посмотри рядом тему "Очередная паяльная станция", проект собран арду нано.

remell
Offline
Зарегистрирован: 12.02.2017

Ребята прошу помощи. Купил ардуинку нано  с экраном по I2C . Поправил начало кода вот так:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

int pinSolderOut = 5;  // Выход для паяльника
int pinSolderIn = A4;  // Потенциометр паяльника
int pinSolderTCouple = A3;  // Термопара паяльника
int pinSolderButton = 2;  // Кнопка вкл. и выкл. паяльника

int pinHotAirOut = 6;  // Выход для фена
int pinHotAirIn = A2;  // Потенциометр фена
int pinHotAirTCouple = A1;  // Термопара фена
int pinHotAirCoolerOut = 3;  // Выход для вентилятора фена ( PWM )
int pinHotAirCoolerIn = A0;  // Потенциометр вентилятора фена
int pinHotAirButton = 4;  // Кнопка вкл.и выкл. фена

Загружается в ардуинку и экран тупо светит синим и верхние квадраты. Кто может поправить прошивку под Нану с I2C. В коде не точто не очень, а совсем никак.

Petro-258
Offline
Зарегистрирован: 27.10.2016
вместо lcd.begin(16, 2);
поставь
lcd.init();
lcd.backlight();  // включение подсветки дисплея
remell
Offline
Зарегистрирован: 12.02.2017

Petro-258 пишет:

вместо lcd.begin(16, 2);
поставь
lcd.init();
lcd.backlight();  // включение подсветки дисплея

Да спасибо так и сделал. Все завелось, но теперь другая проблема моргает экран. 

Кстати скетч от Simon заливается и ложится ровно. Какие там различия с этой темой?

pendulum
Offline
Зарегистрирован: 06.02.2017

Подскажите пожалйста ,  при включении  паяльника БП от ноутбука уходит в защиту. Как убрать защиту в ноутбучном блоке питания?

dimich
Offline
Зарегистрирован: 12.10.2016
 
 

pendulum пишет:

Как убрать защиту в ноутбучном блоке питания?

sens (стоковый) резистор нужно уменьшать, но это черевато, защита она для этого и сделана.

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

pendulum пишет:
Подскажите пожалйста ,  при включении  паяльника БП от ноутбука уходит в защиту. Как убрать защиту в ноутбучном блоке питания?

Не в ту сторону мыслите...
По-вашему, если убрать защиту, то вместо 5А (образно), БП начнёт выдавать 10?
Учитывая, что паяльник потребляет максимум лишь пока холодный и при нагреве ток уменьшается, то можете попробовать ограничить величну ШИМ, пока температура ниже определённого значения.

pendulum
Offline
Зарегистрирован: 06.02.2017

OlegK пишет:

pendulum пишет:
Подскажите пожалйста ,  при включении  паяльника БП от ноутбука уходит в защиту. Как убрать защиту в ноутбучном блоке питания?

Не в ту сторону мыслите...
По-вашему, если убрать защиту, то вместо 5А (образно), БП начнёт выдавать 10?
Учитывая, что паяльник потребляет максимум лишь пока холодный и при нагреве ток уменьшается, то можете попробовать ограничить величну ШИМ, пока температура ниже определённого значения.


Можете подсказать где это отредактировать? Заранее спасибо!

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

Подскажу, если покажете, где и как регулируете нагрев паяльника.

pendulum
Offline
Зарегистрирован: 06.02.2017

OlegK пишет:

Подскажу, если покажете, где и как регулируете нагрев паяльника.


Сразу после включения паяльника уходит в защиту.вам нужно фото как я подлючал?

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

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

БП с какими характеристиками используете?

pendulum
Offline
Зарегистрирован: 06.02.2017

Скетч от ув.saloed111 версия 0.7
БП ASUS n193 V85 переделанный на 24 вольта

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

Неужели трудно ссылку кинуть или сюда кусок кода воткнуть? Я знаю, что ли, где этот скетч 0,7 лежит?

pendulum пишет:
БП ASUS n193 V85 переделанный на 24 вольта

Ну а что он "умел", пока был ещё не переделанным? Вангую: вольт 19, ампера на 3?

pendulum
Offline
Зарегистрирован: 06.02.2017

geipa пишет:

вот ссылка:https://yadi.sk/d/gC0f-CUW377c7e


Вот

pendulum
Offline
Зарегистрирован: 06.02.2017

OlegK пишет:

Неужели трудно ссылку кинуть или сюда кусок кода воткнуть? Я знаю, что ли, где этот скетч 0,7 лежит?

pendulum пишет:
БП ASUS n193 V85 переделанный на 24 вольта

Ну а что он "умел", пока был ещё не переделанным? Вангую: вольт 19, ампера на 3?


ASUS 19V - 3,42A (65W)

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

Попробуйте так -
 

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

 

pendulum
Offline
Зарегистрирован: 06.02.2017

OlegK пишет:

Попробуйте так -
 

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

 


Спасибо.как попробую отпишусь.

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

А лучше посмотрите в посте 1151 скетч от Miles_1985 и переделайте регулирование паяльника, как там.
Соответственно и ограничение туда можно добавить тоже.
Будет тогда так -
 

// Поддержка установленной температуры паяльника
   if (setSolderTemp >= solderTCouple && digitalRead(pinSolderButton) == HIGH){
        int err = setSolderTemp - solderTCouple; // Регулировка по пропорциональной компоненте
        int TempPower = sKp * err; // Формула пропорциональной компоненты

        byte max_power = 255;
        //мягкий старт
	if (solderTCouple < 50) {
	    max_power = 100;
	}
       //конец мягкий старт

        uint16_t SPower = constrain(TempPower, 0, max_power);
        analogWrite(pinSolderOut, SPower);
    }
    else{
      analogWrite(pinSolderOut, 0);
    }

 

 

pendulum
Offline
Зарегистрирован: 06.02.2017

pendulum пишет:
OlegK пишет:

Попробуйте так -
 

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

 

Спасибо.как попробую отпишусь.

залил прошивку , минуты 2-3 проходит и уходит в защиту когда темерература подымается до 50 градусов, настройка температуры работает.