Климатическая камера для сыровяленых колбас на Arduino

Вопросы не вошедшие в форумы из категории
Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 22 окт 2017, 13:33

Всем доброго времени суток. Замучил я Эдуарда вопросами в комментариях к урокам и по его совету решил создать тему здесь.
Сразу скажу: для подробного описания будет многабукав и лонгрид. Если интересно - продолжим.
Также уточню-прогаммировал я в последний раз лет 10 назад, на 1м или 2м курсе университета. Максимум, что мы тогда делали-сортировка массива на С++.
Увлекся я с недавних пор изготовлением в домашних условиях всяких сыровяленых вкусностей. Начинал с простых вещей типа джерки или бастурмы. Такие продукты не слишком прихотливы к условиям созревания. Но хочется "расти" в этом плане. Для более серьёзных продуктов, вроде коппы, брезаолы или просто сыровяленой колбасы требуются определенные условия, а именно +12С и 75% влажности. В идеале. Но вполне допускаются отклонения на уровне 10-16С и 68-78%. Также желательно движение воздуха в камере со скоростью 0,2-0,5 м/с.
Основой камеры, естественно, будет холодильник. Компрессорный. Это накладывает определенные ограничения на поддержание температуры. Т.е. в любом случае будет иметь место гистерезис. Для себя компромиссным выбрал диапазон 11-14С. Тут мне более менее понятно:считываем датчик температуры, и если необходимо включаем некий PIN и пока температура не опустится до 11. Реле не будет. Будет симисторный ключ на moc3063+BTA16CW типа такого. Только со снаббером. Ибо холодильник-неслабая индуктивность.
Изображение
После отключения считаю необходимым в течении 5-10 минут программно запретить выключение этого PINа независимо от температуры в камере. Эдакая защита для компрессора. Тем более, что за эти 5-10 минут, при закрытой двери, температура из такого гистерезиса не выйдет.
Теперь переходим к влажности. Пересмотрел кучу материалов в Интеренете. Все борются с пониженной влажностью запихивая в камеру увлажнитель и покупая к нему гигростат. Но, прочитав более 3х десятков страниц профильного форума, понял, что увлажнитель ПОЧТИ не нужен, т.к. практически весь период созревания мясо/колбаса теряют влагу, из-за чего влажность в камере сильно возрастает. Стало быть нужен осушитель, который бы собирал влагу из воздуха.
Посмотрев варианты самодельных камер и прикинув бюджет, понял, что многие вещи избыточны. Так, один автор контролирует температуру и влажность одним термостатом и ДВУМЯ гигростатами(один на увлажнение, второй на осушение). ИМХО это явный перебор. К тому же, если ценник на термостат в $10 еще понятен, то $15-20 гигростат-не совсем.
И тут я понимаю, что Arduino, с которым я давно хотел познакомиться-это именно то, что мне нужно. Один датчик темепратуры, один датчик влажности(вместо двух), один дисплей(вместо трех). Заказал китайский UNO, дисплей 1602 i2c, часы DS3231, датчик температуры и влажности si7021(прочитал про DHT11 и DHT22 и сразу от них отказался) и сопутствующую мелочевку. Пока еще жду.
Теперь перейдем к исполнительным органам.
1. Увлажнитель. Покупать ультразвуковой смысла не вижу, ибо придется заправлять его дистиллированной водой либо все соли, содержащиеся в воде будут в камере и на продукте. Поэтому в роли увлажнителя будет емкость с водой, накрытая крышкой и установленным кулером. Типа такого https://www.youtube.com/watch?v=OsNJCeiLROg&t=320s. Тут вроде бы тоже понятно. Читаем датчик, отслеживаем влажность. Упала ниже 72% включаем PIN. И пока не достигнем 75%-работаем. К пину думаю подключить простой биполярный транзистор npn структуры через токоограничивающий резистор Ом эдак на 180-200 . В наличии есть S8050, и КТ815-хотя это уже перебор для кулера в 0,14А.
2.Осушитель. Он-то меня сюда и завел. Посмотрев на Али цены на осушители воздуха, был мягко говоря, шокирован. :o $30! А знаете за что? За 2 алюминиевых радиатора, кулер и элемент Пельтье. Ах да, и блок питания на 9В и 2А. Вот тут есть отличный обзор этого чуда.
Когда-то я уже игрался с элементами Пельтье в попытке создать автохолодльник. И пришел к выводу, что лучше просто заполнить пустое пространство в термобоксе аккумуляторами холода и как можно реже открывать.
Ну и зачем отдавать дядюшке Ляо 30 у.е., если у меня есть все необходимое? В том же YouTube'e нашел пару конструкций самодельных осушителей на элементе Пельтье.
https://www.youtube.com/watch?v=JmZdYsr8kxA&t=533s
Пусть не так эстетично, зато дешевле в разы. Сам Пельтье максимум пару баксов. Остальное вообще может дома пылиться. Как в моем случае.
После видео со сбором воды в банку меня осенило! Ведь можно собирать влагу в емкость для увлажнителя. Практически чистый дистиллят!
Таким образом мой увлажнитель-осушитель из говна и палок подручных средств будет представлять симбиоз устройств из первого и второго видео.
С алгоритмом тоже понятно. Читаем датчик, отслеживаем влажность. Если больше 78% включаем PIN. И работаем пока не опустимся до заветных 75%.
Но вернемся к нашим баранам. Т.е. к элементу Пельтье. После прочтения уроков Эдуарда пришлось отбросить мысль о простом ключевом управлении Пельтье при помощи МОСФЕТа. Придется прибегнуть к ШИМу. Как поднять частоту до 62,5 кГц и на каком таймере я понял.
Теперь начинаются собственно вопросы.
Можно ли кулер с горячей стороны Пельтье просто запараллелить с самим Пельтье? Будет ли он эффективно охлаждать его при "низком" уровне ШИМа(когда осушитель, условно, выключен)? Или, все же, необходимо управлять кулером по термодатчику на радиаторе? Или вообще собрать отдельную аналоговую схему на ntc-термисторе?Изображение
Нужно ли снижать уровень задания ШИМ-сигнала для Пельтье с некоторой задержкой(ступенчато) или можно просто при достижении нужной влажности менять ШИМ с 95-100% на 15-20%? Насколько такой скачек "вреден" для Пельтье?
Пойдут ли S8050 и S8550 в качестве ключа для S76121P? Какой резистор нужен в цепи затвора(R5) в этом случае?
Из какого материала сделаны сердечники импульсных трансформаторов в компьютерных БП?(для расчета индуктивности дросселя)

Для питания Arduino и всех устройств в камере планирую использовать АТХ блок питания на 350Вт. Блок довольно неплохой. Со всеми входными конденсаторами и дросселями. Дежурка будет питать Arduino и драйвер МОСФЕТа, а шина +12В, соответственно, все исполнительные органы.
Правда при включении 12В нагрузки напряжение просаживается до 10,5В. Я так понимаю, что в случае tl494 нужно убрать резистор от его первой ноги к линии +5В, а тот что идет к линии +12В пересчитать так, чтобы напряжение на выходе было именно +12В. Правильно? Первый закон Кирхгофа?
3. Вентилятор. Тут тоже все просто. Раз мы уже изменили частоту ШИМа, то у нас теперь есть еще один порт с такой же частотой. Кстати, кулеры в звуковом диапазоне ШИМа очень любят петь, поэтому 62,5 кГц нам очень даже на руку. Тут думаю задать ШИМ на уровне, скажем, 25-30%, а при включении Холодильник || Увлажнитель||Осушитель увеличивать задание до 50-70% с целью более равномерного перемешивания воздуха в камере.
4. УФ-лампа. Это уже в будущем. Необходимо включать УФ лампу 1 раз в сутки(например в полночь) на 15-30 минут для уничтожения нежелательной флоры в камере. Возможно, с проверкой закрытия двери холодильника. Тут может быть тот же симисторный ключ на менее мощном симисторе, или ардуиновский релейный(твердотельный) модуль.
Также будут прописаны все аварийные ситуации, указывающие на неисправности исполнительных органов. t>16C, влажность <68%, влажность >85%. Примерно так.
Поскольку все параметры устанавливаются единожды, то подключения клавиатуры и задания параметров с нее пока не планируется. На экран хочу выводить текущие показатели в камере. Вот вроде бы и все, что хотелось спросить. Как приедет Arduino начну пытаться подключать модули и набрасывать код. Тогда вопросов будет еще больше.
Спасибо всем, кто дочитал сей опус до конца. Жду ваших ответов, советов, комментариев, критики, подсказок.
С уважением, Игорь.


Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Эдуард » 22 окт 2017, 17:05

Игорь, здравствуйте!
Задавайте конкретные вопросы по электронике и программированию. С удовольствием отвечу. Самому очень интересно, что у вас получится.

Пока скажу свои мысли по поводу использования компьютерного блока питания. Думаю, это не очень хорошая мысль. В подобных блоках питания обратная связь заводится от напряжения + 5 В. Поэтому без нагрузки на + 5 В другие напряжения не всегда выдерживаются точно. Я как-то подключал нагрузку к выходу + 12 В компьютерного БП. Чтобы напряжение 12 В было более или менее стабильно при изменении нагрузки, мне пришлось подключить нагрузку 2 А к выходу + 5 В. Не лучше ли использовать блоки питания 12 В для светодиодных лент. Их сейчас очень много и цены все время падают.

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 22 окт 2017, 18:42

Здравствуйте, Эдуард.
Конкретные вопросы: как рассчитать резистор затвора полевика?
Из какого феррита, как правило, сделаны импульсные трансформаторы в АТХ БП?
Сгодятся ли S8050/8550 для драйвера S76121?
По поводу компьютерных БП. Я сегодня в свой заглянул. Там КА7500, он же TL494. В таких БП вход на 1й ноге отслеживает выходные напряжения через банальный делитель. Точнее два. По линии +5 и по линии +12.
Для примера в одном из моих бп Codegen 300W по линии 5в стоит резистор на 9,1к, а по линии 12в - на 39к. Ток втекающий в первую ногу равен Isum=I(5)+I(12)=5/9.1k+12/39k=0.86mA. Теперь, если убрать резистор с линии 5В, то для того, чтобы к 1й ноге подтекал расчетный ток нужно вместо 39к поставить резистор на 12/0,86=13,95 кОм. Можно взять многооборотный подстроечник килоом на 20 и выставить нужное напряжение. При этом мы будем абсолютно отвязаны от контроля по линии 5В. Я это понимаю так.
К тому же БП уже есть в наличии, и имеет отдельный дежурный источник на 5В.

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Эдуард » 22 окт 2017, 21:07

Резистор в затворе полевого транзистора ограничивает пиковый ток драйвера. Затвор полевого транзистора обладает большой емкостью. Например, для выбранных вами транзисторов S76121 это 850 пкФ. В начале импульса на выходе драйвера без резистора происходит короткое замыкание. Рассчитывается он исходя из максимального пикового тока драйвера по закону Ома. Также если отказаться от резистора, то сильно коробится форма импульса на затворе и может даже быть выброс до 0.

Я не знаю из какого феррита выполняются трансформаторы компьютерных БП. Можно, конечно, намотать и проверить характеристики дросселя. Я писал об этом в этой теме http://mypractic-forum.ru/viewtopic.php?t=55. Я предпочитаю использовать сердечники Epcos и рассчитывать их параметры по программе этой фирмы. Я писал об этом здесь http://mypractic-forum.ru/viewtopic.php?t=14.

Транзисторы S8050/8550, на мой взгляд, вполне подходят для простого драйвера.

На счет блока питания, буду рад если ошибся. У меня был старый блок питания. Возможно схемотехника БП изменилась.

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 22 окт 2017, 22:10

Спасибо. Получается при 5в на драйвере и максимальном токе коллекторов для s8050 и s8550 в 0,5 А получаем 10 Ом, минимум. Лучше чуть больше, скажем до 15 Ом. Верно?
С ферритом придется экспериментировать, ибо rlc тестера в хозяйстве нет.

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Эдуард » 22 окт 2017, 22:38

Я думаю, лучше 10 Ом. А у дросселя мало замерить индуктивность. Очень важен ток насыщения. Я писал на форуме, как его измерить. Не то чтобы сложно, как-то хлопотно. И обязательно нужен осциллограф, лучше с памятью.

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 24 окт 2017, 13:57

Я тут сравнил схемы первой, второй и Arduino версий контроллера. И смотрю с обвязкой в версии Arduino вы сильно не заморачивались. В версии 2.0 было по 2 электролита, были маленькие дроссели после них. В первой версии емкости были еще больше. Получается можно без маленьких дросселей, один электролит на входе и один между входом и дросселем?
Если не получится достать выводные танталовые конденсаторы, можно ли их заменить керамикой и нужно ли будет менять номиналы?

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Эдуард » 24 окт 2017, 14:31

Здравствуйте!
В Ардуино-версии дроссели фильтра радиопомех остались. Можно от них отказаться, особенно если элемент Пельтье расположен недалеко от контроллера.
Можно поставить пару керамических конденсаторов на 1 мкФ и электролитический.

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Эдуард » 25 окт 2017, 23:21

Игорь, здравствуйте!
Вспомнил афоризм ”Дабы не выглядеть дураком, не строй из себя умного”. Рискну задать дурацкий вопрос или предложение.

А если в компрессоре холодильной установки применить шаговый или бесколлекторный двигатель?
Какая у вас главная проблема при использовании компрессорного холодильника – это колебания температуры из-за релейного режима управления охладителем. Не просто релейного режима, а режима с низкой частоты переключения. Если двигатель включать/выключать часто он просто сгорит. Применение шагового двигателя позволит плавно управлять скоростью компрессора или использовать релейный режим с достаточно высокой частотой. Например, в режиме 6 секунд включено, 54 секунд выключено холодильная мощность будет равна 1/10 от максимальной. Таким образом, можно построить точный и стабильный регулятор температуры. По такому принципу я управляю нагревательными элементами печек.
Пишу то, в чем не имею никакого опыта. Не очень представляю, как устроен компрессор холодильника, и как это реализовать в механике.

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 26 окт 2017, 13:08

С тэнами, оно, конечно, попроще будет. Я электромеханик, но не холодильщик . Честно говоря я не представляю себе как технически это сделать. К тому же шаговых двигателей мощностью, сопоставимой с мощностью компрессора холодильника я не знаю.
Тут идеально, с точки зрения простоты и технологии, подошел бы абсорбционный холодильник типа Кристалл-404, который холодит за счет работы тэна. Вот тут есть где разгуляться. Сюда бы ПИД регулятор отлично бы вписался. Симисторный диммер, управляемый той же ардуиной.
Но эти холодильники-анахронизм. Давно не выпускаются, никем не ремонтируются. Да и стремно дома держать энное количество амака, который может в любой момент просочится через трубки, которым лет больше, чем мне. К тому же очень низкий КПД.
Но имеено такой у меня на работе(завод) в кабинете имеется. И сейчас выполняет роль пробной климатической камеры. Пока только по температуре(китайский термостат за $1,5 и самодельный симисторный ключ вместо реле). С избыточной влажностью борюсь при помощи соли, которую периодически достаю и просушиваю. Также параллельно холодильнику повесил блок питания на 8в и кулер. На мой взгляд, пока, условия более-менее соответвуют требуемым. Но результат будет через месяца 2-3. Когда пробный кусочек шеи будет готов. Хотя можно выдерживать 5-6 месяцев, и более. Тут насколько хватит терпения.
А часто компрессорный холодильник включаться не будет. Во-первых приемлимый гистерезис в 3-4 градуса. Во-вторых, если не открывать двери каждые 5минут, то холодильная камера-вещь весьма инерционная в тепловом смысле(тут не мне вам рассказывать). Ну и в-третьих, хочу программно обеспечить минимальную задержку перед следующим включением минут на 5-10. За это время обмотки холодильника остынут, а фреон осядет.

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 01 ноя 2017, 20:38

Начал понемногу набрасывать скетч. Датчик температуры еще в пути, поэтому проверить пока не могу. Также еще не разбирался с часами.
Коментировал каждую строку, как я понимаю.
#include <Wire.h> // подключаем библиотеку Wire.h
#include <LiquidCrystal_I2C.h> // подключаем библиотеку LiquidCrystal_I2C.h
LiquidCrystal_I2C lcd(0x27, 16, 2); // устанавливаем дисплей
#include <SI7021.h> // подключаем библиотеку SI7021.h
Si7021 sensor; // устанавливаем датчик типа Si7021 с именем sensor


#define refrPin 2 // 2й pin управляет включением холодильника
#define humPin 9 // 9й pin генерирует ШИМ сигнал для управления работой увлажнителя
#define dehumPin 10 // 10й pin генерирует ШИМ сигнал для управления работой осушителя
#define fanPin 4 // 4й pin управляет включением вентилятора
#define lampPin 3 // 3й pin управляет включением УФ лампы

void setup () {

lcd.init(); //инициализируем дисплей
lcd.backligth(); //включаем подсветку дисплея
lcd.setCursor(0,0); //ставим курсор в начало первой строки
lcd.print("Dry cured camera"); //выводим приветствие
lcd.setCursor(3,1); //ставим курсор на 4й символ второй строки (для симетрии)
lcd.print("is started"); //выводим приветствие
delay(3000) //задержка надписи на экране на 3 секунды


TCCR1A = TCCR1A & 0xe0 | 1; // ШИМ 8 разрядов, 62,5 кГц на 9м и 10м пине
TCCR1B = TCCR1B & 0xe0 | 0x09; // ШИМ 8 разрядов, 62,5 кГц на 9м и 10м пине 

pinMode(refrPin,OUTPUT); // обозначиваем pin refrPin как ВЫХОД
pinMode(humPin,OUTPUT); // обозначиваем pin humrPin как ВЫХОД
pinMode(dehumPin,OUTPUT); // обозначиваем pin dehumPin как ВЫХОД
pinMode(fanPin,OUTPUT); // обозначиваем pin fanPin как ВЫХОД

sensor.begin(); // инициализируем датчик Si7021

}


void loop()
{

si7021_env data = sensor.getHumidiyAndTemperature(); //получаем с датчика влажность и температуру
double temp=(double)data.celsiusHundredths/100.0; //инициализируем переменную temp типа double со значением celsiusHundredths/100.0 для вывода на экран в виде десятичной дроби.
double hum=(double)data.humidityBasisPoints/100.0 //инициализируем переменную hum типа double со значением humidityBasisPoints/100.0 для вывода на экран в виде десятичной дроби.
int hum1 = data.humidityBasisPoint //инициализируем переменную hum1 типа int со значением humidityBasisPoints для проверки и регулирования ШИМа для увлажнителя и осушителя.

TempControl()
HumControl()
DehumControl()
FanControl()
LampControl()

// Далее идет описание функций управления всеми исполнительными органами

void TempControl() //объявляем функцию TempControl типа void
{

if (temp>=16.0) //Если температура +16 или больше, то...
{ while (temp>12.0) //пока она держится выше +12..
digitalWrite(refrPin, HIGH); //включать холодильник
}

else {digitalWrite(refrPin, LOW);} //иначе не включать холодильник
//Сдесь нужно будет добавть задержку на 10 минут перед следующим включением

}


void HumControl() //объявляем функцию HumControl типа void
{


if (hum1>0 && hum1<=6999) //если влажность от 0 до 69,99%
{analogWrite(humPin, 255); //вкючаем шим 9 пина на "полную"

}


else

if (hum1>=7000 && hum1<=7499) //если влажность от 70% до 74,99%, то
{ while (hum1 <=7499) //по пока влажность менее или равна 74,99%v
int humPWM=hum1; //инициализируем переменную humPWM равную hum1
constrain(humPWM, 7000, 7499); //ограничиваем диапазон переменной. возможно не нужно
map (humPWM, 7499, 7000, 0, 255); //инвертиртируем диапазон влажности 74,99-70,0% в дипазон значений ШИМа 0...255, получая отрицательную обратную связь.
analogWrite(humPin, humPWM); //включаем ШИМ на пине 9 с интенсивностью, обратно пропорциональной влажности в диапазоне 70-74,99%
}


else
{analogWrite(humPin, 0) //иначе увлажнитель не включать
}

}


void DehumControl() //объявляем функцию DehumControl типа void

{

if (hum1>0 && hum1<=7500) //если влажность от 0 до 75%
{analogWrite(humPin, 15); //вкючаем шим 10 пина на минимум,примерно около 5%, т.о. элемент Пельтье будет работать непрерывно.

}

else

if (hum1>=7501 && hum1<=8000) //если влажность от 75,01% до 80%, то
{ while (hum1 >=7501) //по пока влажность более или равна 75,01%
int dehumPWM=hum1; //инициализируем переменную dehumPWM равную hum1
constrain(dehumPWM, 7501, 10000); //ограничиваем диапазон переменной.возможно не нужно
map (dehumPWM, 7501, 8000, 15, 255); //преобразовываем диапазон влажности 75,01-80,0% в дипазон значений ШИМа 15...255, получая положительную обратную связь.
analogWrite(dehumPin, dehumPWM); //включаем ШИМ на пине 10 с интенсивностью, прямо пропорциональной влажности в диапазоне 75,01-80,0%
}

else

if (hum1>8000) //если влажность более 80,0%
{analogWrite(dehumPin, 255); //вкючаем шим 10 пина на "полную"
}

}
//Возможно, такая точность избыточна, и в будущем будет задан гистерезис в 2-3%, с учетом погрешности датчика.


void FanControl() //объявляем функцию FanControl типа void
{
bool refStat=digitalRead(refPin) //инициализируем переменную refStat типа boolean со значением равным состоянию 2 пина(включен или не включен холодильник)
bool humStat=digitalRead(humPin) //инициализируем переменную humStat типа boolean со значением равным состоянию 3 пина(включен или не включен увлажнитель)
bool dehumStat=digitalRead(dehumPin) //инициализируем переменную dehumStat типа boolean со значением равным состоянию 11 пина(включен или не включен осушитель)

if (refStat == || humStat==||dehumStat==HIGH) //если работает хотя бы одно из устройств, то...
{ digitalWrite(fanPin, HIGH) //включить вентилятор
}
}
//Возможно, логика работы этого устройства будет пересмотрена в зависимости от протекания процесса в климатической камере. Тем более, что осушитель "работает" всегда.
}


void LampControl() //объявляем функцию LampControl типа void
{
//Сдесь будет код включения УФ лампы в определенное время на заданный промежуток времени.
//Нужен код банального суточного таймера с использованием RTC.
//Например, включить лампу в 0:10 на 20 минут. Возможно, будет проверка открытия двери.

}



}

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 02 ноя 2017, 22:02

В голове пока такая схема. Замечания? Советы?
Климатконтроль.JPG

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Эдуард » 05 ноя 2017, 19:44

Здравствуйте! Я сейчас в Абхазии. Приеду 7 ноября, посмотрю.

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Эдуард » 08 ноя 2017, 23:38

Здравствуйте!
Не понятно зачем нужны оптроны для ключей увлажнителя и вентилятора. В любом случае необходимо добавить резисторы между эмиттерами оптронов и землей. Иначе транзисторы могут не закрываться.
Есть сомнения по поводу подключения двигателя вентилятора параллельно элементу Пельтье. Коллекторный двигатель крайне нелинейная нагрузка, особенно при пуске. Также это источник коммутационных помех. Может добавить параллельно двигателю электролитический конденсатор довольно большой емкости 1000 ... 2000 мкФ? И обязательно сделать плавный разгон. Я бы добавил еще защиту по току на одном транзисторе, как в схеме контроллера элемента Пельтье.

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 09 ноя 2017, 06:29

Здравствуйте, Эдуард.
Оптроны думал поставить для развязки, и уменьшить ток через порт Ардуино. Но думаю вы правы, и он тут избыточен По поводу двигателя параллельно Пельтье .Насколько мне помнится-компьютерный кулер-не коллекторная электрическач машина. Поткрайней мере надпись brushless меня на это подталкивает. По поводу плавного разгона - просмотрите, пожалуйста, мой код. Я там попытался сделать это программно. И для осушителя и для увлажнителя. Там получается, если я правильно понимаю, пропорциональный регулятор на определенном диапазоне значений влажности.
Про защиту думал. Возможно ,добавлю.
Спасибо.

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Эдуард » 09 ноя 2017, 13:10

Здравствуйте!
Пропорциональный регулятор плавный разгон не обеспечит. Это мгновенный регулятор без памяти. Один он практически никогда не используется. Должен быть еще интегральный.
По поводу программы. Может вы будете добавлять отдельные программные блоки и тут же их проверять. Подключили датчик влажности, вывели значение в последовательный порт, проверили. И т.д.
И я бы еще структуру программы другой сделал. Например, как в контроллере элемента Пельтье в уроках Ардуино. У вас надо отрабатывать много временных интервалов, есть независимые процессы.

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 09 ноя 2017, 14:04

Датчик еще в пути. Заказывал все в один день, но у разных продавцов. Ардуинка давно приехала. Дисплей был не рабочий, открыл спор, дождался решения, заказал повторно. А датчик до сих пор едет, от другого продавца.
Взял si7021. По отзывам, вроде, лучше чем dht11 и dht22. Поэтому скетч-черновой вариант. Чтобы хотя бы примерно прикинуть логику. Да и синтаксисом,опять же,знакомлюсь.
Как по мне, то кулер не столь инертный механизм, чтобы применять к нему ПИ регулирование. Может тогда просто собрать для него аналоговый регулятор на термисторе? И регулировать его обороты в зависимости от температуры горячей стороны радиатора?

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Эдуард » 09 ноя 2017, 14:19

Я думаю, лучше реализовать релейный регулятор с гистерезисом в микроконтроллере. Как в контроллере Пельтье на Ардуино. Надо стараться все сделать в микроконтроллере, собрать там все данные. Так легче настраивать, управлять. И неизвестно, какой будет окончательный алгоритм, какие данные придется связывать между собой.

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 10 ноя 2017, 00:49

Думаю, вы правы. Эх, опять придется заказывать у китайцев и ждать. Ушел заказывать ds18b20.

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Эдуард » 10 ноя 2017, 01:21

По моей партнерской ссылке датчик DS18B20 60 руб. стоит. И доставляют быстро.

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 10 ноя 2017, 07:36

Спасибо. Но я из Украины.

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 30 ноя 2017, 05:51

Наконец-то приехал долгожданный датчик температуры и влажности, и новый исправный lcd. Из двух скетчей примеров (для lcd и Si7021) слепил один. Пока просто вывод температуры и влажности на экран.
IMG_20171128_185920.jpg

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 03 дек 2017, 12:02

Здравствуйте, Эдуард. Читаю ваш скетч v 2.2 и не могу понять почему температура включения вентилятора 35 градусов, а выключения 40 градусов. Приехал ко мне ds18b20. Игрался с ним и 13м пином. Все получается. Но логику работы в вашем скетче не понимаю. Возможно, это опечатка.
Screenshot_2017-12-03-11-04-29.png

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Эдуард » 03 дек 2017, 12:43

Здравствуйте!
Это не значения температур, это адреса EEPROM. Там написано в комментариях над блоком. Вместе с контрольным кодом одно данное требует 5 байтов. Поэтому адреса увеличиваются на 5. Значения температур записываются программой верхнего уровня по этим адресам. Если данные не записаны, контрольные суммы не совпадают, то контроллер выдает ошибку.

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 03 дек 2017, 13:52

А слона-то я и не заметил :)

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 06 дек 2017, 20:52

Осваиваю модули. В принципе, ds18b20, Si7021 и ds3231 удалось запустить и вывести с них данные на дисплей. Продолжаю продумывать алгоритм и прикидываю разводку печатной платы, на которой будет все размещено.
Вложения
Screenshot_2017-12-06-19-51-22.png
Screenshot_2017-12-06-19-51-14.png

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 17 дек 2017, 20:46

Сбылась мечта идиота(с)
Купил сегодня абсорбционный холодильник Кристалл 4. Теперь стоит вопрос как его ШИМировать. Видел варианты диммера на Ардуино, с детекцией нуля, но боюсь, что не смогу скрестить его с PID библиотекой для Ардуино.
Пока нашел два более - менее пригодных варианта. Как я понимаю это суть одно и тоже, отличие только в месте включения нагрузки.
https://arduinodiy.wordpress.com/2015/07/25/1498/ пока больше к нему склоняюсь.

И вот такой
http://arduino.ru/forum/obshchii/izmene ... ino?page=1

Мощность ТЭНа не более 140 Вт. Т.е.менее 1 А.
Что скажете, Эдуард?

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 17 дек 2017, 22:44

Хотя сейчас присмотрелся к схемам и нашел еще одно важное отличие. В первом варианте напряжение на затворе есть всегда, а логическая 1 от мк будет отпирать транзистор в оптроне и тот будет притягивать затвор к "земле". Т.е.логика обратная-чем больше, тем меньше. Правильно?
В втором же случае 9 В попадут на затвор только в момент срабатывания оптрона. Верно?
P.S. Вот такой еще вариант нашел http://www.motor-r.info/p/blog-page_19.html?m=1

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Эдуард » 18 дек 2017, 00:53

Здравствуйте!
Посмотрите твердотельное реле MOC3083. У него ток до 1 А. Стоит 40 руб. Схема простая. Легко добавляется симистор. Есть синхронизация с началом периода.
ШИМ должен вырабатываться программно. Период несколько секунд. Единица ШИМ 20 мс (период сети 50 Гц). В терморегуляторе для печки я использую период ШИМ 2 сек, 100 градаций.

Slip
Сообщения: 30
Зарегистрирован: 22 окт 2017, 00:06

Re: Климатическая камера для сыровяленых колбас на Arduino

Сообщение Slip » 18 дек 2017, 09:32

Не могли бы вы выложить скетч с примером такого ШИМа? Я нашел библиотеку PID_v1. В ней есть пример для реле с, по сути, регулировкой временными интервалами. Тут интервал ШИМ, как я понимаю, 5 сек, но можно меньше. А вот как быть с частотой?


/********************************************************
* PID RelayOutput Example
* Same as basic example, except that this time, the output
* is going to a digital pin which (we presume) is controlling
* a relay. the pid is designed to Output an analog value,
* but the relay can only be On/Off.
*
* to connect them together we use "time proportioning
* control" it's essentially a really slow version of PWM.
* first we decide on a window size (5000mS say.) we then
* set the pid to adjust its output between 0 and that window
* size. lastly, we add some logic that translates the PID
* output into "Relay On Time" with the remainder of the
* window being "Relay Off Time"
********************************************************/

#include <PID_v1.h>

#define PIN_INPUT 0
#define RELAY_PIN 6

//Define Variables we'll be connecting to
double Setpoint, Input, Output;

//Specify the links and initial tuning parameters
double Kp=2, Ki=5, Kd=1;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);

int WindowSize = 5000;
unsigned long windowStartTime;

void setup()
{
windowStartTime = millis();

//initialize the variables we're linked to
Setpoint = 100;

//tell the PID to range between 0 and the full window size
myPID.SetOutputLimits(0, WindowSize);

//turn the PID on
myPID.SetMode(AUTOMATIC);
}

void loop()
{
Input = analogRead(PIN_INPUT);
myPID.Compute();

/************************************************
* turn the output pin on/off based on pid output
************************************************/
if (millis() - windowStartTime > WindowSize)
{ //time to shift the Relay Window
windowStartTime += WindowSize;
}
if (Output < millis() - windowStartTime) digitalWrite(RELAY_PIN, HIGH);
else digitalWrite(RELAY_PIN, LOW);

}

Понятно, что input'ом может быть любая переменная.


Вернуться в «Прочее»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей