Одинаковый повторяющийся сигнал сразу на 8 реле.
- Войдите на сайт для отправки комментариев
Сб, 19/01/2019 - 19:51
При нажатии на кнопку (на пине А1) надо замыкать сразу 8 реле (пины 2,3,4,5,6,7,8,9) в режиме сигнал-пауза-сигнал- пауза ( 10 млск+20 млск пауза+ 10млск+20млск пауза и тд) в бесконечнгом цикле. Как лучше сделать? Не будет ли паразитная функция delay повторенная многократно тормозить весь процесс? Скетч нужен для тестирования газовых форсунок.
Ну, собственно, функция delay и предназначена, для того, что бы "тормозить весь процесс" на заданное время.
По вашей идее реле будут щелкать примерно 30 раз в секунду. Долго они так не протянут. Да и не уверен, что вообще с такой частотой смогут работать.
Не используйте паразитных функций и соедините входы модулей реле - все разом (с небольшим разбросом, конечно) будут щёлкать.
Один пин на все 8 реле? Видимо, так и придется сделать, просто была задумка при необходимости корректировать работу каждого реле собственными значениями сигнала, поскольку форсунки работают все-таки по-разному и надо знать какую поправку задавать в каждом случае.
Реле твердотельные и ловят даже более короткие сигналы достаточно длительное уже время. Кстати, а есть способ посылать сигнал, скажем, не 3 млск а 3.5 млск?
Если надо корректировать, тогда о "сразу" (в смысле "одновременно") речи в условии задачи быть не может.
Да хоть 0.5ms, главное - чтобы реле были быстрее.
По моему мнению понятия млск и реле не очень совместимы...
А для форсунок тут уже есть тема,
хотя она для бензиновых, но вы разберётесь.
lДа можно и 3,35 задать и форсунками по отдельности управлять. Вы начните. Осциллограф есть?
Осцилографа нет. Такой вот скетч подойдет?
#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);
// Проверяем значения один раз в секунду.
}
Вот только куда вставлять цикл подачи "сигнал-пауза"?
Как лучше сделать? ... Скетч нужен для тестирования газовых форсунок.
Прочитал вопрос, оценил уровень знаний, и совершенно искренне, по-доброму советую: никак не делай! Помигай светодиодом! Мало Магнитогорска и Шахт?
Не переживайте, форсунки не газ гонят, а воздух для совсем других целей. Но калибровать их все-таки надо.
ну так как сделать цикл сигнала запускаемым от кнопки?
Для организации цикла по условию в си существует оператор while() (почитайте на досуге). Например, чтобы цикл крутился пока нажата кнопка пишут while(Button==1){ ...здесь что-то делают...}
Запитайте реле через его нормально замкнутый контакт и посмотрите частоту срабатывания.
Вернее не срабатывания, а размыкания.
У вас получится чудесная трещотка.
Кстати вам для информации:
Демпферный диод увеличивает время отпускания реле поддерживая ток .
для нечитателей
Реле твердотельные и ловят даже более короткие сигналы
Да какая нафик трещотка, коллеги? - реле тверрдотельные
Mural - можно все реле к одному пину, тогда будут срабатывать одновременно, а можно каждое к своему и включать в произвольном порядке.
Цикл "включение-пауза" в Вашем скетче вставить вместо delay(100). например так
вообще, если вам нужен готовый скетч, обращайтесь в раздел Ищу исполнителя
Спасибо, попробую.-))
Да, все нормально работает. Спасибо!
Вот еще вопрос - а как сделать так, чтобы величина сигнала плавно увеличивалась? Можно функции delay подсунуть какую-то переменную, которая в цикле будет постепенно наращиваться на какую-то небольшую величину, достигать максимума и опять начинать с маленького значения?
Дело в том, что, похоже, на разных значениях длительности сигнала форсунки ведут себя по-разному. Т.е. откалибровав их на коротких сигналах можно получить рассинхронизацию на длинных.
Установив же плавное изменение можно попытаться поймать среднее значение, при котором они работают наиболее слаженно
Да не стесняйтесь, не спрашивайте "как", а просите сделать. Вам же это нужно - взять МК, релюшки, найти или вымутить скетч и делать бизнес.
Мне интересно самому разобраться.
вы марку своих реле назовите, а то может у них время реакции мс, и дело не в форсунках