Контроллер паяльника дл жал hakko t12

sva_khv
Offline
Зарегистрирован: 19.12.2016

Месяц эксплуатации не выявил проблем.  Единственная проблема - паяльник Т12 - легкий и выключатель  в подставке не всегда срабатывает. Но это не важно - все равно буду ставить датчик вибрации.

Пришла недорогая пластиковая ручка-держатель жал Т12 (300 руб).  Буду её собирать. С ней пришли датчики вибрации (шариковый и ртутный) - проверю какой удобнее или оба поставлю.

sadman41
Offline
Зарегистрирован: 19.10.2016

KSGER шарик ставит - слышно, что в ручке что-то трясется.

Zhitnikxxx
Offline
Зарегистрирован: 26.10.2017

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

sva_khv
Offline
Зарегистрирован: 19.12.2016

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

Если кратко: каждые 100мСек выключаю нагрев, жду 10 мСек (не менее 5 мСек переходные процессы) считываю значение АЦП с операционника с термопарой. Сравниваю с заданой температурой (счтываю АЦП с переменного резистора которым задаю температуру -> перевожу в градусы -> пересчитываю в АЦП для термопары)  По результатам сравнения принимаю решение включать ли нагрев на следующие 100 мСек.

    case 2:  // работа 
    case 3:  // сон150
//--- измерение температуры и включение нагрева    интервал 100 мСек
    if(millis()-ulTimeGetTemp>TIME_IZM_TEMP)   // контроль периода 
    {   ulTimeGetTemp=millis();    
//Serial.print(" DAT_POKOIA = ");  Serial.print(digitalRead(PIN_DAT_POKOIA));     
// измеряем ток через шунт         
//i=analogRead(PIN_TOK);     Serial.print("  A4= ");  Serial.print(i);   
// выключаем нагрев и ждем 10 мСек
        digitalWrite(PIN_VKL_T12, LOW);    
        delay(10);    
// измеряем температуру
        iACP_T12=analogRead(PIN_IZM_TEMP);
        ACPSred5(iACP_T12); // наскапливаем среднее        
// проверяем на обрыв термопары и нагревателя
        if(iACP_T12>ACP_PEREGRUZKA) { digitalWrite(PIN_VKL_T12, LOW);iErrorKod=31;RegimSet(9);break;} 
// получаем темапературу из значений АЦП
        iTempTek=TempGradFromAcp(iACP_T12);         
if(iPrintSerial!=0) { Serial.print("   A0= ");  Serial.print(iACP_T12); }//  какая темп задана   
        iTempZadGr=TempZadGrGet(10);  // получаем значение заданой температуры с резистора с округлением до десятков
        if(iTekRegim==2&&iTempZadGr<TEMPER_REG_MIN) {RegimSet(7);   break;}   // 7 сон по резистору установки темп     
// темп паузы (полусна) при разной заданой температуре       
        if(iTekRegim==3) 
        { if(iTempZadGr<300) iTempZadGr=iTempPauzaDo300;
          else iTempZadGr=iTempPauzaBolee300;
        }  
// получаем значение АЦП из заданой темературы
        iACP_Zad=ACPZadFromTemp(iTempZadGr);
if(iPrintSerial!=0) 
{ Serial.print("  A2= ");  Serial.print(iACP_Zad); Serial.print("  RAZ= ");  Serial.print(iACP_T12-iACP_Zad);  
 Serial.print("  tek temp = ");  Serial.print(iTempTek);      
}
// сравнение температур  
        if(iACP_T12<iACP_Zad)  // надо нагревать
        {
          if(iACP_T12<iACP_Zad-15)  
          { if(iPowerPoln==100) iT12_PWM=100;  // если установлена полная мощность
            else iT12_PWM=iPowerPoln;
          }  
          else  
          { if(iACP_T12<iACP_Zad-5) 
            {  if(iPowerPoln>=70) iT12_PWM=70;
               else iT12_PWM=iPowerPoln;
            }   
            else  iT12_PWM=35;
          }  
if(iPrintSerial!=0) { Serial.print("  iT12_PWM = ");  Serial.print(iT12_PWM); }
// включение нагрева в процентах          
          if(iT12_PWM==100) digitalWrite(PIN_VKL_T12, HIGH);
          else 
          {  i=255*iT12_PWM/100;
             analogWrite(PIN_VKL_T12,i);
          }   
        }   

      }
//--- отображение информации
      if(millis()-ulTimePokazInfo>TIME_POKAZ_INFO)
      {   ulTimePokazInfo=millis();
        led8.clearDisplay(0);  // очистить дисплей
// надпись РАБ/СОН  в левой части
        if(iTekRegim==2) PrintText(KOD_TEXT_RAB,1);        
        if(iTekRegim==3) PrintText(KOD_TEXT_SON,1);        
        
        LED8Print4Poz(iTempZadGr,0,0,0);   // заданая темпеература
// текущая темп
//        iTempTek=TempGradFromAcp(iACP_T12);        
//       if(iTekRegim==3) {led8.setRow(0,7,0x01);   led8.setRow(0,6,0x01);    led8.setRow(0,5,0x01);     led8.setRow(0,4,0x01);}
//        if(iTekRegim==2)  LED8Print4Poz(iTempTek,0,4,0);  
// текущая темп выше или ниже установленой  в правом индикаторе
        if(iACP_T12<iACP_Zad-10)  // ниже заданой на 15 гр 
        { led8.setRow(0,3,B00011100);          
        }  
        if(iACP_T12>iACP_Zad+10)  // выше заданой на 15 гр 
        { led8.setRow(0,3,B01100010);          
        }  
//Serial.print("T ZAD= ");  Serial.print(iTempZadGr);  Serial.print("  T TEK= ");  Serial.print(iTempTek);    Serial.println("");           
      }
    break;

 

Old Doctor
Offline
Зарегистрирован: 11.06.2019

Ни схемы, ни прошивки, ни исходников - это как понимать?

В первом сообщении ссылка Оригинальная версия опубликована тут - https://www.instructables.com/id/The-Hakko-T12/ - битая. 

ТС умер?

 

Petro-258
Offline
Зарегистрирован: 27.10.2016