Модификация термостата W1209

W1209 thermoЕсть такой недорогой китайский термостат W1209. Их в изрядном количестве продают разнообразные китайские магазины. Из плюсов — цена :). Остальное немножко недостатки, частично который можно исправить перепрограммированием набортного контроллера — STM8S003F3.


Термодатчиком работает терморезистор,  штатная прошивка позволяет ввести только смещение показаний. Соответственно для такой штуки точность может быть не очень (как повезет). Однако, есть неплохой цифровой термодатчик DS18B20, который калибровки не требует(ну, условно). Берем такой датчик, немного модернизируем платку (снимается конденсатор С1 возле разъема датчика, резистор R2 заменяем на 4,7К). Новый датчик цепляем на разъем старого (там GND и DQ), питание берем с разъема программирования(квадратный пятак слева от индикатора). Плюс заливаем новую прошивку — оп, работает 🙂 Отмечу, оригинальная прошивка защищена от считывания, поэтому сохранить ее не удалось. Возврата к старому варианту не будет. Другим пользователям повезло больше, китайцы не закрыли от считывания, так что родная прошивка приложена ниже. Новая — умеет установить порог срабатывания реле и метод управления — реле работает если температура ниже заданной или если выше. Краткое нажатие кнопки SET позволяет установить порог, удержание SET — метод управления.

Схема устройства(стырено отсюда, спасибо автору):
schematic

 

 

 

 

Что потребуется:
1) программатор ST-Link/V2. Или любая плата STM8 Discovery (там он есть встроеный, можно использовать). Стоимость на алиэкспресс в пределах 2..4$
2) софт для программатора
http://www.st.com/web/en/catalog/tools/PF260219# (драйвер)
http://www.st.com/web/catalog/tools/FM147/CL1794/SC1807/SS1747/PF210568 (софт для программирования)
3)  кусочек гребенки с шагом 2,54мм для программирования (можно без нее, просто проводочки впаять)
4) резистор типоразмера 0805 с номиналом 4,7КОм.
5) сам датчик DS18B20.

Производим модернизацию платы термометра согласно картинке

Берем программатор и соединяем его с разъемом программирования впаяным (или просто проводами). Обычно на программаторе подписано что и куда. Для моего варианта (как пример) см. картинку


Получаем что-то типа, как на картинке


Запускаем программу ST-Link Visual Programmer, выставляем параметры программирования

Чип изначально защищен от чтения/записи. Надо разблокировать:

1) +12в не подавать. питать от ст-линка.
2) запустить программатор.
3) не делая попытки записать, попробовать прочитать данные. (должна быть ошибка, по идее)
4) если таки да — закладка options (третья, там первая программа, вторая еепром, третья байты опций) переключиться на нее и сделать write page.
5) попробовать вычитать — если все нормально, чип начнет читаться нулями и перестанет совсем работать железка :)

Теперь записываем новую прошивку.

Файл — открыть — выбираем thermo.hex из архива с исходниками.
Жмем — Program — All Tabs.

Подключаем датчик DS18B20, отрываем программатор от платы (в принципе, достаточно отключить только линию RESET) и все. На дисплейчике появится при удаче — температура с датчика.

Если же температура не появилась — не повезло, придется резать дорожку и делать перемычку (мешает конденсатор под дисплеем).

Исходные тексты прошивки

Оригинальная прошивка
Альтернативная прошивка с гистерезисом и отрицательными температурами
Upd.15.04.17 Показометр влажности на базе dht11/dht22

225 thoughts on “Модификация термостата W1209

  1. Оригинальная прошивка очень легко считывается.

    • Добрый день ! Можно ли скоректировать программу ацп платы w1209 для использования стандартных термосопротивлений с линейной характеристикой ? не бесплатно конечно.

      • У меня нет исходных текстов родной программы. Т.е. для меня это обозначает написать заново.

  2. если нужна заводская прошивка даного терморегулятора (w1209) пишите в личку

    • Автору, спасибо за науку.
      Прошивка заводская тут: (Нужна регистрация на ХомДистиллер.)

      files.homedistiller.ru/147060.hex

  3. Автору спасибо! Повторил конструкцию — работает. Но непонятно с установками — а что нижнего предела нет? Это что ПИД-регулирование?

    • Нет. Это простой пороговый автомат.В зависимости от настройки срабатывания (опция 0 или 1), устройство будет включено при температуре меньшей, установленой, по превышении выключится. Или наоборот (выключено если меньше, включится при превышении).

  4. Понятно. Это не термостат. Спасибо за исходники. Будем работать дальше.

  5. Повторил конструкцию —НЕ работает, пока не выяснил или термодатчик сгорел или прога не работает. Сижу у «разбитого корыта», с терморезистором Ваша прошивка работать не будет, а старую не вернуть.

    • Там под дисплеем еще есть конденсатор.. Он тоже мешает в некоторых случаях. Варианты решения — или поднять дисплей и выпаять конденсатор, или обрезать дорожку, ныряющую под дисплей с обоих сторон и проводочком на датчик.
      Ну или обновил статью — добавил файл с исходной прошивкой, если экспериментировать надоело.

  6. Спасибо! С терморезистором опять работает. Буду мучить цифровой.

  7. Проводочик помог. Вылез другой баг, комнатная температура 03.5; пальцами нагрел до
    04.1, ???

    • Здесь уже не знаю, никогда такого не встречал. «Соплей» нет? Датчик точно исправен?
      Какие-либо показания выводятся только если получена корректная контрольная сумма от датчика…

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

  9. Возникла необходимость таймера на заданную температуру (например 99градусов 10минут затем чтобы отрубалась насовсем)

  10. Нашел ошибку!!! В статье описан датчик DS18B20, а я поставил DS1820 (из исходников запомнилось наверное) .

    • А, таки да. У 18(s)20 и 18(b)20 немного отличаются форматы выдачи. Если правильно помню, я рассчитывал в коде на 12бит разрешение, которое 1820 просто не умеет. Вот и чудеса с преобразованием.

  11. а возможно верхнюю температуру работы поднять градусов до 300 или 1000 лучше?

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

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

    • Сама настройка ацп, если через либы стм, примерно так:

      GPIO_Init(GPIOD,GPIO_PIN_6,GPIO_MODE_IN_FL_NO_IT); // AIN6
      ADC1_DeInit();
      ADC1_ScanModeCmd(ENABLE);
      ADC1_DataBufferCmd(ENABLE);
      ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_6,
      ADC1_PRESSEL_FCPU_D8, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT,
      ADC1_SCHMITTTRIG_CHANNEL6, DISABLE);

      ну и считать данные со входа

      ADC1->CR1 |= ADC1_CR1_ADON; // запуск преобразования

      if((ADC1->CSR & 0x80)) // преобразование завершено?
      {
      ADC1->CSR &= 0x7F; // сбросим флаг
      value = ADC_GetBufferValue(ADC1_CHANNEL_6);
      }

      где-то так. Ну а дальше производить расчет, смотря что к ацп подключено.

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

  14. а ниже нуля принципиально нельзя померить? или у меня с ds1820 не стыкуется?

    • Можно конечно. Результат с датчика обрабатывать как значение со знаком и придумать отображение минуса. Отрицательное значение с единицей в старшем бите.

  15. А у меня температуры настраиваются, но реально срабатывает все время от 28 градусов, то есть той температуры, которая мигает при вхождений в настройки.

    • Так мигает как раз температура, на которую настроено срабатывание. После входа в настройки кнопками +/- пробовали менять, выходить по SET, зайти и посмотреть — сохранилось ли нормально все?

  16. Что делать? Практически могу использовать только как термометр или только на одну 28 c температуру с гистерезисом. Мож кто посоветует где копать. Купил несколько и все с такой неисправностью.

  17. Приобрёл такой девайс но при включении почему-то пробил пробил стабилизатор 5 вольт и соответственно STM8S003F3P6 выгорел. Подскажите можно ли простыми методами(типа JTAG) прошить такой контролер. Надеюсь прошивкой поделитесь :-).

    • Только программатор. Бутлоадера в этих МК нет.(JTAG это простой метод? 🙂 )

  18. Подпилил проект автора — теперь показывает отрицательную температуру. И еще при настройке показывает не 0 или 1, а С или Н, то есть Cooling или Heating.

    • Можно ли где-то скачать подпиленный вариант? с отрицательной температурой и С и Н?

      • Добавил этот вариант в заметку изначальную (утащил себе ранее для коллекции)

    • Это заказная программа. Что потом с ней делает владелец — его проблемы. В данном случае да, они продают.

    • какой, dht22? есть код и для него, только не под конкретно такую плату.

    • dht11 вроде отличается только точностью (хуже, чем у dht22).

      для stm8s003 на штатных 8мгц (вроде, может на 16 тогда настраивал) читал dht22 вот таким кодом примитивным

      uint8_t dht22_measure_flag = 0;
      u8 imp_len[100];
      u8 imp_res[5];

      void dht22_measure(void)
      {
      if (!dht22_measure_flag) return;
      // дернем датчик за лапку
      GPIO_Init(GPIOC,GPIO_PIN_5,GPIO_MODE_OUT_PP_LOW_FAST);
      GPIOC->ODR &= ~GPIO_PIN_5;
      u16 l;
      for (l = 0; l < 2000; l++) { } GPIO_Init(GPIOC,GPIO_PIN_5,GPIO_MODE_IN_PU_NO_IT); u8 i, k, v; v = GPIOC->IDR & GPIO_PIN_5;

      for (i = 0; i < 100; i++) { imp_len[i] = 0; while (((GPIOC->IDR & GPIO_PIN_5) == v) & (imp_len[i] < 255)) imp_len[i]++; v = GPIOC->IDR & GPIO_PIN_5;
      }

      if (((0x24 - imp_len[1]) < = 3) & ((0x24 - imp_len[2]) <= 3)) { // пресенс был от датчика i = 4; for (v = 0; v < 5; v++) { imp_res[v] = 0; for (k = 0; k < 8; k++) { if (imp_len[i] > 0x15)
      {
      imp_res[v] |= 1 < < 7- k; } i += 2; } } // посчитаем crc uint8_t crc = 0; for (i = 0; i < 4; i++) crc += imp_res[i]; if (crc == imp_res[4]) { //imp_res[i]; здесь в массиве imp_res от 0..3 данные с датчика dht22 dht22_measure_flag = 0; // фух, намеряли что-то } } }

      • Есть еще для DHT21
        // Header: DHT21-AM2301
        // File Name: loc_dht21_am2301_stm8s.c
        // Author: Nguyen Phuc Loc
        // Date:11/03/2015

        #include «loc_dht21_am2301_stm8s.h»
        #include «stm8s.h»
        ///////////////////////##########################################

        void delay_us(unsigned int x){

        nop();

        }
        ///////////////////##############################################
        void delay_x(unsigned int x)
        {

        while(x—)
        {
        nop();
        }
        }
        ////////////////////////######################################
        void Start(void)
        {
        SET_OUT();
        ONE_WIRE_HIGH();
        delay_x(100); //delay 50us
        ONE_WIRE_LOW();
        delay_x(2000); //delay 1ms
        ONE_WIRE_HIGH();
        SET_IN();
        delay_x(60); //delay 30us
        }
        /////////////////////////#################################
        uint8_t Check_response(void)
        {
        if(ONE_WIRE_IN()) return 0;
        else
        while(ONE_WIRE_IN()); //cho cho chan DATA duoc keo xuong 0
        delay_x(200); //delay 100us
        if(ONE_WIRE_IN())
        return 1;
        else
        return 0;
        }
        ///////////////////////////#######################################
        unsigned char Read_DHT21(unsigned int *temp,unsigned int *humi)
        {
        unsigned char buff[5]={0,0,0,0,0};
        unsigned char ii,i,checksum;
        Start();
        if(!Check_response())
        return 0;
        else
        while(ONE_WIRE_IN()); //doi DATA ve 0
        //doc du lieu
        for(i=0;i<5;i++)
        {
        for(ii=0;ii<8;ii++)
        {
        while(!ONE_WIRE_IN()); //doi DATA len 1
        delay_x(100); //delay 50us
        if(ONE_WIRE_IN())
        {
        buff[i]|=(1<<(7-ii));
        while(ONE_WIRE_IN()); //doi DATA xuong 0
        }
        }
        }
        checksum=buff[0]+buff[1]+buff[2]+buff[3];
        if(checksum!=buff[4]) return 0;
        if(buff[2]&0x80)
        *temp=buff[3];
        else
        *temp=buff[2]*256+buff[3];
        *humi=buff[0]*256+buff[1];
        return 1;
        }
        ////////////////////////##################################333
        void SET_OUT(void)
        {
        GPIO_Init(GPIOD,GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST);
        }
        ////////////////////////##################################333
        void SET_IN(void)
        {
        GPIO_Init(GPIOD,GPIO_PIN_6, GPIO_MODE_IN_FL_NO_IT);
        }
        Но опять таки иногда прыгают показания, я так понимаю проблема в delay_x, скажем так в STM не силен

        • ну и пусть прыгают. на датчик подышали — прыгнет. рядом пошуршали — прыгнет. почему нет?

    • это только анализатором смотреть, что там на шине. такого, конечно, быть не должно.

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

  20. Всем привет! Купил 10 штук w1209 и у всех глюк, не отображает температуру више 50градусов а показывает » — — — «. В настройках усе правильно виставлено. Хто может помогите прошивкий или советом что делать и как? vasily.ais@mail.ru

    • Настройки посмотри еще раз там предел установлен 50, смени на 110

  21. artko правильно ли я понял? При повторении вашей разработки. Должен получится термостат: С точностью измерения (шагом индикации измерений)0.1 градуса. Гистерезисом 0.1. Не требует калибровки. И не умеет вносить корректировки температуры.

    • Да, только гистерезиса нет. Просто сверяется заданное значение с установкой. Теоретическая точность реакции датчика на изменение 0.0675 градуса, прекалиброван на заводе, точность измерения 0.5 градуса

      • Изменение 0.0675 гр. — получается это и есть гистерезис.

        • Здесь это ограничение точности протокола. Ну, пусть будет условный гистерезис

          • «точность измерения 0.5 градуса» прошу пояснить.
            условная температура 100 градусов термостат будет показывать при каждом измерении одно и тоже число, или каждый раз разное в диапазоне 100+- 0.5.

          • Если на границе датчика, могут и «мерцать» показания.

      • (Я не программист. придётся кого то просить помочь.)
        Сколько строчек нужно переписать в программе для частоты измерений примерно 2 в секунду.

        • Если устроит точность отклика 0,5градуса, то достаточно поменять константы в программе. Если нужно 0.0675 то нисколько, датчик измеряет температуру с таким разрешением 0.75секунды. т. Е. Два измерения в секунду просто невозможно

          • «Насколько помню, один раз в две секунды»?
            «Если нужно 0.0675 то нисколько, датчик измеряет температуру с таким разрешением 0.75секунды.»?
            0.0675.гр. 0.75секунды. вполне устраивает.

          • С предельной точностью чаще чем раз в секунду нельзя. Еще время опроса и при большой частоте точность уплывет изза саморазогрева датчика

  22. «Если на границе датчика, могут и «мерцать» показания.»
    мерцать в диапазоне 0.5гр. или 0.0675 гр.?

    • В зависимости от режима датчика. Если точность 9 бит, то 0.5, если 12бит — 0.0675

  23. Можно ли у термостата W1209 поднять верхний предел измерения температуры до 300 градусов или выше (термопечь), что для этого нужно и как это сделать? Достаточна точность измерения в 1 градус.

    • Можно. Взять другой термодатчик. Не знаю, если есть терморезисторы до такой температуры — то обойдется переделкой в основном программы, если термопара — то придется городить и обвязку другую.

    • В общем, в итоге прикрутил термопару с модулем на MAX6675. Можно, работает 🙂

  24. Термопара, например К-типа по цене 180 руб. у китайцев.https://ru.aliexpress.com/item/5PCS-Lot-Stainless-Steel-Temperature-Sensor-K-Type-Thermocouple-Bayonet-Compression-Spring-with-2m-Cable-Wire/1717230149.html?
    Модуль из Китая на микросхеме MAXIM MAX6675, которая выдает на выходе цифровой сигнал. Для Ардуино такой модуль стоит 170 руб https://ru.aliexpress.com/item/1pcs-MAX6675-K-type-Thermocouple-Temperature-Sensor-Temperature-0-800-Degrees-Module/32686656074.html?
    Как состыковать сей девайс с W1209 ?
    Еще один вариант на микросхеме AD597. У нее аналоговый выход действующий по закону
    AD597 output = (Type K voltage) × 245.46
    Модуль на AD597 стоит около 450 руб.https://ru.aliexpress.com/item/CJMCU-597-AD597-K-type-thermocouple-temperature-measurement-sensor-analog-output-module-3D/32657924063.html?
    Есть еще один вариант (аналоговый) на операционном усилителе LM358 по цене около 2 руб.(партия 100шт).https://ru.aliexpress.com/item/Free-shipping-10pcs-LM358DR-SMD-Amplifier-SOIC8-LM358/32345652395.html?
    Сам модуль W1209 из Китая стоит 130 руб.
    Какой же вариант выбрать, как схему составить и запрограммировать контроллер?

    • Модуль на MAX6675 не пойдет, у W1209 нет свободных ног для него (надо три, есть один)

      любой аналоговый сигнал, если приведет к диапазону 0…5в — можно пересчитать и что-то показать.
      Можно на LM358 — точность только будет хромать.

      … то время как AD597 работает в диапазоне от -200 °С до +1250 °С (диапазон термопар типа K). Усилители откалиброваны с точностью ±4 °С при температуре окружающей среды 60 °С и характеризуются температурной стабильностью 0,05°С/°С при изменении температуры окружающей среды в пределах от 25 °С до 100 °С….

      так что с точностью в +-1градус — как-то плохо.

    • Возможно. У меня есть готовый вариант на Pt 100 250 грн без датчика.

  25. Ответ понятен, на LM358 будет гораздо дешевле. Поясните пожалуйста про точность.
    В термостате инкубатора, где температура поддерживается около 38 градусов требуется точность в одну четвертую градуса. У меня же термопечь должна поддерживать кулинарную температуру в пределах 180 — 250 градусов с точностью +-5 градусов температура окружающей среды 30 — 60 градусов). Если точность окажется выше, то это будет даже лучше.
    Можно ли состыковать W1209 с узлом на LM358, взятым с приводимой ниже ссылки?
    http://forum.cxem.net/index.php?/topic/156323-%D1%82%D0%B5%D1%80%D0%BC%D0%BE%D0%BC%D0%B5%D1%82%D1%80-400-%D0%BD%D0%B0-%D1%82%D0%B5%D1%80%D0%BC%D0%BE%D0%BF%D0%B0%D1%80%D0%B5-%D0%BA-%D1%82%D0%B8%D0%BF%D0%B0/

    • А простой метод Вам не подойдет ?
      Китайский тестер с термопарой. Мультиметр DT830E.Я таким измеряю температуру жала паяльника. Проверял на газплите — 800 градусов измеряет.

      • а китайский тестер с термопарой умеет нагревателем управлять? 🙂

        • «Аппаратура принем, принем» в виде специально обученного товарища и тумблера. 😉

          • Я так понимаю, надо измерять температуру печки? А регулировать температуру мощным диммером.

  26. У термопары очень мелкие напряжения. Если усиливать LM358 — то малейшие шумы по питанию/шумы самого ОУ будут приводить к «прыжкам» температуры. Это к вопросу о точности.
    Состыковать с узлом из ссылки — можно. Поставить вместо штатного датчика и написать программу 🙂

    • Могу. Для этого нужна термопара и адаптер для нее. Поскольку их у меня нет — то не могу 🙂

  27. А можно исходники оригинальной прошивки. Хочу гистерезис побольше поставить.

  28. А, я думал это ваше творение. Не подскажете есть ли смысл ковырятся в ассемлере и искать тот байтик ограничения в 15 градусов? Реально ли? Опыта пока мало.

    • Не знаю.. с асмом последний раз встречался на спектруме, у стм8 вроде похожий. Имхо проще взять исходник неродной прошивки(моей или здесь в комментах есть еще вариант) и доделать что хочется.

  29. И как там в ассемблере реализованы десятые доли?

  30. попалась партия плат W1209 подтягивающий резик к +5в был 200 ом вместо 20 кОм и STM чистая. После замены резистора и прошивки заработал. 🙂 Вот и заморочился подправить как мне нужно.

  31. Резик который терморезистор к +5в подтягивает.****

  32. После долгих ковыряний нашел. Как я и предполагал 15.0 записано как 150, так что максимальный гистерезис без исходников смог поставить только на 25.5 градуса. Кому надо ссылка для скачивания: https://yadi.sk/d/8-DAmTYy3Gi9tM

  33. В качестве продолжения темы прошу рассмотреть вариант применения (модификации) STM8S003F3 в товаре https://ru.aliexpress.com/item/DC12V-Dual-LED-Cycle-Timer-Delay-Control-Switch-Relay-DIY-Module-Digital-Display/32773747998.html?
    Внешний вид http://s020.radikal.ru/i710/1704/79/0f02d5c4509c.jpg
    Вот я срисовал электрическую схему http://s012.radikal.ru/i320/1704/ad/a7b7c45aba51.jpg
    Цена вполне доступная а возможности за счет второго дисплея удваиваются, к тому же есть возможность расширения интерфейса в сторону I2C.

  34. Графический дисплей конечно есть гуд, однако цена немножко возрастает (хотя возможностей думаю будет больше).
    А схемку сможете нарисовать (с расширенными возможностями)?

  35. В заметке схема не полная. Видно только как дисплей подключается.

    • вроде полная была.. обращайте внимание на точки соединения по названиям, там линии может не быть. Ну и печатная плата приложена, по которой железка была сделана и ездит 🙂 Не может быть неполной..

  36. Можно ли, за оплату конечно,переделать https://ru.aliexpress.com/item/XH-B305-DC12V-electronic-digital-thermometer-digital-thermometer-head-high-and-low-temperature-alarm-high-precision/32799682519.html?spm=2114.0 под терморезистор pt 100 Показания должны быть с десятками . Я купил вариант переделки W 1209 но там нет десятичных показаний.

    • Не знаю. у меня нет pt100 датчика, чтобы его пощупать и написать код.

  37. Я могу прислать датчик Pt100 а также переделанный под Pt 100 W1209,но мне нужны десятые в показаниях а с W1209 не смогли сделать да и при 3 разрядах температуру больше 100 не покажеш с десятыми ,потому я и заинтерисовался термометром с четирьма разрядами, но NTC не та точность и характеристики не такие линейные как у Pt 100.Правда дороговато у китайцев.

  38. А как Вы смотрите на посылку (отправку) вам необходимого материала-hard’а для того, чтобы Вы написали soft. И на каких условиях это возможно?

    • какой диапазон температур нужен и с какой точностью? не факт, что стм8 сможет, надо прикидывать. датчика pt100 разве что не хватает для проверки, что и как, остальное есть.

  39. Есть желание по максимуму модифицировать W1209.
    Выпаять 3-х разрядный индикатор, 3 кнопки, реле.
    На дополнительной плате (платах) разместить 1-разрядные индикаторы, питающиеся через 74HC595 каждый (исключаем динамическую индикацию), реле, кнопки.
    Один АЦП порт использовать под необходимое количество кнопок.
    Один АЦП порт использовать под разнообразные температурные датчики. В зависимости от датчика меняется программа.
    Использовать 2 таймера (с выходом на реле), работающие независимо от термостата.
    Позже накидаю электрическую схему.
    Хватит ли для этого внутренней памяти процессора?

    • Уже писал ранее.. имхо это перебор и затраченые усилия не стоят результата. Практичнее сдернуть родной дисплей, поставить SPI графический цветной. Уже освободится портов достаточно ( 6 штук), чтобы хватило почти на все что угодно.

      памяти 8КБ у мк.

  40. Точность нужна 0.5 град. диапазон -20…+200 град.Сообщите адрес я пришлю Pt 100 и сможете попробовать.

    • практически малореально. ацп у стм8 — 10 разрядов(1024 значения). если привести к 5в, это 5мв на отсчет. -20..+200 с разрешением 0.5градуса — 440 значения. Подозреваю, пульсации питания (надо будет осциллографом ткнуть в свой 1209) не дадут измерить +-10мв. имхо.

  41. А если сузить диапазон измерений (с разбивкой на несколько поддиапазонов)?

    • как это себе представляете? дополнительные наборы переключаемых подтяжек и ОУ?

  42. Представляю работу 2 шт W1209 работающих совместно.
    Первый — на DS18B20, работающий в диапазоне -20…+120 градусов.
    Второй — на pt100 с ОУ, работающий в диапазоне+120…+220 градусов.
    Первый отключает замер показаний при достижении критической температуры, выводит датчик из зоны нагрева, включает второй.
    Вот хотя бы так.

    • представил w1209, к которому еще подключен привод для вытаскивания датчика, вздрогнул 🙂
      Не рассматривали вариант — W1209 + ADS1115 + pt100? проще, имхо.

  43. Как еще один вариант. То же самое, что и предыдущий, только оба работают с pt100.

    • spi интерфейс. ног маловато у 1209, извращаться надо. не скажу ничего без проверки.

  44. Upd.15.04.17 Показометр влажности на базе dht11/dht22
    А что это такое ?

    • Берем 1209, подключаем к нему датчик dht11/22, получаем измеритель влажности

      • Подключать без переделок ? Вместо терморезистора ? Только питание на датчик подать ?
        Измеритель — это хорошо, а вот если бы он еще мог увлажнителем управлять.. Реле ж есть. 😉 Реально ? Сделаете ?

          • Ну, раз за увлажнитель не ответили ( хотя еще надеюсь 😉 ), спрошу еще, а другой датчик можно подключить ? Такой — DHT21/AM2301 ? Кстати, dht11 и dht22 отличаются по точности. Будет ли использована эта точность при установке dht22, ведь они весьма отличаются в цене.

          • Они вроде по протоколу не отличаются все. Про отличия в точности знаю 🙂 но все равно, там плюс минус лапоть, десятых долей показ не делал и не считаю нужным. Просто dht22 точнее измерит и все.
            Управление в прошивке есть, заблокировано до выяснения статуса что и как.

  45. AM2320 Цифровой Датчик Температуры и Влажности на Алиэкспрессе стоит 93 руб. Он получше будет?
    I2C/SPI BMP280 3.3 В Цифровой Атмосферное Давление Датчик — 109 руб.
    I2C RTC DS1307 AT24C32 Часы Реального Времени Модуль — 232 руб.
    Хватит памяти ROM в прошивке для всего этого?

    • получше чем какой? i2c контроллера можно считать недоступен, он занят (выводы)
      разве что с извращениями.

  46. Добрый день.
    Подскажите, есть ли возможность запрограммировать один выход на генерацию ШИМ сигнала и использовать его для управления силовым транзистором для плавного (ПИД) управления нагревателем?

    • в базе у 1209 ровно один вход и один выход. а так — да, вместо реле в принципе можно сделать ШИМ.

      • Бить может у Вас возникнет интерес в реализации такого алгоритма? К сожалению, сам не имею опыта программирования STM8S003F3.

        • инкубатор? 🙂 у меня есть реализация такого алгоритма для есп8266. на стм8 ничем не отличается, думаю.

  47. Всех приветствую!
    В общем, сделал модификацию данного девайса, всё по инструкции, за исключением того, что под «дисплеем» не выпаивал ничего.
    И у меня схема немного другая, не как на фото с подписанными пинами интерфейса программирования, а именно между LEDом и резом на 4.7 кОм (при использовании DS18B20) стоял рез на 2.2 кОм, который я в процессе пайки случайно куда то смахнул паяльником.
    В итоге после включения температура при подключении DS18B20 +85С, я так понимаю такого быть не должно.
    Подскажите, в чем тут причина сиго безобразия закралась, в отсутствующем резе на 2.2 или датчик температуры лаганутый?
    Датчик проверить пока времени не было, но для верности подцеплю его к малинке или ESP, посмотрим как себя вести будет.

    • если читается 85 — я бы голосовал за датчик. проверьте где-то еще его.

      • Проверил датчик, и ещё один запасной, на ардиуно что то не завелись оба, на ESP8266 и малине данные получает исправно.
        В чем проблема так и не понял.
        Попробовал накатить оригинальную прошивку, скачанную по ссылке в этой статье, и подключил старый датчик, в итоге на дисплее температура -35, правда это при отсутствии кондера на входе датчика и R2 2.2 кОм, возможно тут обвязка виновата.
        Кстати, какого там номинала кондер, 0.1 мкФ?
        Алсо, ненавижу смд кондер, ибо на них не наносят маркировку. 8(

        • r2 в оригинале 20к, точный. кондер 0.47мкф.
          Без р2 старый датчик работать адекватно не будет, он как раз цепь делителя организует.
          конденсатор под дисплеем не снимали ж. с ним шансы что заработает низковаты — его надо как-то обходить. как вариант перемычкой и резкой дорожки. еще неплохо бы схему отрисовать, раз отличается. программа рассчитана на подключение датчика к третьей ноге мк.

          • А номинал R8 не подскажете, что то я его не увидел на предоставленной тут схеме, у меня маркировка 115, т.е. 1.1мом, что то многовато, китайцы с маркировкой что ли ошиблись, по замерам, правда без выпайки показывает ~500Ом…

          • сейчас нет, не раньше понедельника. все 1209 на работе валяются

  48. Дмитрий, попробуйте прочитать маркировку резистора с другого конца (как бы задом на перед).
    artko, а как здесь вставить картинку?

    • вроде только линком на внешний сайт. надо будет посмотреть, кстати, как на сам хост грузить. не задавался таким вопросом, у меня то вставляется 🙂

    • Действительно, туплю, наоборот выходит 510 Ом.

  49. Бесполезная скудная переделка даже терморегулятором назвать нельзя другая прошивка с глюком. Не стоит портить заводскую сборку. Лучше на дс 18б20 применить другой контроллер полноценных схем и прошивок полно

  50. Имею три таких контроллера и все бессовестно врут в коптильне.Буду признателен если кто-нибудь за деньги приведет их в нормальное состояние.Сам не справлюсь.Мэйл bst1952@mail.ru

    • Там же есть в настройках калибровка? Если не помогает, переходите не цифровой датчик. Он вполне не особо врет. (Производитель обещает +- 0.5 градуса, насколько помню)

  51. Может быть, я запутался, но не нашел в .zip исходного текста .hex

  52. как и в Альтернативная прошивка с гистерезисом и отрицательными температурами

    • Скачал еще раз, порассматривал исходные тексты… А как они должны выглядеть то? Вполне явно файлы на си и проект под иде…

  53. Полетел терморегулятор terneo st на Atmega48.
    Нужна прошивка, может у кого есть.

  54. Уважаемый artco,имеется такой девайс XH-W1313 на STM8S003F3P6. https://ru.aliexpress.com/item/12V-Digital-Temperature-Controller-Board-Thermostat-K-Thermocouple-Probe/32682259659.html?spm=a2g0v.10010108.1000016.1.38f7f731ZUY3vf
    Схема похожа на W1209 но порты использованы другие.
    При наличии схемы Вы сможете сделать прошивку с выходом ПИД или ШИМ ???

    С уважением…

  55. Железка у меня в руках.схему я нарисую.
    интересует именно регулируемый выход.
    делаю ИК стол с феном.

    С уважением…

  56. То есть в ручную выставляешь напругу на тэнах до приемлимых значений?
    На релейном выходе разбег температуры 60 град.
    Выставляю 160 гр.термостат сработал температура поднимается до 220-230
    потом падает и так по кругу.если увеличить поток воздуха-разбег уменьшается.
    но это не приемлимо. всё сдувает.

    С уважением…

    • у меня есть прототип регулятора/стабилизатора мощности на W1209. Фазовое управление, симистор. С расчетом RMS и поддержанием его на заданном значении.

      • К отопительному котлу подойдет? Можно исходники глянуть

        • Разве что для электрокотла. Вообще назначение немного другое (удержание стабильной подачи тепла в заданный объем). Регулировка от внешних условий — немного другое.

  57. Обидно, понимаешь, комплектующие куплены…

    С уважением…

  58. Давно не ходил сюда. Лето однако. Но вот почитал и решил поделиться своими наработками. Решил сделать бюджетный термостат на базе W1209. Вот ссылочка на проект DipTrace с блоком питания 220 — https://yadi.sk/d/5CMQXeO93MgzHG. Заказал на Ali датчики. Прошил естественно заводской прошивкой. Датчики пришли. Подключил и получил ерунду. Короче датчики я заказал 3950, а с W1290 похоже идет 3435. Но я унывать не стал, опять взял авторский проект, подправил его и вот он — https://yadi.sk/d/hma_P8O93Mgzd9. Вполне рабочий — проверял с Ds18B20.

  59. Артем! Добрый день! А не подскажите какую RTOS вы используете?

  60. Добрый всем день. Возможно модифицировать альтернативную прошивка с гистерезисом и отрицательными температурами чтобы регулировался гистерезис?

  61. Артем Вы писали:
    on 05.09.2017 at 11:17 said:
    у меня есть прототип регулятора/стабилизатора мощности на W1209. Фазовое управление, симистор. С расчетом RMS и поддержанием его на заданном значении.
    .
    Можно прошивку и схему если сильно от w1209 отличается.

    • В схему вводится дополнительный модуль детектора нуля. На данный момент закрытая разработка в корыстных целях 🙂

  62. Ну можно и без RMS просто регулировать мощность нагрузки при заданной температуре.

  63. Добрый день!
    по последнему фото не видно где резать дорожки. Можете приложить более детально фото, на котором было бы все это видно. Уже третий термостат мучаю, не получается. один не работает, второй показывает 85 градусов.

  64. Само собой штатную схему надо будет поменять. Вместо реле симистор поставить. Управлять симистором через шим, поддерживать заданную температуру?

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

  65. Здравствуйте!
    Нужен ваш совет,как на базе терморегулятора создать измеритель напряжения
    литиевой ячейки с шим управлением полевиком,который шунтирует батарею
    при ее полном заряде(возможно и немного раньше).
    Надеюсь на сотрудничество.

    • Можно пробовать оторвать родной делитель напряжения и прямо в разъем датчика включить батарейку, вместо реле — управление полевиком. В теории сработает. А зачем? Полно готовых плат защиты.

      • Предполагается при дозаряде батареи управлять током заряда путем подключения нагрузки параллельно батарее(токи от 10А до 50А) с последующей индикацией уровня напряжения.Указанные вами платы защиты расчитаны на такие токи?

        • Врядли 🙂 В первом сообщении ничего про такое не указывали, касательно токов. Хотя с трудом себе представляю метод управления током с подключением нагрузки. Балластный резистор есть желание использовать? Методика для зимы, тепло будет 🙂

          • Пока прорабатывается вариант -полевик+индуктивность с шим управлением.
            Куда можно сбросить вам наброски схемы?

  66. приветствую граждане товарищи! Подскажите мне нубу пожааалуйста! Есть такой контроллер https://ru.aliexpress.com/item/Smart-Electronics-W1209-Digital-Temperature-Controller-Thermostat-Switch-Increase-Embedded-Shell-Replace-XH-W1209/32600357513.html?spm=a2g0s.9042311.0.0.PjU2ST походу слетела прошивка (думаю так потому что, прибор включается и с любым термистором показывает -190* и уходит в тревогу, сброс не помогает.) Решил попробовать его прошить тем что, выложили выше, приобрел такой прибор https://ru.aliexpress.com/item/FREE-SHIPPING-ST-Link-V2-stlink-mini-STM8STM32-STLINK-simulator-download-programming-With-Cover/1766455290.html?spm=2114.13010708.0.0.JukHEI но, вот загвоздка по распиновке на самом 1209. Лицо платы выглядит так https://www.dropbox.com/s/xng94agjxix4yde/2017-10-19%2022.19.41.jpg?dl=0 Вопрос как правильно подключить плату к стлинку?

    • ага, ну так отверстия снизу слева — это и есть разъем программирования.
      4 NRST
      18 SWIM
      7 GND
      9 VDD
      подключить их же с ст-линка, нормально будет.

      • да, спасибо так и подключил. Проблему возникшию далее внизу приложил (тут странная (для меня) схема построения форума).

  67. Была у меня такая сдвоенная плата, я с нее когда-то схему снял, выпаяв детали. Найду схему, выложу здесь.
    Также есть другие разновидности схем такого устройства на STM8S003F3. Но всё это уже выходит за пределы данного топика «Модификация термостата W1209». Может быть, уважаемый artko, открыть (создать) отдельную тему с обсуждением модификаций на базе STM8S003F3? Так как STM8S003F3 можно использовать не только как термостат или термометр, а, например, в составе «умного дома».

    • Я ж на нем делал свои платки с однопроводной связью самопальные, статейка валяется. А вообще и так комментарии здесь разрослись — найти сложно что-то. Добавил форум, для лучшей категоризации если вдруг потребуется.

      • там от 1209 — разве что тип термодатчика и контроллер 🙂 все остальное — совсем не то.

  68. Нужна помощь, кто поможет благодарочка. Проблема сталась в следующем: 1) Сей прибор (Модуль термостата W1209) был подключён от блока питания с выходом 16-17 вольт, некоторое время всё работало исправно. Тут произошёл казус перебои с электрикой по вине монтажников пошёл перенагруз и мой датчик умер.
    .2) Проверил с блока питания пошёл выход вместо 17 вольт 19-20вольт в сети было почти 300 вольт.
    3) При осмотре выяснил что умер стабилизатор 12 в на 5 вольт(AMS 1117). Я его демонтировал подкинул 5 вольт , прибор ожил, но температуру не показывает только обозначение LLL на дисплеи, датчик рабочий проверял.

    Кто что подскажет, что ещё могло накрыться, все программы работают, но на датчик прибор реагировать перестал. Сам не как не разберусь.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *