Страница 1 из 2

SmartInkubatorV2 all bird Без энкодера

Добавлено: 07 апр 2017, 06:54
Edvard
Всем привет.
Хочу опубликовать код. Ввиду не единственной проблемы с не работающими кнопками "плюс и минус", предложенные скетчи Романом заточены под энкодер.
Изменения потерпели в скетче только, касаемо энкодера. Теперь кнопки можно подключать "по старинке" от минуса на нужные пины
В дальнейшем хочу русифицировать интерфейс скетча.

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 07 апр 2017, 11:34
Umka
Благодарю, доброе дело!

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 07 апр 2017, 17:26
Regulserg
А проблема с датой так и осталась?
И еще вчера система словила глюк- завис контроллер Pro Mini: пришел с работы- показания с датчика dallas какой то набор цифр, перезапустил питание- все восстановилось, но за это время температура в инкубаторе успела опуститься до 28,5 градусов. Не пойму причины- свет не отключали. Может контакт где пропадал. Идет 10 день инкубации на автоскетче Романа...

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 07 апр 2017, 19:46
Umka
Сторожевой таймер?

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 08 апр 2017, 03:00
Edvard
исправлена ошибка допущенная мной в подключенной библиотеке

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 17 май 2017, 12:10
Edvard
Доброго времени суток!
Хочу оставить небольшой репорт.
Постройка инкубатора заняла не так много времени.
Первые 2 дня использовал термостат "W1209" т.к. с Китая не пришел термодатчик ds18b20, да и то оказался не такой, а в металлической трубке не мог установить ровную заданную температуру. В попытке его разобрать он был уничтожен, пришлось купить ds12b20 в магазине радио запчастей втридорога.
Повелся на цену Дешевого блока реле и не ожидал, что оно будет так часто и громко щелкать на нагреве. Приобрел твердотельное «Omron 2А» и инкуб стал абсолютно бесшумным.
[spoilerПотрошки]
IMG_20170517_183637.jpg
IMG_20170517_184229.jpg
[/spoiler]
конечно все по топорному.
Дни считаются исправно, зависов, залипаний.
Часы прошивал отдельно от основного скетча, потом отключал их, лил скетч инкубатора и подключал часы обратно.

Состав и затраты:
1. Корпус пенопласт "Несушка 2" на 77 яиц / подарил сосед
2. Нагревательные элементы 220В 70Вт / 700р
3. Arduino nano (Китай)/ 131р
4. Реле Omron 2A / 170р
5. Часы реального времени ds1307 / 130р
6. Термодатчики ds18b20 2шт / 220р
7. Дисплей ЖК 2004 с зеленой подсветкой / 230р
8. Двух канальный блок реле (позже на авто переворот поставлю) / 58р
9. Гигрометр DHT22 (Китай) / 240р (не установлен т.к. не разобрался со скетчем)
10. Гигрометр с выносным датчиком (Китай)/ 194р
11. Корпус был взят от мозгов ПММ / был
12. Кнопки 3шт. / 60р
13. Блок питания от зарядки мобильного телефона 5в 500mA / был
Итог: 2133р

У меня наблюдалась небольшая проблема после 12 дня инкубации утром и вечером, когда по времени включается проветривание, отключались нагреватели, вроде все как положено, но мощность, указанная на дисплее в процентах до ходила до 99%. А потом продолжался режим инкубации, и температура взлетала до 40 градусов.
Проблема решалась путем перезагрузки "дуни". Днем позже до меня дошло что для этого нам может помочь термостат "W1209" и питание дуни я погнал через его реле выставив при этом порог температуры в 38,7. И на этом я забыл об этой проблеме.
На 20 день 3 яйца проклюнулись и к шести утра следующих суток они начали "лупиться" остальные.
Первый раз инкубирую яйца.
Будут вопросы отвечу в меру своей подкованности :lol:

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 17 май 2017, 12:26
Umka
Под DHT22 я там делал функцию опроса, все работает.
Корпус такой лучше мышам скормить и склеить побольше и главное повыше.
Убегание ПИД до 99% можно остановить перед провертиванием переводом его вычисления в ручной режим.

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

myPID.SetMode(MANUAL); 
Output = 200;
и после завершения проветривания

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

myPID.SetMode(AUTOMATIC);

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 18 май 2017, 11:17
Regulserg
Я так понимаю, эти функции надо вставить в блок скетча управления вентиляторами (проветривание)?

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 18 май 2017, 11:21
Umka
ну да, это не функция, это просто пара вызовов класса функции.

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 18 май 2017, 11:49
Regulserg
Роман, это примерно так?:

//управляем вентиляторами///////////////////////////////////////////////////////
void fan(int fanTime) {
//float tempInk = sht1x.readTemperatureC();
DateTime now = RTC.now();
if ((now.hour() == 7 && now.minute() < fanTime) || (now.hour() == 19 && now.minute() < fanTime) || needFan == 1) {
digitalWrite(fan_pin, LOW);
//если наступило время проветривания или измеренная температура выше заданной на величину аварии, то включаем продувку.
digitalWrite(extend_heater_pin, HIGH); // при этом отключаем обогрев
digitalWrite(heater_pin, LOW);
heater_off = true;
myPID.SetMode(MANUAL);
Output = 200;
}
else {
digitalWrite(fan_pin, HIGH); //иначе выключаем.
heater_off = false;
myPID.SetMode(AUTOMATIC);
}
}

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 18 май 2017, 12:10
Umka
Да.

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 18 май 2017, 15:29
Edvard
Umka писал(а):Под DHT22 я там делал функцию опроса, все работает.
Тямы не хватает его встроить, а этот скетч "SimpleSmartInkubatorDHT.ino" не видит этот датчик даже с поправками. Мб к следующему году получится прикрутить. :lol:
Umka писал(а):Корпус такой лучше мышам скормить и склеить побольше и главное повыше.
Я живу среди города в частном секторе и не думаю, что мне другой нужен. С этого вывел 10 на яйца и за глаза ;)

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 18 май 2017, 15:44
Umka
Работает там dht. Многие проверяли. Чего ему не работать?

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

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 02 мар 2018, 05:16
Djon1980
Здравствуйте!
Я новичок в Ардуино. Подскажите пож-та, как подключить дисплей по I2C (А4 и А5) и таймер реального времени по I2C (А4 и А5). У меня Nano.

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 02 мар 2018, 11:58
Umka
Изображение

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 02 мар 2018, 19:28
SergeiCRIM
Привет. Ну вот, а я нигде не цеплял 1,5к. Это плохо?

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 03 мар 2018, 05:25
Umka
А она на модулях бывает. Но по 10К. Посмотри на часах и на датчике, должны быть. И Ардуино внутреннюю подтяжку пинов включает. Без подтяжки шина работать не будет. Там активные сигналы как раз от питания к земле шину тянут. Как и 1wire тоже.

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 03 мар 2018, 09:39
grifon26
Здравствуйте, я пробую сделать инкубатор по вашому скетчу но немогу разобратся с управлением мотора, ви сделали управление через 1 пін, а как мне сделать через два пина (без енкодера) которие управляют двума реле с концевиками на отключение. Спасибо.

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 03 мар 2018, 11:39
Umka
А зачем 2 пина? Ну, управляйте двумя реле с одного пина.

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 10 мар 2018, 15:14
grifon26
И все же немогу разобратся,
[spoiler]void turn(boolean needTurn) {
int turnPeriod;
int turnCommand;
EEPROM_read(11, turnPeriod);
lcd.setCursor(13, 4);
lcd.print("R");
if (turnPeriod == 0)
{ lcd.print(" OFF ");
return;
}
if (turnPeriod < 13) turnCommand = turnPeriod;
else if (turnPeriod > 12 && turnFlag == 0) { //если произошел поворот (сброшен флаг) и значение в памяти 13, то
turnCommand = random(1, 6); //берем случайное значение часов 1-6
turnFlag = 1; //защелкиваем флаг вычисления случайных значений до следующего поворота
}
currentTime = millis() / 1000;
lcd.print((loopTime - currentTime + turnCommand * 3600UL) / 60UL);
lcd.print("m");
if (needTurn == true) {
if (currentTime > (loopTime + turnCommand * 3600UL)) { // 3600000 сравниваем текущий таймер с переменной loopTime + период поворота в часах.
digitalWrite(povorot_vlivo_pin, !digitalRead(povorot_vlivo_pin)); // включаем/выключаем реле поворота
loopTime = currentTime; // в loopTime записываем новое значение
turnFlag = 0; //сбрасываем флаг поворота
}
}
}[/spoiler]
как сделать на два реле?
первое реле управлается на пин povorot_vlivo_pin
второе на povorot_vpravo_pin
Наверное нужно включить еще одную переменную , если повернулось вправо - то =1 если влево то =0.

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 10 мар 2018, 15:47
Umka
А я не пойму в чем сложность то? Если реле переключающие, то пускай вместе включаются, просто разные группы контактов использовать https://photos.app.goo.gl/6Jl9y7ozQJPrPii82

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 11 мар 2018, 10:57
grifon26
Можно ли так сделать:
[spoiler]void turn(boolean needTurn) {
int turnPeriod;
int turnCommand;
int povorot;
EEPROM_read(11, turnPeriod);
EEPROM_read(19, povorot);
lcd.setCursor(10, 0);
lcd.print("R");
if (poworot == 1) {
if (turnPeriod == 0)
{ lcd.print(" OFF ");
return; //если нулевой период поворота, то не поворачиваем яйца.
}
if (turnPeriod < 13) turnCommand = turnPeriod;
else if (turnPeriod > 12 && turnFlag == 0) {
turnCommand = random(1, 6);
turnFlag = 1;
}
currentTime = millis() / 1000;
lcd.print((loopTime - currentTime + turnCommand * 3600UL) / 60UL);
lcd.print("m");
if (needTurn == true) {
if (currentTime > (loopTime + turnCommand * 3600UL)) {
digitalWrite(turn_pin_r, HIGH);
delay(15000);
EEPROM_write(19, 2);
loopTime = currentTime;
turnFlag = 0;
}
}
}
if (poworot == 2) {
if (turnPeriod == 0)
{ lcd.print(" OFF ");
return; //если нулевой период поворота, то не поворачиваем яйца.
}
if (turnPeriod < 13) turnCommand = turnPeriod;
else if (turnPeriod > 12 && turnFlag == 0) {
turnCommand = random(1, 6);
turnFlag = 1;
}
currentTime = millis() / 1000;
lcd.print((loopTime - currentTime + turnCommand * 3600UL) / 60UL);
lcd.print("m");
if (needTurn == true) {
if (currentTime > (loopTime + turnCommand * 3600UL)) {
digitalWrite(turn_pin_l, HIGH);
delay(15000);
EEPROM_write(19, 1);
loopTime = currentTime;
turnFlag = 0;
}
}
}[/spoiler]

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 12 мар 2018, 19:16
grifon26
Скажите еще я вижу у Вас для подключения часов и lcd используются резистори по 1.5 КОм скажите а можно поставить по 1 кОм или по 2,2 кОм

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 12 мар 2018, 19:51
Umka
Это где?

Re: SmartInkubatorV2 all bird Без энкодера

Добавлено: 13 мар 2018, 05:00
grifon26
i2c.jpg