Контроллер паяльного фена

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Пока тишина.

Может всей толпой автора попросим?

deniksem
Offline
Зарегистрирован: 06.10.2020

Привет. ну у меня вообще засада вышла. Я уже все заказал, 99% комплектухи лежит уже в тумбочке но тут выстрелили несколько купонов на НГ на алиэкспресс и я взял паялку JBC 8858 за 12уе и 3Д принтер за 50уе потому мне пока не до сборки паялки так как плотно вошел в 3д печать по выгодной цене)) а для мелочи 8858 за 12уе точно хватает с головой. Для авторской паялки я только платы не успел изготовить, а ща так впадло уже но я до нее точно доберусь!! И согласен, ооочень бы таки хотелось олед дисплей(у меня уже и 0,96 и 1,3 лежат тоже с алиэкспресса по 1уе покупал, точнее 0,96 в подарок прислали, а 1,3 за 1 уе взял)))) и я просто несказанно счастлив бы был если б кто-то рукастый смог переделать на олед(. И я в первых рядах СЛЕЗНО ПРОШУ АВТОРА ПЕРЕДЕЛАТЬ ПРОШУ НА ОЛЕД ибо хотелось бы таки компактней это все получить при сборке.    

Orochimaru
Offline
Зарегистрирован: 02.02.2021

Прошивка под олед дисплей. https://yadi.sk/d/QqOlQK7Fzu_9lA Может кто потестит. у самого нет возможности жду фен с китая.

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Ох жеж елки палки. Завтра затестю... А сложно переделать с библиотеки MyOLED на библиотеку U8GLIB? 

Просто MyOLED работает не со всеми дисплеями. 

 

Orochimaru
Offline
Зарегистрирован: 02.02.2021

Не смог я их подружить.

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Ну ладно, надо просто дисплеи на SH1106 покупать, они с обеими библиотеками работают.

 

Tarasevich721
Offline
Зарегистрирован: 08.09.2019

alex1978 пишет:
https://yadi.sk/d/171pi5j-YEi2nw?w=1 Вот ссыль на мой архив в СМД и под ОЛЕД. Размер экрана не имеет значения 1,3 или 0,96. Плата проверена, с экраном 1602 и прошивкой автора работает.

Сделал платы с вашей печатки. Подскажите по программированию. Заливаю скетч напрямую с среды Arduino IDE через порт ICSP. Загружается загрузчик и сама прошивка. Но плата не стартует. На экране в 1 строке заполнены все знакоместа и на этом все. Уже перелистал кучу сайтов не могу понять, что я делаю не так.

Мои действия: 1. Открываю скетч. 2. Подключаю USBasp к разъему ICSP (разъем проверил, контакты есть). 3. Выставляю настройки как на картинке. 4 Записываю загрузчик. 5. Потом выбираю Загрузить прошивку через программатор. Все, ошибок нет и не ругается.

Где не так делаю? Ошибка наверно на виду у всех, ткните где она :)

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

Вот какие параметры выставлены в Arduino IDE. Прошивка - оригинальная автора, версия 1.3

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

регулятор контрастности на 1602 покрути

Tarasevich721
Offline
Зарегистрирован: 08.09.2019

DetSimen пишет:

регулятор контрастности на 1602 покрути

Крутил, 1-ая строка либо полностью исчезает либо полностью заполнена

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

А ты ее от начала до конца покрути

Tarasevich721
Offline
Зарегистрирован: 08.09.2019

DetSimen пишет:

А ты ее от начала до конца покрути

Крутил от начала до конца, все также

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Добавил в архив папку с загрузчиком. Внутри есть картинка с фьюзами. Проверьте, может контроллер тупо не стартует.

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Дошли руки, наконец-то. В общем, скетч ведёт себя странно. С экраном 0,96-128*64 работает нормально.С экраном 0,91-128*32 даже работает нормально. С экраном 1,3 показывает мусор, и только сверху экрана видно какое-то движение. Хрень какая-то...

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Разобрался. Китайцы зажали пару резисторов подтяжки на экранах 1,3. В общем скетч на ОЛЕД вроде работает.

cyberdemon
Offline
Зарегистрирован: 18.06.2021

alex1978 пишет:
https://yadi.sk/d/171pi5j-YEi2nw?w=1 Вот ссыль на мой архив в СМД и под ОЛЕД. Размер экрана не имеет значения 1,3 или 0,96. Плата проверена, с экраном 1602 и прошивкой автора работает.

обновите пожалуйста архив

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Приехали новые платки, с чуть изменённой схемой. На следующей неделе проверю и выложу.

cyberdemon
Offline
Зарегистрирован: 18.06.2021

alex1978 пишет:
Приехали новые платки, с чуть изменённой схемой. На следующей неделе проверю и выложу.

Как успехи?

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Успехи заебись. Ток ниуя не работает пока. Сам в болничке лежу. Помирать вроде пока не собираюсь...

81Slim
Offline
Зарегистрирован: 31.10.2018

Эт правильно! Думай о хорошем и поправляйся!

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Я манал эту срань. В прошлый раз дисплей работал нормально. Сейчас опять мусор показывает. Да что за нахрен такой.

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Трабла в том, что библа OLED-I2C толи работает, толи не работает с контроллером SH1106. У меня макет с прошлого раза остался на ардуине. Включаю его, работает. Выдираю экран, ставлю на плату, не работает. Пихаю назад в макет, не работает. Да ебать. Беру новый дисплей, пихаю в макет, работает. Выдираю, опять ставлю, хер, не работает. Заливаю другой скетч с библой U8Glib, работает. Толи у меня библиотека какая модифицированная, была, толи хер знает... В общем два варианта. Либо переписывать скетч на библу U8Glib, это опять надо кого-то упрашивать. Либо покупать дисплеи исключительно с SSD1306, которых на Али хрен найдёшь. Нашел на SSD1315, человек в отзывах написал, что совместим с 1306 и работает со всеми библиотеками. Заказал, приедут, посмотрим. Ещё под занавес вычитал, что на сайте Гайвера есть библа OLED-I2C адаптированная под SH1106. В понедельник попробую с ней помечать экранчики. Вот как-то так.

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017
Продолжение эпопеи с китайскими экранами. Пришли мне два штуки, заявлены как 1,3 дюйма с контроллером 1315.
Приехали очень быстро, за неделю.
Контроллер вроде именно 1315, по крайней мере работает со всеми библиотеками.
Но вот размер. Сука, у него диагональ 36мм, хотя у других 1,3 диагональ 39мм
Где, блин правда, я х.з. 
alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Пока выглядит так. Экранчик хоть и меньше размером, но видимая область у него такая же. На китайских поделках просто стекло и плата больше. Энкодеры из новой партии тоже говняные оказались.  Работают в принципе, но нечётко как-то отрабатывают. Завтра соберу до конца. Надеюсь.

 

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Сегодня продолжил сборку. И спалил нахрен мегу, операционник и экранчик. Всему виной левый линейный стаб на 5В. Пробило его нафиг и 24В прогулялось по плате. Не покупайте комплектуху на Али.

 

samosval55
Offline
Зарегистрирован: 30.01.2018

[quote=alex1978]

Сегодня продолжил сборку. И спалил нахрен мегу, операционник и экранчик. Всему виной левый линейный стаб на 5В. Пробило его нафиг и 24В прогулялось по плате. Не покупайте комплектуху на Али.

 

[/quot

Так вся электроника китай снабжает! Если ты спалил то не надо тут всех и вся виновными делать. Я уже как 7 лет покупаю с китая! Покупал и в Москве и в питере , одно и тоже только в разы дороже! Вся эта  некондиция продаётся штучно. Есть брак, и куда тут денешься. В СССР вообще море бракованных продавали запчастей от заводов списанные партии.  Ссылку продавца в студию!

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Ты опять появился. Ухожу в отпуск. Для особо одарённых я написал "на Али"!!! Вообще то если хороший стаб пробивает, то он обычно уходит в обрыв, он так спроектирован. А китайские поделки ведут себя как хотят.

samosval55
Offline
Зарегистрирован: 30.01.2018

alex1978 пишет:

Ты опять появился. Ухожу в отпуск. Для особо одарённых я написал "на Али"!!! Вообще то если хороший стаб пробивает, то он обычно уходит в обрыв, он так спроектирован. А китайские поделки ведут себя как хотят.

Ты читать умеешь? 

Наивность твоя меня поражает! Внимательно читай выше мой коммент! Все электронные компоненты изготовляются в Китае! Что ту не понятно то? Хватит думать жопой! Включай голову!  И продают некондицию также и в других магазинах и зарубежом и в России . Только вот на али дешевле. 

Кстати продавца мне так и не предоставил! Когда предоставишь продавца с али??

alex1978
alex1978 аватар
Offline
Зарегистрирован: 09.09.2017

Никогда, я их не сохраняю. Да и какой смысл. Он завтра по другому переобзовётся. А жопой ты думаешь, я не сказал что всё китайское говно, я сказал не покупайте на Али. И в Российских магазах нехуй выбирать самое дешёвое. 

samosval55
Offline
Зарегистрирован: 30.01.2018

alex1978 пишет:

Никогда, я их не сохраняю. Да и какой смысл. Он завтра по другому переобзовётся. А жопой ты думаешь, я не сказал что всё китайское говно, я сказал не покупайте на Али. И в Российских магазах нехуй выбирать самое дешёвое. 

Ты почему огрызаешься? Тебе указал на твое мнение, что ты не прав! И продают тоже самое из самой али в России дорогие компоненты в разы дороже+пересылка! И тоже брак есть! А матерятся это УО(умственно отсталые)! Аргументов ноль, а вони как в общественном туалете.

samosval55
Offline
Зарегистрирован: 30.01.2018

alex1978 пишет:

Никогда, я их не сохраняю. Да и какой смысл. Он завтра по другому переобзовётся. А жопой ты думаешь, я не сказал что всё китайское говно, я сказал не покупайте на Али. И в Российских магазах нехуй выбирать самое дешёвое. 

Ты почему огрызаешься? Тебе указал на твое мнение, что ты не прав! И продают тоже самое из самой али в России дорогие компоненты в разы дороже+пересылка! И тоже брак есть! А матерятся это УО(умственно отсталые)! Аргументов ноль, а вони как в общественном туалете.

81Slim
Offline
Зарегистрирован: 31.10.2018

До 3.14 зделся, самосвал, тема закрыта...

samosval55
Offline
Зарегистрирован: 30.01.2018

Пиздят только слабоумные! Я писал конкретно! Если предъявляешь, то валяй!А то фыркнул как дворовая собачонка.

cyberdemon
Offline
Зарегистрирован: 18.06.2021

alex1978 пишет:
Пока выглядит так. Экранчик хоть и меньше размером, но видимая область у него такая же. На китайских поделках просто стекло и плата больше. Энкодеры из новой партии тоже говняные оказались. Работают в принципе, но нечётко как-то отрабатывают. Завтра соберу до конца. Надеюсь.

Поделитесь файлом платы, какая есть. А то скоро фен понадобится

latent
Offline
Зарегистрирован: 01.02.2022

alex1978

ссылка не работает.

обновите или выложете на другой ресурс.

Заранее благодарен.

samosval55
Offline
Зарегистрирован: 30.01.2018

cyberdemon пишет:

alex1978 пишет:
Пока выглядит так. Экранчик хоть и меньше размером, но видимая область у него такая же. На китайских поделках просто стекло и плата больше. Энкодеры из новой партии тоже говняные оказались. Работают в принципе, но нечётко как-то отрабатывают. Завтра соберу до конца. Надеюсь.

Поделитесь файлом платы, какая есть. А то скоро фен понадобится

Пока ты его делать будешь он не нужен будет. Проще заказать на алике готовый и меньше геморроя.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

Самое сложное запихнуть в корпус от зарядника 2 готовых 12В БП и симисторный модуль. На фото это я не запихивал таким образом, просто корпус склеивал.

LM358 и подобные советую даже не рассматривать, RAIL to RAIL очень желательно. Линейный стабилизатор 12-5В лучше сразу брать крупнее, мелкие сильно греются, я поставил в итоге 78M05. В меге8 места мне лично на ПИД не хватило.

И кстати никакой плавно регулировки, энкодеров и т. д. По факту мне в режиме ручной регулировки  с шагом 50 градусов более чем достаточно. Сделал такие режимы:

//Заданные режимы температуры
unsigned int temp_menu[] = {0, 300, 600};
byte temp_menu_size = sizeof(temp_menu) / sizeof(int *) - 1; // расчет количества режимов в массиве
byte temp_menu_state = 0;

//Заданные режимы температуры в ручном режиме
unsigned int temp_manual_menu[] = {0, 200, 250, 300, 350, 400, 450, 500, 550, 600};
byte temp_manual_menu_size = sizeof(temp_manual_menu) / sizeof(int *) - 1; // расчет количества режимов в массиве
byte temp_manual_menu_state = 0;

//Заданные режимы вентилятора
unsigned int fan_menu[] = {0, 150, 200, 220, 240, 255};
byte fan_menu_size = sizeof(fan_menu) / sizeof(int *) - 1; // расчет количества режимов в массиве
byte fan_menu_state = 0;

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

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

shatrovmaxim
Offline
Зарегистрирован: 14.06.2022

Можешь выложить прошивку и схему под 8 мегу?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Да пожалуйста, схемы как таковой нет, но в папке исходники можно увидеть от нее части.

Ссылка на папку с проектом. Исходник v1.1 я не помню что правил и рабочая ли она

#define USE_MICRO_WIRE //Лёгкая библиотека I2C
#include <GyverOLED.h>
#include <EncButton.h>

GyverOLED<SSD1306_128x32, OLED_BUFFER> oled;
//oled.setContrast(10);   // яркость 0..15
//oled.setPower(true);    // true/false - включить/выключить дисплей

//==== MILLISTIMER MACRO ==== (макрос таймера для запуска  через равные промежутки времени)
#define EVERY_MS(x) \
  static uint32_t tmr;\
  bool flag = millis() - tmr >= (x);\
  if (flag) tmr += (x);\
  if (flag)

struct {
  static const byte   termistor     =  A3; // пин термистора
  static const byte   heat          =  12; // пин нагревателя
  static const byte   fan           =  9; // пин вентилятора
  static int          mode_heat[5]  =  {0, 300, 450, 600, 700}; // быстрые режимы нагревателя
  boolean             oled_on       =  1; // 1 дисплей включен
  unsigned long time;
  unsigned long srednee;
} air;



EncButton<EB_TICK,  7> Button_UP; // Кнопки
EncButton<EB_TICK,  5 > Button_DOWN;
EncButton<EB_TICK,  6 > Button_OK;

//Заданные режимы температуры
int temp_menu[] = {0, 300, 600};
//Текущее состояние, максимальный элемент в массиве исходя из размера массива
int temp_menu_size = sizeof(temp_menu) / sizeof(int *) - 1; // расчет количества режимов в массиве
int temp_menu_state = 0;
int temp_menu_state_old = 0;

//Заданные режимы температуры в ручном режиме
int temp_manual_menu[] = {0, 200, 250, 300, 350, 400, 450, 500, 550, 600};
//Текущее состояние, максимальный элемент в массиве исходя из размера массива
int temp_manual_menu_size = sizeof(temp_manual_menu) / sizeof(int *) - 1; // расчет количества режимов в массиве
int temp_manual_menu_state = 0;
int temp_manual_menu_state_old = 0;

//Заданные режимы вентилятора
int fan_menu[] = {0, 150, 200, 220, 240, 255};
int fan_menu_size = sizeof(fan_menu) / sizeof(int *) - 1; // расчет количества режимов в массиве
int fan_menu_state = 0;
int fan_menu_state_old = 0;

boolean auto_temp = 0; // 0 автоматический режим

void setup() {
  oled.init();              // инициализация
  air.time = millis();
  pinMode(air.heat, OUTPUT);
  pinMode(air.fan, OUTPUT);
  oled.setContrast(120);   // яркость 0..15
  //oled.setPower(false);
}

void loop() {
  printScale();     //вывод на дисплей
  button_action();  //обработка кнопок
  heat_loop();
  if (millis() - air.time > 10000) oled.setContrast(0);
  if (millis() - air.time > 30000) air.oled_on = 0;
  (air.oled_on == 1) ? oled.setPower(true) : oled.setPower(false);
}

//=========================Обработка кнопок=====================================
void button_action() {
  if (Button_UP.tick()) { // если было изменение состояния кнопки
    if (Button_UP.click()) {
      air.time = millis();
      oled.setContrast(120);
      if (air.oled_on == 0) air.oled_on = 1;
      else {
        if (auto_temp == 0) {
          if (temp_menu_state == 0) fan_menu_state = 1;
          temp_menu_state++;
          if (temp_menu_state > temp_menu_size) temp_menu_state = temp_menu_size;
        }
        else {
          if (temp_manual_menu_state == 0) fan_menu_state = 1;
          temp_manual_menu_state++;
          if (temp_manual_menu_state > temp_manual_menu_size) temp_manual_menu_state = temp_manual_menu_size;
        }
      }
    }
    Button_UP.resetState();
  }

  if (Button_DOWN.tick()) { // если было изменение состояния кнопки
    if (Button_DOWN.click()) {
      air.time = millis();
      oled.setContrast(120);
      if (air.oled_on == 0) air.oled_on = 1;
      else {
        if (auto_temp == 0) {
          temp_menu_state--;
          if (temp_menu_state < 0) temp_menu_state = 0;
        }
        else {
          temp_manual_menu_state--;
          if (temp_manual_menu_state < 0) temp_manual_menu_state = 0;
        }
      }
    }
    Button_DOWN.resetState();
  }

  if (Button_OK.tick()) { // если было изменение состояния кнопки
    if (Button_OK.click()) {
      air.time = millis();
      oled.setContrast(120);
      if (air.oled_on == 0) air.oled_on = 1;
      else {
        if (temp_menu_state != 0 || temp_manual_menu_state != 0) {
          fan_menu_state++;
          if (fan_menu_state > fan_menu_size) fan_menu_state = 1;
        }
      }
    }
    if (Button_OK.held() && air.oled_on == 1) {
      auto_temp = !auto_temp;
      temp_menu_state = 0;
      temp_manual_menu_state = 0;
    }
    Button_OK.resetState();
  }
}


void printScale() {
  oled.clear();
  oled.setScale(2);

  if (auto_temp == 0) {
    if (temp_menu[temp_menu_state] == 0) oled.setCursor(57, 0);
    else  oled.setCursor(45, 0);
    oled.print(temp_menu[temp_menu_state]);
    oled.setScale(1);
    oled.print("O");
    oled.setCursor(110, 0);
    oled.print(air.srednee);
    oled.setCursor(51, 2);
    oled.print("AUTO");

  }
  else {
    if (temp_manual_menu[temp_manual_menu_state] == 0) oled.setCursor(57, 0);
    else  oled.setCursor(45, 0);
    oled.print(temp_manual_menu[temp_manual_menu_state]);
    oled.setScale(1);
    oled.print("O");
    oled.setCursor(110, 0);
    oled.print(air.srednee);
    oled.setCursor(46, 2);
    oled.print("MANUAL");
  }

  fan_bar(fan_menu_state);
  oled.update();
}

void fan_bar(byte n) {
  if (n > 0) {
    for (byte i = 0; i <= n - 1; i++) {
      oled.rect(26 * i, 28, 21 + 26 * i, 30, OLED_FILL);
    }
  }
}

void heat_loop() {
  //вычисление среднее с АЦП
  air.srednee = 0;
  for (byte i = 0; i < 16; i++) {
    air.srednee = air.srednee + analogRead(air.termistor);
  }
  air.srednee = air.srednee / 16;
  air.srednee = (air.srednee + 25) * 1.11; //коэффициент 1.11 нужен так как характеристика термопары нелинейная
  // измерил при 25 градусах окружающей температуры, для этого и добавлял 25

  if (auto_temp == 0) {
    (air.srednee < temp_menu[temp_menu_state]) ? digitalWrite(air.heat, HIGH) : digitalWrite(air.heat, LOW);
    if (temp_menu_state > 0) analogWrite(air.fan, fan_menu[fan_menu_state]);
    else {
      if (air.srednee > 70) {
        fan_menu_state = fan_menu_size;
        analogWrite(air.fan, fan_menu[fan_menu_state]);
      }
      else {
        fan_menu_state = 0;
        analogWrite(air.fan, fan_menu[fan_menu_state]);
      }
    }

  }
  else {
    (air.srednee < temp_manual_menu[temp_manual_menu_state]) ? digitalWrite(air.heat, HIGH) : digitalWrite(air.heat, LOW);
    if (temp_manual_menu_state > 0) analogWrite(air.fan, fan_menu[fan_menu_state]);
    else {
      if (air.srednee > 70) {
        fan_menu_state = fan_menu_size;
        analogWrite(air.fan, fan_menu[fan_menu_state]);
      }
      else {
        fan_menu_state = 0;
        analogWrite(air.fan, fan_menu[fan_menu_state]);
      }
    }
  }
}

 

shatrovmaxim
Offline
Зарегистрирован: 14.06.2022

Спасибо всё понятно, единственный момент  кварц стандартный - 16МГц?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Да

Gomez
Offline
Зарегистрирован: 09.09.2017

А можно глупый вопрос? А что все схемы такие сложные? ОУ и прочеее... А нельзя разве MAX6675 (типа ввод) и мосфет (типа ответ) подходящий, а всё остальное - на МК? А то вижу в тырнете "мне жалко тратить Ардуину и я разработал схему всего из 49 деталей".

Объясните чайнику.

И знает ли кто, в "народном" https://aliexpress.ru/item/32696054243.html какого типа термопара?

sharpey
Offline
Зарегистрирован: 12.03.2018

Модуль с MAX6675 стоит как минимум раза в два дороже, чем прецизионный операционный усилитель типа AD8551/8552 (по ценам магазинов на AliExpress, а не местных барыг типа ЧипДип). Обвязкой ОУ можно регулировать усиление, смещение нуля так, как нужно разработчику. И места займёт меньше. Плюсом чипа MAX6675 является учёт компенсации температуры "холодного спая" (cold-junction compensation), который нужно учитывать самостоятельно при использовании ОУ. Плюсом ОУ является гораздо большая частота опроса температуры термопары для расчёта параметров ПИД-регулятора мощности. В случае с MAX6675 надо последовательно сосчитать 16 битов, из которых выделить 12 бит, представляющие температуру в диапазоне 0..+1023,75°C. С учётом максимальной частоты 4,3 МГц шины SPI чипа в идеальном случае можно было бы передать примерно 4300/16=268 тыс. отсчётов/с. Но время преобразования отсчёта (Conversion Time) для MAX6675 типичное 0,17 с, максимальное 0,22 с. То есть в лучшем случае около 6 отсчётов за секунду (точнее 5,88).

Для термопары К-типа 1°C генерирует напряжение 40,7 мкВ. То есть 1024°C дадут (40,7*1024)=41676 мкВ. Тогда для выходного сигнала 5В, представляющим 1024°C, ОУ должен иметь коэффициент усиления 5000000/41676=120 раз. Для ОУ AD8551/8552 с граничной частотой единичного усиления 1,5 МГц (Gain Bandwidth Product) частота снизится во столько же раз, до частоты 1500 / 120 = 12,5 кГц. Для МК ATmega328p рекомендуемая производителем частота аналогового преобразования от 50 до 200 кГц, что удовлетворяет условиям.

Как видите, за одну секунду с ОУ типа AD8551/8552 можно подсчитать двенадцать с половиной тысяч отсчётов, а с MAX6675 всего шесть. Почувствовали разницу?

Термопара в таком фене обычно К-типа.

Gomez
Offline
Зарегистрирован: 09.09.2017

Понятно, спасибо за развёрнутый ответ! Я просто хотел сказать, что можно практически обойтись всем готовым - модуль с MAX6675 + мосфет на вентилятор + диммер, управляемый Ардуино типа https://aliexpress.ru/item/32802025086.html на нагревательный элемент, ДЛЯ ТЕХ, КТО НЕ ХОЧЕТ ПАЯТЬ ЦЕЛУЮ ПЛАТУ и тут до меня дошло... :)

С другой стороны, мне казалось, что при тепловой инерции термофена достаточно 2 отсчётов в секунду... ;)

sharpey
Offline
Зарегистрирован: 12.03.2018

Даже 25 отчётов/с будет мало. В этом проекте https://www.hackster.io/sfrwmaker/soldering-iron-controller-for-hakko-t12-tips-on-arduino-f7a888 ( авторская тема на http://arduino.ru/forum/proekty/kontroller-payalnika-dl-zhal-hakko-t12 ) автор увеличил частоту опроса температуры до 50 Гц для ПИД-регулятора из-за влияния тонких жал на точность результатов. В них находится такая же термопара К-типа. Можете посмотреть код проекта на https://github.com/sfrwmaker/hakko_t12

Gomez
Offline
Зарегистрирован: 09.09.2017

BTA16
Поскольку я не умею травить платы, соберу пока на "рассыпухе" модулей. БП 2A 24В, модуль MAX6675 (думал попробовать MAX31855, но он вроде не особо быстрее, да и говорят, на Али много бракованных их), тиристорный модуль на BTA16, оптроне, zero-cross, вроде всё ОК; для управления вентилятором - так и быть, спаяю сложнейший модуль из резистора и IRF3205 (ну уж какие дома есть) :)
А уж с прецизионным ОУ буду заморачиваться, если результат меня не устроит.