Модификация термостата 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

373 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 точнее измерит и все.
            Управление в прошивке есть, заблокировано до выяснения статуса что и как.

    • Тоже хотел бы очень перешить w1209 на управление увлажнителем в свой самодельный инкубатор. Буду очень ждать. Заранее спасибо.

  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 на дисплеи, датчик рабочий проверял.

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

        • это кусок МК. Восстановить никак, только заменой МК, если таки выжжен.

          • А как можно проверить, программы все сохранились, всё выставляется,только вот температуру перестал показывать и реагировать на термодатчик, на дисплеи LLL и хоть ты чё ему не делай, Можно как то напругу на ножках микро контролера проверить,если да то на каких ногах сколько должно приходить и сколько выходить, или есть советы другие.Жалко вроде всё работает,хочу поднять,спортивный интерес.. Заранее благодарю за помощь .

          • Написать программу, которая будет опрашивать этот вход МК и проверять меняется ли значение при опросе. по другому — никак.

  69. можно ли найти исходник прошивки,чтобы поменять ее на индикацию входного напряжения?

  70. Жаль, что тема по таймеру на этой плате закрыта! А ведь интерес есть таки!
    Ребята платы с вашей прошивкой продают в три раза дороже китайцев.

  71. Меня вообще-то интересует на сегодя вопрос о задержки включения на некоторое время в 5-й программе. Минимальный программируемый шаг — 1 минута. Возникла необходимость в задержке включения всего лишь на 1-3 с. Есть ли возможность так сделать?

  72. скачал по ссылке «Альтернативная прошивка с гистерезисом и отрицательными температурами»
    не понял как настраивается гистерезис.
    отрицательные температуры и охладитель — нагреватель работают как надо.
    Прошу подсказать

    • Я же правильно понимаю что он зашит в блоке:
      if (*eeTempMode == TEMP_MODE_ON_IF_LOWER)
      {
      if (ds_temp = *eeTemp1 +10 ) RELAY_OFF;
      }
      if (*eeTempMode == TEMP_MODE_ON_OVER)
      {
      if (ds_temp >= *eeTemp1 + 10 ) RELAY_ON;
      if (ds_temp = *eeTemp1 + 2 ) RELAY_ON;
      if (ds_temp <= *eeTemp1 — 2 ) RELAY_OFF;
      специалисты подскажут? все корректно или могут быть проблемы в связи с 12-битностью разрешения датчика?

      • да, здесь и есть. После получения данных с датчика температура приводится к значению в десятых градусах.
        Проблем в 12-ти битности не должно быть, кроме некоторой потери точности. Если нужно прям все хорошо — переделывать на работу непосредственно с данными датчика.

  73. как то не корректно сформировалось сообщение
    я хотел уточнить изменения в виде
    if (ds_temp = *eeTemp1 + 2 ) RELAY_ON;
    if (ds_temp <= *eeTemp1 — 2 ) RELAY_OFF;
    приведут ли коррекно к снижению гистерезиса в 2 десятые градуса

    • проверил, работает как надо. и одна десятка тоже работает. Спасибо авторам за проделанный труд.
      Но правильнее объявить переменную и присвоить ей значение чем править в 4 местах, но это поправить не сложно.
      еще осталось придумать как гистерезис на ходу править.

  74. Вообще то гистерезис зашит в блоке
    if (*eeTempMode == TEMP_MODE_ON_IF_LOWER)
    {
    if (ds_temp = *eeTemp1 + gisterezis*10 ) RELAY_OFF;
    }

  75. Одна строчка пропала:
    if (*eeTempMode == TEMP_MODE_ON_IF_LOWER)
    {
    if (ds_temp = *eeTemp1 + gisterezis*10 ) RELAY_OFF;
    }

  76. При добавлении комментария пропадают некоторые символы (например больше и меньше). Наверное как понимаются как теги?

  77. Друзья, есть хороший человек, который может написать таймер обратного отсчета для этого модуля. Он делал свой проект на STM8 с таймером для засветки фоторезиста. Я к нему обратился с этим вопросом, но ему нужен сам модуль для отладки. Мне проблемно это будет сделать. Парень живет в Минске, да и модуль у меня один. Может есть желающие поучавствовать? Прошу прощения у местного администратора за внешнюю ссылку. https://ucdev.ru/ru/forum/?view=thread&id=6

    • Поучавствовать в чем? У меня давно есть прошивка таймера для этого модуля.

      • Я в курсе, что у Вас есть эта прошивка, но ее нет в свободном доступе.
        Человек же готов адаптировать свою прошивку для этого модуля и поделиться с общественностью. Ему просто нужен сам модуль. Я обратился к жителям Минска. Может есть здесь такие, готовые оперативно дать его человеку. Можно просто перевести денег и человек купит сам на али, но это дольше конечно. Если не найдутся минчане, то так и поступлю.

  78. Добрый день, все не могу понять, пишу а коменты а они не добавляются.) Хотел предложить добавить еще один режим работы термостата. Режим, которй будет обеденять два первых режима. те релле будет работать если t1=20< релле работает <t2=50. Может можно такое релизовать?

    • Можно, сделайте 🙂

      Комментарии проходят премодерацию для новых пользователей. Не сразу появляются.

  79. Ожидаемый ответ) Можете подсказать с чего начинать, хотяб направление.

    • 🙂 сам термостат есть, программатор есть? Понимание хоть немного программирования есть?

      • Термостат есть, програматора пока нет. Закажу. Програмировать не умею, но можно поробывать научится разобраться.

          • Редактор — любой, хоть блокнот. Для компиляции программы потребуется компилятор — среда IAR или cosmic c++ для stm8. Я для тестов использую IAR.

  80. Всем привет. Возникли вопросы. Всётаки корректировка температуры датчика есть…? Она подходит для всех датчиков DS18B20?
    Дизассемблировал родную прошивку. Там тоже есть таблица корректировки, но градусы чем выше, тем больше дельта. Т.е. при 0-25 гр шаг 0.1 гр, при 80-100 гр шаг 0.5 гр..Наверно характеристики терморезистора такие. Кому надо проект в ST Visual Develop: https://yadi.sk/d/VfuP8iJC3RKJ8q
    Еще вопрос к artko. Есть платка вольтметр 3-30в постоянного напряжения на STM8s003f3. Прошивка залочена. Хочу переделать на переменку 220в. Нашёл в сети что-то подобное, пины подстроил под свою плату, но меряет с большими погрешностями : 1.2 в-показывает 1.0 в, 9.6в- показывает 8.3в.??? (Это пока проба на постоянном напряжении). При измерении переменного напряжения 220в показания скачут от 300 до 0? (подключено: диод+ резисторный делитель+кондер электорлит 4,7 мкф 35в) Что-то мне не нравится там в организации программы ( может выбор режима АЦП не тот? или прерывания?)сами проекты в IAR (исходный и правленный):https://yadi.sk/d/D_ImjQSD3RKJzr

    • Корректировку датчика я не делал — DS18B20 прекалиброван на заводе, смысла особо нет. У него заявлена производителем погрешность +-0.5 градуса на всем диапазоне.
      По переменке — ну сами прикиньте, ацп у сти008 10 бит. т.е. на весь диапазон 0…350вольт (для сети) каждый отсчет ацп это уже минимум 0.3в.
      Источника опорного напряжения там тоже не особо — просадки/пульсации уже будут менять показания.

      Ну и скачут от 0 до 300 — так и есть. Это нормально для переменного напряжения то. Хотите показывать действующее (а 220вольт это действующее) — то нужно определять момент перехода через ноль, делать выборку хотя бы сотни значений за период, и по математической формуле для RMS считать (сумма квадратов напряжений, из нее корень и еще делить на количество выборок).

      • А что там за таблица из 146 значений?
        uint16_t table_adc[146]={959,955,951,947,943,939,934,929,924,919,
        913,907,901,895,889,882,875,867,860,852,
        844,835,827,818,808,799,789,779,769,759,
        748,737,726,715,704,692,681,669,657,645,
        633,620,608,596,583,571,559,546,534,522,
        509,497,485,473,461,450,438,426,415,404,
        393,382,372,361,351,341,331,321,312,303,
        293,285,276,268,260,252,244,236,229,222,
        215,208,201,195,189,183,177,172,166,161,
        156,151,146,141,137,132,128,124,120,116,
        113,109,106,102, 99, 96, 93, 90, 87, 84,
        82, 79, 77, 74, 72, 70, 68, 66, 64, 62,
        60, 58, 56, 55, 53, 51, 50, 48, 47, 45,
        44, 43, 42, 40, 39, 38, 37, 36, 35, 34,
        33, 32, 31, 30, 29, 29};

        • про подсчет я знаю. Просто при том-же делителе+диод+кондер в родной прошивке значения так не скакали. Поэтому и думаю что в коде какие-то непонятки. Код не смотрели…..
          Прийдется самому допетривать.

          • Ну так смотреть как родная прошивка усредняет и показывает.

          • А, ну так в своей делайте усреднение.вариант, упрощенный (если правильно помню) — брать максимально зарегистрированное значение, делить на 1,41 — это будет как раз действующее.(Только для синусоиды)

          • Про подсчет и усреднение я уже понял Вас. Что там за таблица ???

          • Мне то откуда знать? 🙂 Это у автора надо спрашивать или код анализировать, зачем оно там.

          • У Вас эта таблица (В Вашем проекте-забыли про вольтметр.) Выше код с Вашего проекта.

          • Можете натыкать, где именно? Что-то я не могу найти такую таблицу ни в одном своем проекте.

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

          • Это не мое. Вытащил просто из комментариев. Изначальный автор: murmiz on 12.12.2016 at 18:31 said:

          • Ааа, тогда ссорри. Ну это-же корректировка температуры?

          • Что-то я совсем туплю. Мы про эту ссылку? http://mgslab.com/wp/wp-content/uploads/2015/12/termo_gist_sym.zip
            Или другую? потому что там тоже нет 🙂
            А таблица — вообще на корректировки ничуть не похоже. Имхо. Скорее просто таблица преобразования значений. Так запрограммирована нелинейность чего-то.

          • Да сейчас перекачал по ссылке там другое. Я раньше качал по тем ссылкам вот оно:https://yadi.sk/d/iGjQTV-f3RL4gN
            Проект Ваш кем-то видимо правленный.

  81. Александр! Таблица значений ADC для аналогового датчика от -40 градусов до 110 с шагом в один градус. Для DS8B20 совсем другой проект.

  82. Попробовал DHT11 — показывает —H. Надо полагать не видит датчик.

  83. W1209
    При отключении питания сбрасывается на заводские настройки.
    Там 28 градусов, гистерезис 2, С(охлаждение).
    Это лечится?
    Мне для термообработки пчёл нужен нагрев и другие градусы.

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

  84. Уважаемый artko! Извиняюсь за наверное глупый вопрос. Но наверное я что-то где-то упустил. Стал переделывать проект под четырехразрядный индикатор и естественно полез разбираться более детально с исходниками. И вот в файле hardware.h три строчки
    #define DIG0_ON GPIOD->ODR &= ~GPIO_PIN_4
    #define DIG1_ON GPIOB->DDR |= GPIO_PIN_5
    #define DIG2_ON GPIOB->DDR |= GPIO_PIN_4
    меня ввели в совершенный ступор. Первая мне совершенно понятна — выводит 0 на D4,
    то есть включает разряд 0. А следующие две что делают? Не подскажите в чем здесь сермяжная правда?

    • Ответ на этот вопрос есть в документации на микроконтроллер 🙂 Читали, что это за регистры вообще?

  85. Естественно, читал. Видимо собака порылась еще раньше. В функции harware_init вывод D4 объявлен как выход, а B4 и B5 как входы, хотя, как мне кажется, их тоже надо объявить как выходы и работать с ними точно также как с D4. Кстати, записывая
    #define DIG1_ON GPIOB->DDR |=GPIO_PIN5
    вы объявляете B5 как выход.

    • Совершенно верно, включаю на выход. Все-таки загляните в документацию и посмотрите, чем B4/B5 отличаются от D4. Хотя да, может работало бы и так. Не стал проверять, после пары пойманых граблей.(Подсказка — посмотрите в колонку режима Push Pull выходов)

  86. Вот это и есть та самая сермяжная правда о которой я спрашивал — спасибо за информацию. Такие нюансы не сразу познаются.

  87. Ребята выручайте. Кто сталкивался с W1209 на чипе Nuvoton N76E003AT20 ? Проблема с такими контроллерами не у одного у меня и лекарства против неё не нашёл. Контроллер сбрасывается в заводские настройки при малейшем отключении питания. С STM8S003F3 такого не происходило.

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

  89. Добрый день!
    Вот может кому нужна прошивка w1209 для работы с DS18B20 и настройкой гистерезиса.
    Переделывал под себя.
    Режим настройки Р0 — это выбор нагрев (-Н-) или охлаждение (-С-).
    Режим настройки Р1 — это гистерезис от 0 до 25 с шагом 0.1, при удержании шаг 1.
    Режим настройки Р2 и Р3 — доделаю выложу, пока времени нет.
    Пи проблемах с DS18B20 выводится (—).
    Прошивка — _ttp://files.dp.ua/file?source=18031415055544905200
    Пароль — 123.

  90. Добрый день!
    Вот следующий вариант прошивки w1209(STM8S003F3) для работы с цифровым термодатчиком DS18B20 и настройкой гистерезиса.
    Делаю когда есть время, для своих целей.
    — Для установки температуры контроля кратковременно нажмите кнопку «SET», после чего кнопками «+» или «-» установите заданную температуру, и еще раз нажмите кнопку «SET» для сохранения выставленного значения.
    — Для входа в режим программирования удерживайте, в течение 5 секунд, кнопку «SET», после чего кнопками «+» или «-» выберите код параметра меню (P0…P7). Далее, для настройки параметра, нажмите кнопку «SET» и кнопками «+» или «-» измените значение параметра. Для сохранения настроек нажмите кнопку «SET».

    Дисплей отображает: «—» — датчик не подключен, «hot» превышение предела заданного в параметре P6.

    Параметры меню настроек:
    P0 — Режим работы терморегулятора: охлаждение (-С-)/нагрев (-Н-);
    Р1 — Гистерезис, °C, от 0 до 25 с шагом 0.1, при удержании кнопок «+» или «-» шаг 1;
    Р2 — Пока не делал, при выборе просто выход;
    Р3 — Пока не делал, при выборе просто выход;
    Р4 — Коррекция температуры, °C, от -7 до +7 с шагом 0.1, при удержании кнопок «+» или «-» шаг 1;
    Р5 — Пока не делал, при выборе просто выход;
    Р6 — Верхний предел температуры отключения, °C, по умолчанию 110 °C, можно выбрать свой, шаг 0.1, при удержании кнопок «+» или «-» шаг 1;
    Р7 — Сброс настроек на default(dEF), нажмите кнопку «SET» для подтверждения: нагрев (-Н-), порог срабатывания — 30 °C, коррекция температуры — 0, гистерезис — 0.2, верхний предел температуры отключения — 110 °C.

    Прошивка — _ttp://files.dp.ua/file?source=18031610270122319101
    Пароль — 123.

  91. Привет из Болгарии, София.
    Можна ли исходник, мне нужно переделат Р5 — задержка включения , за авто.
    У меня компилатор IAR.
    dobmarkov@yahoo.com
    Поздрави!

  92. To dobmarkov.
    Долго поддержите «SET» и в пункте P7 выберите сброс к заводским, вы выставили в пункте P6 аварийную температуру меньше текущей температуры.
    Извиняюсь, мой бок, в следующей версии исправлю!
    Спасибо.

  93. Добрый день!
    Исправил мелкие баги.
    Пока времени мало!
    Спасибо!

    Прошивка — _ttp://files.dp.ua/file?source=18033008254091490641
    Пароль — 123.

    • Добрый!
      Пишет, что файл не найден. Можете поделиться рабочей версией? А то прошлая не работает, все время мигает hot, на кнопки не реагирует.

  94. Пришла рассылка от РадиоЛоцмана https://www.rlocman.ru/review/article.html?di=500347 на изделия Мастер Кит. Там нашел изделие на STM8S003F3 — «Термореле MP8030R». Обратите внимание на цену. Из Китая я последний раз покупал термостат по 87 руб.

  95. Здравствуйте. Подскажите в чем проблема. После прошивки индикатор начал показывать только верхнюю часть цифры это на thermo.hex на oldtermo.hex верхнюю и нижнюю.

    • Не понял вопроса. Вообще уже видел как минимум две версии W1209. К одной из них — прошивка не подходит (другой тип индикатора), показывает бред.

  96. Вот наверное у меня как раз этот бред. Горят все три сигмента как английская U но только в верхней половине или цифра 4 но без нижней палочки и после каждой точка в в нижней половине.

  97. Перепрограммировал на даллас -очень понравилось,большущая благодарность за технологию.Четыре глючных термостата удалось запустить в дело.
    Было бы очень хорошо сделать из этого термостата сигнализатор отклонения давления в колонне на основе датчика давления MPX5010DP . Чтобы реле срабатывало при повышении до 40 мм рт ст и отпадало при 5 мм рт ст. , к примеру.

  98. Дядьки, ну поделитесь прошивкой, в которой можно корректировать температуру.
    Нужно три датчика скорректировать на одинаковые показания. А они пляшут +/- две — три десятки друг от друга.
    Заранее спасибо!

  99. Добрый день!
    Вот следующий вариант —
    мелкие исправления прошивки w1209(STM8S003F3) для работы с цифровым термодатчиком DS18B20 и настройкой гистерезиса.
    Делаю когда есть время, для своих целей.
    — Для установки температуры контроля кратковременно нажмите кнопку «SET», после чего кнопками «+» или «-» установите заданную температуру, и еще раз нажмите кнопку «SET» для сохранения выставленного значения.
    — Для входа в режим программирования удерживайте, в течение 5 секунд, кнопку «SET», после чего кнопками «+» или «-» выберите код параметра меню (P0…P7). Далее, для настройки параметра, нажмите кнопку «SET» и кнопками «+» или «-» измените значение параметра. Для сохранения настроек нажмите кнопку «SET».

    Дисплей отображает: «—» — датчик не подключен, «hot» превышение предела заданного в параметре P6.

    Параметры меню настроек:
    P0 — Режим работы терморегулятора: охлаждение (-С-)/нагрев (-Н-);
    Р1 — Гистерезис, °C, от 0 до 25 с шагом 0.1, при удержании кнопок «+» или «-» шаг 1;
    Р2 — Пока не делал, при выборе просто выход;
    Р3 — Пока не делал, при выборе просто выход;
    Р4 — Коррекция температуры, °C, от -7 до +7 с шагом 0.1, при удержании кнопок «+» или «-» шаг 1;
    Р5 — Пока не делал, при выборе просто выход;
    Р6 — Верхний предел температуры отключения, °C, по умолчанию 110 °C, можно выбрать свой, шаг 0.1, при удержании кнопок «+» или «-» шаг 1;
    Р7 — Сброс настроек на default(dEF), нажмите кнопку «SET» для подтверждения: нагрев (-Н-), порог срабатывания — 30 °C, коррекция температуры — 0, гистерезис — 0.2, верхний предел температуры отключения — 110 °C.

    Прошивка ( thermo_new3.hex ) — https://ru.files.fm/u/wpwncbar

  100. Добрый день!
    Мелкие исправления прошивки w1209(STM8S003F3) для работы с цифровым термодатчиком DS18B20 и настройкой гистерезиса.
    Делаю когда есть время, для своих целей.

    — Для установки температуры контроля кратковременно нажмите кнопку «SET», после чего кнопками «+» или «-» установите заданную температуру, и еще раз нажмите кнопку «SET» для сохранения выставленного значения.
    — Для входа в режим программирования удерживайте, в течение 5 секунд, кнопку «SET», после чего кнопками «+» или «-» выберите код параметра меню (P0…P7). Далее, для настройки параметра, нажмите кнопку «SET» и кнопками «+» или «-» измените значение параметра. Для сохранения настроек нажмите кнопку «SET».

    Дисплей отображает: «—» — датчик не подключен, «hot» превышение предела заданного в параметре P6.

    Параметры меню настроек:
    P0 — Режим работы терморегулятора: охлаждение (-С-)/нагрев (-Н-);
    Р1 — Гистерезис, °C, от 0 до 25 с шагом 0.1, при удержании кнопок «+» или «-» шаг 1;
    Р2 — Пока не делал, при выборе просто выход;
    Р3 — Пока не делал, при выборе просто выход;
    Р4 — Коррекция температуры, °C, от -7 до +7 с шагом 0.1, при удержании кнопок «+» или «-» шаг 1;
    Р5 — Пока не делал, при выборе просто выход;
    Р6 — Верхний предел температуры отключения, °C, по умолчанию 110 °C, можно выбрать свой, шаг 0.1, при удержании кнопок «+» или «-» шаг 1;
    Р7 — Сброс настроек на default(dEF), нажмите кнопку «SET» для подтверждения: нагрев (-Н-), порог срабатывания — 30 °C, коррекция температуры — 0, гистерезис — 0.2, верхний предел температуры отключения — 110 °C.

    Прошивка ( thermo_new3.hex ) — __ttps://ru.files.fm/u/wpwncbar

    • Что я делаю не так? Прошивки thermo_new3.hex , thermo_new.hex -не работают, все время мигает hot, на кнопки не реагирует ,на всех четырех термостатах.
      Очень надо коррекцию температуры.

      • Долго поддержите «SET» и в пункте P7 выберите сброс к заводским.

        • Спасибо за ответ. «SET» держал 5 минут- никакой реакции,все время мигает «hot». И так на всех четырех термостатах.Что же делать,что делать…

          • Печалька! Я только собирался перешиваться.
            Тоже корректировка необходима…

          • Вы точно выполнили всё перед прошивкой как написано например тут —
            h t t p s : / / alcodistillers.ru/forum/viewtopic.php?id=907
            Проверил на трех платах — все успешно работают с моей версией прошивки.
            К тому же в последних версиях я исправил возможность ввести в пункте Р6 температуру менее текущей, что приводило состоянию «hot», но лечилось сбросом к заводским в более ранних версиях.

          • Отвечаю 1QW1. Требования из h t t p s : / / alcodistillers.ru/forum/viewtopic.php?id=907 выполнены.
            Прошивка от artko «thermo» работает нормально,но партия датчиков от алиэкспресс показывают температуру ниже на 2 градуса С. Причем все 10 штук. Поэтому нужна прошивка с корректировкой температуры,но постоянно мигающий hot все портит.
            На всякий случай выписал две партии датчиков у других продавцов.

  101. Какого х….. вы не публикуете мои посты с обновленными прошивками?

    • Чего вопить то 🙂 Вытащил из спама, опубликовал. плагин неверно отметил. Вернее, верно. Обычно как ссылки в посте — это спам.

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

        • загружали бы файлы на местный форум, если вдруг все равно куда. заодно и в спам бы не падало..

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

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

  104. Добрый день.
    Следующая версия прошивки w1209(STM8S003F3) для работы с цифровым термодатчиком DS18B20 и настройкой гистерезиса.

    ПЕРЕД ПРОШИВКОЙ ОБЯЗАТЕЛЬНО — ПОЛНАЯ ОЧИСТКА и
    ВНИМАНИЕ —
    проверьте платы на наличие всех элементов, особенно в обвязке процессора, на последних двух платах китайцами были установлены процессоры Nuvoton N76E003AT20 и в обвязке не были запаянны VCAP — external capacitor и керамика по питанию.

    Прошивка проверена на двух новых платах.
    thermo_v4.hex — h__s://ru.files.fm/u/2he76sfz

    • Здравствуйте всем.У меня 4 термостата,куплены год назад на Али.На первый термостат прошивка «thermo_v4.hex» встала после 40 попытки.На остальные пока не хочет.Будем долбить дальше.Прошивка работает нормально,пункты меню P0-P7 функционируют как и описывал разработчик ,уважаемый 1QW1.
      Малогабаритный удобный термостат за 80 рублей,да еще с с цифровым термодатчиком DS18B20 , настройкой гистерезиса и температуры-это просто фантастика!!
      Осталось доработать плохую перепрошиваемость «thermo_v4.hex». Ведь прошивка от artko «thermo» залетает с первого раза без проблем.

    • Выложите, пожалуйста, еще раз эту прошивку. Заранее спасибо.

  105. У меня несколько плат с таким камнем, точнее без маркировки — китайцы его не подписывают. С5 отсутствует, т.к. он нужен только stm8xxxxxx. st-link я думаю вряд ли будет шить nuvotonовски чипы, а даже если и будет шить, то там еще ко всему прочему схема для индикатора с общим катодом и прошивка эта не подойдет, что очень и очень печально :(.

    • Надеюсь все понимают что эта прошивка только для w1209(STM8S003F3) и если установлен Nuvoton N76E003AT20 то его нужно поменять на STM8S003F3!!!

      И, соответственно, отсутствующая обвязка тоже должна быть запаяна!

      Кстати индикаторы на всех побывавших у меня платах одинаковы и работают успешно на всех версиях прошивки! Отличие было только в цвете сегментов!

      • у вас — да. а у меня лежат два 1209 — у одного индикатор с общим катодом, у второго — с общим анодом 🙂

        • Поддерживаю. Имею в наличии 2 вида плат W1209 на чипе NUVOTON , одна нормальная и одна глючная . Жаль что пересадка не поможет.

  106. Ой, ой заговорился, извините конечно же — «схема с общим анодом». Жаль не получается предыдущее сообщение поправить .

  107. Я нашел причину «hot» и локальное ее решение. Она может быть как из-за самой прошивки, так из-за того что у всех разное железо и софт. Я не программист, я паятель, так что сильно меня не пинайте.
    Проблема была из-за того что не происходила запись в EPROM, т.е там после записи находились 00 по всем адресам. Если записывать только коды program memory — все нормально шьется без ошибок(EPROM пустой). Если шить «Program all tabs» появляется ошибка «Verify failed at address 0x4000» EPROM по прежнему пустой. Обновление софта и драйверов до последних проблему не решило.
    Решил проблему так — вручную забил всю верхнюю строку EPROM «50» вместо «00», Записал сначала только PROGRAM MEMORY(thermo_v4.hex), потом только DATA MEMORY и плата ожила. Показания температуры были абсолютно не верны, зато появилась возможность сбросить к заводским настройкам, что я и сделал. И вуаля — все прекрасно работает.
    Записал отдельный файл thermo_v4_EPROM2.hex с нормальными заводскими настройками для DATA MEMORY h—ps://yadi.sk/d/eLeZsw163XNYuz
    Как то так.

    • Александр,свежее решение- прошивка» thermo_v4.hex» ставится на Ура.
      Респект и уважуха! Теперь обвешиваем колонну датчиками ,как новогоднюю елку, и наслаждаемся. А термостаты MH1210 и STH0024UG-v3 нервно курят в сторонке.

      • достаточно одного датчика для колонны, на самом деле. ну второй — аварийный, перегрев.

    • файлообменник прошивку thermo_v4.hex не отдает. Перезалейте, пожалуйста, еще раз или пришлите на почту valmer@post.tomica.ru .Заранее благодарен. Валерий.

  108. Как я посмотрю и здесь ректификаторов хватает Ж:). Все в угоду зеленому змию.
    C2H5OH форева.
    На самом деле спасибо 1QW1 и artko за их работу!

    • 🙂 ну так термостаты зачем нужны же? Только себе на STM32 делаю железки для такой цели

  109. Система SAURES на базе » BM8034 (МастерКИТ) Устройство для сбора и передачи данных по Wi-Fi», имеет в своем составе собственный более мощный (по сравнению с MP3509) микроконтроллер серии STM8.
    К одному прибору может быть подключено до 8 любых устройств в любой комбинации:
    — счетчики воды;
    — счетчики газа;
    — счетчики электричества (при установке дополнительного модуля интерфейса CAN или RS-485);
    — датчики температуры, например, BM8034temp;
    — датчики протечки воды, например, BM8034water;
    — датчики уровня жидкости;
    — датчики утечки газа;
    — исполнительные устройства (запорно-регулирующая арматура с электроприводом), например, шаровый кран с электроприводом BM8034valve.

    При использовании дополнительных встраиваемых модулей интерфейсов RS-485 или CAN к одному УСПД, помимо 8 устройств, перечисленных выше в описании, можно подключить до 8 счетчиков электроэнергии типа Меркурий.
    Личный кабинет на сайте SAURES+Приложние iOS+Приложение Android.
    3150 руб. за плату.
    Ставлю вопрос:
    можно ли это сделать на STM8S003F3 (и чтобы не дорого) ? +метеостанция+часы+будильники

    • Попробуйте. А зачем? Гораздо удобнее взять контроллер более подходящий под задачу, а не скрещивать невесть что и с чем.

  110. Ребята, сделайте прошивку на 3 разряда, без десятых долей °C.

    • А какой смысл перешивать родные датчики на супер-пупер точные до десяток — соток, если эти десятки — сотки не нужны? Оставь родные. Хотя они тоже больше 110C° не кажут…

  111. У меня STC-1000 , сильно врут в показаниях температуры , самое плохое , что показания температуры прыгают на 1,5-2 градуса . Можно перешить на цифровой датчик температуры ?

    • Насколько накопал информации — там PIC16F1828. Напишете для него прошивку — можно будет перешить 🙂 У меня такой нет.

  112. У меня STC-1000 врёт температуру , его можно прошить под цифровой датчик температуры ?

  113. В STC-1000 всё одинаково , как и в W1209. Разница в том ,что в STC-1000 стоит ещё одно реле на охлаждение.

  114. ссылки устарели
    кто перезальет ?
    и вообще пораб залить на нормальный ресурс
    хотяб вконтакт как документ там 7zip архивы разрешены

  115. Перезалейте, пожалуйста, прошивку с коррекцией показаний датчика DS18b20 и гистерезисом. Если такой нет, то только с коррекцией показаний датчика. Заранее благодарю от большого количества страждущих.

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

  116. Тогда просьба к читателям форума. Выложите, кто-нибудь (Александр или перспектива Сидоров), с указанием расположения прошивку «thermo_v4.hex». Очень нужно. Валерий.

  117. Подскажите пожалуйста какое значение value во вкладке option byte программы ST Visual Programmer нужно выставить или фото спасибо

  118. подскажите какое значение value во вкладке option byte программы ST Visual Programmer нужно выставить для программирования лучше фото

    • Я подключал термопару К-типа с дополнительным контроллером на чипе maxim.

  119. Админ, у Вас тут какая то проблема с отпиской от рассылки, уже наверное раз 10 как минимум пытался отписаться от уведомлений по эл.почте, в итоге они продолжают приходить, решите это как-нибудь.
    А так то статья годная, и комментарии интересные, но вот извещения эти на почту напрягают.(

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

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.