Просажываются показания с термопары паяльного фена.

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем sibBIA, 14 ноя 2017.

  1. sibBIA

    sibBIA Нерд

    Сделал на ArduinoProMini паяльный фен.
    Усилитель термопары на LM358. Показания с термопары когда фен на подставке скачут примерно в пределах 5-6 градусов. Регулировка оборотов analogWrite, чем больше добавляеш обороты тем больше просаживаются показания с термопары на 18-20 градусов при 100% шим.
    Питание при этом, на LM358 и на ардуино стабильное.
    Блок питания импульсный от принтера. Напряжение на ардуинку понижаю L7809.
    LM358 запитывается уже от ардуино.
    Скачки в пределах 6 градусов еще можно терпеть, но почему такая просадка когда шим использую?
     
    Последнее редактирование: 14 ноя 2017
  2. MXXX

    MXXX Гик

    Без полной схемы никто подсказать не сможет.
    1. Какой двигатель? На постоянном токе что ли, если analogWrite?
    2. Как выполняется коммутация двигателя и нагревателя?
    3. Термопара с металлическими частями корпуса не контактирует?
    С термопарами всегда много проблем от наводок. У меня есть проект фена, правда не паяльный, а промышленный, высокой мощности. Двигатель применяется коллекторный на переменном токе с коммутацией по длине импульса по детектору пересечения нуля (диммер). Сигнал термопары обрабатывают через MAX6675. Нагреватель на переменном токе, коммутация через твердотельное реле с коммутацией по пересечению нуля. Все это хозяйстве работает стабильно.

    Ваши проблемы могут быть связаны и с электро-магнитными наводками на термопару и со спецификой работы двигателя/нагревателя и с несовершенством алгоритма управления.
     
  3. sibBIA

    sibBIA Нерд

    Фен стандартная китайская ручка с встроенным вентилятором на 24в постоянка (управляю шимом).
    Нагреватель на 220в (управление вкл., выкл,).
    Термопара соеденяется своим минусовым выводом т с одним выводом геркона.
    Все провода идут в одном кабеле, провод термопары тоже и он не экранирован.
    Но работают же заводские и самодельные паяльные станции на таких ручках.
    Алгоритм управления простейший.
    Вот скетч:
    Код (C++):

    #include <Adafruit_GFX.h>
    #include <Adafruit_PCD8544.h>
    // pin 7 - Serial clock out (SCLK)
    // pin 6 - Serial data out (DIN)
    // pin 5 - Data/Command select (D/C)
    // pin 4 - LCD chip select (CS)
    // pin 3 - LCD reset (RST)
    Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

    #define SpirPIN 9 //Pin Нагревателя
    #define CoolPIN 10 //Pin кулера
    int PotFen ;    // потенциометр фена
    int PotCuller; // потенциометр кулера
    boolean Gerkon;         // геркон
    int TempF; // температура фена
    int TpFen; // термопара фена
    int SetTempF;       // установленная температура фена

    //----------------------------------------

    void setup(){
    pinMode(SpirPIN,OUTPUT);
    display.begin();
    display.setContrast(23);//контраст

    pinMode(12,INPUT_PULLUP); //Подтяжка пина геркона к плюсу

    //______________________Установка частоты шим_____________________________________
    //      я выбрал низкую частоту шим чтобы кулер не свистел

    TCCR1B = TCCR1B & 0b11111000 | 0x04; //Частота шим | 0x01;
                                         //Константа   Делитель          Частота(Гц)
                                         //   0x01       1                 31250
                                         //   0x02       8                 3906.25
                                         //   0x03       64                488.28125
                                         //   0x04       256               122.0703125
                                         //   0x05       1024              30.517578125

    }
    //________________________________________________________________________________
    void loop() {
    PotFen = analogRead(0);               // Установка температуры фена
    PotCuller = analogRead(1);            // Установка оборотов куллера
    TpFen = analogRead(2);                // Данные с термопары фена
    TempF=map(TpFen,2,560,0,500);         //преобразование температуры  map(TpFen,2,576,0,500);
    SetTempF=(map(PotFen,0,1023,50,480)); //установка температуры
    Gerkon= digitalRead(12);               //состояние геркона
    //delay(50);
    //____________________________________________________________________________________________________

    ///.......Вывод на дисплей.........
    display.clearDisplay();

      //display.setTextColor(BLACK);
      display.setCursor(4,0);
      display.setTextSize(2);
      display.print("T=");
      display.print(TempF);                                  // Вывод на экран текущей температуры фена
      display.setTextSize(1);
      display.setCursor(66,0);
      display.print("o");
      display.setCursor(71,7);
      display.setTextSize(1);
      display.print("C  ");
    display.setTextSize(2);
    display.setCursor(0,16);
    display.print("Set=");
    display.print(SetTempF);            // Вывод на экран заданной температуры фена
    display.setTextSize(2);
    display.setCursor(0,32);
    display.print("Cul=");display.print(map(PotCuller,0,1023,1,99));display.print("%"); // Вывод на экран оборотов куллера
                                            // установка оборотов куллера
    display.display();
    //*/------отключение на подставке--------------------
    if ((Gerkon == false)&& TempF > 45)        // если фен на подставке и температура > 35с то включаем кулер на полную
    {
      analogWrite(CoolPIN,255);       //то включаем кулер на полную
      digitalWrite(SpirPIN, 0);        // и выключаем нагреватель
      display.setCursor(0,32);
      delay(3000);
    }
      if ((Gerkon == false)&& TempF < 35)        // если фен на подставке и температура < 35с то выключаем кулер
    {
      analogWrite(CoolPIN,0);       //то выключаем кулер
      digitalWrite(SpirPIN, 0);        // и выключаем нагреватель

    }
      if (Gerkon == true)
    {
      analogWrite(CoolPIN,map(PotCuller,0,1023,90,255)); //если фен поднят запускаем кулер на установленные обороты
    }
    //*/
    //------------------------------Регулирование температуры фена------------------------------------

    if ((SetTempF > TempF) && Gerkon == true)
      {
      digitalWrite(SpirPIN, 1);

      }
      else{
        digitalWrite(SpirPIN, 0);
      }
      //---------регулировка скорости нагрева с помощью задержек----------------------
     
      delay(map(TempF,50,480,10,90));          //время включенного нагрев
           
        digitalWrite(SpirPIN, 0);
       delay(map(SetTempF,50,480,170,80));           //время выключенного нагрева
    }

    //==============================================
     
     
    Последнее редактирование: 15 ноя 2017
  4. MXXX

    MXXX Гик

    Я может вопрос изначально не понял. У вас просто падает температура при добавлении оборотов? Так она и должна падать. Обороты больше, больше поток воздуха, нагреватель остывает. На моих фенах регулировка мощности работает по оптимальной прогнозируемой динамике температуры. Скачки +- 1 градус. При резком увеличении/уменьшении оборотов температура разумеется тоже падает/растет. Требуется несколько секунд чтобы подобрать оптимальную мощность нагревателя под новый напор воздуха.
     
  5. sibBIA

    sibBIA Нерд

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

    akl Гуру

    может напряжение проседает. если подозрение на наводки от шима например, то можно в обратную связь ОУ конденсатор добавить
     
  7. rkit

    rkit Гуру

    Очередные гадания на кофейной гуще без схемы
     
  8. MXXX

    MXXX Гик

    Если наводки от ШИМ, то легко проверить включением на 100% скважность - digitalWrite(CoolPIN, HIGH)
     
  9. akl

    akl Гуру

    кстати, вроде как в ардуино аналогврайт(255) сам превращается в диджиталврайт(1)
     
  10. shpock

    shpock Гик

    Когда то имел такую проблемку, решилось правильной разводкой земли на печатной плате. Тоисть у полевиков своя земля, у ОУ своя. Соединяются при входе питания. Там же на входе добавлял кондеры, методом НТ. )
     
    sibBIA нравится это.
  11. sibBIA

    sibBIA Нерд

    Скорее всего Вы правы.
    Земля на операционный усилитель идет после ардуино и полевика, да и сверху платы куча проводов к экрану и к фену.
    Жду когда пришлют паяльник.
    Буду переразводить плату под фен и паяльник, ну и про землю надо не забыть. ;)
    Всем спасибо за советы.
     
    shpock нравится это.