Одинаковый повторяющийся сигнал сразу на 8 реле.

Mural
Offline
Зарегистрирован: 22.06.2018

При нажатии на кнопку (на пине А1) надо замыкать сразу 8 реле (пины 2,3,4,5,6,7,8,9)  в режиме сигнал-пауза-сигнал- пауза ( 10 млск+20 млск пауза+ 10млск+20млск пауза и тд) в бесконечнгом цикле. Как лучше сделать? Не будет ли паразитная функция delay повторенная многократно тормозить весь процесс?  Скетч нужен для тестирования газовых форсунок.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Ну, собственно, функция delay и предназначена, для того, что бы "тормозить весь процесс" на заданное время.

По вашей идее реле будут щелкать примерно 30 раз в секунду. Долго они так не протянут. Да и не уверен, что вообще с такой частотой смогут работать.

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Не используйте паразитных функций и соедините входы модулей реле - все разом (с небольшим разбросом, конечно) будут щёлкать.

Mural
Offline
Зарегистрирован: 22.06.2018

Один пин на все 8  реле? Видимо, так и придется сделать, просто была задумка при необходимости корректировать работу каждого реле собственными значениями сигнала, поскольку форсунки работают все-таки по-разному и надо знать какую поправку задавать в каждом случае.

Mural
Offline
Зарегистрирован: 22.06.2018

Реле твердотельные и ловят даже более короткие сигналы достаточно длительное уже время. Кстати, а есть способ посылать сигнал, скажем, не 3 млск а 3.5 млск?

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Если надо корректировать, тогда о "сразу" (в смысле "одновременно") речи в условии задачи быть не может.

Да хоть 0.5ms, главное - чтобы реле были быстрее.

trembo
trembo аватар
Онлайн
Зарегистрирован: 08.04.2011

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

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

lДа можно и 3,35 задать и форсунками по отдельности управлять. Вы начните. Осциллограф есть?

Mural
Offline
Зарегистрирован: 22.06.2018

Осцилографа нет. Такой вот скетч подойдет?

#define PIN_RELAY 8 // Определяем пин, используемый для подключения реле
#define PIN_PIR 5 // Определяем пин, используемый для подключения PIR-датчика
 
// В этой функции определяем первоначальные установки
void setup()
{
  Serial.begin(9600);
  pinMode(PIN_RELAY, OUTPUT); // Объявляем пин реле как выход
  digitalWrite(PIN_RELAY, HIGH); // Выключаем реле - посылаем высокий сигнал
}
void loop()
{
 
  int val = digitalRead(PIN_PIR); // Считваем значение с датчика движения в отдельную переменную
 
  if (val == HIGH) {
    Serial.println("Датчик сработал");
    digitalWrite(PIN_RELAY, LOW); // Включаем реле - посылаем низкий уровень сигнала
  } else {
    digitalWrite(PIN_RELAY, HIGH); // Отключаем реле - посылаем высокий уровень сигнала
  }
 
  delay(1000); // Проверяем значения один раз в секунду.
 
}
 
Вот только куда вставлять цикл подачи "сигнал-пауза"?
Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Mural пишет:

Как лучше сделать? ... Скетч нужен для тестирования газовых форсунок.

Прочитал вопрос, оценил уровень знаний, и совершенно искренне, по-доброму советую: никак не делай! Помигай светодиодом! Мало Магнитогорска и Шахт?

Mural
Offline
Зарегистрирован: 22.06.2018

Не переживайте, форсунки не газ гонят, а воздух для совсем других целей. Но калибровать их все-таки надо.

Mural
Offline
Зарегистрирован: 22.06.2018

ну так как сделать цикл сигнала запускаемым от кнопки?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Для организации цикла по условию в си существует оператор while() (почитайте на досуге). Например, чтобы цикл крутился пока нажата кнопка пишут while(Button==1){ ...здесь что-то делают...}

trembo
trembo аватар
Онлайн
Зарегистрирован: 08.04.2011

Запитайте реле через его нормально замкнутый контакт и посмотрите частоту срабатывания.
Вернее не срабатывания, а размыкания.
У вас получится чудесная трещотка.

Кстати вам для информации:
Демпферный диод увеличивает время отпускания реле поддерживая ток .

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

для нечитателей

Mural пишет:

Реле твердотельные и ловят даже более короткие сигналы 

b707
Онлайн
Зарегистрирован: 26.05.2017

trembo пишет:
Запитайте реле через его нормально замкнутый контакт и посмотрите частоту срабатывания. Вернее не срабатывания, а размыкания. У вас получится чудесная трещотка.

Да какая нафик трещотка, коллеги? - реле тверрдотельные

Mural - можно все реле к одному пину, тогда будут срабатывать одновременно, а можно каждое к своему и включать в произвольном порядке.

Цикл "включение-пауза" в Вашем скетче вставить вместо delay(100). например так

uint32_t start_time = millis();
while (millis() - start_time < 1000) {
  digitalWrite(PIN_RELAY, LOW);
  delay(10);
  digitalWrite(PIN_RELAY, HIGH);
  delay(20);
}

вообще, если вам нужен готовый скетч, обращайтесь в раздел Ищу исполнителя

Mural
Offline
Зарегистрирован: 22.06.2018

Спасибо, попробую.-))

Mural
Offline
Зарегистрирован: 22.06.2018

Да, все нормально работает. Спасибо!

Вот еще вопрос -  а как сделать так, чтобы величина сигнала плавно увеличивалась? Можно функции delay подсунуть какую-то переменную, которая в цикле будет постепенно наращиваться на какую-то небольшую величину, достигать максимума и опять начинать с маленького значения?

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

Установив же плавное изменение можно попытаться поймать среднее значение, при котором они работают наиболее слаженно

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Да не стесняйтесь, не спрашивайте "как", а просите сделать. Вам же это нужно - взять МК, релюшки, найти или вымутить скетч и делать бизнес.

Mural
Offline
Зарегистрирован: 22.06.2018

Мне интересно самому разобраться.

ВН
Offline
Зарегистрирован: 25.02.2016

вы марку своих реле назовите, а то может у них время реакции мс, и дело не в форсунках