Месяц эксплуатации не выявил проблем. Единственная проблема - паяльник Т12 - легкий и выключатель в подставке не всегда срабатывает. Но это не важно - все равно буду ставить датчик вибрации.
Пришла недорогая пластиковая ручка-держатель жал Т12 (300 руб). Буду её собирать. С ней пришли датчики вибрации (шариковый и ртутный) - проверю какой удобнее или оба поставлю.
Код сырой, выкладываю часть измерения и включения нагрева. Посмотрите если интересно.
Если кратко: каждые 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;
Проект получил интересное дальнейшее развитие.Буквально недавно автор опубликовал новую статью с более совершенным устройством.
Станция стала профессиональной. Добавился графический дисплей. Предусмотрены различные настройки в многоуровневом меню. Помимо паяльника на жалах Т-12, в контроллере теперь предусмотрено управление паяльным феном. К сожалению мощностей Ардуино под такие задачи не достаточно, поэтому автор воспользовался МК серии STM32.
Надеюсь русскоязычная версия появится и на страницах этого форума.
Месяц эксплуатации не выявил проблем. Единственная проблема - паяльник Т12 - легкий и выключатель в подставке не всегда срабатывает. Но это не важно - все равно буду ставить датчик вибрации.
Пришла недорогая пластиковая ручка-держатель жал Т12 (300 руб). Буду её собирать. С ней пришли датчики вибрации (шариковый и ртутный) - проверю какой удобнее или оба поставлю.
KSGER шарик ставит - слышно, что в ручке что-то трясется.
день добрый, а как вы реализовали измерение температуры в паузы между нагревами? можно где на вашу прошивочку глянуть?
Код сырой, выкладываю часть измерения и включения нагрева. Посмотрите если интересно.
Если кратко: каждые 100мСек выключаю нагрев, жду 10 мСек (не менее 5 мСек переходные процессы) считываю значение АЦП с операционника с термопарой. Сравниваю с заданой температурой (счтываю АЦП с переменного резистора которым задаю температуру -> перевожу в градусы -> пересчитываю в АЦП для термопары) По результатам сравнения принимаю решение включать ли нагрев на следующие 100 мСек.
Ни схемы, ни прошивки, ни исходников - это как понимать?
В первом сообщении ссылка Оригинальная версия опубликована тут - https://www.instructables.com/id/The-Hakko-T12/ - битая.
ТС умер?
https://drive.google.com/file/d/1qfwJWDeVZYq_2_95aE6dTEDWamlLVUMu/view?u...
Живой. Код на https://github.com/sfrwmaker/hakko_t12
Друзья!
Проект получил интересное дальнейшее развитие.Буквально недавно автор опубликовал новую статью с более совершенным устройством.
Станция стала профессиональной. Добавился графический дисплей. Предусмотрены различные настройки в многоуровневом меню. Помимо паяльника на жалах Т-12, в контроллере теперь предусмотрено управление паяльным феном. К сожалению мощностей Ардуино под такие задачи не достаточно, поэтому автор воспользовался МК серии STM32.
Надеюсь русскоязычная версия появится и на страницах этого форума.
А пока можно воспользоваться автопереводчиком.