Водонагреватель по заданной температуре

Тема в разделе "Силовая электроника", создана пользователем a2kuz, 7 ноя 2018.

  1. a2kuz

    a2kuz Нуб

    День добрый, не судите строго я только начинаю...
    суть моей идеи сделать что то типо термостата. то есть при указанной температуре вкл /выкл тен на электро умывалнике в гараже. с этим проблем нет , греет тен дошла температура до 40 выключился , немного остыла опять включился ...... но хотелось бы сделать порог чтоб можно было установить допустим 30 включается 40 выключается и так постоянно чтоб работал.... не могу сообразить как сделать , подскажите! скетч ниже датчик DS18B20 плата ардуино uno
    Код (C++):

    #include <OneWire.h>                  // Подключаем библиотеку для взаимодействия с устройствами, работающими на шине и по протоколу 1-Wire
    #include <DallasTemperature.h>        // Подключаем библиотеку с функциями для работы с DS18B20 (запросы, считывание и преобразование возвращаемых данных)

    #define ONE_WIRE_BUS 2                // Указываем пин подключения data-вывода датчика температуры
    #define term_power 3                  // Указываем пин подключения питания датчика температуры

    OneWire oneWire(ONE_WIRE_BUS);        // Сообщаем библиотеке об устройстве, работающем по протоколу 1-Wire
    DallasTemperature sensors(&oneWire);  // Связываем функции библиотеки DallasTemperature с нашим 1-Wire устройством (DS18B20)
    int relepin = 4;                     // реле пин 4
    int relepin2 = 7;                      // реле пин 5
    void setup(void)///////////////////////////////////////////////////////////////////
    {
      Serial.begin(9600);             // Запускаем вывод данных на серийный порт
      sensors.begin();                // Запускаем библиотеку измерения температуры
      pinMode(term_power, OUTPUT);    // Определяем пин подключения питания датчика температуры
    }


    float temperature() { // Измеряем температуру 10 секунд
      digitalWrite(term_power, HIGH);                // Включаем питание датчика температуры
      delay(100);                                    // Задержка перед первым измерением
      sensors.requestTemperatures();                 // Запрос на измерение температуры (1-й ошибочный)
      delay(500);                                    // Задержка перед поторным измерением
      sensors.requestTemperatures();                 // Запрос на измерение температуры (повторный)
      float t = float(sensors.getTempCByIndex(0));   // Получаем значение температуры
    //digitalWrite(term_power, LOW);                 // Отключаем питание датчика температуры
      delay(2400);//9400                                   // Задержка, чтобы датчик не нагревался от частых измерений
      return(t);                                     // Возвращаем значение температуры в место вызова функции
    }

    void loop(void)/////////////////////////////////////////////////////////////////

    {
    pinMode(relepin, OUTPUT);            // реле
    pinMode(relepin2, OUTPUT);            // реле 2
    //-------------------------------------------------------------------------------------------------------------------------------------------------
    if(sensors.getTempCByIndex(0) > 40) digitalWrite(relepin, HIGH); // если температура  больше 40 град то реле выключается если меньше то вылючается
    else digitalWrite(relepin, LOW);


    if (sensors.getTempCByIndex(0) < 30 ) digitalWrite(relepin2, HIGH); //
    else digitalWrite(relepin2, LOW);


      Serial.println(temperature(),1);                // Выводим текущее значение температуры датчика, округленное до десятых
    }
     
  2. parovoZZ

    parovoZZ Гуру

    берешь лист бумаги и рисуешь алгоритм. Будут вопросы по алгоритму - спрашивай.
     
    Daniil нравится это.
  3. a2kuz

    a2kuz Нуб

    Добрый день! алгоритм чего? я мало что в этом понимаю. есть скетч. сейчас он работает так что при достижении темп заданной он выключает нагрузку , +40 градусов. температура на градус опустилась он снова включает
    а хотелось бы чтоб интервал между включением и выключением был допустим 10 градусов.
     
  4. Очень плохой скетч. При обрыве провода будет держать нагреватель постоянно включенным.
     
  5. parovoZZ

    parovoZZ Гуру

    учись. Не хочешь - тогда в "закажу проект". Там могут и бесплатно помочь.
     
  6. a2kuz

    a2kuz Нуб

    С толковым советом кто то поможет?
    как исправить, как что добавить.... без всяких этих
     
  7. Удалить всё, внимательно прочитать документацию, написать правильно. Сидеть и делать работу за всяких халявщиков никто не будет. Если кто-то захочет делать работу - он займется своими делами, а не вашими.
     
    Daniil нравится это.
  8. parovoZZ

    parovoZZ Гуру

    совет уже дан. Любая программа работает по алгоритму. Поэтому любое проектирование необходимо начинать с составления алгоритма.
     
  9. parovoZZ

    parovoZZ Гуру

    У данфосса есть термореле с изменяемым гистерезисом. Абсолютно не убиваемые железки. И никаких злоипучих МК. Смотри в эту сторону.
     
  10. a2kuz

    a2kuz Нуб

    Для чего тогда создан форум?
    Вас не кто и не просит писать заново что то прошу совета , ил как сделать, писать всякие подобные высказывания и я могу в любой теме ..... Вам спасибо. и удачи.
    Что вы имеете введу , мне 12 лет я начинаю только разбираться в этом , а делаю я это для папы в гараж.
    и Вам спасибо.
    Если есть готовые решения то зачем тогда изучать ардуино и робототехнику?
    Все умные ДЯДИ сидят не кто ответить не может помочь.... смешно.
     
  11. А можно сюда папу позвать? Я ему голову отверну за то, чем у него ребенок занимается.
     
  12. Хотя нет. 12 лет так писать не будет. Халявщик, да еще и врет.
     
  13. DetSimen

    DetSimen Гуру

    по профилю ему 34. А грамотность, реально, на уровне 12 лет.
     
  14. parovoZZ

    parovoZZ Гуру

  15. DetSimen

    DetSimen Гуру

    о как быстро сабразил
    a2kuz.jpg
     
  16. DetSimen

    DetSimen Гуру

    щас будет как 12-ти летний пабирацца.
    А нет, не будет. Единожды выставив дату рождения, хрен ее исправишь потом. :) Бида!Бида!
     
  17. parovoZZ

    parovoZZ Гуру

    надо звать на помощь папу бармена.
     
  18. Belkin

    Belkin Гик

    Эта строка парит вам мозг.
    Последующая проверка на 30° уже неэффективна.

    Выставляйте флаг включения (разрешения нагрева) и используйте в условии в качестве дополнительного аргумента.
    Пока t° не достигла 40 - при наличии флага идет нагрев.
    Превысили порог - убираем флаг и до нижнего порога ничего не включаем.
    Достигли нижнего порога - включаем нагрев и выставляем флаг... И по кругу...

    Как это сделать - решайте (думайте) сами... ;)
     
    MickNich нравится это.