Открытый скетч автопрограммы инкубатора.

Общий раздел для всех подразделов форума.
SergeiCRIM
Сообщения: 80
Зарегистрирован: 07 янв 2016, 06:52
Откуда: Севастополь

Re: Открытый скетч автопрограммы инкубатора.

Сообщение SergeiCRIM » 17 янв 2018, 18:36

Измерение температуры и влажности записал прямо сюда.
Так правильно или нет?
[code//используем терморегулятор ////////////////////////////////////////////
void thermostat(float tempPoint, float set_humidity) {
DateTime now = RTC.now();
unsigned long now1 = millis();
float alarmTemp;
EEPROM_read(5, alarmTemp);

humid = myHumidity.readHumidity();
temp = myHumidity.readTemperature();


if (digitalRead(door_pin)) { //дверь закрыта *для концевика закрыто - разомкнуто
myPID.SetMode(AUTOMATIC);
heater_off = false;
}
else { //дверь открыта
heater_off = true;
alarmDelay = millis();
myPID.SetMode(MANUAL);
Output = 0;
}
Setpoint = tempPoint;
Input = temp;
myPID.Compute();
if (now1 - windowStartTime > WindowSize) { //время для перещелкивания периода окна
windowStartTime = windowStartTime + WindowSize;
........
...........
.......
}
if (Output > (now1 - windowStartTime) && temp < 39.9 && heater_off == false) digitalWrite(heater_pin, HIGH);
else digitalWrite(heater_pin, LOW);
}


][/code]

vladomir
Сообщения: 7
Зарегистрирован: 19 окт 2017, 01:35

Re: Открытый скетч автопрограммы инкубатора.

Сообщение vladomir » 29 янв 2018, 15:03

Роман добрый день.
Как в скетче поменять датчик влажности SHT10 на DHT22 .

Аватара пользователя
Umka
Команда UM
Сообщения: 6274
Зарегистрирован: 04 июн 2015, 13:45
Откуда: Суджа
Контактная информация:

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Umka » 29 янв 2018, 15:33

Может не надо?
https://drive.google.com/open?id=0B0vRu ... G93MmZpSjQ
тут готовая функция.

And
Сообщения: 6
Зарегистрирован: 30 янв 2018, 09:38

Re: Открытый скетч автопрограммы инкубатора.

Сообщение And » 30 янв 2018, 09:56

Здравствуйте!
Хотел бы уточнить по логике программы. У вас получение температуры с DS18B20 происходит раз в 1,2 секунды с запаздыванием на 0,45 сек после завершения преобразования. Но опрос и команда на получение (строки со звездочкой) зачем то барабанят без остановки в течении 0,9 секунд. Или я что то не так понял?

Код: Выделить всё

void getSensors() {
  unsigned long curMillis = millis();          // Получаем текущее время работы
  if (curMillis - trhMillis >= TRHSTEP) {    // время для нового измерения?
*    sensors.requestTemperatures();
*    temp1Ink = sensors.getTempCByIndex(0);
*    if (temp1Ink == -127.0) temp1Ink = 85.0;
  }
  if (curMillis - trhMillis >= TRHSTEP * 4) {    // время для нового измерения?
    measActive = true;
    measType = TEMP;
    sht.meas(TEMP, &rawData, NONBLOCK);        // измеряем температуру.
    trhMillis = curMillis;
  }

Аватара пользователя
Umka
Команда UM
Сообщения: 6274
Зарегистрирован: 04 июн 2015, 13:45
Откуда: Суджа
Контактная информация:

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Umka » 30 янв 2018, 12:29

Ну и что?

Chuk31
Сообщения: 1
Зарегистрирован: 29 янв 2018, 07:58

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Chuk31 » 30 янв 2018, 14:13

Добрый всем день!
Роман, видел анонс блока "тандем", на сайте ни слова о нем, видимо на сайт рук не хватает )
Будет ли вариант "тандема" с датчиком СО2 MH-Z19 и исполнительной частью для него(вентиляция)?

Аватара пользователя
Umka
Команда UM
Сообщения: 6274
Зарегистрирован: 04 июн 2015, 13:45
Откуда: Суджа
Контактная информация:

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Umka » 30 янв 2018, 16:22

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

And
Сообщения: 6
Зарегистрирован: 30 янв 2018, 09:38

Re: Открытый скетч автопрограммы инкубатора.

Сообщение And » 30 янв 2018, 19:21

Umka писал(а):Ну и что?
По-моему это бессмысленно и нелогично.

Аватара пользователя
Umka
Команда UM
Сообщения: 6274
Зарегистрирован: 04 июн 2015, 13:45
Откуда: Суджа
Контактная информация:

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Umka » 30 янв 2018, 19:34

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

And
Сообщения: 6
Зарегистрирован: 30 янв 2018, 09:38

Re: Открытый скетч автопрограммы инкубатора.

Сообщение And » 31 янв 2018, 07:06

Просто в вашем коде есть момент когда термометр преобразует температуру (750 мсек), а контроллер долбит его командами на конвертацию и опросами температуры без остановки.
Сейчас сам свой регулятор пишу, шлифую код, наткнулся на ваш вариант. Я бы сделал, что бы обращение к термометру было один раз за период опроса, например так. Хочется ожидать от коммерческого продукта, что там все идеально... ;)

Код: Выделить всё

*TRHSTEP =1200;
*bool read_temp=false;
void getSensors() {
  unsigned long curMillis = millis();          // Получаем текущее время работы
*  if (read_temp && (curMillis - trhMillis >= TRHSTEP-450)) {    // время для нового измерения? Через 750 мсек после команды на преобразование
    temp1Ink = sensors.getTempCByIndex(0);
*   read_temp=false;
    if (temp1Ink == -127.0) temp1Ink = 85.0;
  }
  if (curMillis - trhMillis >= TRHSTEP) {    // время для нового измерения?
    measActive = true;
    measType = TEMP;
    sht.meas(TEMP, &rawData, NONBLOCK);        // измеряем температуру.
*    sensors.requestTemperatures();
*    read_temp=true;
    trhMillis = curMillis;
  }

Аватара пользователя
Umka
Команда UM
Сообщения: 6274
Зарегистрирован: 04 июн 2015, 13:45
Откуда: Суджа
Контактная информация:

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Umka » 31 янв 2018, 07:49

Это не коммерческий код, а открытый, опубликован как есть. Кто хочет пусть дописывает. В закрытом совсем по другому все, но он не публикуется. По моему все честно. В этом коде много чего можно переписать, но и так можно работать. В любом коде так, просто снаружи не видно. И где тут контроллер без остановки долбит запросами температуры? Ну, выдаст датчик старое значение и всё. Из-за чего шум поднимать. Надо просто брать значение температуры, потом запускать конвертацию и ждать наступления следующего цикла. В закрытом коде библиотека dallastemperature не используется.
Вот же условие для запроса температуры

Код: Выделить всё

if (curMillis - trhMillis >= TRHSTEP) {    // время для нового измерения?
Кто мешает TRHSTEP сделать 1000мС? А надо только поменять местами запрос температуры и команду на конвертацию. Всё! Или мы друг-друга не понимаем. Я этим кодом уже 2 года не занимаюсь. Мы сейчас вообще DS редко где применяем. Слишком они медленные и точность так себе. Один плюс - мало проводов надо и далеко можно уносить от контроллера.

And
Сообщения: 6
Зарегистрирован: 30 янв 2018, 09:38

Re: Открытый скетч автопрограммы инкубатора.

Сообщение And » 31 янв 2018, 09:07

Umka писал(а):Или мы друг-друга не понимаем. Я этим кодом уже 2 года не занимаюсь. Мы сейчас вообще DS редко где применяем.
Может быть... ;) Я же без претензий, просто на мой взгляд показалось как то кривовато... Хотя, да, работать будет.
А что вместо DS с лучшей точностью, если не секрет?

Аватара пользователя
Umka
Команда UM
Сообщения: 6274
Зарегистрирован: 04 июн 2015, 13:45
Откуда: Суджа
Контактная информация:

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Umka » 31 янв 2018, 09:27

SHT21-35. Быстрее раз в 5 не только по счету, но и по температурной инерции. И по влажности точные и по температуре куда лучше DS. Но DS неубиваемые и для телеметрии годные, для логгера в качестве дополнительных термометров, для отопления дома, для подвалов, мороза, пыльных мест...

vladomir
Сообщения: 7
Зарегистрирован: 19 окт 2017, 01:35

Re: Открытый скетч автопрограммы инкубатора.

Сообщение vladomir » 14 фев 2018, 19:10

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

Аватара пользователя
Umka
Команда UM
Сообщения: 6274
Зарегистрирован: 04 июн 2015, 13:45
Откуда: Суджа
Контактная информация:

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Umka » 15 фев 2018, 03:53

Я код не трогал больше года, не знаю что там могло сломаться. Возможно и в программе косяк. Но пока нет времени на неё. Разберетесь самостоятельно?

vladomir
Сообщения: 7
Зарегистрирован: 19 окт 2017, 01:35

Re: Открытый скетч автопрограммы инкубатора.

Сообщение vladomir » 15 фев 2018, 04:32

Роман и еще один вопрос , по подключению часов реального времени. В инструкции написано "Подключается в разрыв провода модуля дисплея".Если я подключаю параллельно к с I2C к пинам А4 А5 то на дисплее пустое место в скобках где должно отображаться время.

Аватара пользователя
Umka
Команда UM
Сообщения: 6274
Зарегистрирован: 04 июн 2015, 13:45
Откуда: Суджа
Контактная информация:

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Umka » 15 фев 2018, 05:08

А сами часы идут?

vladomir
Сообщения: 7
Зарегистрирован: 19 окт 2017, 01:35

Re: Открытый скетч автопрограммы инкубатора.

Сообщение vladomir » 15 фев 2018, 09:09

Если раскоментировать эти строки то появляется время
//windowStartTime = millis();
//RTC.adjust(DateTime(__DATE__, __TIME__)); //раскоментируйте для установки системмных даты и времени

Аватара пользователя
Umka
Команда UM
Сообщения: 6274
Зарегистрирован: 04 июн 2015, 13:45
Откуда: Суджа
Контактная информация:

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Umka » 15 фев 2018, 09:53

Это из компьютера время берется при компиляции и прошивке скетча. Потом надо закомментировать и снова прошить. Потом выключить и включить блок. Если время забудет - батарейка сдохла или не контачит в часах.

Aslanvu
Сообщения: 9
Зарегистрирован: 15 фев 2018, 20:01

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Aslanvu » 15 фев 2018, 20:18

Добрый вечер, друзья!

Sht10 нуждается в корректировке?
У меня он показывает т: 63 градуса
Влажность: 99-100%

Если да то как откорректировать влажность?

Спасибо!

Аватара пользователя
Umka
Команда UM
Сообщения: 6274
Зарегистрирован: 04 июн 2015, 13:45
Откуда: Суджа
Контактная информация:

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Umka » 16 фев 2018, 05:24

SHT10 откалиброван на заводе. Ваш видимо вышел из строя.

And
Сообщения: 6
Зарегистрирован: 30 янв 2018, 09:38

Re: Открытый скетч автопрограммы инкубатора.

Сообщение And » 16 фев 2018, 06:07

Здравствуйте!
Смущает массив:

Код: Выделить всё

  int r_array[6][4][5] = {
    {{2, 382, 650, 0, 1}, {12, 377, 540, 5, 1}, {18, 374, 480, 20, 1}, {20, 371, 855, 10, 0}},  // chick
    {{2, 382, 600, 0, 1}, {12, 376, 600, 3, 1}, {15, 374, 480, 10, 1}, {18, 370, 855, 10, 0}},  // quail
    {{7, 381, 700, 0, 1}, {13, 376, 600, 3, 1}, {25, 373, 560, 20, 1}, {30, 370, 855, 10, 0}},  // duck
    {{15, 380, 610, 5, 1}, {26, 375, 520, 20, 1}, {27, 374, 690, 10, 0}, {35, 370, 800, 0, 0}}, // muskus
    {{3, 379, 630, 0, 0}, {13, 378, 540, 3, 1}, {26, 375, 560, 20, 1}, {30, 372, 590, 10, 0}},  // goose
    {{6, 379, 560, 0, 1}, {12, 376, 530, 3, 1}, {26, 373, 520, 20, 1}, {30, 370, 855, 10, 0}},  // turkey
  };
и обращение к нему:

Код: Выделить всё

  for (int d = 4; d >= 0; d--) {
    if (currentDay < r_array[bird][d][0]) {
      needTemp = float(r_array[bird][d][1] / 10.0);
      needHum = float(r_array[bird][d][2] / 10.0);
      ventTime = r_array[bird][d][3];
      needTurn = r_array[bird][d][4];
    }
Переменная d принимает значения от 4 до 0, но в массиве нет 4-го индекса! Код надо исправлять.
И еще вопрос по режимам. Судя по коду задумано так, что для кур первый период длится всего 1 день? Этого достаточно? А последний начнется с 19-го дня? Но если после 19 дня перегрузить контроллер (или он сам перезагрузится), то режим инкубации уже не считается с массива режимов, и значения режима будут приняты по-умолчанию:

Код: Выделить всё

float needTemp = 37.6;             // нужная для текущего дня температура инкубации (по умолчанию)
float needHum = 60.5;              // ---- влажность
int ventTime = 2;                       // длительность проветривания
что не будет соответствовать этому режиму инкубации, и может повлиять на результат инкубации не лучшим образом.
Думаю это надо иметь ввиду тем кто просто заливает прошивку в контроллер.

Аватара пользователя
Umka
Команда UM
Сообщения: 6274
Зарегистрирован: 04 июн 2015, 13:45
Откуда: Суджа
Контактная информация:

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Umka » 16 фев 2018, 08:04

And писал(а):Переменная d принимает значения от 4 до 0, но в массиве нет 4-го индекса! Код надо исправлять.
Верно. Надо 3 поставить.
And писал(а):что для кур первый период длится всего 1 день?
Да, первый день прогрев до 38. Так и задумано так и рекомендуют.
And писал(а):Но если после 19 дня перегрузить контроллер (или он сам перезагрузится), то режим инкубации уже не считается с массива режимов, и значения режима будут приняты по-умолчанию
После 19 дня яйца в выводной шкаф переносят. Для большинства не актуально.

Этот скетч как есть опубликован, некогда заниматься его правками. Но он открытый и все могут принять участие. Найдете баг - пишите, поправим. Самому искать пока некогда - сезон! К осени можно и перелопатить код будет.

Aslanvu
Сообщения: 9
Зарегистрирован: 15 фев 2018, 20:01

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Aslanvu » 21 фев 2018, 09:58

T1 постоянно показывает 85 град. Есть там датчик или нет, без разницы. В чем может быть причина? Сам скетч я не трогал.

Аватара пользователя
Umka
Команда UM
Сообщения: 6274
Зарегистрирован: 04 июн 2015, 13:45
Откуда: Суджа
Контактная информация:

Re: Открытый скетч автопрограммы инкубатора.

Сообщение Umka » 21 фев 2018, 14:29

Нет датчика. Ошибка в его подключении.

Ответить