Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Gость
2019-01-20 18:07:24
Sledopyt пише:

необходимо по активации любого, из первых пяти входов - активировать выход 1 и при активации любого второго

Позанудствую. Под активацией можно понимать:
а) переход из 0 в 1;
б) из 1 в 0;
в) просто удержание 1 не менее чем X мс, т.е. по уровню, а не по фронту сигнала.


Сброс должен заставить схему забыть эти события? А если у нас вариант "в"?

Sledopyt
2019-01-17 22:18:32

Спасибо всем за советы, получил сегодня свою первую Ардуинку. Терпеть не смог, собрал на коленке. Залил скетч из поста №10, реле пока не подключал, информацию смотрел в мониторе порта. Всё как я хотел. При сработке одного реле на 3 пине 648, при сработке двух реле на 3 пине 724. Ещё раз всем спасибо.

Вячеслав Азаров
2019-01-15 22:59:07

Ну это вам виднее, что нужно. Для задержек есть релейные таймеры и NE555, в конце концов. Успехов.

MikeM
2019-01-15 22:47:00

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

Вячеслав Азаров
2019-01-15 22:33:56

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

MikeM
2019-01-15 22:20:51

Если я правильно "вкурил" тему, то всю логику можно реализовать на одном (!) транзисторе и (количество_первичных_каналов + 1) резисторах. Дополнительный резистор - между базой и эмиттеромм, остальные - от источников к базе. Номиналы рассчитать так, чтобы на базовом резисторе при активизации одного канала падало 0,4 вольта (в случае использования кремниевого биполярного).

Вячеслав Азаров
2019-01-15 22:15:59

Так а что тогда вам нужно сделать, снять информацию и включить пену, по сложному алгоритму? Зачем здесь микроконтроллер?

Sledopyt
2019-01-15 21:29:45

Всё намного сложнее, каждой системой порошкового тушения управляет свой прибор, который следит за датчиками пламени, включает оповещение, переключает режимы работы, формирует задержку для эвакуации людей, эти приборы между собой и с блоком реле "общаются" по RS485, а шкаф управления пеной релейный и ему для запуска необходимы два сигнала.

Вячеслав Азаров
2019-01-15 21:22:23

Так, а зачем мудрить то так? Как я понял у вас пять датчиков возгорания, 8 порошковых и 1 пенный автоматический огнетушитель. Датчики подключаете на отдельные входы контроллера а реле на отдельные выходы, и делаете программу управления, с какой угодно логикой. И все.

Sledopyt
2019-01-15 20:54:50
MikeM пише:

Уяснить задачу из первого поста мне не удалось.

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

Sledopyt
2019-01-15 20:45:07
MikeM пише:

По схеме из поста №5 контроллер не сможет определить нажатия кнопок.

Кажется понял. Надо делать так? 123.jpg

int analogPin = 3;     // средний вывод делителя подключен к аналоговому выводу 3
int val = 0;           // переменная для хранения считанного значения
int relais1 = 10;       // модуль реле подключен к 10 выводу
int relais2 = 11;       // модуль реле подключен к 11 выводу

void setup()
{
  Serial.begin(9600);          //  настройка последовательного соединения
  pinMode(relais1, OUTPUT);     // переключаем цифровой вывод в режим выхода
  pinMode(relais2, OUTPUT);     // переключаем цифровой вывод в режим выхода

}

void loop()
{
  val = analogRead(analogPin);    // считываем напряжение с аналогового входа
  Serial.println(val);            // наблюдаем считанное значение

  if (val > 600) {
    digitalWrite(relais1, LOW);   // включаем реле1
  } else if (val > 700) {
    digitalWrite(relais2, LOW);   // включаем реле2
  } else {
    // действий нет
  }
}
MikeM
2019-01-15 15:04:27

Вспомнилась военная кафедра КПИ. Тема:" Порядок действий командира при получении боевой задачи".
Получив боевую задачу, командир:
1. Уясняет её.
2. Оценивает обстановку.
3. ...

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

По схеме из поста №5 контроллер не сможет определить нажатия кнопок.

renoshnik
2019-01-15 10:19:38

Ваш рисунок не соответствует описанию в первом посте..

Sledopyt пише:

Я же написал, что со сбросом ещё не думал. Что ещё не так?

причем тут сброс ?  я имел ввиду другое...

если хотите научиться программировать - научитесь формулировать задачу...

Есть 6 входов и 2 выхода,  == у вас 1 (один) вход и 2 выхода на схеме.

необходимо по активации любого, из первых пяти входов - активировать выход 1  == это понятное условие.

и при активации любого второго, из первых пяти входов - активировать выход 2. == тут или логика нарушена или проблемы с падежами.

При активации выхода 6 - сбросить. == это понятное условие.


Sledopyt пише:

Что ещё не так?

а если конкретно по скетчу, то все не так ...

Sledopyt
2019-01-15 09:31:35

Я же написал, что со сбросом ещё не думал. Что ещё не так?

renoshnik
2019-01-15 06:49:37

Ваш рисунок не соответствует описанию в первом посте..

Підвал форуму