Arduino pro mini начинает странно работать после электромагнитного импулься

EugeneVB
Offline
Зарегистрирован: 26.04.2019

Всем привет,

Ардуино установлен в корпусе холодильника, к нему подключены две сенсорные кнопки, зуммер и один ШИМ-выход, питается от отдельного БП.

Всё работает нормально но до того момента, как компрессор холодильника отключается, достигнув нужной температуры.

Я изначально грешил на кабель, которым подключен ардуино, он 70см, но после серии тестов выяснилось, что ардуино глючит только когда в момент отключаения компрессора находится внутри корпуса холодильника.

Стоит его туть вытащить, так всё работает нормально.

Логика работы ардуино предельно простая, одна кнопка увеличивает % ШИМ, вторая уменьшает. При зажатии кнопки происходит плавное увеличение/уменьшение до предельного значения.

Так вот когда ардуино начинает глючить, то получается эффект одной зажатой кнопки.

Обрабатываю нажатие кнопок через прерывания:

pinMode(interruptPin1, INPUT_PULLUP);
pinMode(interruptPin2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin1), up, CHANGE);
attachInterrupt(digitalPinToInterrupt(interruptPin2), down, CHANGE);

Кнопки вот такие https://robotdyn.ru/catalog/modules/buttons-control/capacitive_touch_sensor_.html

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Попробуйте убрать PULLUP, на входах прерываний, а притянуть внешним резистором на 1 кОм. Также эти же пины прерываний притяните к земле (или питанию - всё равно) конденсатором , например 100 или 220 nF.

Посмотрите, поможет ли.

Если не поможет, то хотелось бы увидеть осциллограммы момента выключения компрессора с конденсаторами и без.

Samid777
Offline
Зарегистрирован: 24.04.2019

Я бы предпположил, что глючит не ардуино, а глючит именно кнопка.  Для проверки предложил бы в конце цикла поставить метку, которая моргнет светодиодом. Если цикл выполняется, значит с самой ардуино все в норме. 
Между выводами 3 и 4 микросхемы есть кондер. Если увеличить его емкость, то чувствительность кнопки может упасть, но уменьшиться и чуствсительность к наводкам. 

EugeneVB
Offline
Зарегистрирован: 26.04.2019

Samid777 пишет:

Я бы предпположил, что глючит не ардуино, а глючит именно кнопка. Можно ссылку, на модель кнопок? Для проверки предложил бы в конце цикла поставить метку, которая моргнет светодиодом. Если цикл выполняется, значит с самой ардуино все в норме. 

Это кнопки robotdyn, указывал ссылку на них. Врядли это сами кнопки, т.к. на них есть светодиод и они мигают при срабатывании, а когда глюки, то не мигают.
К ардуино ещё зуммер подключен, озвучивает нажатие кнопок. И во время глюков он тоже пищит.

EugeneVB
Offline
Зарегистрирован: 26.04.2019

ЕвгенийП пишет:

Попробуйте убрать PULLUP, на входах прерываний, а притянуть внешним резистором на 1 кОм. Также эти же пины прерываний притяните к земле (или питанию - всё равно) конденсатором , например 100 или 220 nF.

Посмотрите, поможет ли.

Если не поможет, то хотелось бы увидеть осциллограммы момента выключения компрессора с конденсаторами и без.


Да, я специально указал этот код, т.к. грешу на него. Попробую сделать так.

По поводу самого компрессора, может с ним можно что-то сделать, чтоб он меньше помех создавал, т.к. ардуино это только первый пробный шаг, в планах ещё модем sim800 поставить

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

EugeneVB, сделайте опрос кнопок без прерываний -с большой вероятностью проблема уйдёт.

Samid777
Offline
Зарегистрирован: 24.04.2019

Компрессор... во момент размыкания реле происходит импульс самоиндукции, напряжение его очень высокое. Если ты там был постоянный ток, было бы очень просто, а так, фильтр перед копмпрессором, представляющий из себя две катушки индуктивности, примерно как в компьютерных БП. Может поможет конденсатор включенный последовательно с резистором, подключенный ко контактам реле. Но проще защитить ардуино. Как, уже указано, все к земле.