Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить

Замер времени работы электродвигателя. STM32, таймер...

Вт апр 25, 2023 17:00:51

День добрый друзья. Может следовало бы написать в раздел ARM, но проблема прикладная, уже в железе и не особо работает так, как задумывается. И видится мне, что проблема не софтовая, но давайте по порядку.

Имеется электродвигатель на 220В (однофазный асинхрон, через конденсатор), управляемый внешней электроникой (реле), которая тут не играет роли. Питание убирается отключением сразу двух питающих проводов.

Имеется мой самопальный прибор, сердцем которого является STM32F103F6T6A.
К питанию самого электромотора подключена схема "детекции наличия питания" - 200к резистор - диодный мост - стабилитрон 5,6В - конденсатор 100мФ/50В резистор 100 Ом - оптопара PC817 -> и идём на ногу МК с таймером по захвату (Таймер_2). Подтяжка "вверх" (внутренняя) на ногу есть!

Внутри МК настроен и тикает ежесекундный таймер (Таймер_1). В Колбэке увеличивает значение переменной "counter_sec" (volatile).

Суть поближе: появляется питание на моторе - "детектор питания" оптопарой прижимает ногу МК на землю - включается таймер по захвату, где в колбэке я обнуляю counter_sec и выходим.
Ждём отключения мотора. Запускается колбэк по высокому фронту (подтяжка ноги) - смотрим на значение counter_sec и если оно меньше 5 (допустим мотор работал всего лишь 3 сек), то кидаем некий "флаг" и уже что-то делается в основном цикле.

Всё собрано в железе, на качественной ПП и протестировано на столе: вместо мотора - просто подаю питание на "детектор" через кнопку. Всё работает.

Но когда ставлю на мотор - происходят чудеса, закономерность которых мне не удаётся отследить: мотор работает около 14 сек (что уже за пределами 5сек) и при выключении, МК кидает флаг, что якобы он работал меньше 5 сек! Но не всегда...

То есть, происходит ложное срабатывание "захвата" с обнуление "счётчика".

Из мыслей только дребезг контактов реле, что включает электромотор...

Как софтово (лучше) или железом (хуже) побороть? Делать задержку в колбэке захвата - моветон ... Ставить триггер Шмидта - ПП не позволяет, максимум могу конденсатор впаять для "сглаживания"....

Re: Замер времени работы электродвигателя. STM32, таймер...

Вт апр 25, 2023 18:15:39

DataLife, ---PC817 -> и идём на ногу МК---
Керамический конденсатор 0,1-1 мкФ с ноги МК на общий провод (цифровой, питания непосредственно).
Защитит от помехи при Отключении Индуктивности двигателя, которая
проникает через паразитные ёмкости и индуктивные связи монтажа. :dont_know:
На контактах реле нужны искрогасящие RC цепочки.

Re: Замер времени работы электродвигателя. STM32, таймер...

Вт апр 25, 2023 22:40:36

Большое спасибо за ответ .

Почитал за гашение искр на реле при индуктивной нагрузке.
Спасёт ли отца русской демократии такой вариант решения?
Изображение
Чёрным - как есть сейчас. Красным - что предлагаю/могу сделать.

Или в таком случае работать RC цепочка не будет?

Re: Замер времени работы электродвигателя. STM32, таймер...

Ср апр 26, 2023 06:01:41

R4 не туда подключен.

Re: Замер времени работы электродвигателя. STM32, таймер...

Ср апр 26, 2023 09:53:17

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

Кстати, добавил внешнюю подтяжку на ногу МК и конденсатор 0.33мкФ. Пока сбоев не было...

Re: Замер времени работы электродвигателя. STM32, таймер...

Вс июн 11, 2023 22:03:15

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

Схема выше в сообщении - детектор наличия питания 220 В:
R1-R2 = 100k
D1 = 5.6v
R3 = 100
С1 - 100 uF/50v
C2 = 0.33 uF
+ подтяжка сигнального провода к плюсу питания (3,3в) резистором 10к и + внутренняя.

Сам МК и прочая схема питается от такого БП (5v/700 мА) + 1117-3.3V:
Изображение

Сейчас прибор демонтирован от электромотора, опыты провожу на столе. Подача питания на "детектор" - кнопкой.
Суть нового глюка: при ВКЛЮЧЕНИИ питания "детектора" кнопкой (иногда, но не всегда) - проседает напряжение +5 Вольт на блоке питания! Влечёт это и проседание питания 3,3 Вольт (это вылечил более ёмким конденсатором после 1117-3,3). Особенно страдает модуль Блютуза (HC-06), который питается от +5. Он рвёт соединение.
Напряжение сети на входе БП не меняется при любых действиях. Пробовал ставить меньшую ёмкость в детекторе - С1 поставил на 22 мФ. Не помогло.
Пробовал отключать внутреннюю подтяжку в МК от детектора - не помогло.

Изображение
Кусок платы, с детектором и БП. Чего не было на плате, а сейчас на соплях - дорисовал.

Подскажите, пожалуйста, где я накосячил? ... Почему так ведёт себя устройство?

UPD1: замерил ток на входе питания самого устройства (220 Вольт) токовыми клещами. В момент включения "детектора" проскакивают броски тока до 1,8 А !!! И именно в такие моменты происходит сбой... Я так понимаю, это из-за зарядки конденсатора С1 "детектора", но можно ли его уменьшать ещё?

UPD2: сделал замер тока именно через кнопку "детектора" - ток там скромнее, но проскакивал 0,3 А (при 220 В). Связь на блютузе рвётся уже при скачке в 0,026А.

Re: Замер времени работы электродвигателя. STM32, таймер...

Пн июн 12, 2023 20:04:38

DataLife, ---проскакивают броски тока до 1,8 А---
Через искрогасящую цепочку (отключить)? Питающие провода тонкие (длинные, плохой контакт)- просадка?
Конденсатор электролит входной с большим ESR в БП ? :dont_know:

Re: Замер времени работы электродвигателя. STM32, таймер...

Пн июн 12, 2023 23:05:09

Динозавр, входящий конденсатор имеет характеристики:
4,7 мкФ / 400v
ESR 7.9 Ом
Vloss 0.7%

Искрогасящих цепей нет. Провода 1,5 кв, длина на кнопку всего 10 см, общее питание 1,5 м.
Ответить