Без оптрона работает, с оптроном нет...
- Войдите на сайт для отправки комментариев
Всем привет! Вчера собрал схемку
На портах ардуины Uno пишу - pinMode(8,INPUT), digitalWrite(8,HIGH) - на ноге появляется +5в. Оптрон сажает его на землю при появлении сигнала от датчика. Датчик пока +5В. В дальнейшем перемычкой планирую выбор +5, +24 чтобы менялся резистор через который протекает ток на фотодиод.
Вообщем картина такая - мультитестером проверяю питание на ноге 8 к оптрону - +5в. Подаю сигнал на на оптрон - питание пропадает. Т.е вроде как все работает. Но в программе при чтении порта 8 if (digitalRead(8)==LOW) - срабатывает. Но алгоритм не хочет читать дальше ноги 9,10,11. Как будто на них не приходит сигнала. Хотя электрически показывает 0 на ногах при сигнале. Что-то со схемой не так???
Убираю схему, тыкаю все на прямую в плату Арду(т.к. +5 везде), меняю состояние if (digitalRead(8)==HIGH) и все работает как надо.... Не пойму в чем прикол?
ну, теперь скетч, который не работает.... да и схему так не рисуют - что за прямоугольник с точкой 817 ? как можно понять алгоритм работы если вы используете черные квадраты :))) нарисуйте схемку одного канала, раз они одинаковые
Как скажите ))) Вот накидал:
Резистор не на той ноге нарисова, он от земли к оптрону идет. А вот скеч смогу вечерком скинуть, т.к. ща не имею его на рабочем компе... Но думаю проблема не в скетче, т.к. без платы расширения скетч работает...
Зачем ставить оптопару и затем связывать ее по земле?
Как оптопара будет работать в Вашем случае?
НИКАК.
Dr_grizzly,
Правильнее ноги инициализировать вот так :
pinMode(8,INPUT_PULLUP)
Зачем ставить оптопару и затем связывать ее по земле?
))) Это тут хроническое и неисправимое. Приймите как данность, на нашем форуме оптроны не для гальваноразвязки, а чтоб не сгорело ;) Спорить с ними безсмыслено, аргумент у них убойный - "оноработает!"
Dr_grizzly. для работы оптрона во входной цепи нужен ток 5-20мА, а ваши датчики столко могут? - большинство датчиков обычно работают с микроамперами....
То что вы нарисовали - мало того, что бред в смысле бесполезности оптрона (развязки никакой НЕТ). так еще и просто неработоспособно с большинство датчиков.
Нуу блин )) стоило косякнуть в рисовании и раскритиковали )))) Первый рисунок правильный, просто не по правилам схемотехники )) земля не замкнута, один минус от датчиков он на стороне датчика, второй минус на ардуине ) Здесь используются датчики положения пневмоцилиндра, по сути это датчик индуктивности.
Поправил код на pinMode(8,INPUT_PULLUP)
Вот приблизительный код )) По сути он не должен быть проблемой, т.к. без оптопар все работает, когда на прямую подаю сигналы.
используются датчики положения пневмоцилиндра, по сути это датчик индуктивности.
см мое сообщение #7 - датчики какой ток выдают? - он в состоянии "зажечь" излучатель оптопары?
Первый рисунок правильный
Как он может быть правильный? На пине всегда будет LOW, вне зависимости "зажгли" излучатель оптопары или нет.
Ты gnd цепляешь на пин и хочешь увидеть там HIGH?
Первый рисунок правильный
Как он может быть правильный? На пине всегда будет LOW, вне зависимости "зажгли" излучатель оптопары или нет.
Ты gnd цепляешь на пин и хочешь увидеть там HIGH?
там пуллап резистор в подтяжках пинов
посмотрел характеристики - до 70мА может пропустить через себя. Цепь простая - блок питания -> датчик -> контакт на оптопаре. Датчик сработав дает на управляющем контакте напряжение блока питания. А вообще я ща посчитал что с резистером на 220 ом при 5В ток получается 22мА. ВРоде как достаточен?
Если оптопары удобно, пусть будут оптопары.
Измерьте напряжение в точке, например, ard8 при активном сигнале датчика.
В данном случае логика же простая:
сработал датчик, в оптопаре загорелся светодиод, он открыл транзистор, транзистор притянул вход
ардуино к земле. если не работает - что-то не так подключено.
PS
не пойму, зачем оптопары. Если активный сигнал с датчика - напряжение питания, а оно 5 вольт, как я понял
так подавайте его напрямую через токоограничивающий резистор на вход ардуино. Для успокоения защитите
вход стабилитроном.
Померил напряжение, без активного сигнала датчика - +4.7В, когда датчик активен - 0В.
А токоограничеващий резистор на ногу ардуины какой должен стоять? допустим при питании в 5В, какая величина тока должна проходить на контроллер чтобы уверенно работать и не спалить? В описаловке до 40мА. А по факту какой должен быть? Если брать формулу R=U/I то получаем при 5В нужно не менее 125Ом - это максимальный ток 40мА получится, и не более 1кОм вроде?
Дело в том, что напряжения могут быть не 5 а 24В и тогда хотелось бы просто перекинуть перемычку на другой резистор, а не собирать отдельную цепь... Или может есть что попроще? ))
Чет ваще лажа какая-то.... заменил оптронную схему на эту, для тестов, а поводение такое же как с оптроном... Проверил по формуле - получается что это некий делитель но без сильного падения напряжения, т.е с основной задачей ограничения тока справляется, получается 15мА на ногу ардуины с датчка. Сделал подтяжку на землю через 10кОм. Поведение алгоритма ваще не пойми как - запускается, ждет 3сек. включает PNR2 и ждет сигнала от датчика. Подаю на DPP1 сигнал, срабатывает PNR1 и отключается PNR2, начало алгоритма положено, но дальше ни DPP2 ни DPP3 не реагируют, чтобы не делал... Уже не знаю куда смотреть.... Может где "бревно в глазу" засело???
Создал тестовый код, запихнул, работает блин... значит лажа где-то в коде
Засело.Это почти не делитель. Почитайте в интернете про делитель напряжения и посчитайте сами, что вы нарисовали.
Поставьте вместо 330 ом 10 Ком, а вместо 10 Ком - стабилитрон па 4,7V и подавайте на вход хоть 24 вольта.
А токоограничеващий резистор на ногу ардуины какой должен стоять? допустим при питании в 5В, какая величина тока должна проходить на контроллер чтобы уверенно работать и не спалить? В описаловке до 40мА. А по факту какой должен быть? Если брать формулу R=U/I то получаем при 5В нужно не менее 125Ом - это максимальный ток 40мА получится, и не более 1кОм вроде?
Вы уважаемый совсем себе мозги заплели. Вы для пина в режиме INPUT пытаетесть использовать данные для OUTPUT, а это совсем разные вещи и режимы.
Ну я все таки по входному пытаюсь определить общие правила подключения )) на вход ведь тоже должно что-то ограничивать ток? или не?
Как скажите ))) Вот накидал:
Учитесь "кидать" красиво, например вот так :
Вы себе голову чем-то не тем забили :)
Ток, который пытаетесь просчитать и на который ориентируетесь в 40 мА,
это максимальный ток нагрузки, который допустим для, грубо говоря, ножки микросхемы.
то есть
DC Current per I/O Pin 40.0mA
но надо помнить, что есть суммарный ток нагрузки для всех выводов не должен превышать 200ма.
Например, если пин сконфигурировать на выход и нагрузить, ну не знаю, тремя параллельно включенными
светодиодами, то, скорее всего, этот выход выйдет из строя.
Короче, не тот ток считаете :)
Нам, ну то есть Вам, нужно получить сигнал с датчиков в виде напряжения логических уровней, понятных микроконтроллеру.
Для atmega328 это (примерно, точно не помню)
для 0 - max 0.3Vсс (Vcc - напряжение питания, то есть напряжение 0 максимум 1.5в при питании контроллера от 5 вольт)
для 1 - все что выше нуля (логического) и до VCC.
Вы измерили:
Померил напряжение, без активного сигнала датчика - +4.7В, когда датчик активен - 0В.
С уровнями нормально получается. То есть когда датчик сработает - на входе мк ноль (логический)
Скорее всего в логике программы ошибка.
вооо! вот это уже ближе к теме! )) Доступным языком пояснили, спасибо большое! Есть еще один вопросик тогда - а если ток ничтожно мал будет к примеру 1.5 мкА(воткнуть например резистор в 3.6кОм), а напряжение 4,5В, то хватит ли этого тока чтобы МК понял сигнал на входе?
Хватить.
Ну все! Разобрался полностью! Ошибка в коде - скобку не там закрыл, за одно и пополнил навыки работы с портами! Всем спасибо!))
По итогу собрал две схемы. На оптронах и на резисторах - и та и другая работают замечательно!))