Izy
@Izy
Учу

Как убрать помехи от реле в atmega328p (arduino) во время прерывания?

Я сейчас пытаюсь разобараться в прерываниях в AVR
Есть вот такая схема (заранее скажу я незнаю как на схеме рисовать реле):
5a9d9cc84b364994714844.png
И есть такой код:
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

void setting(void){
	//Настройка всех портов на выход
	DDRC = 0xFF;
	//Устанавливаем везде 0
	PORTC = 0x00;

	//Настройка всех портов на вход
	DDRD = 0x00;
	// Подтягиваем резистор чтобы еденица четко читалась
	PORTD|= 0xFF;

	EIMSK |= (1 << INT0);     // Turns on INT0
	EICRA |= 0b00000011; // set INT0 to trigger on ANY logic change
    

}

ISR (INT0_vect){
		_delay_ms(100);
    	PORTC = (1<<PIN0);
		_delay_ms(10000);
		PORTC &=~(1<<PIN0);
		_delay_ms(2000);
		
}


int main(){
	setting();
    while(1) {
    		cli();
	    	_delay_ms(1000);
	    	sei();
	    	_delay_ms(1000);
		}
    return 0;
}


И вот с 1 диодом все работает. (тоесть я зажимаю кнопку нечего не происходит так как я сделал реагировние на возврастающий фронт, я отжимаю через какое то время все срабатывает). Если же подключить реле с нагрузкой, то прерывание происходит постоянно .Если же нагрузку убрать , то иногда нормально срабатывает иногда так же зависает цикла на три или больше. Я так понял это помехи похожие на помехи от дребизжания кнопки но от реле и нагрузки. И у меня вопрос в следующем. Как мне обойти эту пакасть. Или у меня проблема в коде.
Заранее Блогодарен.

P.S. И как в тостер добавить тег языка си? У меня не как не получается.
  • Вопрос задан
  • 1893 просмотра
Решения вопроса 3
kotomyava
@kotomyava
Системный администратор
У вас обмотка реле висит прямо на ногах контроллера? Это не правильно, конечно.
Даже очень маленькое реле имеет довольно не маленький ток срабатывания и удержания. Куда больше, чем может отдать контроллер. А также большую индукцию, которая при снятии напряжения даёт выброс.

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

Схемы можно погуглить по запросу "подключение реле к микроконтроллеру".
Ответ написан
@vanyamba-electronics
Попробуйте вот так подключить:
5a9dc5f327d54080323805.png
Ответ написан
demon416nds
@demon416nds
Разработчик на чем попало
реле через ключ подключите
мега банально не рассчитана на такую нагрузку
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы