Самопроизвольное срабатывание схемы на МК

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
iavn325
Родился
Сообщения: 4
Зарегистрирован: Чт янв 12, 2017 11:06:01

Самопроизвольное срабатывание схемы на МК

Сообщение iavn325 »

Здравствуйте. Я собрал вот такое простенькое устройство на attiny2313:
Изображение
Питается вся схема от usb-зарядки т.е. примерно 5В. Еще на схеме не нарисовано, но между землей и питанием стоит 2 конденсатора на 100мФ и 0,1мФ и стабилитрон на 5,6в. И еще ножка reset МК подключена к питанию через резистор 1кОм.
Прошивка в МК простейшая, буквально несколько строк: МК в бесконечном цикле ждет нажатия первой кнопки, после этого на определенное время (зависящее от положения остальных трех кнопок) подает питание на транзистор т.е. замыкает реле, затем ждет отпускания первой кнопки и все сначала.

Проблема вот какая: схема периодически срабатывает самопроизвольно как будто бы была нажата первая кнопка, т.е. реле замыкается на нужное время без нажатия этой самой первой кнопки :(
Рядом с этой схемой стоят другие (электрически никак не связанные с этой), с реле и на переменном токе, и у меня возникло предположение, что, может быть, там какие-нибудь наводки или помехи появляются в проводах, идущих от МК к кнопкам? Но в соседних устройствах токи текут всего несколько ампер, особых наводок или помех вроде быть недолжно, темболее подтяжки у кнопок итак небольшие - 1кОм. Попробовал емкость, параллельную кнопке увеличить на несколько мФ - толку нет. Пробовал БП поменять - тоже не помогло.

В чем может быть дело?
Реклама
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Самопроизвольное срабатывание схемы на МК

Сообщение Zhuk72 »

iavn325 писал(а):В чем может быть дело?
Например в коде.

Еще можете попробовать базу к земле притянуть.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Реклама
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Самопроизвольное срабатывание схемы на МК

Сообщение Z_h_e »

Zhuk72 писал(а):Еще можете попробовать базу к земле притянуть.
Не даст это ничего.

В симуляции есть ложные срабатывания? Тогда сразу бы выявилась проблема в коде.

На какой-нибудь порт повесьте светодиод. Который будет включаться при старте мк на некоторое время. Начнет мигать, значит МК перезапускается.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Самопроизвольное срабатывание схемы на МК

Сообщение pyzhman »

Код сюда.
Docendo discimus
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Самопроизвольное срабатывание схемы на МК

Сообщение BOB51 »

ИСКЛЮЧИТЕЛЬНО ВЫБРАННЫЙ АЛГОРИТМ ПРОГРАММЫ.
8)
Как оччень слабая варианта - монтаж "клубком паутины" - но... нормальна прожка и в таком случае вытянет ситуацию.
:roll:
Реклама
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Самопроизвольное срабатывание схемы на МК

Сообщение Z_h_e »

BOB51 писал(а):но... нормальна прожка и в таком случае вытянет ситуацию.
Я не соглашусь с Вами. Клубок проводов или длинная линия, может дать очень сильную наводку, особенно находясь возле силового оборудования или искрящего (пускатели например). Эта наводка уйдет через защитные диоды портов в питание МК, что может привезти к чему угодно.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Самопроизвольное срабатывание схемы на МК

Сообщение Zhuk72 »

Сейчас появится автор, скажет "извините, я все напутал, все работает нормально" 8)
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Самопроизвольное срабатывание схемы на МК

Сообщение Z_h_e »

Или не появится совсем.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
iavn325
Родился
Сообщения: 4
Зарегистрирован: Чт янв 12, 2017 11:06:01

Re: Самопроизвольное срабатывание схемы на МК

Сообщение iavn325 »

в симуляции ложных срабатываний нет,
код вот:
Спойлерprocedure portinit;
begin
DDRD:=%01000010;
PORTD:=%00111100;
end;

procedure ExtIntInit;
begin
MCUCR:=%00000010;
GIMSK:=%01000000;
end;

procedure start; iv IVT_ADDR_INT0; //прерывание по нажатию первой кнопки
begin
if (PIND3_bit=0) or (PIND4_bit=0) or (PIND5_bit=0) then //если какойто тумблер замкнут т.е. если время выставлено
begin
PORTD1_bit:=1;
if (PIND3_bit=0) then Delay_ms(50);
if (PIND4_bit=0) then Delay_ms(100);
if (PIND5_bit=0) then Delay_ms(150);
PORTD1_bit:=0;
end;
while PIND2_bit=0 do begin end; //ждем отпускания кнопки старта прерывания
Delay_ms(80); //пауза для устранения дребезга контактов кнопки
EIFR.6:=1;
end;

begin
{ Main program }
Delay_ms(20);
portinit;
ExtIntInit;
Delay_ms(65);
EIFR.6:=1;
SREG_I_bit:=1;
while true do begin end;
end.
Врятли МК перезагружается - ложные срабатывания происходят как будто бы нажалась первая кнопка, а после перезагрузки этого быть не должно.

Попробую седне поставить резистор последовательно с конденсатором параллельно контактам реле - нашел щас в гугле что комуто от глюков МК это помогло
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18632
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Самопроизвольное срабатывание схемы на МК

Сообщение ARV »

можете снова закидать меня тапками, но я снова повторю то же самое, что и 100500 раз говорил: практически всегда при работе с кнопками ПРЕРЫВАНИЯ НЕ НУЖНЫ. вангую, что проблема именно в этом: в обработчике прерывания кнопки не предпринято никаких мер по определению длительности "нажатия" главной кнопки - даже если там появится какая-то помеха в виде нолика длительностью 1 мкс, прерывание отработает.

если бы обработка кнопки делалась методом опроса, никаких проблем бы не было - короткие "нажатия" просто игнорировались бы. сделать такой фильтр можно и в обработчике прерываний, но, имхо, это называется "создать себе проблему и героически ее преодолеть".
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
iavn325
Родился
Сообщения: 4
Зарегистрирован: Чт янв 12, 2017 11:06:01

Re: Самопроизвольное срабатывание схемы на МК

Сообщение iavn325 »

ARV писал(а):можете снова закидать меня тапками, но я снова повторю то же самое, что и 100500 раз говорил: практически всегда при работе с кнопками ПРЕРЫВАНИЯ НЕ НУЖНЫ. вангую, что проблема именно в этом: в обработчике прерывания кнопки не предпринято никаких мер по определению длительности "нажатия" главной кнопки - даже если там появится какая-то помеха в виде нолика длительностью 1 мкс, прерывание отработает.

если бы обработка кнопки делалась методом опроса, никаких проблем бы не было - короткие "нажатия" просто игнорировались бы. сделать такой фильтр можно и в обработчике прерываний, но, имхо, это называется "создать себе проблему и героически ее преодолеть".
если не ошибаюсь изменить нужно программу примерно так:
Спойлер

Код: Выделить всё

procedure portinit;
begin
 DDRD:=%01000010; 
 PORTD:=%00111100;
end;

procedure relay;
begin
 if (PIND3_bit=0) or (PIND4_bit=0) or (PIND5_bit=0) then //если какойто тумблер замкнут т.е. если время выставлено
 begin
 PORTD1_bit:=1; 
 if (PIND3_bit=0) then Delay_ms(50);
 if (PIND4_bit=0) then Delay_ms(100);
 if (PIND5_bit=0) then Delay_ms(150);
 PORTD1_bit:=0; 
 end;
 while PIND2_bit=0 do begin end; //ждем отпускания кнопки старта
 Delay_ms(80); //пауза для устранения дребезга контактов кнопки
end;


begin
{ Main program }
 Delay_ms(20);
 portinit; 
 Delay_ms(65);

 while true do 
  begin
    if PIND2_bit=0 then //если кнопка нажата
    begin 
    delay_ms(сколькото для игнорирования коротких "нажатий"/помех);
    if PIND2_bit=0 then relay; //если все еще нажата то делать что надо
    end;  
 end;
end.
какое примерно время можно выбрать для этого игнорирования? желательно как можно меньше т.к. реагировать на нажатие нужно быстро
Последний раз редактировалось aen Пт янв 13, 2017 12:37:34, всего редактировалось 1 раз.
Причина: Нарушение Правил форума п. 2.7
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18632
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Самопроизвольное срабатывание схемы на МК

Сообщение ARV »

iavn325 писал(а):реагировать на нажатие нужно быстро
говорят, Брюс Ли мог наносить рукой 3 удара в секунду... т.е. скорость его мышечной деятельности была порядка 150 мс... (удар = движение туда-сюда). как бы это фантастический результат. вам надо быстрее реагировать?

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

Мой уютный бложик... заходите!
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Самопроизвольное срабатывание схемы на МК

Сообщение pyzhman »

Прошивайте и пробуйте.
Docendo discimus
iavn325
Родился
Сообщения: 4
Зарегистрирован: Чт янв 12, 2017 11:06:01

Re: Самопроизвольное срабатывание схемы на МК

Сообщение iavn325 »

ARV писал(а):
iavn325 писал(а):реагировать на нажатие нужно быстро
говорят, Брюс Ли мог наносить рукой 3 удара в секунду... т.е. скорость его мышечной деятельности была порядка 150 мс... (удар = движение туда-сюда). как бы это фантастический результат. вам надо быстрее реагировать?

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

Добавлено after 4 hours 27 minutes 59 seconds:
Вобщем проверка зажатости кнопки в 2мс отсеила эти помехи (или что там это было) и все стало как надо, ложных срабатываний больше нет. Всем спасибо! :))
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6312
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Самопроизвольное срабатывание схемы на МК

Сообщение Jack_A »

iavn325 писал(а):помехи появляются в проводах, идущих от МК к кнопкам? Но в соседних устройствах токи текут всего несколько ампер
Конечно - пустяк. Вот если бы килоАмперы ! :shock: :)
Изображение
watchmaker
Поставщик валерьянки для Кота
Сообщения: 2183
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков
Контактная информация:

Re: Самопроизвольное срабатывание схемы на МК

Сообщение watchmaker »

практически всегда при работе с кнопками ПРЕРЫВАНИЯ НЕ НУЖНЫ. вангую, что проблема именно в этом: в обработчике прерывания кнопки не предпринято никаких мер по определению длительности "нажатия" главной кнопки - даже если там появится какая-то помеха в виде нолика длительностью 1 мкс, прерывание отработает.
Согласен. Единственный случай, когда это неверно - если нужно обеспечить мгновенную реакцию на кнопки при сверхнизком потреблении.
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Ответить

Вернуться в «Разные вопросы по МК»