eddy_em: (Default)
eddy_em ([personal profile] eddy_em) wrote2019-01-20 11:02 pm

Чиллер. Графики.

Как уже писал в предыдущей записи, пока сегодня я дописывал альфа-версию документации на MMPP, у меня в разных режимах копились данные с чиллера.

Чтобы облегчить себе жизнь в плане формирования таблиц с данными, набросал вот такой скрипт:
#!/bin/bash
if [ $# != 1 ]; then
    echo "Usage: $0 outfile [pause in seconds]"
    exit 1
fi

OUT=$1
TTY=/dev/ttyUSB0
PAUSE=10
[ x$2 != "x" ] && PAUSE=$2

[ -f $OUT ] || echo -e "#UNIX time\tT0\tT1\tT2\tT3" > $OUT

while true; do
    T0=$(date +%s)
    STR=$T0
    for x in 0 1 2 3 4; do
        echo "[T$x]" > $TTY
        T=$(cat $TTY | sed 's/.*=//')
        STR="$STR\t$T"
    done
    echo -e $STR | tee -a $OUT
    T0=$((T0+$PAUSE))
    while [ $(date +%s) -lt $T0 ]; do echo -en "$(($T0-$(date +%s)))    \r"; sleep 1; done
    echo -en "              \r";
done


Его задача — раз в 10 секунд (паузу можно изменить вторым аргументом скрипта) опрашивать контроллер чиллера и записывать эти данные + время (UNIX time) начала измерения в табличку — первый аргумент скрипта.
А вот такой простой скрипт на октаве рисовал мне данные:
function plotgr(fname)
    [D T0 T1 T2 T3] = textread(fname, '%d %f %f %f %f', "headerlines", 1);
    D -= D(1);
    T0 /= 10.; T1 /= 10.; T2 /= 10.; T3 /= 10.;
    plot(D, [T0 T1 T2 T3]);
    legend("0", "1", "2", "3");
    xlabel("Time, s");
    ylabel("T, {}^\\circ{}C");
    h = gcf();
    TL = get(gca, 'ticklength');
    set(gca, 'ticklength', TL*1.5);
    set(gca, 'linewidth', 3);
    H = 8; W = 12;
    lg = findobj(h, "type","axes", "Tag","legend");
    set(lg, "FontSize", 16);
    set(gca, 'fontsize', 16);
    set(get(gca(), "xlabel"), 'fontsize', 16);
    set(get(gca(), "ylabel"), 'fontsize', 16);
    set(h,'PaperUnits','inches')
    set(h,'PaperOrientation','landscape');
    set(h,'PaperSize',[W,H]);
    set(h,'PaperPosition',[0,0,W,H]);
%    print(h, '-dpdf', sprintf("%s.pdf",  fname));
    print(h, '-dpng', sprintf("%s.png", fname));
endfunction

И опять автоматом какие-то уж больно кривые легенды на графиках получились. Ну да хрен с ними.
Везде T0 - температура на входе, T1 - на выходе, T2 - температура на пластине нагревательного транзистора, T2 - температура воздуха перед вентилятором, охлаждающим радиатор теплообменника.
Итак, сначала температуры в статике:
stay_still

Видно, что T0 ближе всех к батарее отопления, чуть дальше находится T3, еще дальше T1 и T1.
Дальше включил помпу на минимальных оборотах (заполнение ШИМ 80/256, при меньших заполнениях насос не включается). Кулер и нагреватель выключены.
P_080

Видно, как быстро выровнялись температуры (бутылка с водой недалеко от батареи отопления стоит) и температура воздуха над кулером поползла вверх: вентилятор-то выключен!
Далее на 50% мощности добавляем нагреватель:
P_080_h128

T2 быстро взлетает вверх (вот такое большое тепловое сопротивление получилось между транзистором и медной трубкой с водой), понемногу вверх ползет и температура жидкости. Скорость нагрева жутко маленькая: меньше 0.001°C в секунду! Можно рассчитать, кстати: 4Вт тепла нужно для нагрева 1см³ воды на 1°C, у меня почти полтора литра. Т.е. для нагрева этого объема воды на 1°C нужно затратить 6кДж энергии и если бы система была идеально замкнутой, можно было бы определить, что нагреватель при этом отдавал бы около 5Вт мощности в нагрев воды. Если я хочу нагреть этот объем за 1 минуту, то нужна мощность как минимум 6000/60=100Вт!
Теперь выключаем нагреватель и на 100% включаем вентилятор:
P_080_C255

Хорошо заметно, как быстро выросла разница температур между входом и выходом. Ну и температура воздуха перед вентилятором упала из-за появления воздушного потока. За 530 секунд T0 упала на 2°, T1 и T2 — на 3°, T3 вышла на температуру воздуха в кабинете. Но так считать нечестно, т.к. T1 и T2 были горячей из-за включенной грелки. Через 50 секунд после охлаждения они точно стабилизировались, т.о., за 490 секунд T0 уменьшилась на 2.3°, T1 - на 1.7°, T2 - на 2.4° (с точностью до ошибки оно и должно вести себя как T0).
Итого, скорость охлаждения составляет около 0.005°C в секунду! Умножив это на массу воды и 4.19Дж/кал, получим среднюю мощность охлаждения: 29.5Вт! В шесть раз больше, чем давал нагреватель на 50% своей мощности!
Теперь отключаем кулер и смотрим, как температуры за счет интенсивного перемешивания воды выравниваются:
P_080_C0

Всего лишь за 5 минут воздух над кулером вернулся к температуре воды, а вода вышла на средний уровень - около 26°C (на 3° теплее, чем в кабинете!).
Теперь смотрим, что будет, если включить нагреватель на 100%. Заодно и поток увеличим, пусть будет 200/256:
P_200_h255

В прошлый раз нагреватель на 5°С был теплей входящей воды, теперь эта величина равна 6°С. За 2000 секунд T0 увеличилась на 5°C. Мощность нагрева, таким образом, составила 15.7Вт, что в 2 раза меньше мощности охлаждения при меньшем потоке.
Ну, что ж, посмотрим, кто кого! Оставляем насос на 200/256, нагреватель на 100% и включаем кулер на 100%:
P_200_h255_C255

Бдыщь! И температура поползла вниз.. За 1000 секунд T0 упала на 4°C! Т.о., мощность охлаждения составила 25Вт. И если бы система была строго замкнутой, получалось бы, что при такой величине потока эффективность охлаждения возрастает на треть!
ОК, пусть дальше тягаются кто кого, но теперь с меньшей величиной потока — опять 80/256:
P_080_h255_C255

Эффективность охлаждения нагревательного элемента упала, поэтому T2 быстро подскочила, увеличив градиент с 6 до 10°C! Водичка тем временем по температуре достаточно приблизилась к температуре воздуха, значительно снизив эффективность охлаждения. Вкупе с возросшей эффективностью нагрева это дало, наконец, то, что температура почти выпрямилась.
Отключаем нагреватель, и все температуры жидкости радостно стремятся в дружные объятия:
P_080_h000_C255

За 800 секунд (выбросим начальный участок со слишком кривыми графиками) температура примерно на 1.2°C изменилась, т.е. мощность охлаждения составила 9.4Вт (понятно, всего пара градусов разности между температурой жидкости и воздуха).
А теперь включаем насос на 200/256. Но тут я стал подмерзать и закрыл форточку:
P_200_h000_C255

в итоге температура воздуха подскочила почти на 3.5°C, сильно поднасрав статистике. И вместо того, чтобы охлаждаться, жидкость пошла в нагрев. Мощность нагрева с 300 по 500 секунды составила 15.7Вт — прямо как в предыдущем варианте с включенным на 100% нагревателем при таком же потоке воды!
Теперь выключаем кулер и включаем насос на 80/256, а нагреватель на 100%:
P_080_h255_C000

Отбросив первые пару сотен секунд, получаем, что за 3500 секунд вода нагрелась на 8°C, т.е. мощность нагрева получается 14.2Вт. Почему менее эффективно? Потому что с таким небольшим потоком вода эффективней охлаждалась по пути.
Теперь посмотрим просто развлечения ради на график, где насос работает на 100%, нагреватель отключен, а вентилятор дует на 100%:
P_255_h000_C255

Резкая просадка температуры в районе 1000с — это я зажарился и открыл форточку и дверь. Потом закрыл дверь. На 1300 закрыл форточку. Где-то на 1800 снова ее открыл.
Теперь, чтобы порадовать контроллер работой всего на 100%, включаем еще и на 100% нагреватель:
P_255_h255_C255

И в районе 400с я закрыл окно. Создается даже впечатление, что "грелка побеждает"!
Снижаем мощность насоса до 90/256:
P_090_h255_C255

Неужели вот он — баланс? При разнице воды и воздуха в 2°C и потоке в 90/256 охлаждение полностью компенсирует нагрев.
Отключаем кулер:
P_090_h255_C000

Расчетная мощность нагрева — 15.1Вт. Градиент между грелкой и входящей водой — около 8.5°C.
И мешанина:
P_090_h000_C000

Сначала выключаю нагреватель. Температуры очень медленно начинают стремиться к комнатной. Около 1300с включаю кулер на 100%. Около 1400 открыл дверь в коридор. При 1570 установил мощность кулера в 90/256. А на 1900 отключил кулер.
Судя по графику, снижение мощности кулера со 100% до 35% почти не отразилась на интенсивности охлаждения!

Итак, картинки получились очень веселыми. Но сразу становится понятно, что одним транзистором для нагрева не обойтись. Как он ни пыжится, но (даже с учетом потерь на охлаждение воды по пути) дает не больше пары десятков Ватт мощности (надо бы, кстати, замерить эту величину)! И этого оказалось слишком мало. Единственная надежда — ПЗС будет отдавать воде около 100Вт. Т.е., возможно, воду подогревать и не придется особо. Но нужно сначала поиграться "на кошках", разместив систему в подкупольном Ц-1000, но вместо ПЗС воткнув какую-нибудь 100-ваттную грелку. Правда, основные морозы уже того — весна на носу!