Перейти к содержанию
    

STM32 нужна помощь с кнопками

5 часов назад, MaximDV сказал:

Понял, принял, видимо не в ту ветку написал о помощи новичку.   

Слушать аудиосказку Вовка в тридевятом царстве (1965 г.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 17.03.2023 в 03:31, MaximDV сказал:

Понял, принял, видимо не в ту ветку написал о помощи новичку.   

В обсуждении уже есть все необходимое и все достаточное, чтобы реализовать алгоритм работы с "аналоговой" клавиатурой исходя из замера АЦП.

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

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

т.е. при проявлении нужной кнопочной комбинации идет накопление софт-счетчика (например с интервалом 5 мс). В случае "пропадания" этой комбинации счетчик сразу сбрасывается в 0. Если комбинация не сброшена в течение, скажем, 30-40 мс, можно выдавать сигнал/активизация "кнопка xx нажата".

Думаю, выкладывать готовый код такого алгоритма, из уважения к Вам, нет смысла :umnik2: 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 часов назад, k155la3 сказал:

уже есть все необходимое и все достаточное

Кроме конденсатора параллельно контактам, который их быстро заварит, т.е. не просто лишние деньги.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, Variant99 said:

Так не ставьте кондеры по 47 мкФ, чтобы не было больших токов разрядки.

Простите, что вмешиваюсь, но разве ток разряда конденсатора определяется только его ёмкостью?

I = C * dU / dt.

Другими словами, если dU/dt устремиться к бесконечности, то и конденсатор малой ёмкости может выдать довольно большой ток. А такое может быть при относительно низком сопротивлении контактов кнопки и проводников к ней.

 

Где-то на форуме уважаемый @=AK= в своё время приводил расчёты как раз применительно к тому, как долго будут служить контакты кнопки, которые замыкают конденсатор.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Токи ограничивают сопротивлениями, для таких случаев обычно 100 Ом, но повторю, конденсатор лишний, потому что в данном случае сопротивление источника 1 кОм и меньше, тем более, время выборки АЦП у STM32 регулируется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 часов назад, Plain сказал:

Кроме конденсатора параллельно контактам, который их быстро заварит

Контакты кнопок могут быть окислены или загрязнены, что в автомобиле не редкость. Без конденсатора ток коммутации нужно увеличивать примерно до 10 мА, для надежного срабатывания, что в данной схеме невозможно. С другой стороны, слишком большая емкость конденсатора будет приводить к износу и подгоранию контактов, и к возможному их залипанию. Емкость в 1 нф - разумный компромисc.

Кроме этого, емкость на входе АЦП в значительной мере убирает шумы и наводки, которых в данных условиях будет предостаточно. Дополнительно, очень желательно добавить программную фильтрацию - периодическое накопление и усреднение значений. Все это, еще в сочетании с описанным алгоритмом распознавания кнопок, даст вполне приемлемый результат и достаточную надежность работы.

P.S. К сожалению, в данной схеме, конденсатор работает только на одну из кнопок. Если есть возможность (доступ), то нужно припаять и на две оставшиеся кнопки по конденсатору 1 нф.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 hours ago, k155la3 said:

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

Вот ! Мудрый совет. Запишите значения с АЦП при нажатии/отпускании кнопок (одну, две, три и разные возможные комбинации) и через матлаб отточите алгоритм. Потом сгенерируйте С код и используйте в своём устройстве.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, quark сказал:

10 мА, для надежного срабатывания

Кто/где такое требует?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При показании АЦП 0 отправка сообщения CAN, при 1385  - другое сообщение и 2668 - аналогично. Выше выкладывал main.c .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 минут назад, Plain сказал:

Кто/где такое требует?

Это примерное значение. Из опыта применения кнопок и концевиков в автомобильной технике. Это обсуждалось много раз на Форуме... Давно...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

27 минут назад, MaximDV сказал:

При показании АЦП 0 отправка сообщения CAN, при 1385  - другое сообщение и 2668 - аналогично.

И в чем проблема? Заменить одни значения на другие?

При показании АЦП 0 отправка сообщения CAN, при 1024  - другое сообщение и 2048 - аналогично.

Вам все "разжевали и в рот положили". Осталось только "проглотить".

Извините.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, quark сказал:

И в чем проблема? Заменить одни значения на другие?

При показании АЦП 0 отправка сообщения CAN, при 1024  - другое сообщение и 2048 - аналогично.

Вам все "разжевали и в рот положили". Осталось только "проглотить".

Извините.

Все просто, я новичок в программировании и не понимаю как это сделать. Кучу видео и статей посмотрел, ни один пример не помог. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 минут назад, MaximDV сказал:

Все просто, я новичок в программировании и не понимаю как это сделать. Кучу видео и статей посмотрел, ни один пример не помог. 

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

Вы правильно предположили - не в тот раздел Форума обратились.

Вам лучше сюда: https://electronix.ru/forum/index.php?app=forums&module=forums&controller=forums&id=227

Или сюда: https://electronix.ru/forum/index.php?app=forums&module=forums&controller=forums&id=24

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...