Кратковременное срабатывание реле при включении питании ардуино
- Войдите на сайт для отправки комментариев
Возникла проблема при подключении реле к ардуино ( реле с напряжением управления 5 вольт, переключается уровнем "0" ).
Питание беру с ардуины соответственно подключив: Vcc на +5 ардуины, и соеденяю земли. Управление реле - пин IN подключаю к 7 пину ардуины.
Т.е изначально для разомкнутого состояния реле на пине упраления 7 должна быть "1".
Использую код:
void setup() { pinMode(rele, OUTPUT); digitalWrite(rele, HIGH); }
А для переключения реле должен быть низкий уровень:
digitalWrite(rele, LOW);
Проблема в следющем: при подаче питания (включении ардуины) происходит кратковременное срабатывание реле.
Подскажите пожалуйста как решить данную проблему?
Были варианты подавать питание на реле с пина арудины, на котором выставлять +5 только после установления "1" на выводе 7 (выводе управления). Но такая схема не дала результатов, так как не хватает напряжения для срабатывания реле.
Строкой 4-ре, вы устанавливаете нужный уровень. Но, к сожалению, проходит какое-то время между включением ардуины и тем когда эта строка выполнится (пока отработает бутлоадер и т.п.). А, по умолчанию, на выходах ноль. Вот оно и успевает "клацнуть".
Варианты выхода:
1. Брать другое реле, которое управляется логическое единицей, а не нулем.
2. Использовать внешний подтягивающий резстор. То есть между пином rele и питанием поставить вкорячить резистор номинало побольше (10k-20K).
3. Химичить какой-то "инвертер", который будет 0 превращат в единицу, а 1-цу в ноль.
IMHO самый простой - второй вариант.
поменяйте местами две строки в методе setup.
желательно подключать реле к МК через транзистор, иначе может сгореть пин.
Спасибо, сейчас попробую второй вариант.
Но не совсем понимаю, как подтянув мой пин rele к +5, я получу "0" на пине IN реле при сотсоянии LOW ?
поменяйте местами в setup две строки.
По умолчанию, все выходы в Z-состоянии. То есть могут ловить любые наводки из эфира. А это значит, что даже если смена строк поможет, то это "просто повезло". И "прощелки", все равно могут потом позникать если где-то в этот момент включится холодильник, волновка и т.п. Лучше, все-таки, гарантированно его притянуть к питанию.
желательно подключать реле к МК через транзистор, иначе может сгореть пин.
Судя по " Vcc на +5 ардуины, и соеденяю земли. Управление реле - пин IN" - это не голое реле, а модуль реле уже содержащий упоминаемую вами обвязку, а значит "самому ее добавлять" не нужно.
Простите сразу не уточнил, я подключаю не напрямую реле, а маленький "реле-шилд" на одно реле.
Строки менял местами, результат прежний.
Спасибо, сейчас попробую второй вариант.
Но не совсем понимаю, как подтянув мой пин rele к +5, я получу "0" на пине IN реле при сотсоянии LOW ?
Да очень просто :) Как работает любой подтягивающий резистор.
У вас получится "делитель напряжения".
http://bsvi.ru/kalkulyator-delitelya-na-rezistorax/
Седьмой пин это GND с этой схемы (R2=0). Vout - то что пошло на реле. R1=20K, R2=0
Когда на на седьмой пин податие HIGH, то у вас c пина, просто пойдет 5v на IN реле. Через R1 ток вообще идти не будет, так как с обоих сторон у него 5v.
А когда вы дадите LOW. То есть 7-мой пин станет землей как на схеме, то у вас выйдет
Нижнее плечо 0 килоом.
Что естественно пересилит слабенький ток из R1 - 250uA
Эти 250uA - потери. Расплата за потяжку. Но, как видите - довольно маленькие.
Если этого не хватит что-бы удержать реле в выключенном состоянии, то прийдется уменьшать номинал резистора. Но тогда потери будут больше.
Вот, можете почитать
http://easyelectronics.ru/avr-uchebnyj-kurs-ustrojstvo-i-rabota-portov-vvoda-vyvoda.html
Там внизу есть коммикс-картинки, для объяснения идеи подтягивающиго резистора.
Пообщем считайте его такое "слабой пружинкой", которая подтягивает выход к питанию, что-бы он не "болтался", до тех пор пока мы "по серьезному" не дадим на него питания digitalWrite. А когда digitalWrite(.., LOW) - он просто пересилит эту пружинку.
И наверное, совет от toc тоже имеет смысл применить. То есть нужен и резитор и digitalWrite делать до переключение portMode
попробуйте подтянуть базу транзистора к питанию(если pnp)
Попробовал вариант от leshak с подтягивающим резистором, номиналы брал 22 кОм, 10 кОм, 1кОм, но результат так и не получил, все равно есть кратковременно клац...(
Вашу схему и программу в студию :)
Уважаемый leshak, а что это у вас за программа скрин которой вы засветили в посте №6?
Ну вообщем, вариант от Michal это тот же самый вариант.
Может вы нарисуете схему, как вы, в итоге, поняли мое текстовое описание. Что куда вы подключили?
Если подтянуть резистором (все, верно меньше 1K - не нужно пробовать), но при этом залить "пустой скетч"
"Клац", при включении, наблюдается?
Спасибо всем за помощь) так не ожиданно все помогают)
могу нарисовать но думаю все делаю верно. Резистор включал не посредственно на клемы реле между IN и Vcc.
Попробовал с "пустым скетчем" - клацанья нет!!!!
Написал в цикле включение выключение каждые 5 сек через delay, так же клацанья при подаче питания нет!!!
буду разбираться с основным скетчем, выкладывать его считаю не целесообразно, много кода, может местами и некорректного но исправно работающего до этого с подключенным к управляющему выводу ардуино вместо реле светодиода.
Уважаемый leshak, а что это у вас за программа скрин которой вы засветили в посте №6?
Программа называется "вы не ходили по ссылке из предыдущего поста" (№5) ;)
Это скриншот не программы, а сайта.
Из программ, которые умеют делать то же самое я пользую ElectroDroid - Приложения на Google Play на планшете (правда я пользую его скорее как справочник маркировки резисторов, но это он тоже умеет).
Но вообщем-то, расчитать делитель не сложно и без всяких програм, обычным калькулятором. Напряжение падает в той же пропорции, что и соотношение R1/R2 Делитель напряжения — Википедия Формула не сложна Uout=U*R2/(R1+R2)
Попробовал с "пустым скетчем" - клацанья нет!!!!
Написал в цикле включение выключение каждые 5 сек через delay, так же клацанья при подаче питания нет!!!
Ну значит "железную" проблему вы решили. Теперь уже в логика копайтесь.
Натыкайте по коду, там где включаете/выключаете реле что-то типа
И смотрите по логу где у вас выскакивает включение-нежданчик.
м/б дело в бибилотеке ардуиновской... щас нет возможности посмотреть что поумолчанию выставленно на выходах..наверно там ноль на старте, а при включении, когда вы настравиваете порт из-за долгой отработки двух команд релюха успевает сработать...
как вариант переделать блок реле на срабатывание по "1", ну или как советовали, запустить через инвертор...
и да светодиод не показатель правильной работы... осцилоскопер в помощь :)
а сейчас решил в своем скетче сделать пустым цикл, но определяя все переменные, в итоге у меня реле сразу включается, т.е на пине управления устанавливается "0". буду искать дальше проблему...
кстати если это имеет значение, то у меня пин управления 0.
вообщето порты сначала настравивают, а потом ими дергают... а то так можно и плохо ему сделать
попробуйте настраивать порты не спомощью pinMode:
только по схеме гляньте к какому порту реальному на МК подключено реле
не совсем понимаю, что нужно написать (
подскажите пожалуйста.
управляющий пин реле пдключен к 0 пину ардуины.
что охначает маска для порта? что там нужно написать имя перменной которая используется для обозначения вывода? (по типу int led = 0; идальше везде пишем обращение к выводу как led.)
Да не, "плохо" ему от этого не будет. От того что вначале дернули, а потому уже pinMode включили. Ну включится из-за этого, вначале, на микросекунду, внутренний подттягивающий, ну и что? Зато, как раз, избежим LOW в момент переключения pinMode
А вот то что он rele = 0 - это может играть рояль. Пины 0,1 - лучше вообще никогда не использовать. На них Serial висит. Так что "дергать вам пин 0" может еще сам компьютер. И если этот пин в этот момент поставлен в Output, то проблемы могут быть от "скетчи не заливаются", до "карачун ему пришел".
Я вот счас специально потестил
Вполне нормально зажигает светик (то есть, в итоге HIGH на пине устанавлиается).
Так что не замудрятей, пока, с масками. Просто смените пин, на что-то отличное от 0 или 1
А вот то что он rele = 0 - это может играть рояль. Пины 0,1 - лучше вообще никогда не использовать. На них Serial висит. Так что "дергать вам пин 0" может еще сам компьютер. И если этот пин в этот момент поставлен в Output, то проблемы могут быть от "скетчи не заливаются", до "карачун ему пришел".
Понял, спасибо, попробую пересесть на другую ногу.
"карачун ему пришел".
очень плохо? или это очень плохо уже случилось?
очень плохо? или это очень плохо уже случилось?
Ну если бы он угорел и не работал как вход - вы бы об этом уже знали. У вас-бы скетчи не заливались (на разве что у вас плата Leonardo).
Проверить угорел ли он как выход - начать давать на него HIGH/LOW и смотреть тестером происходит ли переключение 5v/0v (но тут опять-таки, возникает риск добить его).
Но не вижу особого смысла. Если скетчи заливаются - просто забудте про него :) Как вход - рабоает, как выход - а не нужно ;)
Пересел на пин 19 и все, все заработало))))
ОГРОМНАЯ благодарность всем кто откликнулся)
пол дня убил на это, на форуме зарегился, хорошие люди тут собрались, еще раз спасибо!!!!!
есть ли тут система благодарности, плюсанул бы?
и подскажите пожалуйста, что это за баллы в профиле пишут?
Пересел на пин 19 и все, все заработало))))
ОГРОМНАЯ благодарность всем кто откликнулся)
пол дня убил на это, на форуме зарегился, хорошие люди тут собрались, еще раз спасибо!!!!!
На самом деле 80% того что вам охотно отвечали является то что вы вопросы внятно задавали :) Ваша собственная заслуга.
И не ленились проверять советы.
Если бы вы назвали тему "помогите новичку", а в ней спросили бы "как мигать диодом без делай" или "как прочитать число из сериал", а потом еще начали возмущатся на "посылание в поиск" и рассказывать как нужно отвечать на вопросы - вас ждал бы совсем другой танец ;)
есть ли тут систем благодарности, плюсанул бы?
и подскажите пожалуйста, что это за баллы в профиле пишут?
Давно не заходил. Раньше балы в профиле - это было просто количество сообщений. Но явно был какое-то апдейт движка. Вот вижу, что возле каждого сообщения еще появились стрелочки вверх/вниз. Думаю это что-то типа youtub-бовского like или маркировать "полезный совет". Но на что они влияют и где виден их результат - для самого загадка :)
leshak, спасибо Вам горомное)
раньше когда сталкивался с проблемами читал этот форум, но регится надобности пока не было)
еще есть вопрос, может кто знает, какие транзиторы и диоды используются в таких реле шилдах:
шилд с 12 вольтовыми реле.
та чо нить типа 8550 или 8050(они разного типа) только в Smd упаковке, а диоды обынчые 1n4148, ну и оптрон стандарт pc817
недавно тема была про блок реле, там крупным планом есть фотка, все номиналы видны
Логично ,прыгало на 0 пине из-за того что где-то есть строчка иницилизации сериал порта Serial.begin() и/или работа с ним.Тут или убрать все строки ,ипользующие последовательный порт или переделать на другой свободный пин.Возможно в библиотеках есть обращение к нему для дебага..