Раннее предупреждение возгорания

Добавлено в закладки: 5

Насмотревшись на горелые принтеры пришла мне в голову очередная бредовая идея. Захотелось “запилить” систему раннего обнаружения и предупреждения возгорания на свой новенький (пока еще не запущенный) принтер.

Сгоревший 3D принтер

фото из интернета

 

Требования к системе у меня были следующие:

  1. Обязательное отключение питания всего принтера в случае обнаружения задымления
  2. Наличие сирены и ее включение на пару секунд при сработке системы (на случай сна)

 

Быстренько было найдено необходимое оборудование в виде датчика дыма ИП212-45 и “кричалки” типа свирель.

ИП212-45

Встал вопрос о питании этой системы.  Будем питать его 12 вольтами с отдельного маленького БП. На данный момент вытащил плату из не понятного 12-ти вольтового маленького БП (типа зарядник), но в дальнейшем будет установлен такой БП

.

фото из интернета

 

Подключать будем 1 датчик дыма по такой схеме

Схема

 

Без доп.платы коммутации питания нам не обойтись. “На коленке” была никидана примерная схема питания отдельных компонентов принтера. Карандашиком – это питание, а ручкой – это данные

 

Требования к плате коммутации наметились такие:

  1. Включение / отключение питания 12 вольт для сирены
  2. Включение / отключение питания 12 вольт для датчика дыма
  3. Включение / отключение питания 220 вольт для основного БП принтера
  4. Включение / отключение питания 12 вольт для подсветки рабочей области
  5. Прием и передача сигнала GND с датчика дыма на Orange PI
  6. Отдельное управление каждым из выше перечисленных пунктов (в том числе, при желании, и из OctoPrint’а).
  7. Светодиод на переднюю часть принтера при включенном основном БП

 

Схемка платы коммутации питания получилась такая

Схемка платы коммутации питания

Плата такая

Плата коммутации питания

 

Плату делал ЛУТом:

Перенес тонер на плату

Вытравил

Просверлил отверстия и подготовил получившуюся плату к пайке

Нанес обозначения

Готовая, распаянная плата выглядит так

Плата протестирована. Работает как и было задумано, хотя 4-ая часть сделана немного не правильно, но пока переделывать не буду. Так все работает.

 

Пришло время все это дело “связать” с апельсинкой

Пишем маленький скриптик
В /usr/bin создаем файлик с именем alarm.sh
В файле написать:


#!/bin/sh
#Определяем какой пин за что отвечает
IN_PORT1=25
SIRENA_PORT=24
PRINTER_PORT=23
LED_PORT=22
DDYMA_PORT=21
#Читаем в каком режиме находится каждый интересующий нас пин GPIO
MODE_IN_PORT1=`gpio readall | grep "GPIO.$IN_PORT1" | awk -F"|" {'print$5'} | awk {'print$1'}`
MODE_SIRENA_PORT=`gpio readall | grep "GPIO.$SIRENA_PORT" | awk -F"|" {'print$5'} | awk {'print$1'}`
MODE_PRINTER_PORT=`gpio readall | grep "GPIO.$PRINTER_PORT" | awk -F"|" {'print$5'} | awk {'print$1'}`
MODE_LED_PORT=`gpio readall | grep "GPIO.$LED_PORT" | awk -F"|" {'print$5'} | awk {'print$1'}`
MODE_DDYMA_PORT=`gpio readall | grep "GPIO.$DDYMA_PORT" | awk -F"|" {'print$5'} | awk {'print$1'}`
#Настраиваем режим пинов
if [ $MODE_IN_PORT1 != "IN" ]; then
gpio mode $IN_PORT1 IN
fi
if [ $MODE_SIRENA_PORT != "OUT" ]; then
gpio mode $SIRENA_PORT OUT
fi
if [ $MODE_PRINTER_PORT != "OUT" ]; then
gpio mode $PRINTER_PORT OUT
fi
if [ $MODE_LED_PORT != "OUT" ]; then
gpio mode $LED_PORT OUT
fi
if [ $MODE_DDYMA_PORT != "OUT" ]; then
gpio mode $DDYMA_PORT OUT
fi
#Настраиваем выходы все выходы (на всякий случай)
gpio write $SIRENA_PORT 0
gpio write $PRINTER_PORT 0
gpio write $LED_PORT 0
gpio write $DDYMA_PORT 1
#Цикл проверки сработки датчика дыма
STATUS_IN_PORT1=`gpio read $IN_PORT1`
while [ $STATUS_IN_PORT1 -eq 1 ]:
do
STATUS_IN_PORT1=`gpio read $IN_PORT1`
if [ $STATUS_IN_PORT1 -eq 0 ]; then
#Выключаем принтер
gpio write $PRINTER_PORT 0
#Включаем сирену
gpio write $SIRENA_PORT 1
#Ждем 10 секунд
sleep 10
#Выключаем сирену
gpio write $SIRENA_PORT 0
fi
sleep 1
done

 

Сохраняем и выходим. Далее делаем его исполняемым

chmod +x ./alarm.sh

И добавляем в автозапуск:

Добавить в /etc/rc.local строку запуска

/usr/bin/alarm.sh & > /dev/null 2>&1

 

Таким образом, при загрузке Orange PI – будет загружаться наш скрипт.

Скрипт опрашивает каждую секунду входящий порт (GPIO25 – это 39 пин гребенки) к которому подключен пин с названием OUT4 платы коммутации. OUT4 на плате коммутации имеет подтяжку на + разъема POW4 к которому от “апельсины” подключено “+5v” и “-” с гребенки.

Тем самым, если датчик дыма не сработал, то на 39 пине будет всегда присутствовать логическая “1”. Как только датчик дыма сработает – на GPIO25 будет лог. “0”. Скрипт это увидит в течении секунды и отключит питание принтера (выставит “0” на пине GPIO23), потом включает сирену на 10 секунд и на этом скрипт завершится до перезагрузки по питанию.

Выключаем основной тумблер питания принтера не менее чем на 3 секунды для “сброса” датчика дыма. При следующей загрузки скрипт опять будет мониторить наш входящий порт.

Параллельно в этом же скрипте я настраиваю 1 раз, при включении, порт использующийся для включения и выключения LED подсветки зоны печати и порт управляющий питанием основного БП принтера.

Само включение подсветки, как и основного БП принтера, происходит из меню OctoPrint’a. В скрипте они отключены.

В общих словах – этот скрипт для управления платой коммутации, а там уж что подключите, то и будет управляться.

Сам датчик дыма на 3-х жильном проводе вынесен в зону над принтером.

Как показали опыты с датчиком дыма – ему достаточно маленького дыма чтобы сработать.

 

Небольшое описание

  • Части платы 1, 2 и 3 питаются от БП 12v.
  • Части 1 – 4 имеют общую землю и по этому достаточно подключить только в один пин землю от “апельсины” и от БП.
  • 4-ая часть питается исключительно от “апельсинки” 5v.
  • Управление 1, 2 и 3 части происходит логической “1”.
  • 4-ая часть управляется лог. “0”, который появляется при сработке датчика дыма.
  • Высоковольтная часть организована на симисторе BTA12-800, который управляется лог. “1” и требует также обязательного подключение “-” к соответствующему пину.
  • Выходы можно подключать только “+”.
  • Входы также только “+”, если минусы всех используемых частей уже подключены.
  • Раздельные пины питания сделаны для возможности использовать разное напряжение (не сильно правильно).
  • Если использовать разные БП, то подключение земли от каждого БП – обязательно.
  • Все номиналы указаны на схеме.

 

Как настроить GPIO и меню Октопринта можно посмотреть тут

Все выше описанное так же должно подойти и для “малинки” с не большими изменениями скрипта. Если уже что-то завязано на GPIO, то следует это учесть в скрипте. Данный скрипт будет корректно работать только для не четной стороны “гребенки” GPIO. Для четной стороны скрипт нужно немного переделать

 

20

Метки: ,    2016-12-30      Раздел: Настройка, Принт-сервер, Электроника  
Автор: Просмотров: 7 836   16 комментариев



16 комментариев на «Раннее предупреждение возгорания»

  1. И часто принтеры возгораются ? Пока даже не задумывался над этим…

    0
    1. Чаще нагрев происходит на разъёме подключения стола. Поэтому провода от стола лучше припаять напрямую к плате. Реже зависает процессор и стол с хотэндом греются бесконечно. Поэтому стандартные столы MK сложно разогреть выше 150 градусов на 12В. При установке мощного стола или при увеличенном питании нужно позаботиться о защите от пожара. Ещё бывает плавится реле, опять же на нагреве стола. Реже бывает брак на плате, но он проявляется достаточно быстро.

      2
      1. У меня вчера загорелся драйвер. Сперва пронзительный вой как из динамика, запах и пламя. Если бы вовремя не вынул из розетки – быть беде. Пока еще не понял, что стало проблемой. МК на Ардуине выгорел, контроллер USB тоже. Как то через драйвер попали 15 вольт туда, где должно быть 5.
        Так что пожалуй сделаю я эту систему :)

        0
        1. Отказался от использования 4988. Перешел на 8825, чего и вам советую. Они немного дороже, но того стоят.

          0
          1. Я уже перешёл на ТМС2100 с хорошим охлаждением. Включаю принтер и забываю, что он печатает)

            1
  2. Спасибо за статью. Сегодня собрал 1-ю часть (220 вольтовую)
    Работает отлично, у меня 220v 600w столик и 100w блок питание на 24v так вот при всём включенном транзистор греется но не критично пальцами держать можно. А после выхода стола в рабочий режим вообще становится холодным, но на всякий случай небольшой радиатор поставлю
    Достану сигнализаторы дыма сделаю и вторую часть с сиреной.

    0
    1. Вот так разместил. На обозначения не смотрите не стал искать нужное в библиотеках

      0
    2. Ну и нормально…
      Значит я не зря потратил время на написание этой статьи… *OK*
      Единственное, я 1-3 контакт делал по возможности дальше от 4-6 м/с MC… Но это сугубо мое решение

      0
  3. Достал сигнализаторы ип212-77 наверное прийдется поморочится что бы их подключить

    0
    1. Не заморачиваться не прийдется оказалось тоже встроенное реле есть

      0
    1. Aahz:

      Это датчик пыли для пылесоса. Для дыма имеет смысл смотреть готовые решения. Есть варианты с радиоинтерфейсом на 315/433mhz. Опять же, можно взять с питанием от батарейки если провода на стену тянуть неохота.
      Ищем по словам “smoke detector”.

      0

Добавить комментарий




     
Авторизация
*
*
Генерация пароля
Яндекс.Метрика