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

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

Прошей предыдущую версию прошивки без поддержки геркона фена

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

Попробую) хотя в 0.7 продувка фена мне больше нравится. Спасибо, буду пробовать

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

Что за  версия 0.7? есть ссылка?

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

Miamin пишет:

Что за  версия 0.7? есть ссылка?

здесь посмотрите http://arduino.ru/forum/proekty/moya-payalnaya-stantsiya?page=8#comment-207007, там по моему есть все.

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

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

rachaunt
Offline
Зарегистрирован: 16.01.2017

Что подключается на 1 ногу и для чего на ней сопротивление. В 0,7 версии.

rachaunt
Offline
Зарегистрирован: 16.01.2017

Просто в схеме из архива его нет

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

rachaunt пишет:
Что подключается на 1 ногу и для чего на ней сопротивление. В 0,7 версии.

1-я нога является Reset, а резистор стоит подтягивающий чтоб небыло ложных срабатывании, в общем для стабильной работы.

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

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

Вам как раз огромное спасибо за помощь и продолжение развития проекта этой станции!

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

Здравствуйте, вопрос по защите на реле.

  //Защита от пробоя симистора/замыкания термопары (замыкаем реле)
  if (digitalRead(pinHotAirButton) == HIGH && setHotAirTemp+100> pinHotAirTCouple && pinHotAirTCouple<480){
    
    digitalWrite(pinRele, HIGH);
    }
    else {
      digitalWrite(pinRele, LOW);
      }

При выполнении условия срабатывает реле, отключает нагрузку, это понятно. Но при понижении температуры ниже заданного условия (ну мало ли по какой причине), реле подключит нагрузку обратно? Если так то можно ли сделать что бы реле не сбрасывалось, а удерживало бы своё положение например до отключения питания. Если можно то что для этого нужно, сам пока не могу сообразить, заранее спасибо!

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

Что бы не сбрасывалось рыле, я думаю нужно еще одна переменная boolen  типа. Если сработала защита присвоить true  и проверять в условии. Если  true то не отключать реле. Переменную rele обьявлять в setup.

bool rele = false;

if (digitalRead(pinHotAirButton) == HIGH && setHotAirTemp+100> pinHotAirTCouple && pinHotAirTCouple<480&&!rele ){
  digitalWrite(pinRele, HIGH);
  }
else {
  digitalWrite(pinRele, LOW);
  rele = true;
    }
e;

 

SuperXL
Offline
Зарегистрирован: 30.12.2011

Miamin пишет:

Что бы не сбрасывалось рыле, я думаю нужно еще одна переменная boolen  типа.

или просто убрать секцию else { ..... }

Miamin пишет:

Если сработала защита присвоить true  и проверять в условии. Если  true то не отключать реле.

Мне кажется, что rele = true; надо перенести из секции else в секцию then  (там где digitalWrite(pinRele, HIGH); )

Вообще странная проверка/защита...
if (digitalRead(pinHotAirButton) == HIGH && setHotAirTemp+100> pinHotAirTCouple && pinHotAirTCouple<480)
Если перевести с языка программирования на русский (это для новичков) то выходит следующая картина:
"Если (if) считать цифровое значение(digitalRead) на пине куда подключен выключатель канала фена(pinHotAirButton) и там окажется высокое значение (кнопка включена)(== HIGH) и в тот же момент (&&) если к установленной температуре прибавить 100 (setHotAirTemp+100) окажется больше чем измеренная температура (pinHotAirTCouple)* и в тот же момент (&&) если измеренная температура (pinHotAirTCouple)** будет меньше чем 480 град., то выполнить кусок кода который идет сразу после фигурной скобки ( { ) до ближайшей закрывающей фигурной скобки ( } ) в противном случае (если не выполнено хотя-бы одно из условий) выполнить действия описанные в ближайшей секции else {.....}  "

* Возник вопрос, а почему во второй части проверки условия значение выставленной температуры +100 сравнивается с номером пина куда подключен выход операционного усилителя ? там же А1 (или 15) и в 3-й части проверки условия опять таки ** номер пина сравнивается с цифрой 480.

Получается так, что только при включенном выключателе канала фена будет осущ. проверка и собственно защита.
А если симистор пробьется/откроется в момент когда канал фена выключен, ну мало-ли сильная импульсная помеха, тогда получается, что защита (условие) не сработает ?
Или допустим пользователь долго кипятил фен на граничной температуре, произошел пробой симистора, и температура резко скакнула выше 480 град. опять условие не выполнится ?
Или допустим когда мы только включаем фен (еще холодный) первая часть условия выполнена (включили), вторая часть условия setHotAirTemp+100> pinHotAirTCouple по любому будет выполняться и третья часть тоже выполнится т.к. изм. температура меньше чем 480 град. чтож получается -- беда ???? срочно отключать фен ? :)  

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

 

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

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

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

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

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

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

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

dimich сам пока новичок, хотя и есть желание разобраться и научиться, но пока моих знаний явно не хватает. По поврду защиты в выключенном состоянии поставил двухполюсный выключатель, второй контакт размыкает силовой провод на нагреватель, так что в выключенном состоянии как бы уже не страшно. А вот вопрос по поводу setHotAirTemp+100> pinHotAirTCouple остается открытым. Да нужно чтобы при превышении например 100 градусов срабатывала защита, но без ложных срабатываний, например при включении , если заланная температура удовлетворяет условию.

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

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

ufo69
Offline
Зарегистрирован: 01.02.2017

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

SuperXL
Offline
Зарегистрирован: 30.12.2011

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

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

ufo69
Offline
Зарегистрирован: 01.02.2017

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

Автору спасибо за код!!!

#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);  // Выходы для дисплея 1602

boolean offProtect = true;
boolean onProtect = true;
boolean FAN = true;
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;  // Кнопка вкл.и выкл. фена
int pinRele = A5; //На управление реле защиты

uint8_t char_cel[8] = {
  B00111, B00101, B00111, B00000, B00000, B00000, B00000
};


void setup()
{
  TCCR2B = TCCR2B & 0b11111000 | 0x01; //кулер фена 24v. Частота ШИМ 11 и 3 
  //TCCR2B = TCCR2B & B11111000 | B00000011; // 980.39 Hz
  //TCCR1B = TCCR1B & B11111000 | B00000010; // 3921.16 Hz
  //TCCR2B = TCCR2B & B11111000 | B00000001; // 31372.55 Hz
  pinMode(pinSolderOut, OUTPUT);
  pinMode(pinSolderButton, INPUT);
  pinMode(pinHotAirOut, OUTPUT);
  pinMode(pinHotAirButton, INPUT);
  pinMode(pinRele, OUTPUT);
  lcd.begin(16, 2);
  lcd.createChar(1, char_cel);
  
  // Вывод приветствия
  lcd.setCursor(0, 0);
  lcd.print("RX4HY     2017");
  lcd.setCursor(0, 1);
  lcd.print("SOLDER STATION");
  // задержка
  delay (3500);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("    version");
  lcd.setCursor(0, 1);
  lcd.print("   20.01.2017");
  delay (3500);
  lcd.clear();
}

void loop()
{
   // Преобразовываем значения
  int setSolderTemp = map(analogRead(pinSolderIn), 0, 1023, 0, 480);
  int solderTCouple = map(analogRead(pinSolderTCouple), 0, 750, 0, 480);
  int setHotAirTemp = map(analogRead(pinHotAirIn), 0, 1023, 0, 480);
  int hotAirTCouple = map(analogRead(pinHotAirTCouple), 0, 750, 0, 480);
  int setHotAirCooler = map(analogRead(pinHotAirCoolerIn), 0, 1023, 130, 255);
  int displayHotAirCooler = map(analogRead(pinHotAirCoolerIn), 0, 1023, 0, 99);
  
  // Защита, если не работает термопара
  if (solderTCouple > 480) {
    setSolderTemp = 0;
  }
  if (hotAirTCouple > 480) {
    setHotAirTemp = 0;
  }
  
  // Защита реле при выключении тена
  if ((hotAirTCouple > 110 && hotAirTCouple < 480) && digitalRead(pinHotAirButton) == LOW && digitalRead(pinHotAirOut) == LOW)
  {
    if(offProtect)
    digitalWrite(pinHotAirOut, LOW);
    delay(60);
    digitalWrite(pinRele, LOW);
    offProtect = false;
  }
  else
  {
    offProtect = true;
  }
  
  //Защита от пробоя симистора/замыкания термопары (замыкаем реле)
  if (digitalRead(pinHotAirButton) == HIGH && setHotAirTemp+100 > hotAirTCouple && hotAirTCouple < 480){
    
    digitalWrite(pinRele, HIGH);
    }
    else {
      digitalWrite(pinRele, LOW);
    }
    
   // Защита реле при включении тена
  if (digitalRead(pinHotAirButton) && digitalRead(pinRele) == HIGH)
  {
    if(onProtect)
    delay(60);
    onProtect = false;
  }
  else
  {
    onProtect = true;
  }
  
  // Поддержка установленной температуры паяльника
  if (setSolderTemp >= solderTCouple && digitalRead(pinSolderButton) == HIGH)
  {
    digitalWrite(pinSolderOut, LOW);
    //delay(100);
    digitalWrite(pinSolderOut, HIGH);
  }
  else {
    digitalWrite(pinSolderOut, LOW);
  }
    
  // Поддержка установленной температуры фена
  if (setHotAirTemp >= hotAirTCouple && digitalRead(pinHotAirButton) == HIGH && digitalRead(pinRele) == HIGH)
  {
    digitalWrite(pinHotAirOut, HIGH);
    delay(100);
    digitalWrite(pinHotAirOut, LOW);
    }
  else {
    digitalWrite(pinHotAirOut, LOW);
    }

  /* Установка оборотов вентилятора фена
  if (hotAirTCouple <= 85 && digitalRead(pinHotAirButton) == LOW) {
    analogWrite(pinHotAirCoolerOut, 0);
  }
  else {
    analogWrite(pinHotAirCoolerOut, setHotAirCooler);
  }*/

  if (hotAirTCouple > 20 && digitalRead(pinHotAirButton) == LOW && FAN) //Продувка фена после выключения
            {
        analogWrite(pinHotAirCoolerOut, 255);
            }
      else if (hotAirTCouple <= 20 && digitalRead(pinHotAirButton) == LOW && FAN)
            {
              analogWrite(pinHotAirCoolerOut, 0);
              FAN = false;
            }
      else if (hotAirTCouple < 90 && digitalRead(pinHotAirButton) == LOW && FAN == false)
            {
            analogWrite(pinHotAirCoolerOut, 0);
            }
      else if (hotAirTCouple > 90 && digitalRead(pinHotAirButton) == LOW && FAN == false)
            {
               FAN  = true;
             analogWrite(pinHotAirCoolerOut, 255);       
            }
      else  
            {
            analogWrite(pinHotAirCoolerOut, setHotAirCooler);
            FAN = true;
            }


  // Убираем прыганье цифр
  if ((setSolderTemp + 15) > solderTCouple && (setSolderTemp - 15) < solderTCouple) {
    solderTCouple = setSolderTemp;
  }
  if ((setHotAirTemp + 15) > hotAirTCouple && (setHotAirTemp - 15) < hotAirTCouple) {
    hotAirTCouple = setHotAirTemp;
  }

  // Данные паяльника на дисплей
  lcd.clear();
  lcd.print("Solder:");
  lcd.setCursor(7, 0);
  if (digitalRead(pinSolderButton) == HIGH) {
    if (solderTCouple < 480) {
      lcd.print(setSolderTemp);
      lcd.print("\1");
      lcd.setCursor(12, 0);
      lcd.print(solderTCouple);
      lcd.print("\1");
    }
    else {
      lcd.print(" ERROR");
    }
  }
  //Температура выключенного паяльника на дисплей до 20 градусов
    else if (solderTCouple > 20 && digitalRead(pinSolderButton) == LOW && solderTCouple < 480) {
    lcd.print(" Off");
    lcd.setCursor(12, 0);
    lcd.print(solderTCouple);
    lcd.print("\1");
    }
    
  else {
    lcd.print(" Off");

  }
  // Данные фена на дисплей
  lcd.setCursor(0, 1);
  lcd.print("Fen:");
  lcd.setCursor(4, 1);
  if (digitalRead(pinHotAirButton) == HIGH) {
    if (hotAirTCouple < 480) {
      lcd.print(setHotAirTemp);
      lcd.print("\1");
      lcd.setCursor(9, 1);
      lcd.print(hotAirTCouple);
      lcd.print("\1");
      
  // Вентилятор фена на дисплей
      lcd.setCursor(14, 1);
      lcd.print(displayHotAirCooler);
    }
  
    else {
      lcd.print(" ERROR");
    }

  }
  //Температура выключенного фена на дисплей до 60 градусов
  else if (hotAirTCouple > 60 && digitalRead(pinHotAirButton) == LOW && hotAirTCouple < 480) {
    lcd.print(" Off");
    lcd.setCursor(9, 1);
    lcd.print(hotAirTCouple);
    lcd.print("\1");
    }
    else
    {
     lcd.print(" Off");
    } 
    
  delay(100);
}

 

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

ufo69 пишет:

поставил 2 реле на разрыв питания фена

схематично можно глянуть?

Miamin
Offline
Зарегистрирован: 29.02.2016
	  if (digitalRead(pinHotAirButton) && digitalRead(pinRele) == HIGH)
	  {
	    if(onProtect)
	    delay(60);
	    onProtect = false;
	  }
	  else
	 {
	    onProtect = true;
	  } 

Для условия  if(onProtect) мне кажется забыли {} , иначи бесмысленно, получается всегда при истине вот тут if (digitalRead(pinHotAirButton) && digitalRead(pinRele) == HIGH) будет выпонятся onProtect = false;

Обьясните смысл этих проверок.

ufo69
Offline
Зарегистрирован: 01.02.2017

Схему не рисовал, кто то уже выкладывал только с одним реле, транзистор база на ардуино через сопротивление1 ком, эммитер на минус, коллектор на реле. Плюс через реле, ну и шунтирующие диоды и конденсаторы параллельно обмоткам реле. Контакты реле разрывают ну или включают и фазу,  и ноль 220в - питание фена (после семистора на разъем). Если не совсем понятно позже могу нарисовать.

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

кто то уже выкладывал только с одним реле - так и собранно у меня. а куда второе реле цеплять не понял.

ufo69
Offline
Зарегистрирован: 01.02.2017

На нагрев  фена  идут 2 провода, там где высокое (220в), я в каждый поставил по реле. Чтобы и ноль и фаза отсекалась от разъема фена. Так для подстраховки. По поводу кода чуть попозже отпишу

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

ufo69 пишет:

я в каждый поставил по реле. Чтобы и ноль и фаза отсекалась от разъема фена.

а смысл? одним реле можно рвать оба провода, да и за чем, если один разорван, то по нему уже ток точно не потечет...

ufo69
Offline
Зарегистрирован: 01.02.2017

По поводу кода, честно не понял что не так, скобки вроде есть. Что  хотел  сделать, чтобы  была задержка включения или выключения нагрузки.
При включении тена всегда первым включается реле, а потом идет нагрев. При выключении сначало закрывался семистор и только потом размыкалось
реле. От подгорания контактов. Делал задержку в 5000мс, чтобы проверить, вроде всё работало в таком алгоритме. Я только с этого начал изучать этот язык, возможно и не правильно все сделал. Кто поопытней подскажите как надо было, опыта 0!

 

ufo69
Offline
Зарегистрирован: 01.02.2017

а смысл? одним реле можно рвать оба провода, да и за чем, если один разорван, то по нему уже ток точно не потечет...

[/quote]
Реле у меня такие просто были в наличии, только на один контакт. Просто для подстраховки сделал на 2 провода

Во первых, вдруг в случае с одним реле контакты залипнут, так сказать приварятся
Во вторых, фен у меня на разъеме, подключаю только когда нужен. В основном паяльником чаще работаю. И кто его знает
как вилку в розетку воткнул и в каком проводе реле стоит. Разъём на корпусе нехороший, мама, штырьки торчат. Короче тройная перестраховка.

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

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

ufo69
Offline
Зарегистрирован: 01.02.2017

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

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

ufo69 пишет:

чем сгоревший дом

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

ufo69
Offline
Зарегистрирован: 01.02.2017

Согласен, но это уже схему переделывать надо. Да и так вроде всё должно работать, от обрыва термопары у автора защита,
от остального реле отработать должно. Нужно ещё программу поизучать, литературу почитать, только изучать начал.
Если чего существенного обнаружу, код выложу на "растерзание", тут народу с опытом много.

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

Здравствуйте, учитывая коментарии от SuperXL , разобрался таки с защитой при  пробое симистора/замыкания термопары. Действительно там есть ошибки, из за которых она работать не будет. В первую очередь это касается pinHotAirTCouple , вместо него нужно HotAirTCouple. Во вторых условие setHotAirTemp+100> pinHotAirTCouple изменил на setHotAirTemp+100 <= HotAirTCouple, а то при включении холодного фена , реле срабатывало сразу. В третьих действительно при резкой смене заданной температуры (потенциометром это очень даже просто), также срабатывала защита, пришлось использовать таймер от этих "случайных" срабатываний. В отключенном состоянии кнопка рвёт силовую цепь, так что тут переживать не о чём. P.S. в реле использовал NC контакты.

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

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

Красиво получилось! Я вот ни как с корпусом для себя не разберусь. Даже в али подыскиваю, но корпусы имменно для паялки так и не нашел!

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

Вот меня мучает такой вопрос, как влияет мощность фена на пайку. Ну если подумать, хоть 400ват, хоть 700ват, воть 1000ват. Все стабилизируются температурой.  Для примера если ставить 300 градусов то на что мощность будет влиять, ведь температрута у всех фенов одна же будет. Я так понимаю от мощности влияет  на  скорость нагрева и все.

Чем вот эта поялка будет отличаться от КВИКА или ЛУКЕЙ.

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

Корпус взял от компьютерного БП, но как по мне то маловат, внутри не очень удобно производить какие либо действия и доработки). Но другого под руками не было.

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

Miles_1985 пишет:

Здравствуйте, учитывая коментарии от SuperXL , разобрался таки с защитой при  пробое симистора/замыкания термопары. Действительно там есть ошибки, из за которых она работать не будет. В первую очередь это касается pinHotAirTCouple , вместо него нужно HotAirTCouple. Во вторых условие setHotAirTemp+100> pinHotAirTCouple изменил на setHotAirTemp+100 <= HotAirTCouple, а то при включении холодного фена , реле срабатывало сразу. В третьих действительно при резкой смене заданной температуры (потенциометром это очень даже просто), также срабатывала защита, пришлось использовать таймер от этих "случайных" срабатываний. В отключенном состоянии кнопка рвёт силовую цепь, так что тут переживать не о чём. P.S. в реле использовал NC контакты.

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

Хотелось бы глянуть на пропорциональную регулировку в паяльнике и какой delay поставил в фене, а то что то никак не найду прошивку от Miamin

Miles_1985
Offline
Зарегистрирован: 23.10.2016
if (setSolderTemp >= solderTCouple && digitalRead(pinSolderButton) == HIGH){
        int err = setSolderTemp - solderTCouple; // err - ошибка рассогласования
        int TempPower = sKp * err; // Формула пропорциональной компоненты
        uint16_t SPower = constrain(TempPower, 0, 255);
        analogWrite(pinSolderOut, SPower);
    }
    else{
      analogWrite(pinSolderOut, 0);
    }


Величину коефициента  sKp оставил 70, хотя и пробовал разные значения. Также вне функций setup() и loop() обьявить #define sKp 70

По поводу фена сделал так:
 

// Поддержка установленной температуры фена
  if (setHotAirTemp >= hotAirTCouple && digitalRead(pinHotAirButton) == HIGH)
  {
    digitalWrite(pinHotAirOut, HIGH);
    delay(70);
    digitalWrite(pinHotAirOut, LOW);
    delay(40);
  }
  else {
    digitalWrite(pinHotAirOut, LOW);
  }

Может не самый лучший вариант, но  меня устроил.

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

Спасибо, попробую себе так сделать, класс!

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

Ув. saloed111 ,выложите готовый скетч и прошивку уже доработанной версии 0.7 .И схему подключения реле защиты. Спасибо!

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

я еще не дорабатывал времени нет, вот Miles_1985 доработал, может он выложит, я позже хочу попробовать доделать так, как он сделалспасибо ему! У меня все по старинке пока работает, на работе дел много, не до станции пока(((

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

Ув. Miles_1985 выложите свой скетч пожалуйста!

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

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

 

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

контрастность пробовал крутить?

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

pendulum пишет:
Ув. Miles_1985 выложите свой скетч пожалуйста!

Присоединяюсь, хотелось бы полностью глянуть с начала, заранее спасибо.

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

pendulum пишет:
Ув. Miles_1985 выложите свой скетч пожалуйста!

Присоединяюсь, хотелось бы полностью глянуть с начала, заранее спасибо.

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

Да пробовал , а может это быть из-за того что я неправильно первый раз постамил микроконтроллер ?

 

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

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

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

boba.s пишет:

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

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

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

Нет, не может 100% я уже раз 5 не правильно ставил, ничего страшного, либо дисплей не исправен, но скорее всего ошибка монтажа