"Народный" инкубатор

AleksandrM
Offline
Зарегистрирован: 20.07.2017

Можно ли посмотреть фото ящика инкубатора? Я понимаю он используеться для проветривания и охлаждения?

Интересует место установки вентилятора.

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

Кому вопрос?

AleksandrM
Offline
Зарегистрирован: 20.07.2017

К спецам в вопросе инкубации

 

Кто знает как правильно сделать

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

AleksandrM пишет:

К спецам в вопросе инкубации

Кто знает как правильно сделать

В блиц норме установлен так

https://incubatorus.ru/wp-content/uploads/2016/04/Blits-norma-1.jpg

 

 

AleksandrM
Offline
Зарегистрирован: 20.07.2017

Подскажите кто знает .Приобрел датчик АМ2320 он после нескольких минут работы перестает отзываться. после включения-отключения питания все повторяеться. Как с этим бороться?

Umka
Umka аватар
Offline
Зарегистрирован: 19.10.2012

1. Выкинуть китайский датчик.

2. Приобрести нормальный SHT30/31/35

3. Profit!

Лёвчег
Offline
Зарегистрирован: 07.02.2016

Здравствуйте! 

Был бы признателен, если кинете схему. А то чувствую накашмарю!

spotok
Offline
Зарегистрирован: 26.03.2018

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

И ёще, продувка (вентиляция), должна включаться, например, на 8 секунд через 10 минут и так круглосуточно, эти времена нужно иметь возможность настраивать в небольших пределах. Например: 5-30 сек. через 5-30 мин.

Orange_Ko
Offline
Зарегистрирован: 28.08.2015

AleksandrM пишет:

Может не правильная библиотека? Пришлось править

 #include <Si7021.h> на #include <SI7021.h>

Если так то где взять правильную?

https://github.com/prajaybasu/SI7021

StDenits
Offline
Зарегистрирован: 05.06.2018

@yul-i-an, @others

Можете кое-что пояснить по коду последней версии алгоритма? 

Зачем у вас

>ed = e;

если

>static float ed = 0;

Тоже самое про i.

Не могу нигде найти нормальной реализации ПИД + Брезенхэм: или всё закручено, что не разберёшь и автор - напыщенный сноб, или где-то вкралась ошибка(-и) и результат работы алгоритма - сомнителен.

Тут - вобще сборная солянка, не знаю; как оно работает.

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

ed=e это сохранение ошибки для расчета в следующем цикле
static float ed, i объявляем переменные со значениями по умолчанию.
Про брезенхема - http://arduino.ru/forum/programmirovanie/algoritm-ravnomernogo-raspredel...

StDenits
Offline
Зарегистрирован: 05.06.2018

@yul-i-an

Извиняюсь, возможно протупил. Алгоритм не пробовал, пока.

geniusalexey
Offline
Зарегистрирован: 05.04.2019

@yul-i-an

У меня в инкубаторе используется термокабель в качестве источника тепла, он инерционный, но работает отлично. Пытался установить коэффициент Д для того что бы небыло перерегулирования, но из-за того что система инерционна не работает функция ed = e, так как практически не происходит изменения за секунду, ставил Д 0,1, 1, 10, 100, график нагрева не меняется, идет перерегулирование. Если следить за измением 5 секунд, например высчитывать среднеарифметическое за послендние 5 показаний то должно сработать. Есть вариант вызывать функцию пид реже чем раз в 1,2сек, но нехочется терять быстродействие системы

16:08:03.194 ->  e  0.00  p 0.00  i 11.09  out 11  temp 38.20  ust 38.20  d 0.00  ed 0.00
16:08:04.396 ->  e  0.00  p 0.00  i 11.09  out 11  temp 38.20  ust 38.20  d 0.00  ed 0.00
16:08:05.661 ->  e  0.00  p 0.00  i 11.09  out 11  temp 38.20  ust 38.20  d 0.00  ed 0.00
16:08:06.891 ->  e  0.00  p 0.00  i 11.09  out 11  temp 38.20  ust 38.20  d 0.00  ed 0.00
16:08:08.087 ->  e  0.00  p 0.00  i 11.09  out 11  temp 38.20  ust 38.20  d 0.00  ed 0.00
16:08:09.348 ->  e  0.00  p 0.00  i 11.09  out 11  temp 38.20  ust 38.20  d 0.00  ed 0.00
16:08:10.541 ->  e  0.00  p 0.00  i 11.09  out 11  temp 38.20  ust 38.20  d 0.00  ed 0.00
16:08:11.807 ->  e  0.00  p 0.00  i 11.09  out 11  temp 38.20  ust 38.20  d 0.00  ed 0.00
16:08:12.971 ->  e  0.30  p 3.90  i 11.10  out 15  temp 37.90  ust 38.20  d 0.00  ed 0.30
16:08:14.268 ->  e  0.70  p 9.10  i 11.14  out 20  temp 37.50  ust 38.20  d 0.00  ed 0.70
16:08:15.494 ->  e  1.10  p 14.30  i 11.19  out 25  temp 37.10  ust 38.20  d 0.00  ed 1.10
16:08:16.691 ->  e  1.40  p 18.20  i 11.26  out 29  temp 36.80  ust 38.20  d 0.00  ed 1.40
16:08:17.955 ->  e  1.70  p 22.10  i 11.35  out 33  temp 36.50  ust 38.20  d 0.00  ed 1.70
16:08:19.118 ->  e  1.90  p 24.70  i 11.44  out 36  temp 36.30  ust 38.20  d 0.00  ed 1.90
16:08:20.381 ->  e  2.40  p 31.20  i 11.56  out 42  temp 35.80  ust 38.20  d 0.00  ed 2.40
16:08:21.647 ->  e  2.80  p 36.40  i 11.70  out 48  temp 35.40  ust 38.20  d 0.00  ed 2.80
16:08:22.812 ->  e  3.00  p 39.00  i 11.85  out 50  temp 35.20  ust 38.20  d 0.00  ed 3.00
16:08:24.075 ->  e  3.40  p 44.20  i 12.02  out 56  temp 34.80  ust 38.20  d 0.00  ed 3.40
16:08:25.339 ->  e  3.70  p 48.10  i 12.21  out 60  temp 34.50  ust 38.20  d 0.00  ed 3.70
16:08:26.540 ->  e  3.90  p 50.70  i 12.40  out 63  temp 34.30  ust 38.20  d 0.00  ed 3.90
16:08:27.772 ->  e  4.10  p 53.30  i 12.61  out 65  temp 34.10  ust 38.20  d 0.00  ed 4.10
16:08:28.968 ->  e  4.30  p 55.90  i 12.82  out 68  temp 33.90  ust 38.20  d 0.00  ed 4.30
16:08:30.231 ->  e  4.60  p 59.80  i 13.05  out 72  temp 33.60  ust 38.20  d 0.00  ed 4.60
16:08:31.426 ->  e  4.80  p 62.40  i 13.29  out 75  temp 33.40  ust 38.20  d 0.00  ed 4.80
16:08:32.656 ->  e  5.00  p 65.00  i 13.54  out 78  temp 33.20  ust 38.20  d 0.00  ed 5.00
16:08:33.919 ->  e  5.20  p 67.60  i 13.80  out 81  temp 33.00  ust 38.20  d 0.00  ed 5.20
16:08:35.109 ->  e  5.50  p 71.50  i 14.08  out 85  temp 32.70  ust 38.20  d 0.00  ed 5.50
16:08:36.337 ->  e  5.70  p 74.10  i 14.36  out 88  temp 32.50  ust 38.20  d 0.00  ed 5.70
16:08:37.574 ->  e  5.90  p 76.70  i 14.66  out 91  temp 32.30  ust 38.20  d 0.00  ed 5.90
16:08:38.842 ->  e  6.10  p 79.30  i 14.96  out 94  temp 32.10  ust 38.20  d 0.00  ed 6.10
16:08:40.040 ->  e  6.40  p 83.20  i 15.28  out 98  temp 31.80  ust 38.20  d 0.00  ed 6.40
16:08:41.305 ->  e  6.60  p 85.80  i 15.61  out 100  temp 31.60  ust 38.20  d 0.00  ed 6.60
16:08:42.491 ->  e  6.70  p 87.10  i 15.95  out 100  temp 31.50  ust 38.20  d 0.00  ed 6.70
16:08:43.757 ->  e  6.90  p 89.70  i 16.29  out 100  temp 31.30  ust 38.20  d 0.00  ed 6.90
16:08:44.960 ->  e  7.00  p 91.00  i 16.64  out 100  temp 31.20  ust 38.20  d 0.00  ed 7.00
16:08:46.178 ->  e  7.20  p 93.60  i 17.00  out 100  temp 31.00  ust 38.20  d 0.00  ed 7.20
16:08:47.407 ->  e  7.40  p 96.20  i 17.37  out 100  temp 30.80  ust 38.20  d 0.00  ed 7.40
16:08:48.705 ->  e  7.60  p 98.80  i 17.75  out 100  temp 30.60  ust 38.20  d 0.00  ed 7.60
16:08:49.898 ->  e  7.70  p 100.10  i 18.14  out 100  temp 30.50  ust 38.20  d 0.00  ed 7.70
16:08:51.094 ->  e  7.80  p 101.40  i 18.53  out 100  temp 30.40  ust 38.20  d 0.00  ed 7.80
16:08:52.356 ->  e  7.90  p 102.70  i 18.92  out 100  temp 30.30  ust 38.20  d 0.00  ed 7.90
16:08:53.587 ->  e  8.10  p 105.30  i 19.33  out 100  temp 30.10  ust 38.20  d 0.00  ed 8.10
16:08:54.819 ->  e  8.30  p 107.90  i 19.74  out 100  temp 29.90  ust 38.20  d 0.00  ed 8.30
16:08:56.046 ->  e  8.30  p 107.90  i 20.16  out 100  temp 29.90  ust 38.20  d 0.00  ed 8.30
16:08:57.280 ->  e  8.30  p 107.90  i 20.57  out 100  temp 29.90  ust 38.20  d 0.00  ed 8.30
16:08:58.486 ->  e  8.20  p 106.60  i 20.98  out 100  temp 30.00  ust 38.20  d 0.00  ed 8.20
16:08:59.722 ->  e  8.10  p 105.30  i 21.39  out 100  temp 30.10  ust 38.20  d 0.00  ed 8.10
16:09:00.923 ->  e  8.10  p 105.30  i 21.79  out 100  temp 30.10  ust 38.20  d 0.00  ed 8.10
16:09:02.152 ->  e  8.00  p 104.00  i 22.19  out 100  temp 30.20  ust 38.20  d 0.00  ed 8.00
16:09:03.451 ->  e  7.90  p 102.70  i 22.59  out 100  temp 30.30  ust 38.20  d 0.00  ed 7.90
16:09:04.613 ->  e  7.70  p 100.10  i 22.97  out 100  temp 30.50  ust 38.20  d 0.00  ed 7.70
16:09:05.843 ->  e  7.60  p 98.80  i 23.35  out 100  temp 30.60  ust 38.20  d 0.00  ed 7.60
16:09:07.108 ->  e  7.50  p 97.50  i 23.73  out 100  temp 30.70  ust 38.20  d 0.00  ed 7.50
16:09:08.303 ->  e  7.40  p 96.20  i 24.10  out 100  temp 30.80  ust 38.20  d 0.00  ed 7.40
16:09:09.562 ->  e  7.30  p 94.90  i 24.46  out 100  temp 30.90  ust 38.20  d 0.00  ed 7.30
16:09:10.793 ->  e  7.20  p 93.60  i 24.82  out 100  temp 31.00  ust 38.20  d 0.00  ed 7.20
16:09:12.018 ->  e  7.10  p 92.30  i 25.18  out 100  temp 31.10  ust 38.20  d 0.00  ed 7.10
16:09:13.247 ->  e  6.90  p 89.70  i 25.52  out 100  temp 31.30  ust 38.20  d 0.00  ed 6.90
16:09:14.438 ->  e  6.80  p 88.40  i 25.86  out 100  temp 31.40  ust 38.20  d 0.00  ed 6.80
16:09:15.702 ->  e  6.70  p 87.10  i 26.20  out 100  temp 31.50  ust 38.20  d 0.00  ed 6.70
16:09:16.898 ->  e  6.60  p 85.80  i 26.53  out 100  temp 31.60  ust 38.20  d 0.00  ed 6.60
16:09:18.135 ->  e  6.40  p 83.20  i 26.85  out 100  temp 31.80  ust 38.20  d 0.00  ed 6.40
16:09:19.369 ->  e  6.40  p 83.20  i 27.17  out 100  temp 31.80  ust 38.20  d 0.00  ed 6.40
16:09:20.598 ->  e  6.20  p 80.60  i 27.48  out 100  temp 32.00  ust 38.20  d 0.00  ed 6.20
16:09:21.824 ->  e  6.10  p 79.30  i 27.78  out 100  temp 32.10  ust 38.20  d 0.00  ed 6.10
16:09:23.082 ->  e  6.00  p 78.00  i 28.08  out 100  temp 32.20  ust 38.20  d 0.00  ed 6.00
16:09:24.279 ->  e  5.90  p 76.70  i 28.38  out 100  temp 32.30  ust 38.20  d 0.00  ed 5.90
16:09:25.512 ->  e  5.70  p 74.10  i 28.66  out 100  temp 32.50  ust 38.20  d 0.00  ed 5.70
16:09:26.782 ->  e  5.60  p 72.80  i 28.94  out 100  temp 32.60  ust 38.20  d 0.00  ed 5.60
16:09:27.982 ->  e  5.50  p 71.50  i 29.22  out 100  temp 32.70  ust 38.20  d 0.00  ed 5.50
16:09:29.217 ->  e  5.30  p 68.90  i 29.48  out 98  temp 32.90  ust 38.20  d 0.00  ed 5.30
16:09:30.409 ->  e  5.20  p 67.60  i 29.74  out 97  temp 33.00  ust 38.20  d 0.00  ed 5.20
16:09:31.677 ->  e  5.20  p 67.60  i 30.00  out 97  temp 33.00  ust 38.20  d 0.00  ed 5.20
16:09:32.879 ->  e  5.10  p 66.30  i 30.26  out 96  temp 33.10  ust 38.20  d 0.00  ed 5.10
16:09:34.111 ->  e  4.90  p 63.70  i 30.50  out 94  temp 33.30  ust 38.20  d 0.00  ed 4.90
16:09:35.346 ->  e  4.80  p 62.40  i 30.74  out 93  temp 33.40  ust 38.20  d 0.00  ed 4.80
16:09:36.581 ->  e  4.70  p 61.10  i 30.98  out 92  temp 33.50  ust 38.20  d 0.00  ed 4.70
16:09:37.781 ->  e  4.60  p 59.80  i 31.21  out 91  temp 33.60  ust 38.20  d 0.00  ed 4.60
16:09:39.011 ->  e  4.40  p 57.20  i 31.43  out 88  temp 33.80  ust 38.20  d 0.00  ed 4.40
16:09:40.282 ->  e  4.30  p 55.90  i 31.64  out 87  temp 33.90  ust 38.20  d 0.00  ed 4.30
16:09:41.492 ->  e  4.20  p 54.60  i 31.85  out 86  temp 34.00  ust 38.20  d 0.00  ed 4.20
16:09:42.757 ->  e  4.10  p 53.30  i 32.06  out 85  temp 34.10  ust 38.20  d 0.00  ed 4.10
16:09:43.963 ->  e  4.10  p 53.30  i 32.26  out 85  temp 34.10  ust 38.20  d 0.00  ed 4.10
16:09:45.234 ->  e  3.90  p 50.70  i 32.46  out 83  temp 34.30  ust 38.20  d 0.00  ed 3.90
16:09:46.434 ->  e  3.80  p 49.40  i 32.65  out 82  temp 34.40  ust 38.20  d 0.00  ed 3.80
16:09:47.638 ->  e  3.70  p 48.10  i 32.83  out 80  temp 34.50  ust 38.20  d 0.00  ed 3.70
16:09:48.903 ->  e  3.60  p 46.80  i 33.01  out 79  temp 34.60  ust 38.20  d 0.00  ed 3.60
16:09:50.102 ->  e  3.60  p 46.80  i 33.19  out 79  temp 34.60  ust 38.20  d 0.00  ed 3.60
16:09:51.344 ->  e  3.40  p 44.20  i 33.36  out 77  temp 34.80  ust 38.20  d 0.00  ed 3.40
16:09:52.541 ->  e  3.30  p 42.90  i 33.53  out 76  temp 34.90  ust 38.20  d 0.00  ed 3.30
16:09:53.798 ->  e  3.20  p 41.60  i 33.69  out 75  temp 35.00  ust 38.20  d 0.00  ed 3.20
16:09:55.066 ->  e  3.10  p 40.30  i 33.84  out 74  temp 35.10  ust 38.20  d 0.00  ed 3.10
16:09:56.228 ->  e  3.00  p 39.00  i 33.99  out 72  temp 35.20  ust 38.20  d 0.00  ed 3.00
16:09:57.493 ->  e  2.90  p 37.70  i 34.14  out 71  temp 35.30  ust 38.20  d 0.00  ed 2.90
16:09:58.745 ->  e  2.90  p 37.70  i 34.28  out 71  temp 35.30  ust 38.20  d 0.00  ed 2.90
16:09:59.938 ->  e  2.70  p 35.10  i 34.42  out 69  temp 35.50  ust 38.20  d 0.00  ed 2.70
16:10:01.168 ->  e  2.70  p 35.10  i 34.55  out 69  temp 35.50  ust 38.20  d 0.00  ed 2.70
16:10:02.368 ->  e  2.60  p 33.80  i 34.68  out 68  temp 35.60  ust 38.20  d 0.00  ed 2.60
16:10:03.633 ->  e  2.40  p 31.20  i 34.80  out 66  temp 35.80  ust 38.20  d 0.00  ed 2.40
16:10:04.871 ->  e  2.40  p 31.20  i 34.92  out 66  temp 35.80  ust 38.20  d 0.00  ed 2.40
16:10:06.078 ->  e  2.20  p 28.60  i 35.03  out 63  temp 36.00  ust 38.20  d 0.00  ed 2.20
16:10:07.315 ->  e  2.20  p 28.60  i 35.14  out 63  temp 36.00  ust 38.20  d 0.00  ed 2.20
16:10:08.546 ->  e  2.10  p 27.30  i 35.25  out 62  temp 36.10  ust 38.20  d 0.00  ed 2.10
16:10:09.773 ->  e  2.10  p 27.30  i 35.35  out 62  temp 36.10  ust 38.20  d 0.00  ed 2.10
16:10:11.001 ->  e  1.90  p 24.70  i 35.45  out 60  temp 36.30  ust 38.20  d 0.00  ed 1.90
16:10:12.229 ->  e  1.80  p 23.40  i 35.54  out 58  temp 36.40  ust 38.20  d 0.00  ed 1.80
16:10:13.454 ->  e  1.80  p 23.40  i 35.63  out 59  temp 36.40  ust 38.20  d 0.00  ed 1.80
16:10:14.652 ->  e  1.70  p 22.10  i 35.71  out 57  temp 36.50  ust 38.20  d 0.00  ed 1.70
16:10:15.917 ->  e  1.60  p 20.80  i 35.79  out 56  temp 36.60  ust 38.20  d 0.00  ed 1.60
16:10:17.151 ->  e  1.60  p 20.80  i 35.87  out 56  temp 36.60  ust 38.20  d 0.00  ed 1.60
16:10:18.381 ->  e  1.50  p 19.50  i 35.95  out 55  temp 36.70  ust 38.20  d 0.00  ed 1.50
16:10:19.551 ->  e  1.40  p 18.20  i 36.02  out 54  temp 36.80  ust 38.20  d 0.00  ed 1.40
16:10:20.819 ->  e  1.30  p 16.90  i 36.08  out 52  temp 36.90  ust 38.20  d 0.00  ed 1.30
16:10:22.017 ->  e  1.20  p 15.60  i 36.14  out 51  temp 37.00  ust 38.20  d 0.00  ed 1.20
16:10:23.276 ->  e  1.20  p 15.60  i 36.20  out 51  temp 37.00  ust 38.20  d 0.00  ed 1.20
16:10:24.543 ->  e  1.10  p 14.30  i 36.26  out 50  temp 37.10  ust 38.20  d 0.00  ed 1.10
16:10:25.743 ->  e  1.10  p 14.30  i 36.31  out 50  temp 37.10  ust 38.20  d 0.00  ed 1.10
16:10:26.943 ->  e  0.90  p 11.70  i 36.36  out 48  temp 37.30  ust 38.20  d 0.00  ed 0.90
16:10:28.206 ->  e  0.90  p 11.70  i 36.40  out 48  temp 37.30  ust 38.20  d 0.00  ed 0.90
16:10:29.430 ->  e  0.80  p 10.40  i 36.44  out 46  temp 37.40  ust 38.20  d 0.00  ed 0.80
16:10:30.621 ->  e  0.70  p 9.10  i 36.48  out 45  temp 37.50  ust 38.20  d 0.00  ed 0.70
16:10:31.898 ->  e  0.70  p 9.10  i 36.51  out 45  temp 37.50  ust 38.20  d 0.00  ed 0.70
16:10:33.103 ->  e  0.60  p 7.80  i 36.54  out 44  temp 37.60  ust 38.20  d 0.00  ed 0.60
16:10:34.341 ->  e  0.60  p 7.80  i 36.57  out 44  temp 37.60  ust 38.20  d 0.00  ed 0.60
16:10:35.537 ->  e  0.50  p 6.50  i 36.60  out 43  temp 37.70  ust 38.20  d 0.00  ed 0.50
16:10:36.798 ->  e  0.40  p 5.20  i 36.62  out 41  temp 37.80  ust 38.20  d 0.00  ed 0.40
16:10:37.997 ->  e  0.40  p 5.20  i 36.64  out 41  temp 37.80  ust 38.20  d 0.00  ed 0.40
16:10:39.267 ->  e  0.30  p 3.90  i 36.65  out 40  temp 37.90  ust 38.20  d 0.00  ed 0.30
16:10:40.463 ->  e  0.20  p 2.60  i 36.66  out 39  temp 38.00  ust 38.20  d 0.00  ed 0.20
16:10:41.698 ->  e  0.20  p 2.60  i 36.67  out 39  temp 38.00  ust 38.20  d 0.00  ed 0.20
16:10:42.898 ->  e  0.10  p 1.30  i 36.68  out 37  temp 38.10  ust 38.20  d 0.00  ed 0.10
16:10:44.169 ->  e  0.10  p 1.30  i 36.68  out 37  temp 38.10  ust 38.20  d 0.00  ed 0.10
16:10:45.363 ->  e  0.00  p 0.00  i 36.68  out 36  temp 38.20  ust 38.20  d 0.00  ed 0.00
16:10:46.591 ->  e  -0.10  p 0.00  i 36.68  out 36  temp 38.30  ust 38.20  d 0.00  ed -0.10
16:10:47.860 ->  e  -0.10  p 0.00  i 36.67  out 36  temp 38.30  ust 38.20  d 0.00  ed -0.10
16:10:49.067 ->  e  -0.20  p 0.00  i 36.66  out 36  temp 38.40  ust 38.20  d 0.00  ed -0.20
16:10:50.307 ->  e  -0.20  p 0.00  i 36.65  out 36  temp 38.40  ust 38.20  d 0.00  ed -0.20
16:10:51.578 ->  e  -0.30  p 0.00  i 36.64  out 36  temp 38.50  ust 38.20  d 0.00  ed -0.30
16:10:52.785 ->  e  -0.30  p 0.00  i 36.62  out 36  temp 38.50  ust 38.20  d 0.00  ed -0.30
16:10:54.019 ->  e  -0.40  p 0.00  i 36.60  out 36  temp 38.60  ust 38.20  d 0.00  ed -0.40
16:10:55.217 ->  e  -0.40  p 0.00  i 36.58  out 36  temp 38.60  ust 38.20  d 0.00  ed -0.40
16:10:56.490 ->  e  -0.50  p 0.00  i 36.56  out 36  temp 38.70  ust 38.20  d 0.00  ed -0.50
16:10:57.685 ->  e  -0.50  p 0.00  i 36.53  out 36  temp 38.70  ust 38.20  d 0.00  ed -0.50
16:10:58.948 ->  e  -0.60  p 0.00  i 36.50  out 36  temp 38.80  ust 38.20  d 0.00  ed -0.60
16:11:00.172 ->  e  -0.60  p 0.00  i 36.47  out 36  temp 38.80  ust 38.20  d 0.00  ed -0.60
16:11:01.403 ->  e  -0.60  p 0.00  i 36.44  out 36  temp 38.80  ust 38.20  d 0.00  ed -0.60
16:11:02.597 ->  e  -0.70  p 0.00  i 36.41  out 36  temp 38.90  ust 38.20  d 0.00  ed -0.70
16:11:03.866 ->  e  -0.70  p 0.00  i 36.37  out 36  temp 38.90  ust 38.20  d 0.00  ed -0.70
16:11:05.068 ->  e  -0.80  p 0.00  i 36.33  out 36  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:11:06.302 ->  e  -0.80  p 0.00  i 36.29  out 36  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:11:07.533 ->  e  -0.90  p 0.00  i 36.25  out 36  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:11:08.772 ->  e  -0.90  p 0.00  i 36.20  out 36  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:11:10.011 ->  e  -0.90  p 0.00  i 36.16  out 36  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:11:11.218 ->  e  -1.00  p 0.00  i 36.11  out 36  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:11:12.449 ->  e  -1.00  p 0.00  i 36.06  out 36  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:11:13.716 ->  e  -1.10  p 0.00  i 36.00  out 36  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:11:14.916 ->  e  -1.10  p 0.00  i 35.95  out 35  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:11:16.108 ->  e  -1.10  p 0.00  i 35.89  out 35  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:11:17.369 ->  e  -1.20  p 0.00  i 35.83  out 35  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:11:18.558 ->  e  -1.20  p 0.00  i 35.77  out 35  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:11:19.858 ->  e  -1.30  p 0.00  i 35.71  out 35  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:11:21.055 ->  e  -1.30  p 0.00  i 35.64  out 35  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:11:22.284 ->  e  -1.30  p 0.00  i 35.58  out 35  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:11:23.479 ->  e  -1.30  p 0.00  i 35.51  out 35  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:11:24.717 ->  e  -1.40  p 0.00  i 35.44  out 35  temp 39.60  ust 38.20  d 0.00  ed -1.40
16:11:25.959 ->  e  -1.40  p 0.00  i 35.37  out 35  temp 39.60  ust 38.20  d 0.00  ed -1.40
16:11:27.152 ->  e  -1.40  p 0.00  i 35.30  out 35  temp 39.60  ust 38.20  d 0.00  ed -1.40
16:11:28.446 ->  e  -1.40  p 0.00  i 35.23  out 35  temp 39.60  ust 38.20  d 0.00  ed -1.40
16:11:29.641 ->  e  -1.50  p 0.00  i 35.16  out 35  temp 39.70  ust 38.20  d 0.00  ed -1.50
16:11:30.903 ->  e  -1.60  p 0.00  i 35.08  out 35  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:11:32.098 ->  e  -1.60  p 0.00  i 35.00  out 34  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:11:33.326 ->  e  -1.60  p 0.00  i 34.92  out 34  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:11:34.553 ->  e  -1.60  p 0.00  i 34.84  out 34  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:11:35.787 ->  e  -1.60  p 0.00  i 34.76  out 34  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:11:36.987 ->  e  -1.70  p 0.00  i 34.67  out 34  temp 39.90  ust 38.20  d 0.00  ed -1.70
16:11:38.285 ->  e  -1.70  p 0.00  i 34.59  out 34  temp 39.90  ust 38.20  d 0.00  ed -1.70
16:11:39.448 ->  e  -1.70  p 0.00  i 34.50  out 34  temp 39.90  ust 38.20  d 0.00  ed -1.70
16:11:40.713 ->  e  -1.80  p 0.00  i 34.41  out 34  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:11:41.943 ->  e  -1.80  p 0.00  i 34.32  out 34  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:11:43.172 ->  e  -1.80  p 0.00  i 34.23  out 34  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:11:44.401 ->  e  -1.80  p 0.00  i 34.14  out 34  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:11:45.662 ->  e  -1.80  p 0.00  i 34.05  out 34  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:11:46.860 ->  e  -1.80  p 0.00  i 33.96  out 33  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:11:48.112 ->  e  -1.90  p 0.00  i 33.87  out 33  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:11:49.342 ->  e  -1.90  p 0.00  i 33.77  out 33  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:11:50.543 ->  e  -1.90  p 0.00  i 33.68  out 33  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:11:51.802 ->  e  -1.90  p 0.00  i 33.58  out 33  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:11:52.995 ->  e  -1.90  p 0.00  i 33.49  out 33  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:11:54.196 ->  e  -1.90  p 0.00  i 33.39  out 33  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:11:55.466 ->  e  -1.90  p 0.00  i 33.30  out 33  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:11:56.666 ->  e  -2.00  p 0.00  i 33.20  out 33  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:11:57.905 ->  e  -2.00  p 0.00  i 33.10  out 33  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:11:59.168 ->  e  -2.00  p 0.00  i 33.00  out 32  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:00.360 ->  e  -2.00  p 0.00  i 32.90  out 32  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:01.624 ->  e  -2.00  p 0.00  i 32.80  out 32  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:02.824 ->  e  -2.00  p 0.00  i 32.70  out 32  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:04.085 ->  e  -2.00  p 0.00  i 32.60  out 32  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:05.281 ->  e  -2.10  p 0.00  i 32.49  out 32  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:06.545 ->  e  -2.10  p 0.00  i 32.39  out 32  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:07.770 ->  e  -2.10  p 0.00  i 32.28  out 32  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:09.003 ->  e  -2.10  p 0.00  i 32.18  out 32  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:10.232 ->  e  -2.10  p 0.00  i 32.07  out 32  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:11.425 ->  e  -2.10  p 0.00  i 31.97  out 31  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:12.654 ->  e  -2.10  p 0.00  i 31.86  out 31  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:13.922 ->  e  -2.10  p 0.00  i 31.76  out 31  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:15.090 ->  e  -2.10  p 0.00  i 31.65  out 31  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:16.329 ->  e  -2.10  p 0.00  i 31.55  out 31  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:17.609 ->  e  -2.10  p 0.00  i 31.44  out 31  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:18.826 ->  e  -2.10  p 0.00  i 31.34  out 31  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:20.018 ->  e  -2.10  p 0.00  i 31.23  out 31  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:21.287 ->  e  -2.10  p 0.00  i 31.13  out 31  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:22.523 ->  e  -2.10  p 0.00  i 31.02  out 31  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:23.690 ->  e  -2.10  p 0.00  i 30.92  out 30  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:24.917 ->  e  -2.10  p 0.00  i 30.81  out 30  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:26.178 ->  e  -2.10  p 0.00  i 30.71  out 30  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:27.402 ->  e  -2.10  p 0.00  i 30.60  out 30  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:28.667 ->  e  -2.10  p 0.00  i 30.50  out 30  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:29.865 ->  e  -2.10  p 0.00  i 30.39  out 30  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:31.093 ->  e  -2.10  p 0.00  i 30.29  out 30  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:32.367 ->  e  -2.10  p 0.00  i 30.18  out 30  temp 40.30  ust 38.20  d 0.00  ed -2.10
16:12:33.533 ->  e  -2.00  p 0.00  i 30.08  out 30  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:34.773 ->  e  -2.00  p 0.00  i 29.98  out 29  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:36.008 ->  e  -2.00  p 0.00  i 29.88  out 29  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:37.275 ->  e  -2.00  p 0.00  i 29.78  out 29  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:38.473 ->  e  -2.00  p 0.00  i 29.68  out 29  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:39.702 ->  e  -2.00  p 0.00  i 29.58  out 29  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:40.970 ->  e  -2.00  p 0.00  i 29.48  out 29  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:42.205 ->  e  -2.00  p 0.00  i 29.38  out 29  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:43.437 ->  e  -2.00  p 0.00  i 29.28  out 29  temp 40.20  ust 38.20  d 0.00  ed -2.00
16:12:44.603 ->  e  -1.90  p 0.00  i 29.19  out 29  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:12:45.870 ->  e  -1.90  p 0.00  i 29.09  out 29  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:12:47.034 ->  e  -1.90  p 0.00  i 29.00  out 28  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:12:48.333 ->  e  -1.90  p 0.00  i 28.90  out 28  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:12:49.520 ->  e  -1.90  p 0.00  i 28.81  out 28  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:12:50.778 ->  e  -1.90  p 0.00  i 28.71  out 28  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:12:52.006 ->  e  -1.90  p 0.00  i 28.62  out 28  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:12:53.241 ->  e  -1.90  p 0.00  i 28.52  out 28  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:12:54.471 ->  e  -1.90  p 0.00  i 28.43  out 28  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:12:55.697 ->  e  -1.90  p 0.00  i 28.33  out 28  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:12:56.893 ->  e  -1.90  p 0.00  i 28.24  out 28  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:12:58.187 ->  e  -1.90  p 0.00  i 28.14  out 28  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:12:59.348 ->  e  -1.90  p 0.00  i 28.05  out 28  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:13:00.619 ->  e  -1.90  p 0.00  i 27.95  out 27  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:13:01.885 ->  e  -1.90  p 0.00  i 27.86  out 27  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:13:03.082 ->  e  -1.90  p 0.00  i 27.76  out 27  temp 40.10  ust 38.20  d 0.00  ed -1.90
16:13:04.348 ->  e  -1.80  p 0.00  i 27.67  out 27  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:13:05.546 ->  e  -1.80  p 0.00  i 27.58  out 27  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:13:06.771 ->  e  -1.80  p 0.00  i 27.49  out 27  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:13:08.000 ->  e  -1.80  p 0.00  i 27.40  out 27  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:13:09.229 ->  e  -1.80  p 0.00  i 27.31  out 27  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:13:10.460 ->  e  -1.80  p 0.00  i 27.22  out 27  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:13:11.662 ->  e  -1.80  p 0.00  i 27.13  out 27  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:13:12.932 ->  e  -1.80  p 0.00  i 27.04  out 27  temp 40.00  ust 38.20  d 0.00  ed -1.80
16:13:14.161 ->  e  -1.70  p 0.00  i 26.96  out 26  temp 39.90  ust 38.20  d 0.00  ed -1.70
16:13:15.390 ->  e  -1.70  p 0.00  i 26.87  out 26  temp 39.90  ust 38.20  d 0.00  ed -1.70
16:13:16.622 ->  e  -1.70  p 0.00  i 26.79  out 26  temp 39.90  ust 38.20  d 0.00  ed -1.70
16:13:17.852 ->  e  -1.70  p 0.00  i 26.70  out 26  temp 39.90  ust 38.20  d 0.00  ed -1.70
16:13:19.046 ->  e  -1.70  p 0.00  i 26.62  out 26  temp 39.90  ust 38.20  d 0.00  ed -1.70
16:13:20.311 ->  e  -1.70  p 0.00  i 26.53  out 26  temp 39.90  ust 38.20  d 0.00  ed -1.70
16:13:21.541 ->  e  -1.60  p 0.00  i 26.45  out 26  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:13:22.774 ->  e  -1.60  p 0.00  i 26.37  out 26  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:13:23.976 ->  e  -1.60  p 0.00  i 26.29  out 26  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:13:25.210 ->  e  -1.60  p 0.00  i 26.21  out 26  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:13:26.409 ->  e  -1.60  p 0.00  i 26.13  out 26  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:13:27.643 ->  e  -1.60  p 0.00  i 26.05  out 26  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:13:28.841 ->  e  -1.60  p 0.00  i 25.97  out 25  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:13:30.107 ->  e  -1.60  p 0.00  i 25.89  out 25  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:13:31.336 ->  e  -1.60  p 0.00  i 25.81  out 25  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:13:32.559 ->  e  -1.60  p 0.00  i 25.73  out 25  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:13:33.785 ->  e  -1.60  p 0.00  i 25.65  out 25  temp 39.80  ust 38.20  d 0.00  ed -1.60
16:13:35.041 ->  e  -1.50  p 0.00  i 25.58  out 25  temp 39.70  ust 38.20  d 0.00  ed -1.50
16:13:36.240 ->  e  -1.50  p 0.00  i 25.50  out 25  temp 39.70  ust 38.20  d 0.00  ed -1.50
16:13:37.464 ->  e  -1.50  p 0.00  i 25.43  out 25  temp 39.70  ust 38.20  d 0.00  ed -1.50
16:13:38.735 ->  e  -1.50  p 0.00  i 25.35  out 25  temp 39.70  ust 38.20  d 0.00  ed -1.50
16:13:39.925 ->  e  -1.40  p 0.00  i 25.28  out 25  temp 39.60  ust 38.20  d 0.00  ed -1.40
16:13:41.192 ->  e  -1.40  p 0.00  i 25.21  out 25  temp 39.60  ust 38.20  d 0.00  ed -1.40
16:13:42.432 ->  e  -1.40  p 0.00  i 25.14  out 25  temp 39.60  ust 38.20  d 0.00  ed -1.40
16:13:43.598 ->  e  -1.40  p 0.00  i 25.07  out 25  temp 39.60  ust 38.20  d 0.00  ed -1.40
16:13:44.860 ->  e  -1.40  p 0.00  i 25.00  out 25  temp 39.60  ust 38.20  d 0.00  ed -1.40
16:13:46.060 ->  e  -1.40  p 0.00  i 24.93  out 24  temp 39.60  ust 38.20  d 0.00  ed -1.40
16:13:47.323 ->  e  -1.40  p 0.00  i 24.86  out 24  temp 39.60  ust 38.20  d 0.00  ed -1.40
16:13:48.555 ->  e  -1.40  p 0.00  i 24.79  out 24  temp 39.60  ust 38.20  d 0.00  ed -1.40
16:13:49.757 ->  e  -1.30  p 0.00  i 24.73  out 24  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:13:51.021 ->  e  -1.30  p 0.00  i 24.66  out 24  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:13:52.220 ->  e  -1.30  p 0.00  i 24.60  out 24  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:13:53.483 ->  e  -1.30  p 0.00  i 24.53  out 24  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:13:54.682 ->  e  -1.30  p 0.00  i 24.47  out 24  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:13:55.915 ->  e  -1.30  p 0.00  i 24.40  out 24  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:13:57.141 ->  e  -1.30  p 0.00  i 24.34  out 24  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:13:58.335 ->  e  -1.20  p 0.00  i 24.28  out 24  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:13:59.567 ->  e  -1.20  p 0.00  i 24.22  out 24  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:14:00.830 ->  e  -1.20  p 0.00  i 24.16  out 24  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:14:02.025 ->  e  -1.20  p 0.00  i 24.10  out 24  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:14:03.287 ->  e  -1.10  p 0.00  i 24.04  out 24  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:14:04.549 ->  e  -1.10  p 0.00  i 23.99  out 23  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:14:05.713 ->  e  -1.10  p 0.00  i 23.93  out 23  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:14:06.988 ->  e  -1.10  p 0.00  i 23.88  out 23  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:14:08.194 ->  e  -1.10  p 0.00  i 23.82  out 23  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:14:09.466 ->  e  -1.10  p 0.00  i 23.77  out 23  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:14:10.659 ->  e  -1.10  p 0.00  i 23.71  out 23  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:14:11.896 ->  e  -1.10  p 0.00  i 23.66  out 23  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:14:13.105 ->  e  -1.10  p 0.00  i 23.60  out 23  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:14:14.369 ->  e  -1.00  p 0.00  i 23.55  out 23  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:14:15.605 ->  e  -1.00  p 0.00  i 23.50  out 23  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:14:16.769 ->  e  -1.00  p 0.00  i 23.45  out 23  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:14:18.034 ->  e  -1.00  p 0.00  i 23.40  out 23  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:14:19.232 ->  e  -1.00  p 0.00  i 23.35  out 23  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:14:20.458 ->  e  -1.00  p 0.00  i 23.30  out 23  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:14:21.754 ->  e  -0.90  p 0.00  i 23.26  out 23  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:14:22.951 ->  e  -0.90  p 0.00  i 23.21  out 23  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:14:24.174 ->  e  -0.90  p 0.00  i 23.17  out 23  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:14:25.432 ->  e  -0.90  p 0.00  i 23.12  out 23  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:14:26.601 ->  e  -0.90  p 0.00  i 23.08  out 23  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:14:27.866 ->  e  -0.90  p 0.00  i 23.03  out 23  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:14:29.094 ->  e  -0.90  p 0.00  i 22.99  out 22  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:14:30.364 ->  e  -0.90  p 0.00  i 22.94  out 22  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:14:31.531 ->  e  -0.90  p 0.00  i 22.90  out 22  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:14:32.824 ->  e  -0.90  p 0.00  i 22.85  out 22  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:14:33.986 ->  e  -0.90  p 0.00  i 22.81  out 22  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:14:35.246 ->  e  -0.80  p 0.00  i 22.77  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:36.443 ->  e  -0.80  p 0.00  i 22.73  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:37.746 ->  e  -0.80  p 0.00  i 22.69  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:38.911 ->  e  -0.80  p 0.00  i 22.65  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:40.135 ->  e  -0.80  p 0.00  i 22.61  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:41.396 ->  e  -0.80  p 0.00  i 22.57  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:42.589 ->  e  -0.80  p 0.00  i 22.53  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:43.852 ->  e  -0.80  p 0.00  i 22.49  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:45.047 ->  e  -0.80  p 0.00  i 22.45  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:46.323 ->  e  -0.80  p 0.00  i 22.41  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:47.520 ->  e  -0.80  p 0.00  i 22.37  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:48.751 ->  e  -0.80  p 0.00  i 22.33  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:49.983 ->  e  -0.80  p 0.00  i 22.29  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:51.175 ->  e  -0.80  p 0.00  i 22.25  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:52.443 ->  e  -0.80  p 0.00  i 22.21  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:53.699 ->  e  -0.80  p 0.00  i 22.17  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:54.892 ->  e  -0.80  p 0.00  i 22.13  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:56.155 ->  e  -0.80  p 0.00  i 22.09  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:57.348 ->  e  -0.80  p 0.00  i 22.05  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:58.609 ->  e  -0.80  p 0.00  i 22.01  out 22  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:14:59.803 ->  e  -0.80  p 0.00  i 21.97  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:01.031 ->  e  -0.80  p 0.00  i 21.93  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:02.287 ->  e  -0.80  p 0.00  i 21.89  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:03.486 ->  e  -0.80  p 0.00  i 21.85  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:04.749 ->  e  -0.80  p 0.00  i 21.81  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:05.937 ->  e  -0.80  p 0.00  i 21.77  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:07.201 ->  e  -0.80  p 0.00  i 21.73  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:08.401 ->  e  -0.80  p 0.00  i 21.69  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:09.602 ->  e  -0.80  p 0.00  i 21.65  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:10.858 ->  e  -0.80  p 0.00  i 21.61  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:12.055 ->  e  -0.80  p 0.00  i 21.57  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:13.326 ->  e  -0.80  p 0.00  i 21.53  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:14.526 ->  e  -0.80  p 0.00  i 21.49  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:15.795 ->  e  -0.80  p 0.00  i 21.45  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:16.996 ->  e  -0.80  p 0.00  i 21.41  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:18.252 ->  e  -0.80  p 0.00  i 21.37  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:19.484 ->  e  -0.80  p 0.00  i 21.33  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:20.676 ->  e  -0.80  p 0.00  i 21.29  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:21.910 ->  e  -0.80  p 0.00  i 21.25  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:23.136 ->  e  -0.80  p 0.00  i 21.21  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:24.361 ->  e  -0.80  p 0.00  i 21.17  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:25.656 ->  e  -0.80  p 0.00  i 21.13  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:26.822 ->  e  -0.80  p 0.00  i 21.09  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:28.046 ->  e  -0.80  p 0.00  i 21.05  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:29.310 ->  e  -0.80  p 0.00  i 21.01  out 21  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:30.505 ->  e  -0.80  p 0.00  i 20.97  out 20  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:31.774 ->  e  -0.80  p 0.00  i 20.93  out 20  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:32.973 ->  e  -0.80  p 0.00  i 20.89  out 20  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:34.204 ->  e  -0.80  p 0.00  i 20.85  out 20  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:35.406 ->  e  -0.80  p 0.00  i 20.81  out 20  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:36.678 ->  e  -0.80  p 0.00  i 20.77  out 20  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:37.870 ->  e  -0.80  p 0.00  i 20.73  out 20  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:39.134 ->  e  -0.80  p 0.00  i 20.69  out 20  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:40.364 ->  e  -0.80  p 0.00  i 20.65  out 20  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:41.624 ->  e  -0.80  p 0.00  i 20.61  out 20  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:42.815 ->  e  -0.80  p 0.00  i 20.57  out 20  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:15:44.078 ->  e  -0.90  p 0.00  i 20.52  out 20  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:15:45.280 ->  e  -0.90  p 0.00  i 20.48  out 20  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:15:46.497 ->  e  -0.90  p 0.00  i 20.43  out 20  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:15:47.725 ->  e  -0.90  p 0.00  i 20.39  out 20  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:15:48.993 ->  e  -0.90  p 0.00  i 20.34  out 20  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:15:50.189 ->  e  -0.90  p 0.00  i 20.30  out 20  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:15:51.459 ->  e  -0.90  p 0.00  i 20.25  out 20  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:15:52.661 ->  e  -0.90  p 0.00  i 20.21  out 20  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:15:53.853 ->  e  -0.90  p 0.00  i 20.16  out 20  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:15:55.117 ->  e  -0.90  p 0.00  i 20.12  out 20  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:15:56.347 ->  e  -0.90  p 0.00  i 20.07  out 20  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:15:57.574 ->  e  -0.90  p 0.00  i 20.03  out 20  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:15:58.766 ->  e  -0.90  p 0.00  i 19.98  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:00.030 ->  e  -0.90  p 0.00  i 19.94  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:01.296 ->  e  -0.90  p 0.00  i 19.89  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:02.454 ->  e  -0.90  p 0.00  i 19.85  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:03.715 ->  e  -0.90  p 0.00  i 19.80  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:04.979 ->  e  -0.90  p 0.00  i 19.76  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:06.136 ->  e  -0.90  p 0.00  i 19.71  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:07.398 ->  e  -0.90  p 0.00  i 19.67  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:08.662 ->  e  -0.90  p 0.00  i 19.62  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:09.889 ->  e  -0.90  p 0.00  i 19.57  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:11.116 ->  e  -0.90  p 0.00  i 19.53  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:12.321 ->  e  -0.90  p 0.00  i 19.48  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:13.585 ->  e  -0.90  p 0.00  i 19.44  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:14.779 ->  e  -0.90  p 0.00  i 19.39  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:16.010 ->  e  -0.90  p 0.00  i 19.35  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:17.208 ->  e  -0.90  p 0.00  i 19.30  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:18.450 ->  e  -0.90  p 0.00  i 19.26  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:19.713 ->  e  -0.90  p 0.00  i 19.21  out 19  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:16:20.916 ->  e  -1.00  p 0.00  i 19.17  out 19  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:22.151 ->  e  -1.00  p 0.00  i 19.12  out 19  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:23.413 ->  e  -1.00  p 0.00  i 19.07  out 19  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:24.614 ->  e  -1.00  p 0.00  i 19.02  out 19  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:25.870 ->  e  -1.00  p 0.00  i 18.97  out 18  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:27.066 ->  e  -1.00  p 0.00  i 18.92  out 18  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:28.329 ->  e  -1.00  p 0.00  i 18.87  out 18  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:29.517 ->  e  -1.00  p 0.00  i 18.82  out 18  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:30.748 ->  e  -1.00  p 0.00  i 18.77  out 18  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:32.015 ->  e  -1.00  p 0.00  i 18.72  out 18  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:33.178 ->  e  -1.00  p 0.00  i 18.67  out 18  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:34.444 ->  e  -1.00  p 0.00  i 18.62  out 18  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:35.636 ->  e  -1.00  p 0.00  i 18.57  out 18  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:36.902 ->  e  -1.00  p 0.00  i 18.52  out 18  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:38.103 ->  e  -1.00  p 0.00  i 18.47  out 18  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:39.337 ->  e  -1.00  p 0.00  i 18.42  out 18  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:40.573 ->  e  -1.00  p 0.00  i 18.37  out 18  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:16:41.838 ->  e  -1.10  p 0.00  i 18.31  out 18  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:43.041 ->  e  -1.10  p 0.00  i 18.26  out 18  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:44.275 ->  e  -1.10  p 0.00  i 18.20  out 18  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:45.473 ->  e  -1.10  p 0.00  i 18.15  out 18  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:46.743 ->  e  -1.10  p 0.00  i 18.09  out 18  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:47.932 ->  e  -1.10  p 0.00  i 18.04  out 18  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:49.170 ->  e  -1.10  p 0.00  i 17.98  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:50.368 ->  e  -1.10  p 0.00  i 17.93  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:51.626 ->  e  -1.10  p 0.00  i 17.87  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:52.891 ->  e  -1.10  p 0.00  i 17.82  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:54.092 ->  e  -1.10  p 0.00  i 17.76  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:55.348 ->  e  -1.10  p 0.00  i 17.71  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:56.541 ->  e  -1.10  p 0.00  i 17.65  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:57.777 ->  e  -1.10  p 0.00  i 17.60  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:16:58.973 ->  e  -1.10  p 0.00  i 17.54  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:00.234 ->  e  -1.10  p 0.00  i 17.49  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:01.504 ->  e  -1.10  p 0.00  i 17.43  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:02.697 ->  e  -1.10  p 0.00  i 17.38  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:03.965 ->  e  -1.10  p 0.00  i 17.32  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:05.162 ->  e  -1.10  p 0.00  i 17.27  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:06.432 ->  e  -1.10  p 0.00  i 17.21  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:07.591 ->  e  -1.10  p 0.00  i 17.16  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:08.851 ->  e  -1.10  p 0.00  i 17.10  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:10.086 ->  e  -1.10  p 0.00  i 17.05  out 17  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:11.281 ->  e  -1.10  p 0.00  i 16.99  out 16  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:12.542 ->  e  -1.10  p 0.00  i 16.94  out 16  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:13.740 ->  e  -1.10  p 0.00  i 16.88  out 16  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:15.004 ->  e  -1.10  p 0.00  i 16.83  out 16  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:16.173 ->  e  -1.10  p 0.00  i 16.77  out 16  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:17.473 ->  e  -1.10  p 0.00  i 16.72  out 16  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:18.671 ->  e  -1.10  p 0.00  i 16.66  out 16  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:19.909 ->  e  -1.10  p 0.00  i 16.61  out 16  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:21.099 ->  e  -1.10  p 0.00  i 16.55  out 16  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:22.364 ->  e  -1.10  p 0.00  i 16.50  out 16  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:23.603 ->  e  -1.20  p 0.00  i 16.44  out 16  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:24.844 ->  e  -1.10  p 0.00  i 16.38  out 16  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:26.080 ->  e  -1.20  p 0.00  i 16.32  out 16  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:27.289 ->  e  -1.20  p 0.00  i 16.26  out 16  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:28.525 ->  e  -1.20  p 0.00  i 16.20  out 16  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:29.728 ->  e  -1.20  p 0.00  i 16.14  out 16  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:30.971 ->  e  -1.20  p 0.00  i 16.08  out 16  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:32.171 ->  e  -1.10  p 0.00  i 16.03  out 16  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:33.438 ->  e  -1.10  p 0.00  i 15.97  out 15  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:17:34.638 ->  e  -1.20  p 0.00  i 15.91  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:35.905 ->  e  -1.20  p 0.00  i 15.85  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:37.104 ->  e  -1.20  p 0.00  i 15.79  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:38.334 ->  e  -1.20  p 0.00  i 15.73  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:39.598 ->  e  -1.20  p 0.00  i 15.67  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:40.789 ->  e  -1.20  p 0.00  i 15.61  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:42.049 ->  e  -1.20  p 0.00  i 15.55  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:43.250 ->  e  -1.20  p 0.00  i 15.49  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:44.519 ->  e  -1.20  p 0.00  i 15.43  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:45.683 ->  e  -1.20  p 0.00  i 15.37  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:46.956 ->  e  -1.20  p 0.00  i 15.31  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:48.190 ->  e  -1.20  p 0.00  i 15.25  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:49.387 ->  e  -1.20  p 0.00  i 15.19  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:50.650 ->  e  -1.20  p 0.00  i 15.13  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:51.855 ->  e  -1.20  p 0.00  i 15.07  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:53.091 ->  e  -1.20  p 0.00  i 15.01  out 15  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:54.284 ->  e  -1.20  p 0.00  i 14.95  out 14  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:55.547 ->  e  -1.20  p 0.00  i 14.89  out 14  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:56.812 ->  e  -1.20  p 0.00  i 14.83  out 14  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:58.010 ->  e  -1.20  p 0.00  i 14.77  out 14  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:17:59.241 ->  e  -1.20  p 0.00  i 14.71  out 14  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:00.440 ->  e  -1.20  p 0.00  i 14.65  out 14  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:01.670 ->  e  -1.20  p 0.00  i 14.59  out 14  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:02.870 ->  e  -1.20  p 0.00  i 14.53  out 14  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:04.137 ->  e  -1.30  p 0.00  i 14.46  out 14  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:05.395 ->  e  -1.30  p 0.00  i 14.40  out 14  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:06.597 ->  e  -1.30  p 0.00  i 14.33  out 14  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:07.831 ->  e  -1.30  p 0.00  i 14.27  out 14  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:09.065 ->  e  -1.20  p 0.00  i 14.21  out 14  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:10.263 ->  e  -1.30  p 0.00  i 14.14  out 14  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:11.529 ->  e  -1.20  p 0.00  i 14.08  out 14  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:12.765 ->  e  -1.20  p 0.00  i 14.02  out 14  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:13.961 ->  e  -1.20  p 0.00  i 13.96  out 13  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:15.208 ->  e  -1.30  p 0.00  i 13.90  out 13  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:16.427 ->  e  -1.30  p 0.00  i 13.83  out 13  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:17.647 ->  e  -1.30  p 0.00  i 13.77  out 13  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:18.862 ->  e  -1.30  p 0.00  i 13.70  out 13  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:20.116 ->  e  -1.20  p 0.00  i 13.64  out 13  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:21.382 ->  e  -1.30  p 0.00  i 13.58  out 13  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:22.573 ->  e  -1.30  p 0.00  i 13.51  out 13  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:23.808 ->  e  -1.30  p 0.00  i 13.45  out 13  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:25.080 ->  e  -1.30  p 0.00  i 13.38  out 13  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:26.316 ->  e  -1.30  p 0.00  i 13.32  out 13  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:27.510 ->  e  -1.30  p 0.00  i 13.25  out 13  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:28.772 ->  e  -1.30  p 0.00  i 13.19  out 13  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:29.944 ->  e  -1.30  p 0.00  i 13.13  out 13  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:31.221 ->  e  -1.30  p 0.00  i 13.06  out 13  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:32.392 ->  e  -1.30  p 0.00  i 13.00  out 12  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:33.657 ->  e  -1.30  p 0.00  i 12.93  out 12  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:34.921 ->  e  -1.30  p 0.00  i 12.87  out 12  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:36.152 ->  e  -1.30  p 0.00  i 12.80  out 12  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:37.345 ->  e  -1.30  p 0.00  i 12.74  out 12  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:38.580 ->  e  -1.30  p 0.00  i 12.67  out 12  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:39.778 ->  e  -1.30  p 0.00  i 12.61  out 12  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:41.039 ->  e  -1.30  p 0.00  i 12.54  out 12  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:42.268 ->  e  -1.30  p 0.00  i 12.48  out 12  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:43.470 ->  e  -1.30  p 0.00  i 12.41  out 12  temp 39.50  ust 38.20  d 0.00  ed -1.30
16:18:44.700 ->  e  -1.20  p 0.00  i 12.35  out 12  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:45.927 ->  e  -1.20  p 0.00  i 12.29  out 12  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:47.193 ->  e  -1.20  p 0.00  i 12.23  out 12  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:48.429 ->  e  -1.20  p 0.00  i 12.17  out 12  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:49.631 ->  e  -1.20  p 0.00  i 12.11  out 12  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:50.907 ->  e  -1.20  p 0.00  i 12.05  out 12  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:52.109 ->  e  -1.20  p 0.00  i 11.99  out 11  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:53.309 ->  e  -1.20  p 0.00  i 11.93  out 11  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:54.577 ->  e  -1.20  p 0.00  i 11.87  out 11  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:55.818 ->  e  -1.20  p 0.00  i 11.81  out 11  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:57.017 ->  e  -1.20  p 0.00  i 11.75  out 11  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:58.251 ->  e  -1.20  p 0.00  i 11.69  out 11  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:18:59.480 ->  e  -1.20  p 0.00  i 11.63  out 11  temp 39.40  ust 38.20  d 0.00  ed -1.20
16:19:00.684 ->  e  -1.10  p 0.00  i 11.57  out 11  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:01.946 ->  e  -1.10  p 0.00  i 11.52  out 11  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:03.143 ->  e  -1.10  p 0.00  i 11.46  out 11  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:04.412 ->  e  -1.10  p 0.00  i 11.41  out 11  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:05.576 ->  e  -1.10  p 0.00  i 11.35  out 11  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:06.814 ->  e  -1.10  p 0.00  i 11.30  out 11  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:08.084 ->  e  -1.10  p 0.00  i 11.24  out 11  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:09.287 ->  e  -1.10  p 0.00  i 11.19  out 11  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:10.580 ->  e  -1.10  p 0.00  i 11.13  out 11  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:11.743 ->  e  -1.10  p 0.00  i 11.08  out 11  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:13.021 ->  e  -1.10  p 0.00  i 11.02  out 11  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:14.188 ->  e  -1.10  p 0.00  i 10.97  out 10  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:15.452 ->  e  -1.10  p 0.00  i 10.91  out 10  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:16.685 ->  e  -1.10  p 0.00  i 10.86  out 10  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:17.875 ->  e  -1.10  p 0.00  i 10.80  out 10  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:19.167 ->  e  -1.10  p 0.00  i 10.75  out 10  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:20.367 ->  e  -1.10  p 0.00  i 10.69  out 10  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:21.633 ->  e  -1.10  p 0.00  i 10.64  out 10  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:22.800 ->  e  -1.10  p 0.00  i 10.58  out 10  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:24.072 ->  e  -1.10  p 0.00  i 10.53  out 10  temp 39.30  ust 38.20  d 0.00  ed -1.10
16:19:25.269 ->  e  -1.00  p 0.00  i 10.48  out 10  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:19:26.477 ->  e  -1.00  p 0.00  i 10.43  out 10  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:19:27.706 ->  e  -1.00  p 0.00  i 10.38  out 10  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:19:28.965 ->  e  -1.00  p 0.00  i 10.33  out 10  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:19:30.159 ->  e  -1.00  p 0.00  i 10.28  out 10  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:19:31.424 ->  e  -1.00  p 0.00  i 10.23  out 10  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:19:32.658 ->  e  -1.00  p 0.00  i 10.18  out 10  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:19:33.852 ->  e  -1.00  p 0.00  i 10.13  out 10  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:19:35.119 ->  e  -1.00  p 0.00  i 10.08  out 10  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:19:36.355 ->  e  -1.00  p 0.00  i 10.03  out 10  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:19:37.554 ->  e  -1.00  p 0.00  i 9.98  out 9  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:19:38.786 ->  e  -1.00  p 0.00  i 9.93  out 9  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:19:40.054 ->  e  -1.00  p 0.00  i 9.88  out 9  temp 39.20  ust 38.20  d 0.00  ed -1.00
16:19:41.282 ->  e  -0.90  p 0.00  i 9.83  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:42.477 ->  e  -0.90  p 0.00  i 9.79  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:43.705 ->  e  -0.90  p 0.00  i 9.74  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:44.972 ->  e  -0.90  p 0.00  i 9.70  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:46.164 ->  e  -0.90  p 0.00  i 9.65  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:47.426 ->  e  -0.90  p 0.00  i 9.61  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:48.624 ->  e  -0.90  p 0.00  i 9.56  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:49.901 ->  e  -0.90  p 0.00  i 9.52  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:51.105 ->  e  -0.90  p 0.00  i 9.47  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:52.332 ->  e  -0.90  p 0.00  i 9.43  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:53.565 ->  e  -0.90  p 0.00  i 9.38  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:54.758 ->  e  -0.90  p 0.00  i 9.34  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:56.029 ->  e  -0.90  p 0.00  i 9.29  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:57.235 ->  e  -0.90  p 0.00  i 9.25  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:58.467 ->  e  -0.90  p 0.00  i 9.20  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:19:59.670 ->  e  -0.90  p 0.00  i 9.16  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:00.901 ->  e  -0.90  p 0.00  i 9.11  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:02.167 ->  e  -0.90  p 0.00  i 9.07  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:03.433 ->  e  -0.90  p 0.00  i 9.02  out 9  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:04.598 ->  e  -0.90  p 0.00  i 8.98  out 8  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:05.896 ->  e  -0.90  p 0.00  i 8.93  out 8  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:07.094 ->  e  -0.90  p 0.00  i 8.89  out 8  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:08.290 ->  e  -0.90  p 0.00  i 8.84  out 8  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:09.519 ->  e  -0.90  p 0.00  i 8.80  out 8  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:10.750 ->  e  -0.90  p 0.00  i 8.75  out 8  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:12.016 ->  e  -0.90  p 0.00  i 8.71  out 8  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:13.211 ->  e  -0.90  p 0.00  i 8.66  out 8  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:14.446 ->  e  -0.90  p 0.00  i 8.62  out 8  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:15.671 ->  e  -0.90  p 0.00  i 8.57  out 8  temp 39.10  ust 38.20  d 0.00  ed -0.90
16:20:16.930 ->  e  -0.80  p 0.00  i 8.53  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:18.130 ->  e  -0.80  p 0.00  i 8.49  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:19.365 ->  e  -0.80  p 0.00  i 8.45  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:20.627 ->  e  -0.80  p 0.00  i 8.41  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:21.820 ->  e  -0.80  p 0.00  i 8.37  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:23.052 ->  e  -0.80  p 0.00  i 8.33  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:24.250 ->  e  -0.80  p 0.00  i 8.29  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:25.552 ->  e  -0.80  p 0.00  i 8.25  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:26.712 ->  e  -0.80  p 0.00  i 8.21  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:27.974 ->  e  -0.80  p 0.00  i 8.17  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:29.244 ->  e  -0.80  p 0.00  i 8.13  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:30.432 ->  e  -0.80  p 0.00  i 8.09  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:31.631 ->  e  -0.80  p 0.00  i 8.05  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:32.862 ->  e  -0.80  p 0.00  i 8.01  out 8  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:34.092 ->  e  -0.80  p 0.00  i 7.97  out 7  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:35.352 ->  e  -0.80  p 0.00  i 7.93  out 7  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:36.609 ->  e  -0.80  p 0.00  i 7.89  out 7  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:37.798 ->  e  -0.80  p 0.00  i 7.85  out 7  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:39.060 ->  e  -0.80  p 0.00  i 7.81  out 7  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:40.250 ->  e  -0.80  p 0.00  i 7.77  out 7  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:41.484 ->  e  -0.80  p 0.00  i 7.73  out 7  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:42.753 ->  e  -0.80  p 0.00  i 7.69  out 7  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:43.918 ->  e  -0.80  p 0.00  i 7.65  out 7  temp 39.00  ust 38.20  d 0.00  ed -0.80
16:20:45.186 ->  e  -0.80  p 0.00  i 7.61  out 7  temp 39.00  ust 38.20  d 0.00  ed -0.80

Здесь Д=0 в коде, но видно что изменений практически нет за 1 цикл. 

Изменил вызов функции на 3 сек, потребовалось установить коэфф. Д = 200 чтобы убрать перерегулирование. 

Везде Р=15, I=0, слева направо пид 1сек, далее ПИД раз в 3 сек,  Д=1, Д=10, Д=30, Д=100, Д=200

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

geniusalexey пишет:

@yul-i-an

У меня в инкубаторе используется термокабель в качестве источника тепла, он инерционный, но работает отлично. Пытался установить коэффициент Д для того что бы небыло перерегулирования, но из-за того что система инерционна не работает функция ed = e, так как практически не происходит изменения за секунду, ставил Д 0,1, 1, 10, 100, график нагрева не меняется, идет перерегулирование. Если следить за измением 5 секунд, например высчитывать среднеарифметическое за послендние 5 показаний то должно сработать. Есть вариант вызывать функцию пид реже чем раз в 1,2сек, но нехочется терять быстродействие системы

В этом посте примерный подход к настройе регулятора.

Д - это как ускоритель и замедлитель при резких внешних возмущениях

stranik9
Offline
Зарегистрирован: 19.08.2019

Доброго всем времени! что то тема заглохла,

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

спросите зачем, да просто он у меня валяется без дела типа  Нокиа 5110

кто чем сможет, помогите.

с уважением Валерий

Украина, Николаев

yul-i-an
yul-i-an аватар
Offline
Зарегистрирован: 10.12.2012

Просто в коде заменяете команды вывода на экран и соответственно объявить библиотеку для экрана на который осуществляется вывод.

Посмотрите примеры вывода на оба дисплея и проведите анологии между командами.

stranik9
Offline
Зарегистрирован: 19.08.2019

Доброго всем времени! вопрос к знатокам, подскажите пож. тупому как выставить значения ПИД, у меня стоят на обогрев лампы, и еще один вопрос поставил датчик Si7021 , нужно ли его покрыть лаком.

с ув. Валерий

lean_74
Offline
Зарегистрирован: 22.12.2015

Для ламп там все по умолчанию настроено, а про лак- это Вы серьезно?

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

stranik9 пишет:

 поставил датчик Si7021 , нужно ли его покрыть лаком.

Лучше матом покрой, и то лучше работать будет, чем лакированный. 

stranik9
Offline
Зарегистрирован: 19.08.2019

матом то мы завсегда могем, я же имел ввиду не всю платку, а места пайки

DetSimen
DetSimen аватар
Онлайн
Зарегистрирован: 25.01.2017

Где тут хоть слово про места пайки? 

stranik9 пишет:

Доброго всем времени! вопрос к знатокам, подскажите пож. тупому как выставить значения ПИД, у меня стоят на обогрев лампы, и еще один вопрос поставил датчик Si7021 , нужно ли его покрыть лаком.

с ув. Валерий

stranik9
Offline
Зарегистрирован: 19.08.2019

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

с ув.

conder
Offline
Зарегистрирован: 20.01.2014

День добрый, мне так и не удалось оживить полностью , скеч "lean_74" народный инкубатор" этот франкенштейн не заработал. Меню все включается, открывается и правится, температура и влажность показывает, pin6 heater нагреватель не включается, pin 13 fan постоянно под тянут на +5 вольт.

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

#include <avr/wdt.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
#include "DHT.h"//мой датчик влажности
//include <Si7021.h>
#include <OneWire.h>
#include <Wire.h>
OneWire ds(7);
#define START_CONVERT 0
#define READ_TEMP 1



#define DHTPIN 11     // what digital pin we're connected to
#define DHTTYPE DHT11   // DHT 11, DHT 22
DHT dht(DHTPIN, DHTTYPE);
//SI7021 si7021; //раскоментировать, если используем датчик si7021.

LiquidCrystal_I2C lcd(0x3F, 16, 2);  // инициализация библиотеки дисплея

//номера выводов кнопок
//#define EXT_HEATING                  // ИСПОЛЬЗУЕМ ДОП.НАГРЕВАТЕЛЬ ВМЕСТО УВЛАЖНИТЕЛЯ. Если нужен увлажнитель, просто закомментируйте эту строку.
#define heater_pin 6                  // нагреватель
#define humidifer_pin 12               // увлажнитель
#define fan_pin 13                     // вентилятор
#define alarm_pin 10                   // пин аварии
#define beeper_pin 14                   //пищалка по аварии

#define turn_pin 8                     // управление поворотом вперед
//#define pin9 9                    // проверка
//#define extend_heater_pin 8         // дополнительный нагреватель
#define button_minus_pin 3            //пин кнопки "минус"
#define button_plus_pin 4             //пин кнопки "плюс"
#define button_enter_pin 5           //пин кнопки "enter"
#define DS18B20_Pin 7                 //пин термометра
//Пин 2 Вход обработки прерывания для детектора нуля и управления семистором
#define voltmeter_pin 15               //вход А1 через делитель (22к/10к) подключен к питанию модуля. Измеряет до 16В.


boolean button_minus;                // статус нажатия кнопок
boolean button_plus;
boolean button_enter;

unsigned long currentTime;            // задаем переменные для тайминга поворота
unsigned long loopTime;
unsigned long serialTime; //this will help us know when to talk with processing

boolean hotFlag1 = 0;              // флаг включения обогревателя основного   1-ошибка, включать нельзя
boolean fanFlag = 0;        // флаг включения вентилятора проветривания 1-включено проветривание
unsigned long trhMillis = 0;

boolean flag = 0;
int clockTime = 0; // флаг того что выводим температуру или влажность
unsigned long lastMillis = millis();
int TimeTemp = 4;  //время следующего измерения температуры в секундах
int TimeTurn = 20;  //время поворота в десятых долях секунды

const unsigned long TRHSTEP   = 300UL;  // Период опроса датчиков

//int counter=0;//для проверки вачдога

volatile uint8_t minut=0;
//volatile uint8_t chas=0;
int chas=0;
volatile uint8_t sec=0;
int den=0;
int oldden=0;
int oldchas=0;

int temp=0; // температура Далласа
float temp1=0; // температура Далласа с десятыми
float temp2=0; // температура DHT, si7021
float hum=0;

int del = 80;                     // переменная ожидания между выборами меню
unsigned int interval = 200;      // интервал сколько будет длиться цикл while, после чего перейдёт к следующему меню.(кол-во итераций)

boolean out=0;//управление симистором yul-i-an
int reg,er,zad;//    yul-i-an
double I,Kp=3,Ki=0.45,Kd=0.6,pre_err,err; //    yul-i-an

unsigned long alarmDelay;

float needTemp = 37.6;                  // нужная для текущего дня температура инкубации (по умолчанию)
float needHum = 60.5;                   // ---- влажность
int ventTime = 2;                       // длительность проветривания
boolean needTurn = false;               // нужен ли поворот яиц?
int bird=0;

// make some custom characters:
byte znak_g[8] = {//г
  0b11111,
  0b10001,
  0b10000,
  0b10000,
  0b10000,
  0b10000,
  0b10000,
  0b00000
};
byte znak_b[8] = {//Б
  0b11111,
  0b10001,
  0b10000,
  0b11110,
  0b10001,
  0b10001,
  0b11110,
  0b00000
};

byte znak_p[8] = {
  0b11111,
  0b10001,
  0b10001,
  0b10001,
  0b10001,
  0b10001,
  0b10001,
  0b00000
};
byte znak_i[8] = {
  0b10001,
  0b10001,
  0b10011,
  0b10101,
  0b11001,
  0b10001,
  0b10001,
  0b00000
};

byte znak_l[8] = {
  0b00111,
  0b01001,
  0b10001,
  0b10001,
  0b10001,
  0b10001,
  0b10001,
  0b00000
};

byte light_znak[8] = {
  0b10000,
  0b10000,
  0b10000,
  0b11110,
  0b10001,
  0b10001,
  0b01110,
  0b00000
};

byte znak_u[8] = {
  0b10001,
  0b10001,
  0b10001,
  0b01111,
  0b00001,
  0b10001,
  0b01110,
  0b00000
};


byte znak_ia[8] = {
  0b01111,
  0b10001,
  0b10001,
  0b01111,
  0b00101,
  0b01001,
  0b10001,
  0b00000
};
byte znak_d[8] = {
  0b01110,
  0b01010,
  0b01010,
  0b01010,
  0b01010,
  0b11111,
  0b10001,
  0b00000
};
byte znak_ch[8] = {
  0b10001,
  0b10001,
  0b10001,
  0b01111,
  0b00001,
  0b00001,
  0b00001,
  0b00000
};
byte znak_c[8] = {
  0b10010,
  0b10010,
  0b10010,
  0b10010,
  0b10010,
  0b10010,
  0b11111,
  0b00001
};

//расчет мощности по ПИД закону регулирования
//_------------------------------------------------------------
#define kP 6//коэффициент пропорциональности 6
#define p_min 0.0//минимум П составляющей - не < 0
#define p_max 100.0//максимум П составляющей - не > 100
#define kI 0.100//коэффициент интегрирования 0.025
#define i_min 0.0//минимум И составляющей
#define i_max 30.0//максимум И составляющей
#define kd 0//коэффициент диференциирования
#define d_ctl 7.0//зона пропорциональности ust-d_ctl
#define out_min 0//минимальный выходной %
#define out_max 100//максимальный выходной %
//возвращает необходимую мощность
uint8_t PIctl(float temp, float ust) {

  uint8_t out = 0; //uint8_t
  static float i = 0;
  static float ed=0;///
  float e, p;
  float d;///
  e = (ust - temp); //ошибка регулирования
  p=(temp<ust-d_ctl)?p_max:(temp>ust)?p_min:(kP*e);//П составляющая
  i=(i<i_min)?i_min:(i>i_max)?i_max:i+(kI*e);//И составляющая
  d=kd*(e-ed);//Д составляющая
  ed=e;///
  out=(p+i+d<out_min)?out_min:(p+i+d>out_max)?out_max:p+i+d;
  //вывод для настройки
     Serial.print(" e  ");
      Serial.print(e);
      Serial.print("  p ");
      Serial.print(p);
      Serial.print("  i ");
      Serial.print(i);
      Serial.print("  out ");
      Serial.println(out);
  return out;
}
//---------------------------------------------------------------



void readSet(){
 den=EEPROM_int_read(100);
 chas=EEPROM_int_read(102);
  int bird;                  // выбор птицы
  int r_array[6][4][5] = {
  {{2, 382, 600, 0, 1}, {12, 376, 600, 3, 1}, {15, 374, 480, 10, 1}, {18, 370, 855, 10, 0}},
  {{2, 378, 550, 0, 1}, {7, 378, 500, 3, 1}, {14, 378, 500, 10, 1}, {16, 375, 700, 0, 0}},
  {{7, 382, 700, 0, 1}, {14, 378, 600, 0, 1}, {25, 378, 600, 10, 1}, {28, 375, 855, 0, 0}},
  {{2, 380, 600, 0, 1}, {7, 378, 550, 0, 1}, {29, 375, 450, 10, 1}, {30, 370, 750, 0, 0}},
  {{7, 378, 700, 0, 1}, {14, 378, 600, 0, 1}, {27, 378, 600, 15, 1}, {30, 375, 855, 0, 0}},
  {{8, 377, 650, 0, 1}, {14, 377, 500, 0, 1}, {25, 375, 650, 10, 1}, {28, 375, 655, 10, 0}},
  };
//Serial.println("readset=");

bird=  EEPROM_int_read(110);
  for (int d=4; d>=0; d--){
  if(den <= r_array[bird][d][0]){
  needTemp = float(r_array[bird][d][1])/10;//
  needHum = float(r_array[bird][d][2])/10; //
  ventTime = r_array[bird][d][3];
  needTurn = r_array[bird][d][4];
  }
  }

  if (den>36 || den<0){
    den=0; //
  }
  if (chas>24){
    chas=0; //
  }
  if (minut>60){
    minut=0; //
  }
 
}
 
void setup(){
   wdt_disable(); // запретили как можно скорее собаку, что-бы не уйти в бесконечный ребут
   Serial.begin(9600);
//   readSet();
    lcd.begin();
    lcd.backlight();     // Включаем подсветку дисплея
    lcd.clear();
    
  // create a new character
//  lcd.createChar(5, znak_g);//г
  lcd.createChar(5, znak_b);//Б
  lcd.createChar(1, znak_i);//И
  lcd.createChar(2, znak_p);//П
  lcd.createChar(3, znak_l);//Л  
  lcd.createChar(4, light_znak);  // мягкий хнак
  lcd.createChar(7, znak_d);  //Д
  lcd.createChar(8, znak_c); //Ц
  lcd.createChar(6, znak_u);//У
   
  lcd.setCursor(0, 0);

  lcd.print("   HAPO");
  lcd.write(7);
  lcd.print("H");
  lcd.write(4);
  lcd.print("|");
  lcd.write(1);
  lcd.setCursor(0, 1);
  lcd.print("   ");
  lcd.write(1);
  lcd.print("HK");
  lcd.write(6);
  lcd.write(5);
  lcd.print("ATOP");


 
  Wire.begin();        // старт I2C
 
   dht.begin();
  //si7021.begin(); // Runs : Wire.begin() + reset() // старт датчика влажности
  delay(3000);// подождем пока датчик запуститься, и завтавка погорит
//  si7021.setHumidityRes(12); // Humidity = 12-bit / Temperature = 14-bit //максимальное разрешение
   

lcd.createChar(5, znak_g);//г
  readSet();  // читаем настройки из еепром
 


// настройкa часов
TCCR1A=(1<<WGM11); //режим14 FAST PWM
TCCR1B=(1<<CS12)|(1<<WGM13)|(1<<WGM12); //делить частоту CPU на 256
ICR1=62499;  // (16000000MHz /div256) -1 = 1 раз в секунду
TIMSK1=(1<<TOIE1); //разрешить прерывание

  tempProcess(START_CONVERT);//конвентируем dallas

  attachInterrupt(0, zero_crosss_int, RISING);//внешнее прерывание на D2
 
  //pinMode(extend_heater_pin, OUTPUT);      //пин дополнительного нагревателя. Переводим в 1 чтобы не включать реле.
  //digitalWrite(extend_heater_pin, HIGH);
  pinMode(heater_pin, OUTPUT);
  pinMode(turn_pin, OUTPUT);      // устанавливаем выводы
//  pinMode(pin9, INPUT);      // устанавливаем выводы
  digitalWrite(turn_pin, HIGH);
  //digitalWrite(turn_pin2, HIGH);
  pinMode(humidifer_pin, OUTPUT);
  pinMode(fan_pin, OUTPUT);
  digitalWrite(fan_pin, HIGH);
  pinMode(alarm_pin, OUTPUT);
  digitalWrite(alarm_pin, HIGH);
  pinMode(button_minus_pin, INPUT_PULLUP); //подтягиваем входы кнопок к плюсу встроенными резисторами
  pinMode(button_plus_pin, INPUT_PULLUP);
  pinMode(button_enter_pin, INPUT_PULLUP);
  alarmDelay = millis();

  wdt_enable(WDTO_8S); // активировали таймер, каждые 8 секунд его нужно сбрасывать

}

ISR (TIMER1_OVF_vect) {
sec++ ; //инкремент переменной каждую секунду
if (sec>59){sec=0; minut++;}
if (minut>59){minut=0; chas++;} // при записи каждый час хватит памяти на 11 лет
if (chas>23){chas=0;den++;}//readSet(); но нам главное знать день инкубации
if (den>36){den=0; } // частный случай для нас не принципиальный, у нас день инкубации
}

void loop(){
 wdt_reset(); // говорим собаке что "В Багдаде все спокойно", начинается очередной отсчет 8-х секунд.
// Serial.print("pin9=");
// Serial.println(digitalRead(pin9));
// Serial.println("   ");

 if (oldchas!=chas){ // раз в час сохраняем время
 EEPROM_int_write(102, chas);
 oldchas=chas;
 }
 if (oldden!=den){ // раз в день читаем настройки заново
 EEPROM_int_write(100, den);
 readSet();
 oldden=den;
 }
   button_read();
  if (!button_enter) {
    delay(del); //
    lcd.clear();
    menu();
  }
  if (!button_minus) {
    delay(del);
    lcd.clear();
    alarmDelay = millis();    // задержка аварии по нажатии кнопки Минус
  }
  if (!button_plus) {
    delay(del);
    lcd.clear();
    digitalWrite(turn_pin, !digitalRead(turn_pin));       // включаем/выключаем реле поворота по кнопке Плюс
  }

  lcd.setCursor(0, 0);
  if (millis() > serialTime)
  {
    PID();//расчитываем ПИД yul-i-an
    serialTime += 1200;
 // err=needTemp-temp1
 Serial.print("needTemp=");
 Serial.println(needTemp);
 Serial.print("temp1=");
 Serial.println(temp1);
 Serial.print("err=");
 Serial.println(err);
 Serial.print("zad=");
 Serial.println(zad);
// Serial.print("serialTime=");
// Serial.println(serialTime);
// Serial.print("hotFlag1=");
// Serial.println(hotFlag1);
  }

    if (flag == 0)
  {
     lastMillis = millis();
    clockTime=!clockTime;
    flag = 1;
  }

  if (millis() - lastMillis >=TimeTemp*1000) {
    flag = 0;
}
  if (clockTime == 1){
  lcd.setCursor(0, 0); // выводим часы и день инкубации
  if (chas < 10) lcd.print(" ");
  lcd.print(chas, DEC);
  lcd.print(":");
  if (minut < 10)lcd.print(0);
  lcd.print(minut, DEC);
  lcd.print(" ");
   lcd.write(7);
    lcd.print("EH");
   lcd.write(4);   
  lcd.print(" ");
  lcd.print(den, DEC);
  lcd.print("     ");
    lcd.setCursor(0, 1);
//    lcd.print("      ");
   lcd.print(temp2, 1);              // печать температуры на дисплей temp%10
   lcd.print((char)223);
   lcd.print(" ");
    printbird(bird);
  }
  else {
    lcd.setCursor(0, 0);                 // устанавливаем курсор в 0-ом столбце, 0 строка (начинается с 0)
    lcd.print("T1=");
    lcd.print(temp/10, 1);              // печать температуры на дисплей temp
    lcd.print(".");
    lcd.print(temp%10, 1);              // печать температуры на дисплей temp%10
    
    lcd.print((char)223);
    lcd.print(" (");
    lcd.print(needTemp, 1);
    lcd.print((char)223);
    lcd.print(")   ");
    lcd.setCursor(0, 1);                 
    lcd.print("H =");
    lcd.print(hum, 1);           // печать влажности на дисплей
    lcd.print("%");
    lcd.print(" (");
    lcd.print(needHum, 1);
    lcd.print("%) ");
  //  lcd.setCursor(15, 3);
  //  lcd.print("   ");

    }

  getSensors(); // получаем данные с датчиков
  humidifer(needHum);
  turn(needTurn);
  fan(ventTime);
  alarm(needTemp);
}


//регулятор ПИД
 void PID(){
   err=needTemp-temp1;
    if (hotFlag1 ==0) I=I+err;//если проветривание или авария не включаем
 
//   zad=Kp*err+(Ki*I*0.25)+(Kd*(err-pre_err)/0.25);
   zad = PIctl(temp1, needTemp); //расчет мощности
   pre_err=err;
   if (temp1>=39.5) //это при перегреве
   {
   zad=0;
    I=0;
   }
  if (zad<0){ zad=0;I=0;}
  if (zad>100){zad=100;}
//   Serial.print("reg=");
//   Serial.println(reg);

 }
 //Внешнее прерывание детектора нуля
 void zero_crosss_int()
{
      ResOut();//Вызов функции управления симистором по алгоритму Брезенхема
}

//управление симистором
void ResOut(){
  delayMicroseconds(1230);//для попадания в ноль
  reg = zad + er;
  if (reg < 50){
    out=0;
    er = reg ;
 
  }
  else {
    out=1;

    er=reg-100;
    }
 if (hotFlag1 ==0){
 digitalWrite(heater_pin,out); //если проветривание или авария не включаем
 }
 else {
 digitalWrite(heater_pin,LOW);
   
  }
 }
 
 //Авто настройка коэффициентов ПИД
void AutoPIDSet(){
  //тут будет автонастройка
}


void button_read() {//функция проверки нажатия кнопки
  button_minus = digitalRead(button_minus_pin); //запоминаем значение кнопки
  button_plus = digitalRead(button_plus_pin); //запоминаем значение кнопки
  button_enter = digitalRead(button_enter_pin); //запоминаем значение кнопки
  if (!button_minus || !button_plus || !button_enter) beeper(50);
  wdt_reset();
}


//меню
void menu() {
  startInk();
  time_setup_chas();
  time_setup_minut();
  bird_setup();  
  turn_setup();
  alarm_setup();
  vent_setup();
}

// записываем в память день начала инкубации
void startInk() {
String str_menu= "START INK";
int perem_menu=den;
int adress_errom=100;
int perem_max=36;
String str_perem="Day";
den= setup_menu(str_menu,perem_menu,adress_errom,perem_max,str_perem);
}
//устанавливаем часы
void time_setup_chas() {
String str_menu= "SETUP HOUR";
int perem_menu=chas;
int adress_errom=102;
int perem_max=23;
String str_perem="Hour";
chas= setup_menu(str_menu,perem_menu,adress_errom,perem_max,str_perem);
}
//устанавливаем минуты
void time_setup_minut() {
String str_menu= "SETUP minute";
int perem_menu=minut;
int adress_errom=0;
int perem_max=59;
String str_perem="minute";
minut= setup_menu(str_menu,perem_menu,adress_errom,perem_max,str_perem);
}

//выбираем птицу /////////////////////////////////////////////////////////

void bird_setup() {
String str_menu= "SETUP bird";
int perem_menu=bird;
int adress_errom=110;
int perem_max=5;
String str_perem="bird";
bird= setup_menu(str_menu,perem_menu,adress_errom,perem_max,str_perem);
}


//устанавливаем поворот
void turn_setup() {
int turnPeriod=EEPROM_int_read(104);                //период поворота лотков в часах
 
String str_menu= "TURN SETUP";
int perem_menu=turnPeriod;
int adress_errom=104;
int perem_max=12;
String str_perem="TURN Hour";
turnPeriod= setup_menu(str_menu,perem_menu,adress_errom,perem_max,str_perem);
}


//устанавливаем сигнализацию
void alarm_setup() {
 int  alarmTemp=EEPROM_int_read(106);
String str_menu= "ALARM SETUP";
int perem_menu=alarmTemp;
int adress_errom=106;
int perem_max=10;
String str_perem="T.Alarm +- C";
alarmTemp= setup_menu(str_menu,perem_menu,adress_errom,perem_max,str_perem);
}

//устанавливаем вентиляцию
void vent_setup() {
int fanTemp=EEPROM_int_read(108);
String str_menu= "A.FAN SETUP";
int perem_menu=fanTemp;
int adress_errom=108;
int perem_max=40;
String str_perem="T.Fan C";
fanTemp= setup_menu(str_menu,perem_menu,adress_errom,perem_max,str_perem);
}

int setup_menu(String str_menu,int perem_menu,int adress_errom,int perem_max,String str_perem) {
  lcd.clear();
  delay(del);
  button_read();
  lcd.setCursor(0, 0);
  lcd.print(str_menu);
  lcd.print("         ");
  delay(1000);
  int x = 0;
  while (1) {
    x++;
    if (x > interval) break;
    button_read();
     if (adress_errom!=0) perem_menu=EEPROM_int_read(adress_errom);
    if (!button_enter) {
      delay(del);
      lcd.clear(); //очищаем экран
      break;
    }
    if (!button_minus) {
      perem_menu--;
  if (perem_menu<0) perem_menu=perem_max;
      if (adress_errom!=0) EEPROM_int_write(adress_errom, perem_menu);
      lcd.clear();
      readSet();
    }

    if (!button_plus) {
      perem_menu++;
      if (perem_menu>perem_max) perem_menu=0;
      if (adress_errom!=0) EEPROM_int_write(adress_errom, perem_menu);
      lcd.clear();
      readSet();
    }
    if (adress_errom!=0) perem_menu= EEPROM_int_read(adress_errom);
    
    lcd.setCursor(0, 0);
    if (str_perem=="bird"){
    lcd.print("BIRD ");
    printbird(perem_menu);
 
    lcd.print("           ");
    
      }else{
    lcd.print(str_perem);
    lcd.print("= ");
    lcd.print(perem_menu);
    lcd.print("           ");
      }
    lcd.setCursor(0, 1);
    lcd.print("START NEXT +1");
    delay(del);
  }
 return perem_menu;
}

void printbird(int nbird){
    switch (nbird) {
      case 0:
        lcd.print("K");  // курица
        lcd.write(6);
        lcd.print("P");  // курица
        lcd.write(1);
        lcd.write(8);
        lcd.print("A    ");  // курица
        break;
      case 1:
        lcd.write(2);
        lcd.print("EPE");  // перепелка
        lcd.write(2);
        lcd.print("E");  // перепелка
        lcd.write(3);
        lcd.print("KA ");  // перепелка
        break;
      case 2:
        lcd.write(6);
        lcd.print("TKA      ");   // утка
        break;
      case 3:
        lcd.write(1);
        lcd.print("H");  // индоутка
        lcd.write(7);
        lcd.print("O");  // индоутка
        lcd.write(6);
        lcd.print("TKA  ");   // утка
        break;
      case 4:
         lcd.write(5);
         lcd.write(6);
         lcd.print("C");  // гусь
         lcd.write(4);
         lcd.print("      ");  // гусь
        break;
      case 5:
        lcd.write(1);
        lcd.print("H"); // индюк
        lcd.write(7);
        lcd.print("|OK    "); // индюк
        
        break;
    }

}


void getSensors() {
  unsigned long curMillis = millis();          // Получаем текущее время работы
  if (curMillis - trhMillis >= TRHSTEP) {    // время для нового измерения?
  temp= tempProcess(READ_TEMP);//читаем темпратуру с далласа
  temp1=float(temp)/10;
  tempProcess(START_CONVERT); // сразу запрос на конвертацию
  }

  // Demonstrate non-blocking calls
  if (curMillis - trhMillis >= TRHSTEP * 4) {    // время для нового измерения?
    
    hum = dht.readHumidity(); //получение темпрературы и влажности с DHT11
    temp2 = dht.readTemperature();
//   temp2=si7021.readTemp(); //получение темпрературы и влажности с si7021
//   hum = si7021.readHumidity();
    
    trhMillis = curMillis;
  }

}

//управляем влажностью
void humidifer(float set_humidity) {
  //float humidity;
  unsigned long humMillis = 0;
  unsigned long curMillis = millis();
   if (set_humidity > hum) digitalWrite(humidifer_pin, HIGH); //сравниваем измеренную влажность с заданной
  else if (set_humidity -5 < hum) digitalWrite(humidifer_pin, LOW); //если влажность низкая, включаем увлажнитель

}

//управляем поворотом
void turn(boolean needTurn) {
  int turnPeriod=EEPROM_int_read(104);                //период поворота лотков в часах
  int turnCommand;
  if (turnPeriod == 0) return;           //если нулевой период поворота, то не поворачиваем яйца.
    turnCommand = turnPeriod;
  currentTime = millis();
  if (needTurn == true) {
    if (currentTime >= (loopTime + turnCommand * 3600000)) {  // 3600000 сравниваем текущий таймер с переменной loopTime + период поворота в часах.
 //     if (turnFlagUp){
       digitalWrite(turn_pin,LOW);
       delay(TimeTurn*100); //время поворота
       digitalWrite(turn_pin,HIGH);
      loopTime = currentTime;    // в loopTime записываем новое значение
    }
  }
}

//управляем авариями
void alarm(float needTemp) {
  int alarmTemp=EEPROM_int_read(106);
    if (temp1> (needTemp + alarmTemp) || temp1 < (needTemp - alarmTemp)) {
      beeper(10);
      digitalWrite(alarm_pin, LOW); //если измеренная температура выше заданной на величину аварии
    }
    else digitalWrite(alarm_pin, HIGH); //то включаем аварийный сигнал.

}

void beeper(int duration) {
  tone(beeper_pin, 2000, duration);
}


//управляем вентиляторами
void fan(int fanTime) {
   int fanTemp=EEPROM_int_read(108);
  if ((chas == 7 && minut < fanTime) || (chas == 19 && minut < fanTime) || (temp1 > 39.5)) { //fanTemp=395
   // digitalWrite( fan_pin, LOW);
    fanFlag=1;
 
    //если наступило время проветривания или измеренная температура выше заданной на величину авариито включаем продувку.
//    digitalWrite(extend_heater_pin, HIGH);  // при этом отключаем обогрев
//    digitalWrite(heater_pin, LOW);
    hotFlag1 = 1;
 //   hotFlag2 = 1;
  }
  else {
    fanFlag=0;
    hotFlag1 = 0;
  }
 
  //digitalWrite(fan_pin, HIGH); //иначе выключаем.
    
//    hotFlag1 = 1;
//    hotFlag2 = 1;
//

}

// вольтметр
//void voltmeter() {
//  float outputValue = 0;
//  outputValue = float(analogRead(voltmeter_pin)) / 63, 9;
//  //if(outputValue < 4.5) beeper(50);
//  //Serial.print("Voltage = " );
//  //Serial.println(outputValue);
//  lcd.setCursor(14, 3);
//  lcd.print("V");
//  lcd.print(outputValue, 1);
//}
//
//// Печать мощности нагрвателя
//void outpuPower() {
//  lcd.setCursor(14, 3);
//  lcd.print("W");
//  lcd.print(Output, 0);
//  lcd.print(" ");
//}


//==============================
int tempProcess(boolean ch){
  int t=0;
  if(!ch){
    ds.reset();
    ds.write(0xCC);
    ds.write(0x44);
  }
  else{
    ds.reset();
    ds.write(0xCC);
    ds.write(0xBE);
    t= ds.read();
    t = t | (ds.read()<<8);
    //return  t>>4;//целые *C, десятые отброшены
    //return  (t+8)>>4;//целые *С с округлением
    return  (t*10)>>4;//целое в десятых *C (214=>21,4*C)
  }
}
// чтение
int EEPROM_int_read(int addr) {    
  byte raw[2];
  for(byte i = 0; i < 2; i++) raw[i] = EEPROM.read(addr+i);
  int &num = (int&)raw;
  return num;
}

// запись
void EEPROM_int_write(int addr, int num) {
  byte raw[2];
  (int&)raw = num;
  for(byte i = 0; i < 2; i++) EEPROM.write(addr+i, raw[i]);
}
//пример int
//// запись
//EEPROM_int_write(12, 1000); // адрес 12 (+2 байта)
//EEPROM_int_write(14, 2000); // адрес 14 (+2 байта)
//EEPROM_int_write(16, 3000); // адрес 16 (+2 байта)
//// чтение
//int d = EEPROM_int_read(12);
//int e = EEPROM_int_read(14);
//int f = EEPROM_int_read(16);

 

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

С вентилятором все просто у вас 

В функции setup(), в строке 354 вы включаете вентилятор, digitalWrite(fan_pin, HIGH);

В функции void fan(int fanTime), в строке 812 выключение вентилятора, 13 нога,  закомментировано // digitalWrite( fan_pin, LOW);

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

Так же в функции void fan(int fanTime) закомментирована строка 817 где идет управление heater_pin, правда он там отключается но все же, если это комментировали вы то вопрос - Зачем?

Про heater_pin

включается нагреватель в одном единственном месте строка 529  digitalWrite(heater_pin,out); и то если переменная out будет равна единице, а ее состояние зависит от переменных  zad и er и тут вообще написано очень загадочно, почему в zero_crosss_int() вызывается ResOut(), почему просто не поместить код ResOut() в zero_crosss_int() ? Опять же это прерывание и переменные int reg,er,zad; должны быть описаны как volatile int reg,er,zad; но этого не сделано. В общем надо автора спрашивать, и потом если инкубатор небольшой яиц на 100 то PID вам не нужен, становится намного проще программа.

//Внешнее прерывание детектора нуля
 void zero_crosss_int()
{
      ResOut();//Вызов функции управления симистором по алгоритму Брезенхема
}

//управление симистором
void ResOut(){
  delayMicroseconds(1230);//для попадания в ноль
  reg = zad + er;
  if (reg < 50){
    out=0;
    er = reg ;
 
  }
  else {
    out=1;

    er=reg-100;
    }
 if (hotFlag1 ==0){
 digitalWrite(heater_pin,out); //если проветривание или авария не включаем
 }
 else {
 digitalWrite(heater_pin,LOW);
   
  }
 }

 

 

conder
Offline
Зарегистрирован: 20.01.2014

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

conder
Offline
Зарегистрирован: 20.01.2014

  Andrey12 С вентилятором , что то прояснилось, но есть нюансы. Он включаясь прерывает работу нагревателя во время охлаждения и проветривания. Выставляет флаг 1. Но сам почему то на аварию и перегрев не реагирует. Чего то там явно не хватает , он не видит задание по температуре. Да ладно бы с вентилятором, нагреватель вообще не работает, а с нагревателем я совсем не понимаю, там сделано включение симистора при переходе через ноль. Совершенно лишнее так как оптопарой это реализовать легче. И не нужно алгоритм "минхаузена". За подсказки спасибо. Буду копать дальше.

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

А саму схему собрали с использованием DHT11, он не очень для инкубатора подходит, или если быть точнее очень не подходит.
Если понять что и как у вас подключено, можно попробовать убрать из программы лишнее. Авось заработает.

Если есть схема выкладывайте, будем "подгонять" под схему программу.

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

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

conder
Offline
Зарегистрирован: 20.01.2014

Andrey12 это уже третий апгрейд инкубатора, первый блок  управления был на компараторе, температура мерилась термометром. Потом собрал на atmege 8 схема от Дмитрия, температура колебалась 0,5 градуса, и показания были на семи сегментном индикаторе. Потом собрал на ардуине mini терморегулятор с ПИД регулированием, колебания уменьшились до 0,2.  Дисплей  16*2 , но нет контроля влажности, и поворота. Датчик ДНТ-11 временно буду заказывать  SHT 10 или 15. это уже адаптировать по готовый скетч не трудно. Пока Китай отдыхает.

Вот решился все ещё раз переделать, сейчас все спаянно на столе рассыпухой.  Ардуино HAHO прошит новый загрузчик с поддержкой сторожевого таймера, вот и не могу подобрать подходящий скетч. То дисплей 20*4 , то скетч  не проходит компиляцию, то ПИД регулятор "мудренный".

Вот нашел подходящий скетч от Emeljanowich    http://arduino.ru/forum/proekty/inkubator?page=1

//на второй строке дисплея отображаются: мощность на нагеревателе Pw 1-99%;
//                                       режим инкубации 0 - ручной; 1 - куры; 2 - перепелки; 3 - утки; 4 - гуси;
//                                       включен поворот - |; выключен поворот - 0
//                                       вентиляция работает - *; выключена - -;
//                                       работает вентилятор влажности - #; выключен - -;
//                                       текущее значение температуры


//в меню появились два новых пункта: пункт 7 - включение подсветки дисплея - постоянно горит или выключение - погасает по истечении 4 минут после нажатия клавиши "меню"
//                                   пункт 8 - выбор датчика температуры - DHT22 или 18B20
//ШИМ модуляция на порт 3 со значением 8-200

//работа сценария ошибки: - если по истечении 6 часов после включения температура меньше установленной на 2 градуса срабатывает ошибка
//                        - при достижении температуры установленного значения включается функция определения ошибки - если в течении 20 минут температура
//                          превышает или ниже установленных пределов срабатывает ошибка
//                        - если спустя 2 часа после проветривания температура меньше установленной на 2 градуса включается ошибка







#include <avr/wdt.h> //сторожевой пёс
#include <OneWire.h>
#include <DallasTemperature.h>
#include "DHT.h"
#include <EEPROM.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>  // Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

#define DHTPIN 12 // номер пина, к которому подсоединен датчик 
DHT dht(DHTPIN, DHT22);//DHT dht(DHTPIN, DHT11);// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 11 // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

#define turnPin 6 //поворот
#define ventilator 4 //вентилятор проветривания
#define ventilatorH 5 //венилятор для поддержания влажности
#define buttonPlus 15
#define buttonMenu 16
#define buttonMinus 17

#define TimeError 60    //время задержки ошибки 20сек * TimeError = 20 1 минута-3 еденицы 


boolean r_povorota, r_povorot, r_ventilator, r_nasosa, proverka, turn, PowerLigt, dhT;
long prevmicros;
byte Power_promeg, ventilar, H, dlit_raboti_nasosa = 5, vrema_raboti_ventilatora;  //0-255 vrema_roboti_ventilatora

byte gradus[8] = {B01000, B10100, B01000, B00111, B01000, B01000, B00111, B00000,};

boolean counter, r_ventilatora, step, powerTurn, exitMenu, left, right, turnStartPosition, ventilation, error, ErrorPower;
byte hi, sec, mi, sTimer, mTimer, hTimer, dTimer = 1, day = 1; 
byte backLight, menu;
byte avtomatik, timeTurn, setPower, timeTurnExperement, periodTurn, accountTurn, Power;
byte n, rn, rv, m, i, errorTime, errorL, errorH, errorHour = 6; 
unsigned int t, Temperature, b;          //0-65535
float e, h, tt, kof, tSetprintDisplay;
//signed char kof; //-128 - 127



void setup() {
  
  wdt_disable();
  sensors.begin();
  dht.begin();
  lcd.begin(); lcd.clear();
  
  lcd.createChar(1, gradus);  //Регистрируем собственные символы с кодами 1 и ...

  DDRB |= (1 << 5); //моргание светодиода на пине 13 каждую секунду
  pinMode(ventilatorH, OUTPUT); pinMode(ventilator, OUTPUT); digitalWrite(ventilator, LOW);  pinMode(turnPin, OUTPUT); digitalWrite(turnPin, LOW);

  pinMode(buttonPlus, INPUT_PULLUP); pinMode(buttonMinus, INPUT_PULLUP); pinMode(buttonMenu, INPUT_PULLUP);
  
  hTimer = EEPROM.read(20); dTimer = EEPROM.read(3); 
  powerTurn = EEPROM.read(11); 
  kof = EEPROM.read(5); 
  dlit_raboti_nasosa = EEPROM.read(6); vrema_raboti_ventilatora = EEPROM.read(7);
  avtomatik = EEPROM.read(8); t = EEPROM.read(9) + 370; H = EEPROM.read(10); 
  setPower = EEPROM.read(13); PowerLigt = EEPROM.read(15); dhT = EEPROM.read(16); //dhT - флаг для выбора датчика температуры dht|18B20
  
  if (avtomatik) parametri();    
  setTimer();
  lcd.backlight(); //noBacklight();
  backLight = 240;
  wdt_enable (WDTO_4S);

   h = dht.readHumidity(); 
    if (dhT) {tt = dht.readTemperature();  Temperature = (10 * tt) + kof;}                                 //температура с DHT22  
    else {sensors.requestTemperatures(); tt = sensors.getTempCByIndex(0); Temperature = (10 * tt) + kof;}  //температура с 18B20
    lcd.setCursor(2, 0); lcd.print("inkubator_4"); lcd.setCursor(5, 1); lcd.print("v_0.8"); delay(2000);
  displayPrint();      
}






void setTimer(){
  cli();
  TCCR1A = 0b00000000; //none   toggle  clear  set - инверсия установить
  TCCR1B = (1 << WGM12)|(1 << CS12); // 10b00011001;
  TIMSK1 = (1 << OCIE1A);
  OCR1A = 62500; //разрешение ШИМ сигнала (ограничение для счета регистра TCNT1), возможно до 65 535
  sei();
}

ISR (TIMER1_COMPA_vect) //вектор прерывания по СТС таймера/счетчика 2 для работы собственного времени контроллера
{
  PORTB = PORTB ^ (1 << 5); sTimer++; if (sTimer > 59) {mTimer++; sTimer = 0; if (mTimer > 59) {hTimer++; mTimer = 0;} if (hTimer > 23) {dTimer++; hTimer = 0;}}
}


  

void loop() {

if (menu){
switch (menu){
   case 1:
      lcd.setCursor(0, 1); lcd.print("Temp calibration");
      lcd.setCursor(2, 0); lcd.print(kof/10); lcd.print("\1"); //lcd.print(" daL "); lcd.print(e, 1);
      if (!digitalRead(buttonPlus)) {backLight = 20; delay(200); kof++; EEPROM.write(5, kof); if (kof > 15) {kof = -15; lcd.clear();} exitMenu = true;}
      if (!digitalRead(buttonMinus)) {backLight = 20; delay(200); kof--; EEPROM.write(5, kof); if (kof < -15) {kof = 15; lcd.clear();} exitMenu = true;}
      break;

   case 2: lcd.setCursor(2, 0); lcd.print("reset time?");
      if (!digitalRead(buttonMinus) || !digitalRead(buttonPlus)) {backLight = 20; delay(200); hTimer = 0; dTimer = 1; day = 1; mTimer = 0;
      EEPROM.write(3, day); EEPROM.write(2, hTimer); menu = 0; lcd.clear(); displayPrint();}
      break;

   case 3: lcd.setCursor(1, 0); lcd.print("setPowerDefaul");
      if (!digitalRead(buttonPlus)) {backLight = 20; delay(200); setPower--; EEPROM.write(13, setPower); lcd.clear(); exitMenu = true;}
      if (!digitalRead(buttonMinus)) {backLight = 20; delay(200); setPower++; EEPROM.write(13, setPower); lcd.clear(); exitMenu = true;}
      lcd.setCursor(5, 1);  i = map(setPower, 60, 200, 99, 1); if (i < 10) lcd.print(" "); lcd.print(i); lcd.print("%");  
      break;    

   case 4: lcd.setCursor(3, 0); lcd.print("avtom setap");
      if (!digitalRead(buttonPlus)) {backLight = 20; delay(200); avtomatik++; lcd.clear(); EEPROM.write(8, avtomatik); if (avtomatik > 4) avtomatik = 4; exitMenu = true;}
      if (!digitalRead(buttonMinus)) {backLight = 20; delay(200); avtomatik--; lcd.clear(); EEPROM.write(8, avtomatik); if (avtomatik > 4) avtomatik = 0; exitMenu = true;}  
      lcd.setCursor(2, 1); 
      if (!avtomatik) lcd.print("not avtom"); if (avtomatik == 1) lcd.print("kuri"); if (avtomatik == 2) lcd.print("perepelki"); if (avtomatik == 3) lcd.print("ytki"); if (avtomatik == 4) lcd.print("gusi");
      if (avtomatik) parametri();
      break;
      
    case 5: lcd.setCursor(3, 0); lcd.print("test turn");   
      if (!digitalRead(buttonPlus)) {PORTD = PORTD ^ (1 << 6); turn = !turn; lcd.setCursor(4, 1); if (turn) lcd.print("left"); else lcd.print("right"); delay(500); exitMenu = true;}
      if (!digitalRead(buttonMinus)) {PORTD = PORTD ^ (1 << 6); turn = !turn; lcd.setCursor(4, 1); if (turn) lcd.print("left"); else lcd.print("right"); delay(500); exitMenu = true;}
     break;  

    case 6: lcd.setCursor(3, 0); lcd.print("test Vent"); 
      if (!digitalRead(buttonPlus)) {PORTD = PORTD ^ (1 << 4); ventilation = !ventilation; lcd.setCursor(5, 1); if (ventilation) lcd.print("on "); else lcd.print("off"); delay(500); exitMenu = true;}
      if (!digitalRead(buttonMinus)) {PORTD = PORTD ^ (1 << 4); ventilation = !ventilation; lcd.setCursor(5, 1); if (ventilation) lcd.print("on "); else lcd.print("off"); delay(500); exitMenu = true;}
     break;   

  //  case 6: lcd.setCursor(3, 0); lcd.print("Set Power"); lcd.setCursor(2, 1); i = map(Power, 60, 200, 99, 1); if (i < 10) lcd.print(" "); lcd.print(i); lcd.print("%");
  //    if (!digitalRead(buttonPlus)) {delay(200); Power--; if (Power < 60) Power = 60; exitMenu = true;}
  //    if (!digitalRead(buttonMinus)) {delay(200); Power++; if (Power > 200) Power = 200; exitMenu = true;}
  //   break;

    case 7: lcd.setCursor(3, 0); lcd.print("Set Ligt"); lcd.setCursor(5, 1); if (PowerLigt) lcd.print("on "); else lcd.print("off");
      if (!digitalRead(buttonPlus)) {delay(200); PowerLigt = !PowerLigt; exitMenu = true; EEPROM.write(15, PowerLigt);}
      if (!digitalRead(buttonMinus)) {delay(200); PowerLigt = !PowerLigt; exitMenu = true; EEPROM.write(15, PowerLigt);}
    break;

     case 8: lcd.setCursor(3, 0); lcd.print("DHT "); lcd.setCursor(10, 0); lcd.print(" 18B20");
             lcd.setCursor(8, 0); if (dhT) lcd.print("<"); else lcd.print(">");
      if (!digitalRead(buttonPlus)) {delay(300); dhT = !dhT; exitMenu = true; EEPROM.write(16, dhT);}
      if (!digitalRead(buttonMinus)) {delay(300); dhT = !dhT; exitMenu = true; EEPROM.write(16, dhT);}
    break;

    case 9: if (avtomatik) {menu = 0; displayPrint(); backLight = 240;}
            else {lcd.setCursor(1, 0); lcd.print("Set t = "); lcd.setCursor(10, 0); tSetprintDisplay = 370+t; lcd.print(tSetprintDisplay/10); lcd.print("\1");  
                if (!digitalRead(buttonPlus)) {delay(200); t++; if (t > 15) t = 15; EEPROM.write(9, t); exitMenu = true;}
                if (!digitalRead(buttonMinus)) {delay(200); t--; if (t > 8) t = 0; EEPROM.write(9, t); exitMenu = true;}}
     break;

    case 10: lcd.setCursor(1, 0); lcd.print("Set H = "); 
                if (!digitalRead(buttonPlus)) {delay(200); H += 5; if (H > 90) H = 90; EEPROM.write(10, H); exitMenu = true;} 
                if (!digitalRead(buttonMinus)) {delay(200); H -= 5; if (H < 30) H = 30; EEPROM.write(10, H); exitMenu = true;}
     break;

    case 11: lcd.setCursor(3, 0); lcd.print("povorot  "); if (powerTurn) lcd.print("on "); else lcd.print("off");
                if (!digitalRead(buttonPlus)) {delay(200); powerTurn = !powerTurn; EEPROM.write(11, powerTurn); exitMenu = true;}
                if (!digitalRead(buttonMinus)) {delay(200); powerTurn = !powerTurn; EEPROM.write(11, powerTurn); exitMenu = true;}
       break;

    case 15: lcd.setCursor(3, 0); lcd.print("error"); lcd.setCursor(10, 0); lcd.print(Temperature * 0.1, 1); lcd.print("\1");
                lcd.setCursor(1, 1); lcd.print("off"); lcd.setCursor(12, 1); lcd.print("off");
                if (!digitalRead(buttonPlus)) {delay(200); noTone(8);}
                if (!digitalRead(buttonMinus)) {delay(200); noTone(8);}
       break;
            
         
  }
}


 if (mi != mTimer){
        h = dht.readHumidity();     //влажность с DHT22
  if (!menu) {lcd.setCursor(3, 0); if (mTimer < 10) lcd.print("0"); lcd.print(mTimer);
  lcd.setCursor(12, 0); lcd.print("H"); lcd.print(h, 0); lcd.print("%"); }      //влажность
  mi = mTimer;

  if ((Temperature > t - 5) && (Temperature < t + 5) && (h < H - 3)) {digitalWrite(ventilatorH, HIGH);  displayPrint();}  //вентилятор для поддержания влажности
  else {digitalWrite(ventilatorH, LOW); displayPrint();}  
  
  if (ventilation) {displayPrint(); vrema_raboti_ventilatora--; PORTD |= (1 << 4); if (!vrema_raboti_ventilatora) {PORTD &= ~(1 << 4); ventilation = false; vrema_raboti_ventilatora = EEPROM.read(7);  displayPrint();  //включение/выключение работа вентилятора проветривания
        errorHour = 2; ErrorPower = false;}}       // включение отсчета времени для срабатывания ошибки
 }


 if (sec != sTimer){
      counter = !counter; if (!menu) {if (counter) {lcd.setCursor(2, 0); lcd.print(":");} else {lcd.setCursor(2, 0); lcd.print(" ");}}
  
      if (backLight) {backLight--; lcd.backlight(); if (!backLight) {if (!PowerLigt) lcd.noBacklight(); menu = 0; lcd.clear(); displayPrint();}}
     
      if (!ventilation) m++; //если не работает проветривание, то считаем 20 сек для работы нагревателя
      else {if (dhT) {tt = dht.readTemperature();  Temperature = (10 * tt) + kof;}                                 //температура с DHT22  
            else {sensors.requestTemperatures(); tt = sensors.getTempCByIndex(0); Temperature = (10 * tt) + kof;}  //температура с 18B20
            if (!menu) {lcd.setCursor(11, 1); lcd.print(Temperature * 0.1, 1);}} 
   
      sec = sTimer;}



  if (hi != hTimer){ if (!menu) {lcd.setCursor(0, 0); if (hTimer < 10) lcd.print("0"); lcd.print(hTimer);} EEPROM.write(20, hTimer); //сохранение текущего часа
      
      sensors.requestTemperatures(); // температура с 18b20
      e = sensors.getTempCByIndex(0);
      if ((r_ventilator || (!avtomatik && vrema_raboti_ventilatora)) && (hTimer == 6 || hTimer == 18)) {ventilation = true; Power = 2; analogWrite(3, Power);}//включение вентиляции
      if (powerTurn) {timeTurn++; if (timeTurn > 1) {timeTurn = 0; PORTD = PORTD ^ (1 << 6); accountTurn++;}} //инверсия пина для поворота
      if (errorHour) errorHour--; //истечение 6 часов для включения режима авария
      hi = hTimer;}


  if (day != dTimer) {if (!menu) {lcd.setCursor(6, 0); lcd.print("Day"); lcd.print(dTimer);} 
     EEPROM.write(3, dTimer); day = dTimer; parametri(); }

  if (m > 20) {
    
    if (dhT) {tt = dht.readTemperature();  Temperature = (10 * tt) + kof;}                                 //температура с DHT22  
    else {sensors.requestTemperatures(); tt = sensors.getTempCByIndex(0); Temperature = (10 * tt) + kof;}  //температура с 18B20

   
    if ((!errorHour) && (Temperature < t - 20)) {error = true; menu = 15; errorMelody();}          //включение мелодии ошибки
    if (Temperature == t) ErrorPower = true;
    if (ErrorPower)  {if (Temperature < errorL || Temperature > errorH) errorTime++;                                  //определение ошибки
                      else {errorTime--; if (errorTime > TimeError) {errorTime = 0; noTone(8);}}
    if (errorTime > TimeError) {errorMelody(); error = true; menu = 15; errorTime = 20;}


    if (!menu) {lcd.setCursor(11, 1); lcd.print(Temperature * 0.1, 1);}   
    if (Temperature != t) nagrev(); m = 0;} //работа нагревателя, выполнется 3 разa в 1 минуту(ы), чтобы не мешать инерционности процессу
  
   
  if (!digitalRead(buttonMenu)) {delay(250); menu++; lcd.clear(); if (exitMenu) {menu = 0; displayPrint(); exitMenu = false;} 
      if (menu > 11) {noTone(8); menu = 0; displayPrint(); backLight = 240;}}
        
  wdt_reset();

}













void nagrev()                              //работа нагревателя, 200 - минимальная мощность, 0 - максимальная
{
  // if (!r_ventilatora) {
    if (Temperature > t + 5) {
//      digitalWrite(ventilator, HIGH);
      rn += 4;
      Power = EEPROM.read(13);
    }
 //   if (Temperature < t + 3) digitalWrite(ventilator, LOW);
//  }

  if (Temperature < t)      n = 1;
  if (Temperature < t - 10) n = 2;
  if (Temperature < t - 40) n = 5;
  if (Temperature > t)      n = 4;
  if (Power == 255)         n = 3;

  switch (n) {
    case 4:
      if (rn > 12) {
        rn = 0;
        if (Temperature >= b) Power -= 1;
        else Power += 1;
        if (Temperature > t + 3) Power -= 6;
      }
      else rn++;
      break;

    case 1:
      if (rv > 14) {
        rv = 0;
        if (Temperature <= b) Power += 1;
        else Power -= 1;
      }
      else rv++;
      break;

    case 2:
      if (Temperature > b)
      {
        b = Temperature - b;
        switch (b)
        { case 1: Power -= 4; break;
          case 2: Power -= 5; break;
          case 3: Power -= 8; break;
          case 4: Power -= 8; break;
          case 5: Power -= 20; break;
          default: Power -= 22;
        }
      }
      else {
        Power += 4;
        if (Temperature < (t - 20)) Power += 30;
      }
      break;

    case 5:
      if (Temperature <= (b + 30)) Power += 20; if (Power > 200) Power = 200;
      break;

    case 3:
      if (Temperature < t) Power = 30;
      break;
  }

  b = Temperature;                    //промежуточное значение температуры
  if (Temperature > t + 7) Power -= 20; 
  Power = constrain(Power, 8, 200); //ограничение мощности 50%
  if ((Power == 8) && (Temperature > t + 3)) Power = 0; //выключение нагревателя 
  if (!menu) {lcd.setCursor(0, 1); lcd.print("Pow"); i = map(Power, 0, 200, 1, 99); if (i < 10) lcd.print(" "); lcd.print(i); lcd.print("%");}//мощность на нагрев
  analogWrite(3, Power);
}


void parametri()                //изменение параметров  в зависимости от дня инкубации, сюда можно внести свои данные режима инкубации
{
  switch(avtomatik){
   case 1:   //для кур
      if (day < 2) {t = 380; powerTurn = true; r_ventilator = false;  H = 60;} 
         else {t = 378; powerTurn = true; r_ventilator = false; H = 60;}
      if (day > 14) {t = 377; H = 60; r_ventilator = true; EEPROM.write(7, 18); vrema_raboti_ventilatora = 18; powerTurn = true; }
      if (day > 17) {t = 370; H = 80; powerTurn = false; r_ventilator = true;}
    break;
   case 2:   //для перепелов
      if (day < 2) {t = 380; powerTurn = true;  r_ventilator = false; H = 60;} 
         else {t = 378; powerTurn = true; r_ventilator = false; H = 60;}
      if (day > 7) {t = 377; H = 60; r_ventilator = true; EEPROM.write(7, 10); vrema_raboti_ventilatora = 10; powerTurn = true;}
      if (day > 13) {t = 377; H = 60; powerTurn = true; r_ventilator = true;}
      if (day > 14) {t = 370; H = 80; powerTurn = false; r_ventilator = true;}
    break;
    case 3: //утка
         if (day < 2) {t = 385; powerTurn = true;  r_ventilator = false; H = 70;} 
         else {t = 380; powerTurn = true; r_ventilator = false; H = 70;}
      if (day > 7) {t = 378; H = 60; r_ventilator = false; EEPROM.write(7, 15); vrema_raboti_ventilatora = 15; powerTurn = true;}
      if (day > 14) {t = 378; H = 60; powerTurn = true; r_ventilator = true;}
      if (day > 25) {t = 375; H = 90; powerTurn = false; r_ventilator = false;}
    break;
    case 4: //гуси
      if (day < 6) {t = 380; powerTurn = true;  r_ventilator = false; H = 70;} 
         else {t = 378; powerTurn = true; r_ventilator = false; H = 60;}
      if (day > 13) {t = 378; H = 70; r_ventilator = true; EEPROM.write(7, 25); vrema_raboti_ventilatora = 25; powerTurn = true;}
      if (day > 26) {t = 375; H = 85; powerTurn = true; r_ventilator = true;}
      if (day > 28) {t = 375; H = 85; powerTurn = false; r_ventilator = false;}
    break;
  }
}



void displayPrint(){
  lcd.setCursor(0, 0); if (hTimer < 10) lcd.print("0"); lcd.print(hTimer); lcd.setCursor(3, 0); if (mTimer < 10) lcd.print("0"); lcd.print(mTimer);
  lcd.setCursor(6, 0); lcd.print("Day"); lcd.print(dTimer);
  lcd.setCursor(12, 0); lcd.print("H"); lcd.print(h, 0); lcd.print("%");
  
  lcd.setCursor(0, 1); lcd.print("Pw"); i = map(Power, 0, 200, 1, 99); if (i < 10) lcd.print(" "); lcd.print(i); lcd.print("%");//мощность на нагрев
  lcd.setCursor(6, 1); lcd.print(avtomatik);
  lcd.setCursor(7, 1); if (powerTurn) lcd.print("|"); else lcd.print("0"); lcd.print(accountTurn);
  lcd.setCursor(8, 1);  if (ventilation) lcd.print("*"); else lcd.print("-");
  lcd.setCursor(9, 1);  if (digitalRead(ventilatorH)) lcd.print("#"); else lcd.print("-");
  lcd.setCursor(11, 1); lcd.print(Temperature * 0.1, 1); lcd.print("\1");
  
}

//на второй строке дисплея отображаются: мощность на нагеревателе Pw 1-99%;
//                                       режим инкубации 0 - ручной; 1 - куры; 2 - перепелки; 3 - утки; 4 - гуси;
//                                       включен поворот - |; выключен поворот - 0
//                                       вентиляция работает - *; выключена - -;
//                                       работает вентилятор влажности - #; выключен - -;
//                                       текущее значение температуры



void errorMelody() { //8 пин на буззер
  //noTone(8);  tone(6, 440, 200);  delay(200);
  //noTone(6);  tone(7, 494, 500);  delay(500);
  tone(8, 523, 300);  
}

на 149 стоке компиляция зависает

   if (avtomatik) parametri();

 

Arduino: 1.8.9 (Windows XP), Плата:"Arduino Nano, ATmega328P"

D:\Documents and Settings\Администратор\Мои документы\Arduino\sketch_feb13a_versia_8\sketch_feb13a_versia_8.ino: In function 'void setup()':

sketch_feb13a_versia_8:87:28: error: 'parametri' was not declared in this scope

sketch_feb13a_versia_8:97:16: error: 'displayPrint' was not declared in this scope

D:\Documents and Settings\Администратор\Мои документы\Arduino\sketch_feb13a_versia_8\sketch_feb13a_versia_8.ino: In function 'void loop()':

sketch_feb13a_versia_8:135:90: error: 'displayPrint' was not declared in this scope

sketch_feb13a_versia_8:149:32: error: 'parametri' was not declared in this scope

sketch_feb13a_versia_8:178:52: error: 'displayPrint' was not declared in this scope

sketch_feb13a_versia_8:211:118: error: 'displayPrint' was not declared in this scope

sketch_feb13a_versia_8:212:54: error: 'displayPrint' was not declared in this scope

sketch_feb13a_versia_8:214:34: error: 'displayPrint' was not declared in this scope

sketch_feb13a_versia_8:222:141: error: 'displayPrint' was not declared in this scope

sketch_feb13a_versia_8:252:87: error: 'errorMelody' was not declared in this scope

sketch_feb13a_versia_8:256:45: error: 'errorMelody' was not declared in this scope

sketch_feb13a_versia_8:260:34: error: 'nagrev' was not declared in this scope

sketch_feb13a_versia_8:263:105: error: 'displayPrint' was not declared in this scope

sketch_feb13a_versia_8:264:57: error: 'displayPrint' was not declared in this scope

sketch_feb13a_versia_8:283:1: error: a function-definition is not allowed here before '{' token

sketch_feb13a_versia_8:418:1: error: expected '}' at end of input

sketch_feb13a_versia_8:418:1: error: expected '}' at end of input

Используем библиотеку OneWire-2.3.5 версии 2.3.5 из папки: D:\Documents and Settings\Администратор\Мои документы\Arduino\libraries\OneWire-2.3.5
Используем библиотеку DallasTemperature версии 3.8.0 из папки: D:\Documents and Settings\Администратор\Мои документы\Arduino\libraries\DallasTemperature
Используем библиотеку DHT-sensor-library-master версии 1.3.8 из папки: D:\Documents and Settings\Администратор\Мои документы\Arduino\libraries\DHT-sensor-library-master
Используем библиотеку EEPROM версии 2.0 из папки: D:\Documents and Settings\Администратор\Рабочий стол\АРДУИНО\arduino-1.8.9-windows\arduino-1.8.9\hardware\arduino\avr\libraries\EEPROM
Используем библиотеку Wire версии 1.0 из папки: D:\Documents and Settings\Администратор\Рабочий стол\АРДУИНО\arduino-1.8.9-windows\arduino-1.8.9\hardware\arduino\avr\libraries\Wire
Используем библиотеку Arduino-LiquidCrystal-I2C-library-master в папке: D:\Documents and Settings\Администратор\Мои документы\Arduino\libraries\Arduino-LiquidCrystal-I2C-library-master (legacy)
Используем библиотеку Adafruit_Unified_Sensor версии 1.1.2 из папки: D:\Documents and Settings\Администратор\Мои документы\Arduino\libraries\Adafruit_Unified_Sensor
exit status 1
'parametri' was not declared in this scope

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

Тут в строке 269 добавь закрывающую скобку }

Кудато делась, на работе не могу проверить.

Для меня было важно:
1. Выбор режимов для инкубации разных птиц, перепела, индюки, куры...
2. Сигнализация ошибок, температура, СО2 или влажность ушла за пределы
3. Автоповорот

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

Я смотрю тут все скетчи без часов реального времени. Таймеры везде используются. Я в этом слаб, мне проще воткнуть часы DS3231

Мой скетч тоже не блещет красотой, по первых собрано на 2х МК, Atmega32U4 и Attinu85, первый это основное устройство которое за всем следит, второй это ПИД регулятор, как оказалось бесполезный :-(

Отработало 2 сезона, но у меня основная проблема в конструкции, надо все переделывать. Вот под конструкцию и буду делать новую электронику. Но не в этом сезоне, этот сезон думаю старый инкубатор протянет.

Дисплей ОЛЕД 1,3" SSD1306, сенсор температуры влажности Si7021 возможно заменю на SHT31, сенсор eCO CCS811, заменю наверное на MH-Z19B но особой нужды в нем нет, потому как при постоянном небольшом притоке воздуха проблем не наблюдается.

Кнопки управления сенсорные на TTP224.

Да и еще хочу добавить подсветку при выводе, то есть например у кур с 20го дня включать подсветку в инкубаторе, чтоб на свет лезли :-)

conder
Offline
Зарегистрирован: 20.01.2014

Andrey12, спасибо помогло. Но проблему не сняло. Этот вариант на питание от12 вольт, до этого тестировал второй скетч на 220 вольт с управлением симистора. это оба скетча выложил автор Emeljanowich. http://arduino.ru/forum/proekty/inkubator?page=1  К сожалению оба не рабочие , найти ошибку не смог. Тот , что с ошибкой которую  Вы нашли он не выходит в меню настроек, не откликается на кнопки pin15,16,17. Хота температуру и влажность показывает, он постоянно прокручивает заставку (inkubator_4 v_0.8) и панель с показаниями температуры и влажности  времени и шим в процентах.

Второй на работу от 220вольт, сразу прошел компиляцию, но также не работает. Он как бы висит , в меню все управляется температуру и влажность считывает только при загрузке, потом она не меняется. В нем можно только менять корректировку даласа, выбрать ДНТ или далас. поменять мощность, специально что ли выкладывают не рабочие версии. Так и не чего не удалось. Завтра на дежурство сутки. После завтра попытаюсь. Андрей ещё раз спасибо за внимание. Я искал конструкцию по проще, температура с пид регулировкой, влажность, поворот, выход аварии. В любом случае необходим постоянный контроль. Умный инкубатор от Umka мне больше всех понравился, но дома три дисплея на 16х2.  Их надо приспособить.

 

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

А кнопки правильно подключены? Надо к пинам 15 - А1, 16 - А2, 17 - А3. И замыкать на минус. Ну если я не сильно ошибся в нумерации аналоговых пинов.

Вроде как ничего криминального нет в программе.
А переделать с большего дисплея на меньший тот еще геморой, согласен.

В общем проверять надо. Может поставить вывод в Serial состояние кнопок чтобы проверить нажатия.

 

conder
Offline
Зарегистрирован: 20.01.2014

Кнопки правильно по схеме и по пинам,  в скетче на 220 вольт они также подключены, там работают.

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

conder пишет:
К сожалению оба не рабочие , найти ошибку не смог. Тот , что с ошибкой которую  Вы нашли он не выходит в меню настроек, не откликается на кнопки pin15,16,17. Хота температуру и влажность показывает, он постоянно прокручивает заставку (inkubator_4 v_0.8) и панель с показаниями температуры и влажности  времени и шим в процентах.

Ну тут дело думаю в том что срабатывает wdt таймер :-( заставку inkubator_4 v_0.8 оно показывает только при загрузке, а значит почемуто не доходит до сброса wdt, то есть он отображает inkubator_4 v_0.8, потом 2 секунды ждет согласно delay(2000);, потом выполняет displayPrint(); а вот до строки 266 wdt_reset(); почемуто не доходит.

Как вариант попробуйте 
1. увеличить время срабатывания wdt строка 91 укажиет вместо wdt_enable (WDTO_8S);
2. если не поможет вообще отключите WDT закомментируйте строки  91 и 266

Что показывает?

Честно говоря не люблю солянку типа такой if (ventilation) {displayPrint(); vrema_raboti_ventilatora--; PORTD |= (1 << 4);

Я так понимаю не везде потом работает.

conder пишет:
Второй на работу от 220вольт, сразу прошел компиляцию, но также не работает. Он как бы висит , в меню все управляется температуру и влажность считывает только при загрузке, потом она не меняется. В нем можно только менять корректировку даласа, выбрать ДНТ или далас. поменять мощность, специально что ли выкладывают не рабочие версии. Так и не чего не удалось. Завтра на дежурство сутки. После завтра попытаюсь. Андрей ещё раз спасибо за внимание. Я искал конструкцию по проще, температура с пид регулировкой, влажность, поворот, выход аварии. В любом случае необходим постоянный контроль. Умный инкубатор от Umka мне больше всех понравился, но дома три дисплея на 16х2.  Их надо приспособить.

Во втором тоже шаманство

DRD |= (1 << 5)|(1 << 4)|(1 << 6); //кулер, вентилятор, насос
061   PORTD |= (1 << 5);       
062   PORTD &= ~(1 << 4)|(1 << 6);

Вобщем не лучшие варианты. Плата должна быть именно на Атмега328 потому как вот здесь

void setTimer()
092 {
093   cli();
094   TCCR2A |= (1 << WGM21);  //CTC to OCR2A
095   TCCR2A &= ~(1 << WGM20);
096   TCCR2B &= ~(1 << WGM22);
097   TCCR2B |= (1 << CS22) | (1 << CS21) | (1 << CS20);  //1024
098   TIMSK2 &= ~(1 << OCIE2A);
099   OCR2A = 50;
100   sei();
101 }
102  
103 ISR (TIMER2_COMPA_vect)
104 {
105   PORTB = PORTB ^ (1 << 2); //шаги для двигателя поворота (шаговый двинатель типа 28BYJ-49) - времени на шаг 0,0032 сек
106 }

Я так понимаю настраивается именно под этот чип как у автора.
Разбираться в алгоритме дольше чем написать новый. 

conder
Offline
Зарегистрирован: 20.01.2014

Andrey12 увеличение до 8 сек не помогло, закоментировал строки 24,69,92,267. Заработало меню , но работает очень вдумчиво. Кнопки надо удерживать 1-2 секунды. на изменение температуры и влажности отклик секунд 30-50 всегда по разному. Шим стоит 1% и не на что не реагирует. Вероятно там тоже не все в порядке. отсчет дней и часов и минутами идет нормально. Индикация выбора режима инкубации тоже работает. Если он будет с сорока секундной задержкой греть , он и сварить может все.  Побежал на работу, ужинать забегал.

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

conder пишет:

Andrey12 увеличение до 8 сек не помогло, закоментировал строки 24,69,92,267. Заработало меню , но работает очень вдумчиво. Кнопки надо удерживать 1-2 секунды. на изменение температуры и влажности отклик секунд 30-50 всегда по разному. Шим стоит 1% и не на что не реагирует. Вероятно там тоже не все в порядке. отсчет дней и часов и минутами идет нормально. Индикация выбора режима инкубации тоже работает. Если он будет с сорока секундной задержкой греть , он и сварить может все.  Побежал на работу, ужинать забегал.

 

У вас тоже ардуино нано ? на 328 МК?

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

 

Вот може тут какой косяк, если кто знающий или автор зайдут объяснят.

105 void setTimer(){
106   cli();
107   TCCR1A = 0b00000000; //none   toggle  clear  set - инверсия установить
108   TCCR1B = (1 << WGM12)|(1 << CS12); // 10b00011001;
109   TIMSK1 = (1 << OCIE1A);
110   OCR1A = 62500; //разрешение ШИМ сигнала (ограничение для счета регистра TCNT1), возможно до 65 535
111   sei();
112 }
113  
114 ISR (TIMER1_COMPA_vect) //вектор прерывания по СТС таймера/счетчика 2 для работы собственного времени контроллера
115 {
116   PORTB = PORTB ^ (1 << 5); sTimer++; if (sTimer > 59) {mTimer++; sTimer = 0; if (mTimer > 59) {hTimer++; mTimer = 0;} if (hTimer > 23) {dTimer++; hTimer = 0;}}
117 }

 

conder
Offline
Зарегистрирован: 20.01.2014

Andrey12 у мена  ардуино HAHO. Спасибо за помощь , Вы хорошо разбираетесь в этом вопросе.

но что то этот скеч мне сильно разонравился. Буду искать  что по проще и рабочее. Сейчас в раздумьях, после дежурства надо поспать, голова совсем не варит, весна идет и надо принять решение.

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

Я пока на старом варианте этот сезон поинкубирую, может к следующему сезону новый слеплю.

 

lean_74
Offline
Зарегистрирован: 22.12.2015

Уважаемый conder просьба,не засирать мою ветку чужим говнокодом, если есть желание, тут можно обсуждать мой говнокод.

Хотите обсуждать свои, создайте свою ветку.

а Админов прошу почистить сообщения с чужим кодом.

conder
Offline
Зарегистрирован: 20.01.2014

 lean_74 Все понял. К сожалению Ваш код не удалось довести до рабочего состояния.

stranik9
Offline
Зарегистрирован: 19.08.2019

Andrey12 пишет:

 и потом если инкубатор небольшой яиц на 100 то PID вам не нужен, становится намного проще программа.

доброго времени вам! а по подробней, может ли ардуино плавно регулировать

с ув.

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

stranik9 пишет:

Andrey12 пишет:

 и потом если инкубатор небольшой яиц на 100 то PID вам не нужен, становится намного проще программа.

доброго времени вам! а по подробней, может ли ардуино плавно регулировать

с ув.

Плавно регулировать может с использование PID алгоритма. Почему не смочь то, главное суметь настроить.