Управление шаговым двигателем в зависимости от показаний с двух датчиков температур.
- Войдите на сайт для отправки комментариев
Доброго времени суток!
Если кратко, то требуется скетч, управляющий шаговым двигателем в зависимости от показаний, полученных с двух термодатчиков. Ниже я описал всё более подробно.
Признаться, хотел сам всё собрать и закодить, но чем дольше читаю и изучаю тему про Ардуино и С++, тем отчетливее понимаю, что едва ли осилю… По крайней мере не так быстро, как я рассчитывал ))) А то ишь, раскатал губу! Думал, за выходные всё соберу, хотя к электронике и программированию раньше не прикасался!
Итак, есть котел отопления, на котором температура теплоносителя регулируется ручкой-крутилкой (надо думать, потенциометр). Погодозависимая автоматика для котла есть в продаже, но 1) стоит неприлично и неоправданно дорого, 2) захотелось сделать регулятор температуры подачи самостоятельно (не только ради экономии, но и для собственного удовольствия).
Механизм работы я вижу следующим образом: два термодатчика (DS18B20), измеряющих температуру воздуха на улице (Т1) и температуру теплоносителя в подающей линии котла (Т2). В качестве исполнительного механизма выступает шаговый двигатель (дешевенький 28BYJ-48 с драйвером), который будет медленно-медленно поворачивать ручку регулятора в ту или иную сторону в зависимости от температуры на улице и температуры в подающей линии. Ну и до кучи дисплей LCD1602, который будет выводить на экран значения t1 (улица) и t2 (котел) для наглядности.
Опишу алгоритм своими словами:
- измеряем температуру Т2 (котел) несколько раз, например 4 раза с интервалом 30-60 секунд. Это нужно для того, чтобы определить температурный диапазон и выбрать наибольшее значение в качестве расчетного. Котел ведь как работает: если на регуляторе установлено значение 55 градусов, то сперва котел греет воду до заданных 55 градусов, после чего выключается и ждет, пока температура не опустится до 40 или 45 градусов, после чего снова включается и нагревает воду до заданных 55 градусов. Если измерить температуру только один раз, то как понять, какая температура подачи установлена? Никак. Надо сперва измерить диапазон температур и взять верхнее значение – это и будет температура, на которую установлен регулятор. Возможно, есть менее дурацкий способ измерить пиковую температуру, просто я о нём не знаю.
- определяем верхнее значение температуры котла (например, пусть это будет 40 градусов) и именно это значение берем для расчетов (и также именно это значение будет выводиться на дисплей LCD, чтобы было видно, какая температура установлена в качестве расчетной в настоящий момент).
- измеряем температуру T1 (на улице) – пусть это будет +5 градусов.
Далее по таблице смотрим, какая температура подачи должна быть при уличной температуре = +4 градуса. Видим, что в котле должно быть 50 градусов. Однако по факту в котле всего 40 градусов. Программа должна понять, что надо поднимать температуру.
Примерная таблица температур соответствия:
УЛИЦА |
КОТЕЛ |
+20 +100 |
20 |
+15 +20 |
35 |
+10 +15 |
40 |
+5 +10 |
45 |
0 +5 |
50 |
0 -5 |
55 |
-5 -10 |
55 |
-10 -15 |
60 |
-15 -20 |
60 |
-20 -25 |
65 |
-25 -100 |
65 |
- Отдать команду на шаговый двигатель (например, повернуть вал на 5 градусов по часовой стрелке). Если ситуация противоположная, т.е. согласно таблице температуру в котле надо понижать, то отдается команда шаговику повернуть вал против часовой стрелки на 5 градусов.
И всё, собственно. Delay 5 минут и запуск с самого начала.
Хочу поинтересоваться, сколько может стоить написание такого скетча и инструкция по схеме подключения железа (грубо говоря, какой провод на какой пин подключать). И хотелось бы иметь возможность изменять условия алгоритма – температуры соответствия, направление вращение двигателя, градус поворота (потребуется при точной настройке на месте). Я прекрасно понимаю, что все эти данные будут в скетче и их конечно же можно менять))), но есть ли возможность сделать это более удобно? Например, некий блок в начале скетча с параметрами, от которых будет отталкиваться программа. Ведь одну и ту же задачу можно реализовать по-разному…
На данный момент приобретено следующее. Шаговичок куплю в ближайшее время.
P.S. Можно, конечно, пойти другим путем – жестко связать шаговик с ручкой-крутилкой и назначить определенный угол поворота в зависимости от уличной температуры. Это было бы проще! Грубо говоря, назначить шаговику определенное положение вала при определенной температуре – просто и надежно, но как-то без изысков. Кстати, такой скетч тоже бы хотелось, но, полагаю, через какое-то время я и сам смогу его написать…
Всем откликнувшимся спасибо! Готов ответить на любые вопросы! Увы, не сижу за монитором весь день, работа иного рода. Поэтому отвечать буду не моментально!
Не проблема. Но может быть Вашу проблему можно будет решить более интересным способом "без крутилок". Когда-то я тоже шел этим путем и признал его тупиковым. Дайте марку котла - посмотрю, что можно сделать.
Спасибо за предложение,mykaida! Буду раз, если есть такая техническая возможность! Котел Buderus Logomax U052-28.
https://buderus-shop.su/datchik-temperaturi-fa - я когда вижу вот ТАКИЕ цены за ТАКОЕ оборудование, мне хочется то ли хохотать, то ли сжечь дотла завод Будерус.... то ли сжигать завод, демонически хохоча )))))
Vzaradka@gmail.com
89994427965
Вы знаете, пожалуй RC100 будет дешевле разработки программы с ее тестированием и подгонкой.
Зачем Вам температура на улице, когда Вам нужна температура в помещении?
Еще посмотрю.
Хотя, возможно кто и подтянется с дефолтным предложением.
Я предвидел это вопрос! Он полностью закономерен, если бы не одно НО: котел установлен в подвале дома №1, далее под землей идет теплотрасса до дома №2, в котором находится коллектор. Из этого коллектора один контур идет на обогрев дома №2 батареями (радиаторами), а второй контур в виде теплотрассы идет под землей в дом №3 на коллектор теплого пола.
В домах №2 и №3 совершенно разные температуры для отопления- на радиаторное отопление температура повыше, на теплый пол - пониже, поэтому в них установлены комнатные регуляторы (аж по 800 руб за штуку, т.е. супербюджетно - 1.600 руб. на два дома), которые включают и отключают циркуляционные насосы, тем самым регулируя температуру в помещениях.
А моя приблуда, которую я тут нафантазировал, скорее для того, чтобы самую малость экономить газ. Зачем, например, при оттепели и температуре +5 (на улице) держать в котле 65 градусов, если хватит и 55?
В котлах Bosch (Junkers) график зависимости температуры подачи от внешней температуры
задаётся прямой проходящей через две точки.
Так как в формуле теплопроводности температура в первой степени.
Поэтому ваша таблица не сильно нужна.
Вам достаточно будет map диапазона наружных температур в диапазон температур подачи.
Лично я свой Cerapur как настроил давно так и не подходил к настройкам лет 10.
Погодник к него в комплекте поставки.
Только раз в 3-4 года серу из конденсатного блока выгребаю.
И еще трём соседям ставил в Evromax погодники, но там график задаётся потенциометрами.
Кстати вместо шаговика лучше возьмите серву - сможете знать куда вы ручку повернули.
Тогда вы сможете даже не ставить датчик на подачу,
а мапить наружную температуру в угол поворота сервы.
Кстати вам понадобится хотя-бы простое , но меню настроек.
Кривая отопления на 34 странице
https://www.google.ru/url?sa=t&source=web&rct=j&url=https://junkersservi...
Большое спасибо за столь развернутое мнение!
Я пробежался глазами по описанию Вашего котла - по-моему, его функционал несколько отличается от моего Будеруса. У меня нет никаких начальных и конечных точек, увы. Только текущая установленная температура. Можно настроить максимальную температуру, можно настроить температуру разности срабатывания горелки, но нет ничего, что хотя бы отдаленно напоминало погодозависимый механизм. Для реализации подобной функции надо покупать отдельный блок, который общается с котлом то ли по ЕМС, то ли ЕСМ... И именно к этому блоку цепляется уличный термометр.
Поспорю насчет сервы - мне кажется, что с помощью шаговика можно гораздо точнее задать положение "крутилки". Там от упора до упора градусов 120 всего. Из низ мне нужно всего 60-70 градусов. Шаговиком я могу добиться большей прецизионности, чем сервой.
Тогда вы сможете даже не ставить датчик на подачу, а мапить наружную температуру в угол поворота сервы.
Я в самом первом сообщении так и писал ))): Можно, конечно, пойти другим путем – жестко связать шаговик с ручкой-крутилкой и назначить определенный угол поворота в зависимости от уличной температуры. Это было бы проще! Грубо говоря, назначить шаговику определенное положение вала при определенной температуре – просто и надежно, но как-то без изысков. Кстати, такой скетч тоже бы хотелось, но, полагаю, через какое-то время я и сам смогу его написать…
Хотелось бы, конечно, самому написать этот скетч! Но что-то я увяз в синтаксисе и в понятиях. Многое просто не могу осмыслить - перечитываю по 5-6 раз и просто не врубаюсь((( Сижу, потихонечку втягиваюсь, но что-то темпы не особо. Искал тут на районе кружок или секцию по Ардуино (чтобы очно, а не онлайн), так там до 16 лет берут! 41 летний дядя при попытке записаться в такой кружок будет заподозрен в нехорошем, ха-ха-ха! А для взрослых ничего подобного нет, только частные уроки по 1-2тр/час.
Шаговый двигатель никак не связан с углом - вот в чем проблема.
Йоп, а ведь и правда... Как-то мне не пришёл в голову этот очевидный факт! Тогда для варианта с одним термометром он не вполне подходит. Зато для варианта с двумя термометрами подходит отлично.
Спасибо за подсказку!!
Не понимаю, как он впишется в сценарий с двумя градусниками.
Мне кажется, что во избежание геморроя, по совету trembo, стоит сразу смотреть на серву с металлическим редуктором. Mg995 вроде из таких.
Мне кажется, что во избежание геморроя, по совету trembo, стоит сразу смотреть на серву с металлическим редуктором. Mg995 вроде из таких.
На али продаются резиновые зубчатые ремни от принтеров с шагом 2мм любого диаметра.
US $0.46 6%OFF | GT2 Closed Loop Timing Belt Rubber 110/122/158/200/400/610/1220mm 2GT BELT width 6mm suitably GT2 pulley for 3d printer parts
https://a.aliexpress.com/_mPcOvLb
И шкивы с зубьями.
US $0.34 7%OFF | 3D Printer Parts GT2 Timing Pulley 20 teeth Bore 5mm Alumium fit for GT2 Timing belt Width 6mm RepRap 3D Printer
https://a.aliexpress.com/_msHxjZf
По моему даже без 3д принтера нет проблем сделать передачу
с вала сеовы на ручку регулятора температуры котла.
А по поводу шаговика : у него надо ловить начальное положение,
а у сервы просто задаём нам нужное.
А мысли про "точность" считаю в данном случае абсолютно не имеющие значения.
У котла идёт работа с своими порогами вкл-выкл и вы задаёте температуру только приблизительно, типа средней.
Особенно если у вас модулирующая горелка.
5000р
kakmycmail@gmail.com
Честно говоря, я тоже к этому склоняюсь!
+100500 Вариантов масса! Всё зависит от фантазии автора )))
У котла идёт работа с своими порогами вкл-выкл и вы задаёте температуру только приблизительно, типа средней.
Согласен! Что-то я перемудрил с конструкцией - есть у меня такая особенность)))
В таком случае, мой девайс приобретает совсем простенькую конфигурацию! Полагаю, такой скетч для управления я смогу написать сам - надо еще чуток посидеть, поковыряться в уроках, но в целом уже есть представление, как всё обтяпать.
ТОГДА ПОКА ЗАКАЗ СНИМАЮ!
Спасибо большое всем, кто откликнулся и принял участие в дискуссии! Пошел покупать сервопривод и учить матчасть!
Удачи вам.
Спасибо! ))) Буду стараться!
ТОГДА ПОКА ЗАКАЗ СНИМАЮ!
Спасибо большое всем, кто откликнулся и принял участие в дискуссии! Пошел покупать сервопривод и учить матчасть!
Вот это надо внести в мем форума. А то нас обвиняют в чрезмерной жадности.
А мы просто помогаем людям :)