Здравствуйте, Кейс: Arduino Mega в составе проекта управляет несколькими LED и RGB лентами через N-канальный мосфет и PWM. Так же эта же ардуино посредством прерываний INT0, INT1 выполняет и другие функции (обработка нажатия кнопок, и прочее). Питание организовано так: от 1 блока питания +5В питается ардуино (через джек) и печатная плата. Для лент отдельные блоки питания по 12В. Земли источников питания соединены. Блоки питания 12В от лент располагаются на разных расстояниях от 0.5м до 15м. Проблема: Когда включаю блоки питания лент (12В) и открываю мосфет - ток начинает идти на ленты, то на всех interrupt пинах (2,3 к примеру) наблюдаю помеху. Происходит постоянное бесконечное срабатывание - что рушит выполнение всей программы. Прерывания настроены как: Код (C++): attachInterrupt(digitalPinToInterrupt(3), foo, RISING); Как только выключаешь блоки питания лент - помеха пропадает. Как исправить/повлиять на эти помехи? Что пробовал: 1. Устанавливать пины прерываний, как: Код (C++): pinMode(3, INPUT_PULLUP) 2. Физически подпаивал pulldown 10k к пину 3. На вход питания на плате между +5В и GND керамический конденсатор на 0.1мкф и 1 мкф Прошу помощи, начинающий. Схему соединения прилагаю к сообщению.
судя по схеме, у вас затвор мосфета подтянут резистором R123 к питанию. При этом мосфет у вас будет всегда включен.Зачем так? Затвор N-мосфета принято притягивать к GND.
Спасибо, за замечание - да к земле логичнее, но без них мосфет не открывался. Проблему с помехами решил доп. конденсаторами на всех блоках питания, и перераспределением проводов. Как вывод: огромное внимание нужно уделять правильной проектировке печатной платы, для борьбы с шумами и наводками
Я давно зарекся на реальных устройствах всегда делать антипомеху или программную или аппаратную. Одинарные сигналы только на тестах в макетках, чтобы быстрее. В настоящих же условиях обязательно что-то будет шуметь.