DanilRyzhov, давайте понимать, что МК питается от напряжения 5В (может меньше). Подавая 9-12 от достаточно мощного источника вы обеспечиваете его теми же 5В от стабилизатора на плате (попутно увеличивая энтропию). Вывод - запитав плату от качественного источника в 5В, результат будет тем же. Если и идти покупать, то брать качественный БП на 5В. Брать на 12 или 9 имеет смысл, если эти напряжения требуются для питания дополнительного оборудования.
Короче эти 2 дня мы занимались решениями ложных срабатываний(пытались) в итоге них#ра не получилось... Сначала хотели поправить время в итоге оно не хотело бл@ть туда заливаться! Его заливаешь(скетч), а время остаётся прежним, но это еще пол беды все-таки получилось его залить, только теперь они уходят на минуту вперед! Ели как залили туда прежний скетч и он вообще не работал причем один день назад все было ок. Решили убрать вообще дни и субботу так как меняли мы время в обед, а ложное было с утра все поубирали заработало, только вот блин опять с этими сраными ложными срабатываниями! Решили пока все оставить так и ходить ее перезагружать все было ок но потом после перезагрузки он все-равно подал ложный звонок! Что блин за мистика???? Теперь думаем присобачить костыль туда в виде реле, которое будет размыкать цепь звонков на 5 минут после звонка, чтобы ложных не было слышно. Есть ли смысл в этом? После ложного он начинает нормально дальше работать до следующего ложного и т.д. P.S. подали ему питание 9, а не 5V на всякий случай.
Удалили дни потому что ложные происходят примерно в тоже время что и субботнее расписание(думали, что дни не работают, но ложные остались) В итоге я решил попробовать сделать скетч с выключателем (чтобы при нажатии работало субботнее расписание), но не вижу смысла сейчас его заливать т.к. ложные срабатывания продолжаются...
До следующего ложного я имею ввиду, что подает нормально все звонки после ложного, пока ложное не сработает и т.д. ( ложное происходит где-то через минуту после нормального)
Евгений, перешли крч на выключатель хотябы на первое время ибо у меня экзамены, а у леши конкурсы для поступлени в институт и времени разумеется нет, но суть не в этом. Прочитав все записи, я думаю, что вы поймете что происходит и почему мы решили налепить этот "костыль". Вот собственно говоря и программа с костылем:
#include <Wire.h>
#include <DS3231.h>
int Rele = 7;
int Green = 5; //пин зеленый светодиод
int Blue = 9; //пин синий светодиод
int Red = 11; //пин красный светодиод
int Switch = 3; //выключатель на корпусе
int Rele2 = 4; // второе реле "костыль"
DS3231 Clock;
bool h12 = false;
bool PM;
bool Century;
void setup() {
Wire.begin();
pinMode(Rele, OUTPUT);
digitalWrite(Rele, HIGH);
pinMode(Green, OUTPUT);
pinMode(Blue, OUTPUT);
pinMode(Red, OUTPUT);
pinMode(Switch, INPUT);//переключение буднего и выходного дня
pinMode(Rele, OUTPUT);
digitalWrite(Rele2, HIGH);//это и есть наш "костыль" в виде 2 реле которое будет поглащать ложные срабатывания
digitalWrite(Green, HIGH);
}
void loop() {
int second, minute, hour;
hour = Clock.getHour(h12, PM);
minute = Clock.getMinute();
second = Clock.getSecond();
if (digitalWrite(Rele) == LOW){
delay(8500);
digitalWrite(Rele2, LOW);
millis(480000);// вот сюда нужна задержка на 8 минут
digitalWrite(Rele2, HIGH);
}
if (digitalWrite(Switch) == HIGH);{
digitalWrite(Red, HIGH); //зажигаем красный светодиод
if (hour == 8 && minute == 30 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 9 && minute == 15 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 9 && minute == 50 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 10 && minute == 10 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 10 && minute == 20 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (&& hour == 11 && minute == 05 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 11 && minute == 15 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 12 && minute == 00 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 12 && minute == 10 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 12 && minute == 55 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 13 && minute == 05 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 13 && minute == 50 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 14 && minute == 00 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 14 && minute == 45 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 14 && minute == 55 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 15 && minute == 40 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
}
else
{
digitalWrite(Red, LOW);
if (hour == 8 && minute == 30 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 9 && minute == 15 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 9 && minute == 25 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 10 && minute == 10 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 10 && minute == 25 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 11 && minute == 10 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 11 && minute == 30 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 12 && minute == 15 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 12 && minute == 30 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 13 && minute == 15 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 13 && minute == 25 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 14 && minute == 10 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 14 && minute == 20 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 15 && minute == 05 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 15 && minute == 25 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 16 && minute == 10 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 16 && minute == 30 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 17 && minute == 15 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 17 && minute == 25 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 18 && minute == 10 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 18 && minute == 20 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
if (hour == 19 && minute == 05 && second == 00){
digitalWrite(Rele, LOW);
digitalWrite(Blue, HIGH);
delay(8000);
digitalWrite(Blue, LOW);
digitalWrite(Rele, HIGH);
}
}
}
Проверьте пожалуйста правильность программы. Второе реле("костыль") уже и будет управлять контактором "сжирая" ложные срабатывания
Я так больше не могу. Я вижу параметр у вызова millis(), я вижу кучу одинаковых строк, да еще и оформленных некрасиво, ЕвгенийП хотел чтобы сами, но я больше не могу.
"Детектив, я вовсе не плохая, меня такой нарисовали" (c) Jessica Rabbit.
Схема исходная, с одним реле. Отпишите как работает, плюс желательно воткнуть надолго и без реле - просто светодиод, как контролировать будете - не знаю, видеорегистратор поставьте. Если косяков не будет подключаете реле. Если косяки появятся - покажете схему подключения. Я потом нарисую, какой она быть должна.
Я так больше не могу. Я вижу параметр у вызова millis(), я вижу кучу одинаковых строк, да еще и оформленных некрасиво, ЕвгенийП хотел чтобы сами, но я больше не могу.
Да ну навик вместо массива с продолжительностью 11 переменных и цикла куча строк кода.
Номинал резистора, смотрящего в базу транзистора не указан - он вас не интересует и зависит от напряжения питания релейной платы, обычно он мало отличается от 1k. Транзистор уже присутствует на релейной плате, ну если это классическая синенькая/чёрненькая китайская плата. У вас это транзистор PNP т. к. вход платы - активный ноль (обмотка включена если на входе ноль, отключена если единица). В общем, диод 1N4007 (или 1N4148, не суть), транзистор и резистор образуют обвязку реле на релейной плате, дальше на ней стоят колодки, в которые вкручиваются провода. На плате нет мощного резистора 39 Ом и высоковольтного конденсатора 0.01-0.1 мкФ, эти элементы называются суппрессором, снаббером, глушителем, искрогасящей цепочкой или защитой контактов. Эта цепочка расплющивает (растягивает во времени) импульсную помеху, возникающую в момент коммутации - большой по амплитуде бросок напряжения, порождающий большой кратковременный ток через контакты, повышающий их температуру (уменьшающий ресурс реле) и в том числе наводящий наносекундную помеху на остальные участки цепи. Чтобы эта помеха не проникла в слаботочную часть (arduino), релейная плата отделяется опторазвязкой (на вашей плате отсутствует). Все что нужно, это только докупить оптопару (PC817 или что-то четырёхногое, у чего на корпусе есть цифры 817, буквы могут быть другими или отсутствовать) и резистор, достаточно маленький для убедительного тока через светодиод оптопары, достаточно большой чтобы этот светодиод не сжечь, для адруины на 5 вольтах это 240-470 Ом; а также отдельный БП на напряжение реле для релейной платы. Резистор 330 Ом в самый раз. Диод, стоящий задом наперед и керамический конденсатор также съедают (фильтруют) некоторые кратковременные помехи в слаботочных цепях, они как правило возникают в длинных проводах (длинные - это длиннее двух метров), в вашем случае они необязательны.
Дроссель, керамический конденсатор и большой электролит есть в качественных адаптерах питания, ставьте внешний если БП выглядит на дешёвую залипуху. Позади линейного стабилизатора особых пульсаций не возникнет, так что и без этих дел в целом ардуина неплохо защищена от помех, главное не питать ей (ардуиной) мощные нагрузки. У вас всеми нагрузками ардуины будут светодиоды - два внешних, один в опторазвязке. Короче, конденсатор 6800 мкФ с дросселем желательны, необязательны. Конденсатор 0.1 мкФ уже есть на плате, они вообще везде стоят возле каждой микросхемы, но лишним он тоже не будет.
Теперь главное. Минус питания реле (от 5-12вольтового блока), и минус ардуины, светодиодов, часов, общий провод и т. п. - это разные минусы (на схеме специально подписано), их разделяет опторазвязка. У вас насколько я понимаю, блок был один на всё и минус реле (то есть эмиттер транзистора) соединён с общим. Уберите, надо раздельно. Для реле должен быть свой собственный БП.
Если после этого будут проблемы с лишними сигналами, остаётся последнее чего вы не проверяли - библиотека DS3231 и часы. Вряд-ли там что-то будет, такие вещи не ломаются.
В коде нет ничего, что выполняется дольше 2 с, так что можно ещё будет включить WDT.
В первую очередь сделайте отдельное питание реле с оптопарой, потом можно думать по снабберу (39 Ом 0.01 мкФ параллельно контактам). В большинстве случаев после оптики вопросов за снаббер не возникает, всех устраивает без него (но по хорошему надо).
релейная плата отделяется опторазвязкой (на вашей плате отсутствует). Все что нужно, это только докупить оптопару (PC817 или что-то четырёхногое, у чего на корпусе есть цифры 817, буквы могут быть другими или отсутствовать)
Ну мучьте ребят опторазвязками, они тут не нужны, реле само по себе - хорошая развязка
Кукла Вуду тоже так думала, коммутируя светодиодные лампы ElectroStandard с вооооооооот таким электролитом внутри, подключенным к сети через выпрямитель на четырёх 1N4007, без всяких резисторов. Эх, детство, волшебная пора наивности и любопытства...
Кукла Вуду тоже так думала, коммутируя светодиодные лампы ElectroStandard с вооооооооот таким электролитом внутри, подключенным к сети через выпрямитель на четырёх 1N4007, без всяких резисторов. Эх, детство, волшебная пора наивности и любопытства...
Земли надо соединять в одной точке (точка ввода питания) в строгом соответствии с правилами ПУЭ )))
и токи заряда подсчитывать ес-но ))) без балластного резистора низзя, у меня как-то и с балластным но на больших банках в КД202Р диодах пусковой сквозные дырки в корпусе оных прожёг )))
Кукла Вуду тоже так думала, коммутируя светодиодные лампы ElectroStandard с вооооооооот таким электролитом внутри, подключенным к сети через выпрямитель на четырёх 1N4007, без всяких резисторов. Эх, детство, волшебная пора наивности и любопытства...
Земли надо соединять в одной точке (точка ввода питания) в строгом соответствии с правилами ПУЭ )))
и токи заряда подсчитывать ес-но ))) без балластного резистора низзя, у меня как-то и с балластным но на больших банках в КД202Р диодах пусковой сквозные дырки в корпусе оных прожёг )))
Ага, и кабель позолоченный должен быть и емкости звуковые по 20 баксов за штуку, а опахалом наводки отгонять ....
Против пуэ ничего против не имею, у меня 4-я группа, на которую каждый год сдаю и раз в три года на обучение езжу ... только нужно разумно подходить к конкретной проблеме подачи школьных звонков :)
Здравствуйте! Огромное спасибо за код! Ложные срабатывания прекратились! Только есть одна проблема и вопрос: Как только в ящик приходит питание он замыкает цепь звонков на 8 сек и начинает после этого благополучно работать можно ли как-нибудь убрать это? Потому что если отключат свет(такое уже было) при включении он сразу звенит и сбивает всех с толку... А теперь проблема: Когда первый раз залили код он подал звонок по субботнему расписанию после этого мы его закоментировали(субботнее расписание) и эта проблема решилась. Как это исправить?
#include "Wire.h" ищет библиотеки от папки скетча, удобно, когда вы правите библитеки, изменённые держим в папке скетча, стандартные могут находится еще в трёх местах )))
А теперь проблема: Когда первый раз залили код он подал звонок по субботнему расписанию после этого мы его закоментировали(субботнее расписание) и эта проблема решилась. Как это исправить?
На всякий случай проверь, какой день недели выдают часы (выведи дату/время/день в монитор порта).
DanilRyzhov, давайте понимать, что МК питается от напряжения 5В (может меньше). Подавая 9-12 от достаточно мощного источника вы обеспечиваете его теми же 5В от стабилизатора на плате (попутно увеличивая энтропию). Вывод - запитав плату от качественного источника в 5В, результат будет тем же. Если и идти покупать, то брать качественный БП на 5В. Брать на 12 или 9 имеет смысл, если эти напряжения требуются для питания дополнительного оборудования.
А можно вопрос, почему нельзя сделать одну функцию и вызывать ет ее с параметрами.
Я не спец возможно пример с ошибками
но такой код был бы гораздо удобнее, или может я не прав?
А можно вопрос, почему нельзя сделать одну функцию и вызывать ет ее с параметрами.
Вы наверно пропустили пост ЕвгенияП, где было предложено, чтобы ребята сперва все доделали сами, а потом уже заниматься оптимизациями и улучшениями.
Короче эти 2 дня мы занимались решениями ложных срабатываний(пытались) в итоге них#ра не получилось... Сначала хотели поправить время в итоге оно не хотело бл@ть туда заливаться! Его заливаешь(скетч), а время остаётся прежним, но это еще пол беды все-таки получилось его залить, только теперь они уходят на минуту вперед! Ели как залили туда прежний скетч и он вообще не работал причем один день назад все было ок. Решили убрать вообще дни и субботу так как меняли мы время в обед, а ложное было с утра все поубирали заработало, только вот блин опять с этими сраными ложными срабатываниями! Решили пока все оставить так и ходить ее перезагружать все было ок но потом после перезагрузки он все-равно подал ложный звонок! Что блин за мистика???? Теперь думаем присобачить костыль туда в виде реле, которое будет размыкать цепь звонков на 5 минут после звонка, чтобы ложных не было слышно. Есть ли смысл в этом? После ложного он начинает нормально дальше работать до следующего ложного и т.д. P.S. подали ему питание 9, а не 5V на всякий случай.
Удалили дни потому что ложные происходят примерно в тоже время что и субботнее расписание(думали, что дни не работают, но ложные остались) В итоге я решил попробовать сделать скетч с выключателем (чтобы при нажатии работало субботнее расписание), но не вижу смысла сейчас его заливать т.к. ложные срабатывания продолжаются...
До следующего ложного я имею ввиду, что подает нормально все звонки после ложного, пока ложное не сработает и т.д. ( ложное происходит где-то через минуту после нормального)
"Случаи разные бывают", сказал Ржевский и намазал вазелином задницу.((((
Предлагаю для начала убрать проверку на день и секунды. после подачи звонка в нужное время делей на минуту и перезагрузка платы.
Евгений, перешли крч на выключатель хотябы на первое время ибо у меня экзамены, а у леши конкурсы для поступлени в институт и времени разумеется нет, но суть не в этом. Прочитав все записи, я думаю, что вы поймете что происходит и почему мы решили налепить этот "костыль". Вот собственно говоря и программа с костылем:
Проверьте пожалуйста правильность программы. Второе реле("костыль") уже и будет управлять контактором "сжирая" ложные срабатывания
delay(8000);
проверил.
Мне ненравится секонд ==00. на какомто милтс или секонд задержались больше чем на секунду и реле не сработает
Проверьте пожалуйста правильность программы. Второе реле("костыль") уже и будет управлять контактором "сжирая" ложные срабатывания
А в каком месте вы часам присваиваете правильное время и дату? Или я слепой?
А мой код из #49 поста пробовали???
А мой код из #49 поста пробовали???
я запретил.
Я так больше не могу. Я вижу параметр у вызова millis(), я вижу кучу одинаковых строк, да еще и оформленных некрасиво, ЕвгенийП хотел чтобы сами, но я больше не могу.
"Детектив, я вовсе не плохая, меня такой нарисовали" (c) Jessica Rabbit.
Афтар, пробуйте такой вариант:
Схема исходная, с одним реле. Отпишите как работает, плюс желательно воткнуть надолго и без реле - просто светодиод, как контролировать будете - не знаю, видеорегистратор поставьте. Если косяков не будет подключаете реле. Если косяки появятся - покажете схему подключения. Я потом нарисую, какой она быть должна.
Теперь хоть знаем, кто такая - (c) Jessica Rabbit. )))
Я так больше не могу.
Я уже давно пустил себе пулю в лоб ....
Я так больше не могу. Я вижу параметр у вызова millis(), я вижу кучу одинаковых строк, да еще и оформленных некрасиво, ЕвгенийП хотел чтобы сами, но я больше не могу.
Да ну навик вместо массива с продолжительностью 11 переменных и цикла куча строк кода.
Доброго времени суток. Прошу прощения за выражения товарища в предыдущих постах, завтра с утра поставлю этот скетч и будем наблюдать.
Номинал резистора, смотрящего в базу транзистора не указан - он вас не интересует и зависит от напряжения питания релейной платы, обычно он мало отличается от 1k. Транзистор уже присутствует на релейной плате, ну если это классическая синенькая/чёрненькая китайская плата. У вас это транзистор PNP т. к. вход платы - активный ноль (обмотка включена если на входе ноль, отключена если единица). В общем, диод 1N4007 (или 1N4148, не суть), транзистор и резистор образуют обвязку реле на релейной плате, дальше на ней стоят колодки, в которые вкручиваются провода. На плате нет мощного резистора 39 Ом и высоковольтного конденсатора 0.01-0.1 мкФ, эти элементы называются суппрессором, снаббером, глушителем, искрогасящей цепочкой или защитой контактов. Эта цепочка расплющивает (растягивает во времени) импульсную помеху, возникающую в момент коммутации - большой по амплитуде бросок напряжения, порождающий большой кратковременный ток через контакты, повышающий их температуру (уменьшающий ресурс реле) и в том числе наводящий наносекундную помеху на остальные участки цепи. Чтобы эта помеха не проникла в слаботочную часть (arduino), релейная плата отделяется опторазвязкой (на вашей плате отсутствует). Все что нужно, это только докупить оптопару (PC817 или что-то четырёхногое, у чего на корпусе есть цифры 817, буквы могут быть другими или отсутствовать) и резистор, достаточно маленький для убедительного тока через светодиод оптопары, достаточно большой чтобы этот светодиод не сжечь, для адруины на 5 вольтах это 240-470 Ом; а также отдельный БП на напряжение реле для релейной платы. Резистор 330 Ом в самый раз. Диод, стоящий задом наперед и керамический конденсатор также съедают (фильтруют) некоторые кратковременные помехи в слаботочных цепях, они как правило возникают в длинных проводах (длинные - это длиннее двух метров), в вашем случае они необязательны.
Дроссель, керамический конденсатор и большой электролит есть в качественных адаптерах питания, ставьте внешний если БП выглядит на дешёвую залипуху. Позади линейного стабилизатора особых пульсаций не возникнет, так что и без этих дел в целом ардуина неплохо защищена от помех, главное не питать ей (ардуиной) мощные нагрузки. У вас всеми нагрузками ардуины будут светодиоды - два внешних, один в опторазвязке. Короче, конденсатор 6800 мкФ с дросселем желательны, необязательны. Конденсатор 0.1 мкФ уже есть на плате, они вообще везде стоят возле каждой микросхемы, но лишним он тоже не будет.
Теперь главное. Минус питания реле (от 5-12вольтового блока), и минус ардуины, светодиодов, часов, общий провод и т. п. - это разные минусы (на схеме специально подписано), их разделяет опторазвязка. У вас насколько я понимаю, блок был один на всё и минус реле (то есть эмиттер транзистора) соединён с общим. Уберите, надо раздельно. Для реле должен быть свой собственный БП.
Если после этого будут проблемы с лишними сигналами, остаётся последнее чего вы не проверяли - библиотека DS3231 и часы. Вряд-ли там что-то будет, такие вещи не ломаются.
В коде нет ничего, что выполняется дольше 2 с, так что можно ещё будет включить WDT.
В первую очередь сделайте отдельное питание реле с оптопарой, потом можно думать по снабберу (39 Ом 0.01 мкФ параллельно контактам). В большинстве случаев после оптики вопросов за снаббер не возникает, всех устраивает без него (но по хорошему надо).
релейная плата отделяется опторазвязкой (на вашей плате отсутствует). Все что нужно, это только докупить оптопару (PC817 или что-то четырёхногое, у чего на корпусе есть цифры 817, буквы могут быть другими или отсутствовать)
Ну мучьте ребят опторазвязками, они тут не нужны, реле само по себе - хорошая развязка
Кукла Вуду тоже так думала, коммутируя светодиодные лампы ElectroStandard с вооооооооот таким электролитом внутри, подключенным к сети через выпрямитель на четырёх 1N4007, без всяких резисторов. Эх, детство, волшебная пора наивности и любопытства...
Кукла Вуду тоже так думала, коммутируя светодиодные лампы ElectroStandard с вооооооооот таким электролитом внутри, подключенным к сети через выпрямитель на четырёх 1N4007, без всяких резисторов. Эх, детство, волшебная пора наивности и любопытства...
Земли надо соединять в одной точке (точка ввода питания) в строгом соответствии с правилами ПУЭ )))
и токи заряда подсчитывать ес-но ))) без балластного резистора низзя, у меня как-то и с балластным но на больших банках в КД202Р диодах пусковой сквозные дырки в корпусе оных прожёг )))
Кукла Вуду тоже так думала, коммутируя светодиодные лампы ElectroStandard с вооооооооот таким электролитом внутри, подключенным к сети через выпрямитель на четырёх 1N4007, без всяких резисторов. Эх, детство, волшебная пора наивности и любопытства...
Земли надо соединять в одной точке (точка ввода питания) в строгом соответствии с правилами ПУЭ )))
и токи заряда подсчитывать ес-но ))) без балластного резистора низзя, у меня как-то и с балластным но на больших банках в КД202Р диодах пусковой сквозные дырки в корпусе оных прожёг )))
Ага, и кабель позолоченный должен быть и емкости звуковые по 20 баксов за штуку, а опахалом наводки отгонять ....
Ага, и кабель позолоченный должен быть и емкости звуковые по 20 баксов за штуку, а опахалом наводки отгонять ....
и что вы имеете против ПУЭ? Он же кровью пишется
Ага, и кабель позолоченный должен быть и емкости звуковые по 20 баксов за штуку, а опахалом наводки отгонять ....
и что вы имеете против ПУЭ? Он же кровью пишется
Ведь написано, мудила,
Не влезай, убьёт.
Убило.
Следом лезет обормот,
С криком - Всех не перебьёт
(Шаов.Т)
и что вы имеете против ПУЭ? Он же кровью пишется
Против пуэ ничего против не имею, у меня 4-я группа, на которую каждый год сдаю и раз в три года на обучение езжу ... только нужно разумно подходить к конкретной проблеме подачи школьных звонков :)
Ага, и кабель позолоченный должен быть и емкости звуковые по 20 баксов за штуку, а опахалом наводки отгонять ....
и что вы имеете против ПУЭ? Он же кровью пишется
Ведь написано, мудила,
Не влезай, убьёт.
Убило.
Следом лезет обормот,
С криком - Всех не перебьёт
(Шаов.Т)
Тима он такой ))) точно подмечает, гений одним словом, кстати, этот случай не помню, надо спросить
Тима он такой ))) точно подмечает, гений одним словом, кстати, этот случай не помню, надо спросить
Частушки пофигушки. Слова чуть переврал, суть таже, староват становлюсь.))))
частушки помню, по жизни с кем было не помню, он жеж из личного опыта всё черпает
ТС почитай
Здравствуйте! Огромное спасибо за код! Ложные срабатывания прекратились! Только есть одна проблема и вопрос: Как только в ящик приходит питание он замыкает цепь звонков на 8 сек и начинает после этого благополучно работать можно ли как-нибудь убрать это? Потому что если отключат свет(такое уже было) при включении он сразу звенит и сбивает всех с толку... А теперь проблема: Когда первый раз залили код он подал звонок по субботнему расписанию после этого мы его закоментировали(субботнее расписание) и эта проблема решилась. Как это исправить?
подскажите в последнем ардуино иде не заработало строка #include <Wire.h>
а строка #include "Wire.h" заработала
подскажите библиотеки теперь все помечать "" или это случайность какая то
#include "Wire.h" ищет библиотеки от папки скетча, удобно, когда вы правите библитеки, изменённые держим в папке скетча, стандартные могут находится еще в трёх местах )))
А теперь проблема: Когда первый раз залили код он подал звонок по субботнему расписанию после этого мы его закоментировали(субботнее расписание) и эта проблема решилась. Как это исправить?
подскажите в последнем ардуино иде не заработало строка #include <Wire.h>
а строка #include "Wire.h" заработала
подскажите библиотеки теперь все помечать "" или это случайность какая то
Это не случайность.
При <> папка с библиотекой должна лежать в Мои документы\Arduino\libraries\
При "" библиотека должна лежать в папке со скетчем.
Можете схему заново залить, ибо очень уж нужна