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

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

проверь почту

aLEKSUS
Offline
Зарегистрирован: 13.11.2015

ОК огромное спосибо начинаю изготавливать ,будут вопросы напишу!

smesharik
Offline
Зарегистрирован: 31.01.2016

Вопрос к a5021

Не как не могу откаллибровать

при 21гр - 618

при 77гр - 877

а доложно быть наоборот низкое второе значение

т.е. при повышении температуры значение повышаются, при включении паяльника температура показывает 100гр, на жале 450+++

что делаю не так?! С вашими значениями погрешность в 50гр, но работает

yucan
Offline
Зарегистрирован: 20.04.2015

Тоже лежат без дела пару дисплеев от нокиа 3310...

Тима, если не жалко, скиньте и мне печатку  из поста 864 в лайоуте пожалуйста!

yucan@yandex.ru

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

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

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

smesharik пишет:
а доложно быть наоборот низкое второе значение

Ничего не понял из этого объяснения. Давайте как-то подробнее, по схеме "делаю то-то -- вижу то-то".

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

Зарегистрировался на яндекс-диск

Вот сцыль на печатку: https://yadi.sk/d/aRLCBywO3AWmbq

smesharik
Offline
Зарегистрирован: 31.01.2016

a5021 пишет:

smesharik пишет:
а доложно быть наоборот низкое второе значение

Ничего не понял из этого объяснения. Давайте как-то подробнее, по схеме "делаю то-то -- вижу то-то".

вы описывали процесс калибровки, путем раскомментирования #define CALIBRATION_BUILD 1

так вот, при комнатной температуре 21гр - 618(на индикаторе), при 77гр(горячая вода) - 877 прошивка TH v1.21 

#define CALIBRATION_TEMP_LOW         ((unsigned int) 2100)
#define CALIBRATION_TEMP_HIGH        ((unsigned int) 7700)
#define ADC_CALIBRATION_DATA_LOW     ((unsigned int) 1618)
#define ADC_CALIBRATION_DATA_HIGH    ((unsigned int) 2877)

записываю, и получаю что на индикаторе температура доползает до 100градусов, а на жале паяльника 450+++

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

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

п.с. где уменьшать верхний предел температуры если #define HIGH_TEMP_DEGREE             ((unsigned int)45800) то у меня 440 и не гугу

#define V_REF  2.479
#define REFERENCE_1V1    0.988

 

yucan
Offline
Зарегистрирован: 20.04.2015

Тима пишет:

Зарегистрировался на яндекс-диск

Вот сцыль на печатку: https://yadi.sk/d/aRLCBywO3AWmbq

Спасибо, Тима. Получил. Ещё вопрос. Этот проект на нокиевском дисплее для паяльника с термопарой или терморезистором? У моего паяльника сопротивление датчика близко к нулю, а нагревателя - 16 Ом. Выходит он с термрпарой...

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

smesharik пишет:

так вот, при комнатной температуре 21гр - 618(на индикаторе), при 77гр(горячая вода) - 877 прошивка TH v1.21 

#define CALIBRATION_TEMP_LOW         ((unsigned int) 2100)
#define CALIBRATION_TEMP_HIGH        ((unsigned int) 7700)
#define ADC_CALIBRATION_DATA_LOW     ((unsigned int) 1618)
#define ADC_CALIBRATION_DATA_HIGH    ((unsigned int) 2877)

записываю, и получаю что на индикаторе температура доползает до 100градусов, а на жале паяльника 450+++

Похоже, вы перестарались с ADC_CALIBRATION_DATA_HIGH. Оно для температуры 183 градуса равно в моем случае 2373, а вы для 77 градусов задаете 2877. Скорее всего в вашем случае надо задавать значение 1877.

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

yucan пишет:

для паяльника с термопарой или терморезистором? 

для термопары.

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

yucan
Offline
Зарегистрирован: 20.04.2015

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

aLEKSUS
Offline
Зарегистрирован: 13.11.2015

Вопрос какое реле в вашем исполнении станции используется, его марка!?

Тима
Тима аватар
Offline
Зарегистрирован: 11.04.2013

src-05vdc-sh

aLEKSUS
Offline
Зарегистрирован: 13.11.2015

СПАСИБО

Halvalife
Offline
Зарегистрирован: 20.04.2015

Прошивка на ардуину может криво упасть (типа как криво установленная винда) или такого не может быть? Экран показывает надписи, но станция не работает по факту.

motor4
Offline
Зарегистрирован: 22.01.2014

DimaD пишет:

С подстроечными резисторами 47к

Можно вместо 47кОм подстроечного резистора поставить на 10кОм? На 47кОм не нашел в продаже.

Halvalife
Offline
Зарегистрирован: 20.04.2015

Заметил в скетче http://arduino.ru/forum/proekty/payalnaya-stantsiya-iz-arduino?page=1#comment-85948 пост 68 Ильи73 две ошибки:

Строка 030  pinMode(16, 1);      //светодиод включения фена – на печатке светодиод фена соответствует пину 4
Строка 032  pinMode(4, 0);       // кнопка включения фена – кнопка фена соответствует пину 15

Для исправления кода меняем:

Строка 056	if(digitalRead(4)==HIGH&&ai==0)   //кнопка фена   - 4 меняем на 15
Строка 058	digitalWrite(16,!digitalRead(16));                - 16 меняем на 4
Строка 061	if(digitalRead(4)==LOW&&ai==1)                    - 4 меняем на 15
Строка 114	if(digitalRead(16) ==1)        //регулировка фена - 16 меняем на 4
Строка 121	if(digitalRead(16)==0 && hott >100)               - 16 меняем на 4
Строка 127	if(hott<100 && digitalRead(16)==0)                - 16 меняем на 4
Строка 131	if(digitalRead(16)==1 && hott >480)               - 16 меняем на 4
Строка 134 	digitalWrite(16,0);                               - 16 меняем на 4

Правильно или я чего то упустил?

У КОГО ЕСТЬ РАБОЧИЙ, ПРОВЕРЕННЫЙ СКЕТЧ ДЛЯ ПРОЭКТА ИЛЬИ73? 

Halvalife
Offline
Зарегистрирован: 20.04.2015

Ау, ребята, ветка умерла? 

На этом форуме в личку нельзя написать?

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

Halvalife пишет:

У КОГО ЕСТЬ РАБОЧИЙ, ПРОВЕРЕННЫЙ СКЕТЧ ДЛЯ ПРОЭКТА ИЛЬИ73? 

А с чего ошибка?

Все так и есть, паяльная станция до сих пор работает, код не менял, все устраивает.

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

А, все понял!

Желательно смотреть схему и сверять с кодом. К сожалению схему рисовал потом для форума специально, видимо и ошибся.

Чтобы код не переделывать, можно на схеме ноги перекинуть на нужные пины.

Halvalife
Offline
Зарегистрирован: 20.04.2015

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

Markys63
Offline
Зарегистрирован: 11.03.2016

a5021 пишет:

 

А можно как то получить схему вашей "паяльной станции" и скетч?

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

Halvalife пишет:

 Не могли бы вы просмотреть код и поправить его, все же ваш скетч, вам реально проще это сделать?

Давайте будем разбираться.

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

Вы по схеме делали вот этой? ни чего в ней не меняя?

https://yadi.sk/i/YpDHPzXu3G8SXt

 

Halvalife
Offline
Зарегистрирован: 20.04.2015

Да, схема эта, печатки две ваши, одна (третья часть) не ваша, но печатки соответствуют схеме (сверял). 

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

замена фена за 100 р :))) 

попалось виде, вот поделюсь https://youtu.be/KpkeJOzD2r0

интересно на сколько хватит при редком но длительном использовании

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

Подправил, попробуйте так.

Если не пойдет. будем дальше разбираться что не так.

#include <PID_v1.h>
#include <LCD5110_Graph.h>
LCD5110 myGLCD(8,9,10,12,11);
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
long previousMillis = 0;
long soldt = 0;  // чтение термпары паяльника
int sold = 0;  //чтение резистора паяльника (установка температуры)
int hot = 0;   // чтение резистора фена нагревателя (установка температуры)
long hott = 0;   // чтение термопары фена нагревателя
int sol = 0;   //Кнопка включения паяльника
int ai = 0;  // Кнопка включения фена
int val = 0;
int air = 0;
double Setpointf, Inputf, Outputf;
PID myPIDF(&Inputf, &Outputf, &Setpointf,2,5,1, DIRECT);
double Setpoint, Input, Output;
PID myPID(&Input, &Output, &Setpoint,15,4,1, DIRECT);

void setup()
{
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myGLCD.setFont(SmallFont);
  TCCR2B = TCCR2B & 0b11111000 | 1;
  pinMode(7, 1);       //светодиод паяльника
  pinMode(5, OUTPUT);  // ШИМ нагрев паяльника
  pinMode(6, OUTPUT);  // ШИМ нагрев фена
  pinMode(2, 1);       // реле паяльника
  pinMode(15, 1);      //светодиод включения фена
  pinMode(18, 1);      // реле фена
  pinMode(4, 0);       // кнопка включения фена
  pinMode(13, 0);      // кнопка включения паяльника
  Setpoint = 0;        //
  Setpointf = 0;           //
  Input = analogRead(3);   //
  Inputf = analogRead(5);   //
  myPIDF.SetMode(AUTOMATIC);  
  myPID.SetMode(AUTOMATIC);
  myPIDF. SetOutputLimits(0, 80);  // Если фен медленно выходит на заданную температуру то значение 80 можно увеличить к примеру 120
}

void loop()
{ 
     if(digitalRead(13)==HIGH&&sol==0) //кнопка паяльника
     {
       digitalWrite(7,!digitalRead(7));  
       sol = 1;
       }
       if(digitalRead(13)==LOW&&sol==1)
       {
       sol = 0;
       }
        
   
       if(digitalRead(4)==HIGH&&ai==0)   //кнопка фена
       {
       digitalWrite(15,!digitalRead(15));
       ai = 1;
       }
       if(digitalRead(4)==LOW&&ai==1)
       {
       ai = 0;
       }    
 
  if (millis() - previousMillis >200)
  {
    previousMillis = millis();
    myGLCD.update();
    myGLCD.clrScr();
    myGLCD.setFont(SmallFont);
    myGLCD.print("solder",CENTER,0);
    myGLCD.print("hot air",CENTER,24);
  }
    sold = analogRead(A0);
    sold = map(sold,0,1023,50,400);
    Setpoint = sold;
    hot = analogRead(A7);
    hot = map(hot,0,1023,50,450);
    Setpointf = hot;
    for(val=0;val<=99;val++)
    {
    soldt = soldt + analogRead(A3);
    hott = hott + analogRead(A5);
    }
     hott = hott/99;
     soldt = soldt/99;
     
     soldt = soldt*2;
    { 
    myGLCD.setFont(MediumNumbers);
    myGLCD.printNumI(sold,LEFT,7);
    myGLCD.printNumI(soldt,RIGHT,7);
    myGLCD.printNumI(hot,LEFT,32);
    myGLCD.printNumI(hott,RIGHT,32);
    air = analogRead(A6);
    air = map(air,0,1023,20,255);
     }       
      if(digitalRead(7)==1)  // регулировка паяльника
        {
         Input = soldt;
         myPID.Compute();
         analogWrite(5,Output);
        }
         if(digitalRead(7)==0)
         {
         analogWrite(5,0);
         }
         if(soldt>420 || soldt<20)
        {
        digitalWrite(2,1);
        digitalWrite(7,0);
        }
    if(digitalRead(15) ==1)        //регулировка фена
      {
       analogWrite(3,air);
       Inputf = hott;
       myPIDF.Compute();
       analogWrite(6,Outputf);
      }
      if(digitalRead(15)==0 && hott >100)
      {  
         analogWrite(6,0);  //ШИМ нагреватель
         digitalWrite(3,1);  //ШИМ фена
        
      }
         if(hott<100 && digitalRead(15)==0)
          {
         digitalWrite(3,0); // ШИМ ветелятора
          }  
           if(digitalRead(15)==1 && hott >480)
         {  
         digitalWrite(18,1);
         digitalWrite(15,0);
        }
        
 } 

 

Halvalife
Offline
Зарегистрирован: 20.04.2015

Спасибо, большое! Буду пробовать:)

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

Markys63 пишет:

a5021 пишет:

 

А можно как то получить схему вашей "паяльной станции" и скетч?

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

Halvalife
Offline
Зарегистрирован: 20.04.2015

Илья73 пишет:

Подправил, попробуйте так.

Если не пойдет. будем дальше разбираться что не так.

#include <PID_v1.h>
#include <LCD5110_Graph.h>
LCD5110 myGLCD(8,9,10,12,11);
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
long previousMillis = 0;
long soldt = 0;  // чтение термпары паяльника
int sold = 0;  //чтение резистора паяльника (установка температуры)
int hot = 0;   // чтение резистора фена нагревателя (установка температуры)
long hott = 0;   // чтение термопары фена нагревателя
int sol = 0;   //Кнопка включения паяльника
int ai = 0;  // Кнопка включения фена
int val = 0;
int air = 0;
double Setpointf, Inputf, Outputf;
PID myPIDF(&Inputf, &Outputf, &Setpointf,2,5,1, DIRECT);
double Setpoint, Input, Output;
PID myPID(&Input, &Output, &Setpoint,15,4,1, DIRECT);

void setup()
{
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myGLCD.setFont(SmallFont);
  TCCR2B = TCCR2B & 0b11111000 | 1;
  pinMode(7, 1);       //светодиод паяльника
  pinMode(5, OUTPUT);  // ШИМ нагрев паяльника
  pinMode(6, OUTPUT);  // ШИМ нагрев фена
  pinMode(2, 1);       // реле паяльника
  pinMode(15, 1);      //светодиод включения фена
  pinMode(18, 1);      // реле фена
  pinMode(4, 0);       // кнопка включения фена
  pinMode(13, 0);      // кнопка включения паяльника
  Setpoint = 0;        //
  Setpointf = 0;           //
  Input = analogRead(3);   //
  Inputf = analogRead(5);   //
  myPIDF.SetMode(AUTOMATIC);  
  myPID.SetMode(AUTOMATIC);
  myPIDF. SetOutputLimits(0, 80);  // Если фен медленно выходит на заданную температуру то значение 80 можно увеличить к примеру 120
}

void loop()
{ 
     if(digitalRead(13)==HIGH&&sol==0) //кнопка паяльника
     {
       digitalWrite(7,!digitalRead(7));  
       sol = 1;
       }
       if(digitalRead(13)==LOW&&sol==1)
       {
       sol = 0;
       }
        
   
       if(digitalRead(4)==HIGH&&ai==0)   //кнопка фена
       {
       digitalWrite(15,!digitalRead(15));
       ai = 1;
       }
       if(digitalRead(4)==LOW&&ai==1)
       {
       ai = 0;
       }    
 
  if (millis() - previousMillis >200)
  {
    previousMillis = millis();
    myGLCD.update();
    myGLCD.clrScr();
    myGLCD.setFont(SmallFont);
    myGLCD.print("solder",CENTER,0);
    myGLCD.print("hot air",CENTER,24);
  }
    sold = analogRead(A0);
    sold = map(sold,0,1023,50,400);
    Setpoint = sold;
    hot = analogRead(A7);
    hot = map(hot,0,1023,50,450);
    Setpointf = hot;
    for(val=0;val<=99;val++)
    {
    soldt = soldt + analogRead(A3);
    hott = hott + analogRead(A5);
    }
     hott = hott/99;
     soldt = soldt/99;
     
     soldt = soldt*2;
    { 
    myGLCD.setFont(MediumNumbers);
    myGLCD.printNumI(sold,LEFT,7);
    myGLCD.printNumI(soldt,RIGHT,7);
    myGLCD.printNumI(hot,LEFT,32);
    myGLCD.printNumI(hott,RIGHT,32);
    air = analogRead(A6);
    air = map(air,0,1023,20,255);
     }       
      if(digitalRead(7)==1)  // регулировка паяльника
        {
         Input = soldt;
         myPID.Compute();
         analogWrite(5,Output);
        }
         if(digitalRead(7)==0)
         {
         analogWrite(5,0);
         }
         if(soldt>420 || soldt<20)
        {
        digitalWrite(2,1);
        digitalWrite(7,0);
        }
    if(digitalRead(15) ==1)        //регулировка фена
      {
       analogWrite(3,air);
       Inputf = hott;
       myPIDF.Compute();
       analogWrite(6,Outputf);
      }
      if(digitalRead(15)==0 && hott >100)
      {  
         analogWrite(6,0);  //ШИМ нагреватель
         digitalWrite(3,1);  //ШИМ фена
        
      }
         if(hott<100 && digitalRead(15)==0)
          {
         digitalWrite(3,0); // ШИМ ветелятора
          }  
           if(digitalRead(15)==1 && hott >480)
         {  
         digitalWrite(18,1);
         digitalWrite(15,0);
        }
        
 } 

 

 

Прочтите, пожалуйста, мой пост #918

В вашем новом скетче вы заменили светодиод фена с 16 пина (на схеме/печатке это А2, он не на что не запаян) на 15 пин (это А1, т.е. кнопка включения фена, он у меня так и запаян).

С моими исправлениями в коде у меня (пост #918): фен включается (активируется светодиод), вентилятор работает, не включается нагреватель, потому что включено защитное реле (т.е. на реле с ардуины низкий логический уровень, реле не отключается). Паяльник не включается (как то странно, с первоначальный кодом он влючался раньше, светодиод светился, сначала я думал, что реле в рабочем режиме должно замыкаться и светодиод на реле гореть (оказывается наоборот, реле замыкается в случае защиты), соответсвенно 24в я кидал на другую контактную группу реле, неправильно вобщем делал, возможно тогда паяльник нормально бы и работал), сейчас почему то светодиод моргает и тухнет, а реле остается включеным (т.е. срабатывает защита).

Мой код (изменения с поста #918):

#include <PID_v1.h>
#include <LCD5110_Graph.h>
LCD5110 myGLCD(8,9,10,12,11);
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
long previousMillis = 0;
long soldt = 0;  // чтение термпары паяльника
int sold = 0;  //чтение резистора паяльника (установка температуры)
int hot = 0;   // чтение резистора фена нагревателя (установка температуры)
long hott = 0;   // чтение термопары фена нагревателя
int sol = 0;   //Кнопка включения паяльника
int ai = 0;  // Кнопка включения фена
int val = 0;
int air = 0;
double Setpointf, Inputf, Outputf;
PID myPIDF(&Inputf, &Outputf, &Setpointf,2,5,1, DIRECT);
double Setpoint, Input, Output;
PID myPID(&Input, &Output, &Setpoint,15,4,1, DIRECT);

void setup()
{
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myGLCD.setFont(SmallFont);
  TCCR2B = TCCR2B & 0b11111000 | 1;
  pinMode(7, 1);       //светодиод паяльника
  pinMode(5, OUTPUT);  // ШИМ нагрев паяльника
  pinMode(6, OUTPUT);  // ШИМ нагрев фена
  pinMode(2, 1);       // реле паяльника
  pinMode(4, 1);      //светодиод включения фена
  pinMode(18, 1);      // реле фена
  pinMode(15, 0);       // кнопка включения фена
  pinMode(13, 0);      // кнопка включения паяльника
  Setpoint = 0;        //
  Setpointf = 0;           //
  Input = analogRead(3);   //
  Inputf = analogRead(5);   //
  myPIDF.SetMode(AUTOMATIC);  
  myPID.SetMode(AUTOMATIC);
  myPIDF. SetOutputLimits(0, 80); 
}

void loop()
{ 
     if(digitalRead(13)==HIGH&&sol==0) //кнопка паяльника
     {
       digitalWrite(7,!digitalRead(7));  
       sol = 1;
       }
       if(digitalRead(13)==LOW&&sol==1)
       {
       sol = 0;
       }
        
   
       if(digitalRead(15)==HIGH&&ai==0)   //кнопка фена
       {
       digitalWrite(4,!digitalRead(4));
       ai = 1;
       }
       if(digitalRead(15)==LOW&&ai==1)
       {
       ai = 0;
       }    
 
  if (millis() - previousMillis >200)
  {
    previousMillis = millis();
    myGLCD.update();
    myGLCD.clrScr();
    myGLCD.setFont(SmallFont);
    myGLCD.print("solder",CENTER,0);
    myGLCD.print("hot air",CENTER,24);
  }
    sold = analogRead(A0);
    sold = map(sold,0,1023,50,400);
    Setpoint = sold;
    hot = analogRead(A7);
    hot = map(hot,0,1023,50,450);
    Setpointf = hot;
    for(val=0;val<=99;val++)
    {
    soldt = soldt + analogRead(A3);
    hott = hott + analogRead(A5);
    }
     hott = hott/99;
     soldt = soldt/99;
     
     soldt = soldt*2;
    { 
    myGLCD.setFont(MediumNumbers);
    myGLCD.printNumI(sold,LEFT,7);
    myGLCD.printNumI(soldt,RIGHT,7);
    myGLCD.printNumI(hot,LEFT,32);
    myGLCD.printNumI(hott,RIGHT,32);
    air = analogRead(A6);
    air = map(air,0,1023,20,255);
     }       
      if(digitalRead(7)==1)  // регулировка паяльника
        {
         Input = soldt;
         myPID.Compute();
         analogWrite(5,Output);
        }
         if(digitalRead(7)==0)
         {
         analogWrite(5,0);
         }
         if(soldt>420 || soldt<20)
        {
        digitalWrite(2,1);
        digitalWrite(7,0);
        }
    if(digitalRead(4) ==1)        //регулировка фена
      {
       analogWrite(3,air);
       Inputf = hott;
       myPIDF.Compute();
       analogWrite(6,Outputf);
      }
      if(digitalRead(4)==0 && hott >100)
      {  
         analogWrite(6,0);  //ШИМ нагреватель
         digitalWrite(3,1);  //ШИМ фена
        
      }
         if(hott<100 && digitalRead(4)==0)
          {
         digitalWrite(3,0); // ШИМ ветелятора
          }  
           if(digitalRead(4)==1 && hott >480)
         {  
         digitalWrite(18,1);
         digitalWrite(4,0);
        }
        
 } 

На экране такое изображение 

 

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

Halvalife пишет:

Да, схема эта, печатки две ваши, одна (третья часть) не ваша, но печатки соответствуют схеме (сверял). 

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

Но похоже не соответствуют (

Тогда нужно знать точно какие выходы ардуины идут на светодиод и  на кнопку.

Реле прям на выход ардуины ставили, или через транзистор?

109
	         if(soldt>420 || soldt<20)
110
	        {
111
	        digitalWrite(2,1);
112
	        digitalWrite(7,0);

Подозреваю что значения паяльника  <20 и поэтому он уходит в защиту. Нужно отрегулировать резистором  коэффициент усиления термопары паяльника :) или временно значение 20 уменьшить до 0.

При защите реле включается и размыкает цепь паяльника.

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

 

Halvalife
Offline
Зарегистрирован: 20.04.2015

Релейный модуль вот такой (с полной оптической изоляцией) http://odp-ukraina.com/p43986466-modul-rele-kanalnoe.html

"Тогда нужно знать точно какие выходы ардуины идут на светодиод и  на кнопку." - у меня в скетче так и прописано (так же как и на схем/плате).

Исходя из строк кода 109-112, если значение показаний паяльника выше 420 или ниже 20, то на пине 2 (реле паяльника) логическая единица (высокий логичекий уровень, (HIGH)), на пине 7 (светодиод пальника), низкий уровень и он тухнет. В мануале на реле "Важно: для замыкания реле нужно подать на управляющий вход низкий логический уровень (LOW), тогда реле замыкается и светодиод загорается, для размыкания реле нужно подать уровень логической единицы (HIGH)", т.е. светодиод реле горит в рабочем режиме паяльника и тухнет при защите, соответственно задействовать нужно контакты нормально разомкнутые.

"Подозреваю что значения паяльника  <20 и поэтому он уходит в защиту. Нужно отрегулировать резистором  коэффициент усиления термопары паяльника :) или временно значение 20 уменьшить до 0." - ели крутить подстроечник в режиме защиты и вывести на нужный уровень, то релюшка должна сработать (т.е. я визуально увижу рабочий режим по светодиоду реле)? Р.S. Подстроечники у меня в среднем положении стоят сейчас.

К слову о защите на реле - достаточно ли безопасно подключать к выходу ардуины реле через транзистор? Или есть смысл усложнять оптической развязкой (планируется сбор паялки на Atmega328)?

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

По реле. У меня получается наооборот, если есть ток на реле оно размыкает контакты.

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

Лучше значение уменьшить (так проще) визуально будет видно на экране значения, потом вернете на место. А вообще цифру 20 можно и уменьшить ( она как бы защищает от кз термопары)

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

Halvalife
Offline
Зарегистрирован: 20.04.2015

"Вам подключать через транзистор не нужно, у вас готовый блок реле (правда и инвертирован)" это я другую станцию буду делать, когда с этой разберусь. У меня есть релюшка 5в и bc560

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

Соберите эту сначала :)

Halvalife
Offline
Зарегистрирован: 20.04.2015

Фен работает, паяльник работает (оказалась лм-ка паленая на один канал, заменил на другую и все заработало). Осталось настроить подстроечниками. Подскажите, как организована защита фена (кулер должен ганять воздух пока температура не упадет ниже определенного порога или нет)?

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

Рад что получилось запустить)

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

Halvalife
Offline
Зарегистрирован: 20.04.2015

Кто подскажет, какой КПД у этого #62 модуля?

Halvalife
Offline
Зарегистрирован: 20.04.2015

Убрал "soldt = soldt*2", при установленной температуре в 200 градусов, реальные 85. Что делать?

"Паяльник победил... поигрался с переменным резистором + программная калибровка" - о какой программной калибровке говорит DimaD (то, что "soldt = soldt*2" убрал или еще чего то?)?

Halvalife
Offline
Зарегистрирован: 20.04.2015

Не могу понять, что за хрень. Фен функционирует нормально. А вот паяльник... Прошиваю без строки "soldt = soldt*2", в итоге даже с отключенным паяльником показывает считываемую температуру в 770 градусов (соответсвтенно с "soldt = soldt*2" в два раза больше - 1400).

Halvalife
Offline
Зарегистрирован: 20.04.2015

Изменил А3 (чтение с термопары паяльника) на А2, на плате и в коде. Прошился. Один фиг такой же косяк - 770 градусов. Где порыться?

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

Проверяйте термопару паяльника, смотрите как усиливает операционник,подбирайте резисторы на обвязке операционника. Может операционник самовозбуждается.

Halvalife
Offline
Зарегистрирован: 20.04.2015

Оказался плохой контакт на плате паяльника, термопара отходила, отсюда и брехня, подпаял - начала работать адекватно. В общем какая проблема, поигрался с soldt = soldt*Х, если ставить soldt = soldt/3 выключает реле, поставил soldt = soldt/2.2 - очень близко, при этом подозраеваю подстроечник выкручен практически в ноль и если задрать температуру выше 300 градусов, то она вали под 400, хотя на экране показывает градусов 330, т.е. нелинейное отображение и регулировка, это можно как то подлечить?

5554555
Offline
Зарегистрирован: 30.04.2017

-----------

5554555
Offline
Зарегистрирован: 30.04.2017

a5021 пишет:

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

Как можно видеть, PNP транзисторы заменены на NPN и их эмиттеры посажены на землю, вместо плюса.

 

a5021 пишет:

Vadim4eG пишет:
Да, безусловно, как посадить катоды на землю прекрасно понимаю, а будет ли так работать, имею ввиду без програмной смены полярности на выходах мк (порты 0-7) ?

Скетч править -- это само собой. Сейчас глянул, всего придется вносить изменения в три строки. Одна строка (номер 207) в обработчике прерывания COMPA, и две (261-262) в COMPB. Смысл простой -- там, где для общего анода бит выставляется, для общего катода он должен сбрасываться и наоборот.

Сейчас индикатор показывает в инверсии:

 

А можете указать какие конкретно строки менять и на что?

заранее спасибо

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

Попробуйте строки 207 и 262 поменять местами, а строку 261 записать в виде

PORTD = ~displayBuffer[currentDigit];

 

5554555
Offline
Зарегистрирован: 30.04.2017

a5021 пишет:

Попробуйте строки 207 и 262 поменять местами, а строку 261 записать в виде

PORTD = ~displayBuffer[currentDigit];

Большое спасибо! помогло.

Подскжите чем можно заменить TL431 (SMD аналог) и как при этом нужно изменить схему?

5554555
Offline
Зарегистрирован: 30.04.2017

a5021 пишет:

Подскажите пожалуйста, где в Вашей программе указаны пины ардуины A0-A2 для 7и сегментного дисплейчика?

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

TL431 довольно распространена и в smd-корпусе. На али можно купить за копейки.

Распиновка у про-мини такая:

 

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

a5021 пишет:

TL431 довольно распространена и в smd-корпусе. На али можно купить за копейки.

Я однажды купил )))) Оказались диоды, а на корпусе написано было 431.

Много подделок.