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

Теплосчетчик

Добавлено: Пн ноя 21, 2011 12:36:59
clawham
Здравствуйте!
Выкладываю новую конструкцию .... точнее это просто реинкарнация старого ваттметра...

Теплосчетчик это симбиоз водосчетчика и температурных датчиков ибо единица измерения колличества теплоты - КАЛОРИЯ - это работа которую надо выполнить чтоб разогреть один грамм воды на один градус...при этом время - не лимитировано!

Мой прибор замеряет проток модифицированным водосчетчиком(вполне пойдёт и ненужный)
например хорошо подходят счетчики БЕТАР-ВОСТОК - он выдаёт один импульс при проходе через него 24.42 граммов воды....этот сигнал ловится датчиком холла и гистерезисным компаратором и поступает на прерывание МК AtMega8

Lfktt нам нужно иметь разницу температур - на сколько остыла поступившая к нам вода - для этого удобно использовать детчики 1Wire DS18B20
впрочем без малейших изменений можно использовать и микросхемы DS28EA00 и прочие с функцией измерения температуры...

контроллер опрашивает раз в секунду все датчики на шине вне зависимости от колличества датчиков!

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

тоесть мы хотим видеть общий теплопоток на квартиру и отдельно на кухню сколько и сколько на зал

счетчик-датчик протока - один ибо это последовательная цепь
разнятся лишь датчики температур!

в программе организовано объектное представление теплосчетчика
его обсчет идёт в момент обновления температур или изменилось кол-во прошедшей воды

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

изначально при старте на экране показывается счетчик номер 0 у которого теплый термометр - это первый в списке поиска(с меньшим идентификатором) а холодный это последний(с наибольшим идентификатором) сами номера термометров можно менять из меню и сохраняются они в еепром...

кол-во водомеров - датчиков протока воды тоже нелимитировано ибо к каждому объекту теплосчетчика привязан свой водомер(по умолчанию первый и единственный)

конечно программа сыра...но уже занимает 99% меги 8-й...потому скорее всего этот проект переедет на мегу 103 и графический экран

использован экран 44780 конфигурация 20х4....подсветка по вкусу :)

система сохранения данных - аналогична таковой в ваттметре - резисторный делитель на ногу ИНТ 0 и большой конденсатор на питании МК

также стоит уделить внимание приёмам установки самих термодатчиков - как минимум пол метра трубы нужно теплоизолировать а в центр непосредственно к самой трубе на термопасту прикрутить проволокой термодатчик....утепление можно произвести несколькими слоями пищевой фольги блестящей стороной к трубе намотанной 2-3 слоя и сверху обмотать 4-5 слоями паралона 5 мм толщиной....а сверху паролон обмотать тщательно - скотчем чтоб обеспечить практически герметичность

вот пожалуй и всё....в приложении - файл проекта, прошивка, проект протеус

Также все данные о теплосчетчиках выводятся на УАРТ контроллера и скоро также будет написана программа для ПК козволяющая эти данные ловить отображать логгировать и рисовать графики

Re: Теплосчетчик

Добавлено: Пн ноя 21, 2011 12:40:35
clawham
Также выкладываю схему печатку и проект в протеусе схемы нормализации сигнала с датчика холла который используется в CD-ROM или DVD-ROM приводах на моторе самого диска - их там три они аналоговые и представляют собой мост, который надо питать стабильным током 5-10 миллиампер

данная платка работает в четырех счетчиках, два из которых удалены на 400 метров от самого контроллера, провод - телефонная лапша, питание 14 вольт, на принимающей стороне стоит 1 килоомный резюк на землю линии данных и через 33 килоома - на ногу прерывания МК....4 месяц работает - никаких ложных срабатываний...данные протока механизма самого счетчика и электронного счета в МК - одинаковы - 140 кубов :)

Re: Теплосчетчик

Добавлено: Пн ноя 21, 2011 13:05:41
BCluster
Отличная штука, спасибо)

Re: Теплосчетчик

Добавлено: Пн ноя 21, 2011 13:10:21
clawham
Прозьба всем кто заинтересовался в данной вещичке - расписывать своё применение и дальнейшую перспективу по МК - у меня мега 8 кончилась...
есть армы....кто сможет распаять - ради бога можем и переехать...например STM32VLdiscovery или любые мелкие армы техассов...

ещё есть у меня меги 168 128 и 103....103-я предпочтительней - их целый кулёк %)

хотя....может и в мегу 8-ю ещё чтото влезит....
например полноценное меню как я того хотел - не влезло...
хотя все тексты уже итак в еепроме....
в общем буду развивать проект до состояния статьи но...мега 8 кончилась....может кто предложит как обойтись без принтф функций для вывода на экран любых числовых данных? формат - ка кна экране - 2-3 разряда в целых и 3 после запятой...
отказаться от флоата не хочу...

Теплосчетчик к теплонасосу

Добавлено: Вт ноя 22, 2011 22:18:10
C@at
Интересная штукенция , получится по комплектующим вообще бюджетно.
По функциональности схема тоже должна быть разносторонняя (делаю вывод по эксплуатации ваттметра , с вашей программой).
Применение ... это конечно, направление - в отопительных системах, только не каждый человек способен сделать, например врезку счетчика в магистраль отопления, многие думают, что это только кулибин осилит :).
Надо эту тему попробовать поднять в том разделе , где люди делают себе теплонасосы, количество вырабатываемого тепла там многие оценивают по расходу киловатт, при этом данные КПД теплонасоса, оцениваются плюс - минус лапоть или два лаптя....
Не .... конечно ....., если надо к потраченой одной или нескольким тысчонкам евро , еще купить в торговой точке теплосчетчик, так это, так сказать "пыль для моряка", однако как я понимаю реализация в жизнь данной схемы обойдется вообще в кОпейки, за те-же деньги мона собрать десяток ... еще и на семочки останется :). Ну в общем это мысли вслух, извиняйте если я не про то....
clawham еще раз спасибо за подсказаные куски кода , эта конструкция ,
Изображение
у меня с этими дополнениями удалась, и на данный момент завершена :beer:

Re: Теплосчетчик к теплонасосу

Добавлено: Ср ноя 23, 2011 11:28:37
kolobok0
C@at писал(а):....теплонасосы, количество вырабатываемого тепла там многие оценивают по расходу киловатт, при этом данные КПД теплонасоса, оцениваются плюс - минус лапоть или два лаптя........


вы немного не в теме...
1) у теплонасоса свои мозги, которые так-же могут контролировать определённые рабочие точки(в плане съёма температуры).
2) измерения КПД теплонасоса - это не совсем всегда тривиальная задача... Например если тепловой насос на воздух - то чтоб померять КПД необходимо делать замеры не одним датчиком и не в одной точке потока. при этом должны учитываться многие параметры и включение установки должно соответствовать "боевому" включению, т.е. под нагрузкой. просто так снять показания темепратуры - это всё плюс-минус 500м.

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

(круглый)

Re: Теплосчетчик

Добавлено: Ср ноя 23, 2011 12:41:51
clawham
так так таккк
не понял

по поводу котлов пожалуйста поподробнее!!!!

инерционность датчиков 5 минут? откуда такие данные? чтото тут нето

например я протачиваю воду горячую по шлангу 10 метров....скорость 140 грамм в секунду....протачивается за 10 секунд примерно....
датчик ловит изменение уже на 5-й секунде!!!!!!!!!!

а когда пошла гарячая...дык...не более 2 замеров ложных!!!
где 5 минут вы видели?

это раз
второе....
каков бы нибыл теплонасос....он всёравно компрессор с двумя обменниками....конденсатор и испаритель.....и к этим теплообменникам подводится внешний жидкий теплоноситель....на конденсаторе - контур отопления дома, на испарителе антифриз ....
у них есть вход и выход...у теплообменников...
моим теплосчетчиком....4-мя датчиками и двумя водомерами можно обсчитать приток тепла извне на испаритель и отдачу тепла в дом на конденсаторе.....ну и плюс мой же теплосчетчик может и ваттметром работать показывая электрическую мощность в ваттах/киловаттах.....
суммируем приход тепла и электричество, делим на выдачу тепла и умножаем на 100 -> вуаля - имеем КПД...притом РЕАЛЬНЫЙ!
ну и по ходу дела - все температуры, протоки, токи потребления....в общем полную картину происходящего!

далее....эмм...где вы видели скачки температуры в системе например центрального отопления.....масса воды 40 тонн.....циркуляционный насос выдаёт 50 кубов в час....не считая массы всех батарей(а у многих они чугуниевые) которые теплоаккумуляторы по назначению....например моя 10-тисекционная батарея на протоке воды 10 грамм в секунду с температурой 20 градусов на выход ещё часа полтора выдаёт воду с прошлой температурой - 33 градуса! и я регистрирую отдачу тепла из мое комнаты...и так оно и есть - ведь моя гарячая вода уходит соседям...или нет? чтото неправильно я понимаю?


П.С. по поводу прошивки теплосчетчика....я пока бьюсь с мегой 8-й....почти всё влезло и даже немного больше...но ... 70 байт ну никак не лезут....допишу - будет красивое меню интуитивный полный интерфейс и т.д. ... ну и конечно же фотки готовой установки


П.П.С.
кстати...кто боится врезаться в теплосеть....поверьте нет ничего проще....
варианта 2:
1) берете сантехника, показываете ему второй вариант, он покупает что написано там и всё делает за пол часа - час максимум
2) если делать самому...то...у меня на это ушло полтора часа с походом в магазин
покупаются и скручиваются на ФУМку детали :
кран с фильтром мама-мама - переходник на счетчик(американка) папа-мама - сам водомер папа-папа - ещё один переход с счетчика на пол дюйма мама-папа - тройник мама-мама-папа - кран шаровый без фильтра. в оставшееся ответвление тройника я вкручивал обычный манометр на 10 килограмм....можно и без него...
далее скручиваете это всё в данной последовательности и примеряете на трубе в которую хотите врезать....мерять надо по окончанию граней на кранах.....далее отпиливаете ножовкой электролобзиком или болгаркой трубы строго под прямым углом...
далее на базаре покупаете старые ржавые лерки первую грубую и вторую доводочную на пол дюйма и режете резьбу...это тяжело...надо идти пол четверти оборота и возвращяться, смазывать и снова четверть оборота дорезать....потом аналогично пройти второй леркой....сантиметра резьбы более чем достаточно....
потом обматываете фумкой газовой резьбу по направлению закручивания в 10-12 слоёв и накручиваете половинки конструкции(счетчк надо быдет выкрутить) накрутили - подставляем счетчик и обжимаем его американкой....закрываем краны и просим подать воду на отопление.....если краны держат(а они должны держать) - открываем потихоньку нижний(до фильтра) и смотрим чтоб небыло нигде течи...у меня с первого раза всё получилось герметично .... далее открываете второй кран и смотрите как моргает лампочка на счетчике-водомере....

ну а дальше установка термодатчиков....сущие пустяки...
я управился за 3 часа ...считая поход на базар, резку резьбы, установку водомера, прокладку кабеля(удобно использовать витую пару - пара на питание пара на 1wire и пара на сигнал от водомера) до точки установки интерфейса теплосчетчика и собственно установку термометров в 3-х точках....

Удачи в установке...

Скоро подложу фоток для наглядности

Re: Теплосчетчик

Добавлено: Ср ноя 23, 2011 12:50:45
clawham
Кстати, если есть желающие помочь втулить последние граммы в мегу 8-ю .... пишите.... буду очень рад новым програмисс\тским идеям уменьшения объёма кода

Re: Теплосчетчик

Добавлено: Ср ноя 23, 2011 15:48:15
Goodefine
Насчет последних граммов - огромное количество флоатов удивляет. Практически никогда не сталкивался с их необходимостью, за очень редким исключением. Убрать флоаты - можно будет еще впихнуть килограммы кода...

Re: Теплосчетчик

Добавлено: Ср ноя 23, 2011 15:50:33
clawham
да я вот тож задумался об этом....по сути там макс три точки после запятой ито - только в расчетах для дисплея...вот сейчас и сижу пытаюсь избавиться от них....но....вот как быть с коэффициентом мощности? он длинный....перевести его в лонг и потом результат поделить на 100000? как-то так?

Re: Теплосчетчик

Добавлено: Ср ноя 23, 2011 15:56:29
Goodefine
clawham писал(а):но....вот как быть с коэффициентом мощности? он длинный....перевести его в лонг и потом результат поделить на 100000? как-то так?

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

Re: Теплосчетчик

Добавлено: Ср ноя 23, 2011 16:29:28
clawham
ну я уже типо кагбэ почти переделал

суть проблемы в этом

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

        eep_Teplo_Counts[asd].Ku_Cal            = 244200;  // один имп счетчика * дельта 1 градус = ххх калорий * 10000
        eep_Teplo_Counts[asd].Ku_Watts          =  41868;  // одна калория в секунду = ххх ватт    * 10000


это коэффициенты перевода калории в ватт и импульса счетчика в граммы

формула вычисления калории выглядит так

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

Cal     =  (CP[tmp].Delta_T      * 
                                    dw           * 
                  Teplo_Counts[tmp].Ku_Cal)      /
                                    100000000;

где
- Delta_T был флоат разницей температур....теперь это разница температур умноженная на 10000 тоесть вместо 1,725 градума теперь будет 17250
ведь там может быть и 0.062 градуса разница...и при большом потоке это будет хорошая энергия

- dw это значение протока воды за время между обновлениями...обычно 0...1 но если долго лазить по меню может и 1000 наклацать - целове число

- Ku_Cal коэффициент перевода одного дельта градуса * один импульс счетчика = 24,42 грамма....теперь оно записано 244200

получается что например проток равнялся 1000 импульсов (это примерно 3 минуты в менюхе) дельта = 17850 (1,7850 градуса) и коэффициент 244200....
перемножаем и видим число 4358970000000 ... да его потом бы поделить на 10000 и получим значение калорий которые прошли за 4 минуты...сумму...
это будет много...но... предел лонгинта 4294967295 ... кагбэ вообще не влазиет...
да за более мелкие перепады или более короткие заходы в меню всё будет хорошо...но...это же неправильно!

Re: Теплосчетчик

Добавлено: Ср ноя 23, 2011 16:55:00
Goodefine
Можно делить не в последнюю очередь, а еще на том этапе когда и в лонг влазим и потеря точности незначительна, а потом домножить на то что осталось. Я не особо вникал в программу, но из
dw это значение протока воды за время между обновлениями...обычно 0...1 но если долго лазить по меню может и 1000 наклацать - целове число

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

Re: Теплосчетчик

Добавлено: Ср ноя 23, 2011 17:04:58
clawham
ну вообще-то оно и распаралелено но.....во время пребывания в менюхе основной цикл останавливается....
можно было бы попробывать и меню сделать в основном цикле но....это получится пипец по коду....

потеря точности очень критичнА!

тут не может быть компромиссов

счетчик клацает минимум 2 герца у меня и 5-8 герц у других людей....если на каждый клац я буду терять точность то что ж тогда останется?ошибка-то накапливается...
текущий размер прошивки 8064 ... флоат нигде не упоминается ниразу....и вовсе не килобайт-два получилось отвоевать....
это как с похудением...первые килограммы сбросить легко ....а вот через месяц таких сбрасываний....каждый грамм....уже войной отбивается...вот так и моя прошивка....лишнего уже ничего не осталось...

Re: Теплосчетчик

Добавлено: Ср ноя 23, 2011 17:16:15
Goodefine
clawham писал(а):ну вообще-то оно и распаралелено но.....во время пребывания в менюхе основной цикл останавливается....
можно было бы попробывать и меню сделать в основном цикле но....это получится пипец по коду....

Останавливаться как раз не должен... Для этого конечно надо немного идеологию программы поменять - каждой задаче выделить порцию времени. И за один цикл чтоб все пробегало. Необязательно весь код меню пихать в цикл - его можно упрятать в функцию, в функции автомат состояний (залетел, отобразил, вылетел). Пользователь и не заметит. Посмотрите на OSA - операционка под МК. Народ неплохие вещи на ней делает. Задача прямо просится в нее...
clawham писал(а):текущий размер прошивки 8064 ... флоат нигде не упоминается ниразу....и вовсе не килобайт-два получилось отвоевать....

А в printf отключили поддержку флоат в настройках проекта?
И еще, случай из практики - как то писал тахометр, начал в CVAVR, потом не стало хватать мне места (98%), плюс ко всему тупо не работали некоторые части программы. Тот же код портировал в винавр, итог - 65-70%, и все работает. С тех пор только WinAvr использую..

Re: Теплосчетчик

Добавлено: Ср ноя 23, 2011 17:23:15
clawham
1) ну поверьте...в принтф функции вообще ничего нет кроме интов она ничего не отображает...она экономней ITOA и ряда разложения на нули и точки
2) ну теперь сделал....вынес основной цикл в функцию и вызываю её во время тупления нажатия кнопки....разницы кагбэ нет...должно работать...
3) проблема с форматированием отступов...приходится там делать пром буфер и елить а это память....уже довел до 7720....но всёравно малавата будет...впрочем надо отладить то что есть на данный момент...

Re: Теплосчетчик

Добавлено: Ср ноя 23, 2011 17:27:50
Goodefine
clawham писал(а):1) ну поверьте...в принтф функции вообще ничего нет кроме интов она ничего не отображает...она экономней ITOA и ряда разложения на нули и точки
.

И все таки проверьте на всякий случай: project->configure->C compiler (s)printf feature -> int. Это если инт хватает. Например на Вашем изначальном проекте 99,4%. Ставлю в инт: 92,8%

Re: Теплосчетчик

Добавлено: Ср ноя 23, 2011 17:56:33
clawham
я в этой менюшке каждую галочку клацал проверяя реакцию на объём кода :)
сейчас вот почти довёл....
всё работает как работало но кода - 7640 и основной цикл не прерывается от меню...


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

Re: Теплосчетчик

Добавлено: Ср ноя 23, 2011 18:32:54
Goodefine

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

 eep_CounterKu[asd]  = 24.42;

Это разве не флоат? После приведения компилятора. Как в лонг инт можно записывать 24.42...

Re: Теплосчетчик

Добавлено: Чт ноя 24, 2011 10:07:43
clawham
Rjvgbkkth запихивает туда 24 - по ассемблеру смотрел...мой недосмотр...исправил но....не в этом счастье.....

я считал проток воды в граммах...а это не очень верно....дробная часть граммов тоже нужна ибо граммы умножаются на 4 и на дельта Т
в общем я не могу довести формулу

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

CP[tmp].Watts =((CP[tmp].Delta_T           * 
                                         GetCounter(NumWC))/
                                         10000)            *
                       Teplo_Counts[tmp].Ku_Watts          /
                                         1000;


до отсутствия переполнения и правильного счета
CP[tmp].Delta_T - это разница температур умноженная на 10000
GetCounter(NumWC) - поток воды через водомер в граммах умноженных на 10000
Teplo_Counts[tmp].Ku_Watts = 2442 - тоесть коэффициент умноженный на 100

получить надо ватты умноженные на 10000

надо просто продумать как расположить последовательность умножений и делений...тыкал мыкал...недоганяю...или чушь или переполнение на цифрах больше 500 ватт....