Сбой в работе Arduino Nano с датчиком BMP280 и дисплеем 16х2
- Войдите на сайт для отправки комментариев
Втр, 31/03/2020 - 19:09
Устройство на Arduino Nano питается от сдвоенной розетки через импульсный блок питания 5В 1А. Во вторую включается нагрузка иногда. При этом Ардуино начинает глючить: выдает всякие непонятные символы на экран. Лечится нажатием кнопки перезагрузки. Но вот вопрос, как защититься от радиопомехи, чтобы устройство не глючило?
Насколько я понимаю, свободные входы Nano и МК соответственно выполняют роль антенны. Или это тактовый генератор дает сбой при помехе. Вообщем, прошу вашего совета, как защититься от помехи, которая заставляет глючить микроконтроллер.
Это мой первый в жизни проект Ардуино. Поэтому прошу не смеяться, если вопрос глупый.
Устройство на Arduino Nano питается от сдвоенной розетки через импульсный блок питания 5В 1А. Во вторую включается нагрузка иногда. При этом Ардуино начинает глючить: выдает всякие непонятные символы на экран. Лечится нажатием кнопки перезагрузки. Но вот вопрос, как защититься от радиопомехи, чтобы устройство не глючило?
Насколько я понимаю, свободные входы Nano и МК соответственно выполняют роль антенны. Или это тактовый генератор дает сбой при помехе. Вообщем, прошу вашего совета, как защититься от помехи, которая заставляет глючить микроконтроллер.
Это мой первый в жизни проект Ардуино. Поэтому прошу не смеяться, если вопрос глупый.
Ещё, возможно, не хватает запаса по току у питателя.
Все висящие соплями провода сократить и собрать в шлейфы.
Тогда почему устройство глючит только от индуктивной нагрузки, в частности при включении трансформатора в сеть? От паяльника или фена программа не сбивается и глюков нет.
Устройство на Arduino Nano питается от сдвоенной розетки через импульсный блок питания 5В 1А. Во вторую включается нагрузка иногда. При этом Ардуино начинает глючить: выдает всякие непонятные символы на экран. Лечится нажатием кнопки перезагрузки. Но вот вопрос, как защититься от радиопомехи, чтобы устройство не глючило?
Насколько я понимаю, свободные входы Nano и МК соответственно выполняют роль антенны. Или это тактовый генератор дает сбой при помехе. Вообщем, прошу вашего совета, как защититься от помехи, которая заставляет глючить микроконтроллер.
Это мой первый в жизни проект Ардуино. Поэтому прошу не смеяться, если вопрос глупый.
А чего за нагрузка? Индуктивная? - тогда добавьте конденсатор к нагрузке. 0,47мкф например
Тогда почему устройство глючит только от индуктивной нагрузки, в частности при включении трансформатора в сеть? От паяльника или фена программа не сбивается и глюков нет.
пробить не слишком быструю 5-вольтовую логику по эфиру, конечно, можно, но вероятность меньше.
Ещё был такой совет: дай что-то определенное на неиспользуемые входы. Хуже не будет.
.... питается от сдвоенной розетки через импульсный блок питания 5В 1А. Во вторую включается нагрузка иногда. При этом Ардуино начинает глючить...
.....
Я может пропустил, или почистил кто, но так и не понял -что за нагрузка такая включается, что дуина глючить начинает? Это к вопросу о помехах.
А о том, что "Лечится нажатием кнопки перезагрузки" ум мой заключает, что не в помехах проблема, а в питании скорее всего. Но если БП импульсный, то может быть и то и другое. Что за нагрузка то такая секретная, что включается иногда?
Обычный будильник с радио, у которого трансформаторное питание. Я его иногда выключаю, там внутри батарейка для памяти времени. И включаю паяльник например. А стоит только включить этот радио-часы-будильник в розетку обратно, так сразу глючит конструкция на Ардуино.
То есть можно разобрать будильник и параллельно входу трансформатора 220В подключить конденсатор?
Какая-то квантовая запутанность налицо.
В каждый девайс по конденсатору? Проще на питание +5 вольт ардуины повесить электролит на 100 и более мкф и параллельно керамику на 0.1 мкф как можно ближе к процессору.
Обычный будильник с радио, у которого трансформаторное питание. Я его иногда выключаю, там внутри батарейка для памяти времени. И включаю паяльник например. А стоит только включить этот радио-часы-будильник в розетку обратно, так сразу глючит конструкция на Ардуино.
Значит купи себе удлинитель на большее количество розеток, ну шоп нивыключать будильнег, или раскури шо це есть вачдог. И фсё.
То есть можно разобрать будильник и параллельно входу трансформатора 220В подключить конденсатор?
Да никто не запрещает, можно. Только решит ли это проблему? В хороших ИБП стоят фильтры что по входу 230В (входное питание, чтобы в сеть помеха не лезла), что по выходу нужных напряжений - чтобы помехи в саму рабочую схему не вводить.
Есть с советских времен хорошие схемы блоков питания - на трансформаторах 50Гц. Там если и бывает помеха, то по НЧ и частотой 50-100Гц. И лечится как раз банальным фильтром из конденсатора.
Дело не в питании. Сейчас запитался от USB и рядом потыркал в розетку этот будильник. Точно такой же глюк. Только я не могу понять, это микроконтроллер глючит или дисплей?
У меня похожая ситуация была с зарядкой на PIC16F877A, когда я MCLR не подключил к плюсу через резистор. МК просто сбрасывался периодически без всяких причин. От какого-то импульса в радиочастотном спектре.
А сейчас похожая история с Ардуино. Еще что заметил, если отверткой несколько раз коснуться среднего контакта потенциометра регулировки контрастности, то тоже иногда начинает глючить и выдает на дисплей непонятные символы.
Как хоть определить-то, это МК глючит или дисплей?
Все свободные аналоговые контакты подключил на минус через резисторы 10 кОм. Результата никакого. Глючит также от включения будильника в сеть.
Конденсатор на 470 мкф припаять прямо на плату на точки +5 и gnd пробывали? 1 мкф на ресет добавили?
Вообщем, я пришел к выводу, что ни дисплей, ни Ардуино не виноваты в низкочастотных электромагнитных помехах и в глюках от этих помех. А все дело в библиотеке к дисплею. Потому что на Пик-контроллерах у меня такого глюка ЖКИ дисплея никогда не было. Очевидно, во Флоукод библиотека написана более грамотно.
Что я сделал? Посмотрев несколько видео на ютубе и почитав форумы, пришел к выводу, что HD44780 и любая Arduino совместно глючат от искр размыкания индуктивной нагрузки по соседству. И эта проблема обсуждается не первый год и ни на одном форуме.
Единственный выход ввести строчку инициализации дисплея в начало исполняемой программы, а не только в конфигурацию сетапа скетча.
Я решил это повторением строки:
lcd.begin(16, 2);
каждые 5 секунд. Потому что команда lcd.clean() не работает.
Теперь любые глюки на дисплее появляются как и прежде от замыкания/размыкания индуктивной нагрузки, но они каждые 5 секунд очищаются и дисплей показывает нужную информацию.
Ресет не трогал вообще. Он же атмегу перезапускает, а у меня с дисплеем проблемы, судя по всему.
Любые глюки на дисплее возникают когда на линии E есть наводка. Других причин нет. Достаточно обычно нагрузить провод Е сопротивлением 1к , что бы все глюки исчезли. Помогает так же емкость в сотню пик. Программа не при чём.