avatar_Игорь11

Автоматизация простейшего дистиллятора.

Автор Игорь11, 12-11-2012, 22:54:43

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

Игорь

#15
Цитата: Игорь11 від 19-11-2012, 21:11:39По поводу пищалки - нужна ли она вообще?
Выход 12 вольт на пищалку уже сделан. Есть тумблер чтобы отключить если сигнал не нужен.
Какое расстояние от своего гаража до дома?

Цитата: chelovechik від 19-11-2012, 20:47:48Игорь, И какое по твоему логическое объяснение?
Эхо. Отражение сигнала. Интерференция.
Надо погуглить.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Игорь11Topic starter

#16
Цитата: Игорь від 19-11-2012, 21:24:50Какое расстояние от своего гаража до дома?
Гараж в доме.До квартиры 15 метров.

Игорь

#17
Нашлось время для продолжения.
Собрал бесхитростный силовой блок - с лицевой стороны - весь крупняк (сетевой трансформатор, конденсатор фильтра, два реле на 40 и на 10  ампер), а со стороны проводников - вся рассыпуха - моська, транзистор, диод и прочая мелочь поверхностным монтажом.
Сделал "намордник", невзрачная коробочка приобрела вид гламурного приборчика с понятным управлением.

Игорь11, завтра запускаю дистилляцию под управлением такой штуки. Хочу слепить датчики так, чтобы потом ни тебе ни мне не пришлось ничего переделывать.

Поэтому - несколько вопросов.
1. Коробочка управления имеет размер (примерно) 12х12х6 см. Ее можно либо прикрепить к кубу, либо прикрепить на стенку -  навсегда или съемный вариант. Выбирай. Если куб - кег, я могу сделать подвеску типа той, как на блоке управления ректификацией. Если на стенку - приделаю плоский кронштейн. Это удобней сделать сейчас, чем потом, когда все кишки будут уже внутри. Выбирай способ крепления. Можно просто положить коробочку на пол или табуретку - тоже вариант :)

2. Блок "читает" два датчика температуры - в кубе и вверху паровой трубки. Как я понимаю, датчик в кубе вставляется в гильзу Двн 8мм (или Двн 6 - уточни.) На какую длину вставляется датчик? Я заделаю его в жесткую длинную термоусадку чтобы "стоял когда впихиваешь" :)
Такой-же вопрос по датчику на паровой трубе. Гильза, или просто на трубу? если гильза - какая длина и диаметр?

3-й вопрос - по компоновке датчиков.
Провод от коробки идет сначала к одному датчику, а от него - к другому. Если коробка будет на стенке, наверное удобней от коробки идти к верхнему датчику, а от него - к нижнему.
Если коробка будет на стенке - тогда удобней от нее - к кубовому датчику, а потом к датчику наверху.

Определись с компоновкой датчиков на шине, есть два варианта-
Блок - Куб - Пар
Блок - Пар - Куб.

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

4. Последний вопрос, касающийся длин - это длина провода от блока до водяного клапана. На воду я поставил небольшой разъем, контакты в нем запрессовываются. Я хочу опрессовать их сразу, чтобы тебе осталось только подключить клапан.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Игорь

#18
Последние несколько вопросов будут касаться вопросов алгоритма - чему научить этот блок.

Основа уже готова, но есть некоторые задумки, запускать из или нет зависит от твоего решения.



[attach=1]На передней панели есть три тумблера.
Они управляют водой, звуком и нагревом. Каждый тумблер можно установить в одно из трех положений - включено, выключено и "авто".
Кроме тумблеров, на лицевой панели есть 21 светодиод, из которых 18 показывают две температуры, а три показывают включена ли вода и нагрев и подается ли звук.

Возле индикаторов температур есть две пятёрки переключателей. Из каждой пятерки них нужно включить только один - тот, который соответствует выбранным порогам температуры.
ВАЖНО.
1. Переключать - настраивать температуры нужно только при выключенном питании.
2. На каждой пятерке должен быть включен (повернут в сторонцу своего светодиода) именно один выключатель - не ноль и не два, не три.

Устаовив пороги и включив систему, нужно тумблером включить воду - заполнить холодильник и проверить, нет ли утечек. После этого тумблер воды нужно перевести в положение "авто". Тумблеры нагрева и звука нужно сразу установить в "авто".

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

Подготовка к стопу продолжается 1 минуту. За это время испарение из куба прекращается. Система переходит в режим стопа. Влда и нагрев отключены, звуковой сигнал подается.

Узнать, увидеть в каком режиме в данный момент находится система, можно по светодиодам воды, нагрева и звука.

В режиме ожидания закипания горит только светодиод ТЭНа.
В режиме перегонки горят светодиоды воды и ТЭНов.
В режиме подготовки к остановке горит только светодиод воды.
В режиме стопа светодиоды воды и ТЭНов не горят, светодиод звука изредка мигает.

Во всех режимах светодиоды температурных столбиков показывают текущую температуру.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Игорь

#19
Это если все в порядке.

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

Дальше. Допустим, в режиме ожидания закипания "пропал" датчик температуры пара. Это приведет к включению воды (к переходу в режим перегонки). Это ситуация не кричичная - просто немного раньше включится вода.
Совсем другой случай, если во время перегонки "пропал" датчик куба. Система продолжает перегонку и подает звуковой сигнал. Если через 10 минут датчик не "появится", система переходит в режим подготовки к остановке, а потом и к стопу.

Игорь11, что-то менять? В программной памяти осталось еще немного свободного места.

Ну, например, я сначала сделал, а потом убрал такой момент.
Сразу после включения включается вода, через 10 секунд выключается, и только потом начинается то, что я описал - начинается опрос датчиков и включается режим ожидания закипания. Но потом я решил, что все равно в начале нужно проверить подключена ли вода и как сделаны соединения, так что на 10-20-50 секунд воду лучше включить тумблером.

О звуке. Я применил радио-вариант - передатчик радиозвонка "живет" в блоке, приемник включается в розетку. Батарейки не нужны.
Проверял метров на 10 - работает, добивает.
Если у тебя сигнал не достанет до нужного помещения, вставь приемник в розетку там, куда добивает. Звонок громкий, услышишь.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Игорь11Topic starter

Набросал ты вопросов :o
Начну по порядку.
1.Крепление на стене.
2.Гильза Двн 6 на 10см.Компоновка - блок,верхний датчик,куб.Длины 1 и 1,5м.
4.Длина до водяного клапана 1,5м.

По алгоритму вопросов нет.Наверное лучше вручную проверить воду и потом перевести в автомат.
А так все в порядке.

Игорь

#21
Как всегда... Планировал в воскресенье запустить блочок в работу, но застрял за шлифовкой кода и пайкой, дистилляция не состоялась.

Для начала поизвращался с датчиками. "Упаковал" их по моей последней моде :)
[attach=1]

Не обошлось без конфузов...

Во первых, уже после того, как "морда" была заламинирована, я увидел, что неправильно описал положения тумблеров.
Положение вверх - это автоматический режим, а вниз - ручное включение. Надпись - наоборот... Решил не переделывать. Надо запомнить, что для автоматической работы все три тумблера должны сиотреть вверх.
Игорь11, если будешь путать - напишешь как надо поверх неправильной надписи несмываемым фломастером.
Есть еще один баг связанный с мордой. Это подпись возле нижних значений температурных столбиков.
Возле нижних лампочек написано "<60", а возле вторых снизу  - "70"
Надо понимать, что вторая лампочка загорится только когда температура достигнет 70 градусов. До этой температуры горит нижняя лампочка. Поэтому возле нее должно быть написано "<70". Наверное это не важно.

Другой конфуз был более неприятным.
Я не стабилизировал 12-вольтовое питание, в результате спалил передатчик звонка - напряжение при малой нагрузке было 16 вольт, а в передатчике выходной транзистор - до 15 вольт. Естественно, он гавкнул.
Такой транзистор не нашел, поэтому поставил другую плату передатчика и - разумеется - стабилизировал напряжение.

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

Погонял блок в разных режимах, нагревая датчики феном. Нет, не в разых, а во всех возможных режимах. Все работает нормально. Но все равно хочу прогнать его в реальном процессе. Завтра, после работы.



Есть вопрос и просьба к тем, кто программирует на Си.
Раньше я писал прошивки на ассемблере, и в 2 килобайта памяти впихивал кучу функций.
Этот проект я написал на Баскоме. В 2 килобайта еле впихнул код этого элементарного устройства с минимальным набором функций. Вопрос состоит в том, что если столь массивный код - отличительная черта Баскома, я буду осваивать Си. Если же на Си код получается столь же увесистым, я не вижу смысла залезать в новый для меня язык.
Поэтому - просьба. Если это не очень затруднительно, я прошу переписать приведенный ниже кд с бейсика на Си и скомпиллировать.  Хочу сравнить компактность кода на Баскоме и Си. Думаю, не только мне интересно сравнить размеры одного и того-же кода, написанного на разных языках.
Спасибо.
$regfile = "2313def.dat"
$crystal = 1000000
Ddra = &B00000011
Ddrb = &B01111011
Ddrd = &B01101111
Water Alias Portb.5
Heat Alias Portd.1
Music Alias Portd.0
Def Alias Pind.4
Kub Alias Pinb.2
R Alias Portb.3
G Alias Porta.1
C1 Alias Porta.0
C2 Alias Portd.2
C3 Alias Portd.3
C4 Alias Portd.5
C5 Alias Portb.6
C6 Alias Portd.6
C7 Alias Portb.0
C8 Alias Portb.1
C9 Alias Portb.4
Config 1wire = Pinb.7

Dim Byte0 As Byte , Byte1 As Byte , T As Byte , Rr As Byte
Dim Dsid1(8) As Byte , Dsid2(8) As Byte , Errcount(2) As Byte
Dim Temp(2) As Byte , X As Byte , Ost As Bit
Dim W As Word , Flagkub As Bit , Flagdef As Bit , Regim As Byte , Wreg As Byte

   Heat = 0
   Water = 0
   Music = 0
   Regim = 1
   Ost = 0
First:
   W = 1wirecount()
   If W < 2 Then
      Music = 1
      Waitms 100
      Music = 0
      Wait 10
      Goto First
   End If
   Dsid1(1) = 1wsearchfirst()
   Dsid2(1) = 1wsearchnext()
Second:
   1wreset
   1wwrite &HCC
   1wwrite &H44
   Gosub Checkkub
   Gosub Checkdef
   If Regim = 1 Then
      Heat = 1
      Water = 0
   Elseif Regim = 2 Then
      Heat = 1
      Water = 1
   Elseif Regim = 3 Then
      Heat = 0
      Water = 1
      Incr Rr
      If Rr > 100 Then
         Regim = 4
         Water = 0
         Rr = 0
      End If
   Else
      If Rr = 0 Then
         Rr = 1
         Music = 1
         Gosub Pau
         C9 = 1
         Gosub Pau
         C8 = 1
         Gosub Pau
         C7 = 1
         Gosub Pau
         C6 = 1
         Gosub Pau
         C5 = 1
         Gosub Pau
         C4 = 1
         Gosub Pau
         C3 = 1
         Gosub Pau
         C2 = 1
         Gosub Pau
         C1 = 1
         Gosub Pau
      Else
         Music = 0
         Incr Rr
         If Rr > 12 Then Rr = 0
      End If
   End If
   For T = 1 To 35
      Gosub Showred
      Gosub Showgreen
   Next
   Gosub Tem
Goto Second


Tem:
   X = 1
   1wverify Dsid1(1)
   Gosub Temperature
   Gosub Showred
   X = 2
   1wverify Dsid2(1)
   Gosub Temperature
   Gosub Showgreen
Return
Temperature:
   If Err = 0 Then
      Errcount(x) = 0
      1wwrite &HBE
      Byte0 = 1wread()
      Gosub Showred
      Byte1 = 1wread()
      Gosub Showgreen
      Temp(x) = Byte0 / 16
      T = Byte1 * 16
      Temp(x) = Temp(x) + T
   Else
      Incr Errcount(x)
   End If
Return
Showred:
   Gosub Closeall
   R = 0
   If Errcount(1) = 0 Then
      If Temp(1) < 70 Then
         C1 = 1
      Elseif Temp(1) < 80 Then
         C2 = 1
      Elseif Temp(1) < 90 Then
         C3 = 1
      Elseif Temp(1) < 96 Then
         C4 = 1
      Elseif Temp(1) < 97 Then
         C5 = 1
      Elseif Temp(1) < 98 Then
         C6 = 1
      Elseif Temp(1) < 99 Then
         C7 = 1
      Elseif Temp(1) < 100 Then
         C8 = 1
      Else
         C9 = 1
      End If
   End If
   Waitms 10
Return

Showgreen:
   Gosub Closeall
   G = 0
   If Errcount(2) = 0 Then
      If Temp(2) < 70 Then
         C1 = 1
      Elseif Temp(2) < 75 Then
         C2 = 1
      Elseif Temp(2) < 80 Then
         C3 = 1
      Elseif Temp(2) < 85 Then
         C4 = 1
      Elseif Temp(2) < 87 Then
         C5 = 1
      Elseif Temp(2) < 90 Then
         C6 = 1
      Elseif Temp(2) < 93 Then
         C7 = 1
      Elseif Temp(2) < 95 Then
         C8 = 1
      Else
         C9 = 1
      End If
   End If
   Waitms 10
Return


Closeall:
   G = 1
   R = 1
   C1 = 0
   C2 = 0
   C3 = 0
   C4 = 0
   C5 = 0
   C6 = 0
   C7 = 0
   C8 = 0
   C9 = 0
Return


Checkkub:
   Gosub Showred
   If Regim < 3 Then
      Wreg = C9 + Kub
      If Wreg > 0 Then
         If Flagkub = 0 Then
            Flagkub = 1
         Else
            Regim = 3
         End If
      Elseif Errcount(1) > 50 Then
         Regim = 3
         Ost = 1
      Elseif Errcount(1) > 10 Then
         Music = 1
         Waitms 100
         Music = 0
         Wait 10
      Else
         Flagkub = 0
      End If
   End If
Return

Checkdef:
    Gosub Showgreen
    If Regim = 1 Then
      Wreg = Def
      If Temp(2) > 85 Then Wreg = 1
      If Errcount(2) > 20 Then
         Regim = 2
      Elseif Wreg = 1 Then
         If Flagdef = 0 Then
            Flagdef = 1
         Else
            Regim = 2
         End If
      Else
         Flagdef = 0
      End If
   End If

Return
Pau:
Waitms 50
Gosub Closeall
If Ost = 1 Then
   R = 0
Else
   G = 0
End If
Return
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Игорь

#22
Два вечера гонял схему в реальном процессе, провел 4 перегонки по 40 литров браги. Все нормально, но  решил изменить температурные шкалы, заодно устранил ошибку в описании режимов тумблера. Дизайн морды чуть изменился. Не только цвет. Я поизвращался, появилась мнемоника - значки водяного крана и ТЭНа возле их преключателей и светодиодов, показывающих их работу.. :)

[attach=1]

Игорь11, весь комплект готов - коробка с сетевым кабелем 3х1,5 2.5 метра (провод заземления подключен к земляным контактам вилки и розетки), датчики (длина и расположение как мы договорились), провод для подключения водяного клапана, и звонилка, которая не на батарейках, она включается в розетку.

Это было последнее фото на память, комплект уже упакован в коробку и утром уедет Новой Почтой.

Успешного использования!
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Игорь

#23
Хочу напомнить, что настройку красненьких переключателей температур нужно делать, отключив устройство от сети.
Одновременно две температуры на одном переключателе включать нельзя.
Для начала работы нужно выдернуть сетевую вилку, подождать секунд 10, и включить ее снова. Устройство начннет оаботу с режима "ожидание закипания".

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

ТЭНы в этом устройстве весьма полезно (но необязательно) включать так.
1. Включить устройство в сеть.
2. Переключатель (тумблер) ТЭНов поставить в положение "выкл" (среднее положение).
3. Включить вилку ТЭНов в розетку прибора.
4. Тумблер нагреа поставить в нужное положение - вверх или вниз.

Или наоборот - ТЭНы в прибор, переключатель в среднее положение, потом вилку в сеть, и только потом тумблер в нужное положение.
Общее одно - тумблер выводится из положения "выкл" в последнюю очередь. Это исключит искрение на вилках - розетках и минимизирует его на реле.

С клапаном воды эта последовательность не нужна.
Вроде все...
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

Игорь11Topic starter

Цитата: Игорь від 28-11-2012, 22:20:09Третье золотое правило (Вова, привет!) - перед тем, как вливать брагу или самогон в кую, нужно убедиться, что кубовый сливной кран закрыт.
И не только Вова.Сам на такие грабли наступал  :(

vitkalov

 Покажите мне того кто не наступал на эти грабли. )))

Игорь11Topic starter

Вчера приехала автоматика и проведены ходовые испытания.Залил,включил и уехал на вызов.Приехал через 3 часа - процесс идет в штатном режиме.Опять уехал.Вечером вернулся - все отключено.Для меня очень полезная штука.Игорь спасибо.

Тузенбобель-Марлинский

Очень интересный аппарат! Уважаемый Игорь, а можете поделиться принципиальной схемой, деталировкой и схемой печатной платы? Я думаю, не только мне будет интересно.

Игорь

#28
Цитата: Зензубель-Марлинский від 05-07-2013, 07:32:52а можете поделиться принципиальной схемой, деталировкой и схемой печатной платы?
Я - сантехник, и все. что я делаю в других областях знаний и умений есть дилетантизм.
Я не рисую для себя принципиальных схем тех устройств,  которые помещаются у меня в башке, а что такое "деталировка" могу только догадываться.
Заняться "издательством" конечно можно. но есть две причины, чтобы не делать этого.
1. Система мне не нравится, ее можно и нужно сделать лучше.
2. Нет времени.

Если интересует,  выкладываю то, что есть. Будут вопросы - отвечу.

Это вполне работоспособное устройство. но оно узкоспециальное, сделанное для решения четко  поставленной задачи, и поэтому на мой взгляд может быть повторено только если поставленная задача аналогична.
Его назначение - контроль дистилляции с целью получения сырца для ректификации, с управлением водой, нагревом и подачей радиосигнала в случае непредвиденных ситуаций и при завершении работы.
Нет даже режима раздельного отбора тела и хвоста, хотя эту задачу имеющийся функционал может выполнить.

В системе две платы - "мозговая" и силовая. На "мозговой" - стабилизатор 5 вольт, контроллер аттини2312, пара десятков светодиодов д.3 мм, настроечные переключатели и три тумблера.
На рисунках - расклад деталей,  печатная плата, шаблон отверстий лицевой панели. скан готовой панели и "морда", привязанная к этому шаблону.
[attach=1] [attach=2] [attach=3] [attach=4] [attach=5]
Кстати. эта "морда" устарела. Новый вариант "морды" у меня не сохранился. но есть его фото в моем сообщении где-то в конце ноября.

На силовой плате - два реле с ключами, трансформатор питания, стабилизатор 12 вольт.
На рисунках - расклад деталей и печатная плата.
[attach=6] [attach=7]
Кроме этих двух плат, есть еще покупная плата радиокнопки от китайского 5-долларового звонка.
Ее видно на нижнем фото, за трансформатором.
[attach=8] [attach=9]
Ну и самое главное - прошивка контроллера.
Программа написана на баскоме, вот код.

$regfile = "2313def.dat"
$crystal = 1000000
Ddra = &B00000011
Ddrb = &B01111011
Ddrd = &B01101111
Water Alias Portb.5
Heat Alias Portd.1
Music Alias Portd.0
Def Alias Pind.4
Kub Alias Pinb.2
R Alias Portb.3
G Alias Porta.1
C1 Alias Porta.0
C2 Alias Portd.2
C3 Alias Portd.3
C4 Alias Portd.5
C5 Alias Portb.6
C6 Alias Portd.6
C7 Alias Portb.0
C8 Alias Portb.1
C9 Alias Portb.4
Config 1wire = Pinb.7

Dim Byte0 As Byte , Byte1 As Byte , T As Byte , Rr As Byte
Dim Dsid1(8) As Byte , Dsid2(8) As Byte , Errcount(2) As Byte
Dim Temp(2) As Byte , X As Byte , Ost As Bit
Dim W As Word , Flagkub As Bit , Flagdef As Bit , Regim As Byte , Wreg As Byte

   Heat = 0
   Water = 0
   Music = 0
   Regim = 1
   Ost = 0
First:
   W = 1wirecount()
   If W < 2 Then
      Music = 1
      Waitms 100
      Music = 0
      Wait 10
      Goto First
   End If
   Dsid1(1) = 1wsearchfirst()
   Dsid2(1) = 1wsearchnext()
Second:
   1wreset
   1wwrite &HCC
   1wwrite &H44
   Gosub Checkkub
   Gosub Checkdef
   If Regim = 1 Then
      Heat = 1
      Water = 0
   Elseif Regim = 2 Then
      Heat = 1
      Water = 1
   Elseif Regim = 3 Then
      Heat = 0
      Water = 1
      Incr Rr
      If Rr > 100 Then
         Regim = 4
         Water = 0
         Rr = 0
      End If
   Else
      If Rr = 0 Then
         Rr = 1
         Music = 1
         Gosub Pau
         C9 = 1
         Gosub Pau
         C8 = 1
         Gosub Pau
         C7 = 1
         Gosub Pau
         C6 = 1
         Gosub Pau
         C5 = 1
         Gosub Pau
         C4 = 1
         Gosub Pau
         C3 = 1
         Gosub Pau
         C2 = 1
         Gosub Pau
         C1 = 1
         Gosub Pau
      Else
         Music = 0
         Incr Rr
         If Rr > 12 Then Rr = 0
      End If
   End If
   For T = 1 To 35
      Gosub Showred
      Gosub Showgreen
   Next
   Gosub Tem
Goto Second


Tem:
   X = 1
   1wverify Dsid1(1)
   Gosub Temperature
   Gosub Showred
   X = 2
   1wverify Dsid2(1)
   Gosub Temperature
   Gosub Showgreen
Return
Temperature:
   If Err = 0 Then
      Errcount(x) = 0
      1wwrite &HBE
      Byte0 = 1wread()
      Gosub Showred
      Byte1 = 1wread()
      Gosub Showgreen
      Temp(x) = Byte0 / 16
      T = Byte1 * 16
      Temp(x) = Temp(x) + T
   Else
      Incr Errcount(x)
   End If
Return
Showred:
   Gosub Closeall
   R = 0
   If Errcount(1) = 0 Then
      If Temp(1) < 50 Then
         C1 = 1
      Elseif Temp(1) < 70 Then
         C2 = 1
      Elseif Temp(1) < 90 Then
         C3 = 1
      Elseif Temp(1) < 96 Then
         C4 = 1
      Elseif Temp(1) < 97 Then
         C5 = 1
      Elseif Temp(1) < 98 Then
         C6 = 1
      Elseif Temp(1) < 99 Then
         C7 = 1
      Elseif Temp(1) < 100 Then
         C8 = 1
      Else
         C9 = 1
      End If
   End If
   Waitms 10
Return

Showgreen:
   Gosub Closeall
   G = 0
   If Errcount(2) = 0 Then
      If Temp(2) < 65 Then
         C1 = 1
      Elseif Temp(2) < 70 Then
         C2 = 1
      Elseif Temp(2) < 75 Then
         C3 = 1
      Elseif Temp(2) < 80 Then
         C4 = 1
      Elseif Temp(2) < 85 Then
         C5 = 1
      Elseif Temp(2) < 90 Then
         C6 = 1
      Elseif Temp(2) < 93 Then
         C7 = 1
      Elseif Temp(2) < 95 Then
         C8 = 1
      Else
         C9 = 1
      End If
   End If
   Waitms 10
Return


Closeall:
   G = 1
   R = 1
   C1 = 0
   C2 = 0
   C3 = 0
   C4 = 0
   C5 = 0
   C6 = 0
   C7 = 0
   C8 = 0
   C9 = 0
Return


Checkkub:
   Gosub Showred
   If Regim < 3 Then
      Wreg = C9 + Kub
      If Wreg > 0 Then
         If Flagkub = 0 Then
            Flagkub = 1
         Else
            Regim = 3
         End If
      Elseif Errcount(1) > 50 Then
         Regim = 3
         Ost = 1
      Elseif Errcount(1) > 10 Then
         Music = 1
         Waitms 100
         Music = 0
         Wait 10
      Else
         Flagkub = 0
      End If
   End If
Return

Checkdef:
    Gosub Showgreen
    If Regim = 1 Then
      Wreg = Def
      If Temp(2) > 80 Then Wreg = 1
      If Errcount(2) > 20 Then
         Regim = 2
      Elseif Wreg = 1 Then
         If Flagdef = 0 Then
            Flagdef = 1
         Else
            Regim = 2
         End If
      Else
         Flagdef = 0
      End If
   End If

Return
Pau:
Waitms 50
Gosub Closeall
If Ost = 1 Then
   R = 0
Else
   G = 0
End If
Return

Фьюзы не менял, оставил заводские.
Hex-файл приложен.
[attachmini=10]

Напомню, я сантехник, поэтому пусть не удивляют дилетантские приемы проектирования и написания программы.
Віриш ти в Бога чи ні, йому байдуже.
Важливо, щоб Бог в тебе вірив, а не навпаки.

chelovechik


SMF spam blocked by CleanTalk