Самодельный локомотивный декодер.

Первое новое сообщение

Аватара пользователя 381.tnt23 » Вс апр 05, 2020 7:42 am

Привет от новичка! Нагуглил эту тему и побежал регистрироваться :)

Тоже делаю свой декодер, и вот дошло дело до Back EMF. Есть какие-нибудь практические советы, как это лучше реализовать и аппаратно, и алгоритмически? Интернеты почитал, осилил даже недетский топик по BEMF на Modelldepo :) Реализовывать классический PID-регулятор пока боюсь, может, можно меньшей кровью обойтись.
Цитата

Аватара пользователя 382.Engineer_Keen » Вс апр 05, 2020 1:21 pm

Аппаратно. От входа ацп 1) 2 резистора по 10к к выходам н-моста (клеммы двигателя) 2) резистор 2к на землю, и конденсатор 0.1мкф на землю 3) защитный диод шоттки на +питания мк. Опорное напряжение от внутреннего источника (1.1в у меги88).

Программно. ШИМ прерывается на некоторые промежутки времени, далее, нужно смотреть осциллографом, когда на входе ацп заканчивается выброс от коммутации моста и начинается чистая обратная эдс, после этого делается один или несколько семплов, из которых берется среднее. Составляется таблица эдс (для простоты - линейная), из которой берется опорное значения для сравнения и от разницы таблицы и считанного делаем регулировку. Я сделал сначала только P, вполне нормально, потом добавил I, сильной разницы не было, но при некоторых настройках без этого звена все затухало. Потом добавил D, но результат не понравился, а может я не правильно чтото посчитал, на ассемблере не очень удобно было. Так что я остановился на PI регуляторе, хотя I там не совсем такое как в формулах. Точные формулы не скажу, это было пол года назад, и все на рабочем компе. Как результат - старый пиковский двигатель стабильно вращается с частотой в единицы оборотов в секунду, не зависимо от нагрузки, но для этого нужно долго опытным путем подбирать частоту шим, размер окна для снятия эдс, частоту ацп и параметры регулятора.
Цитата

Аватара пользователя 383.tnt23 » Вс апр 05, 2020 4:07 pm

Василий, спасибо.

Декодер у меня на stm32f030, входная часть почти такая же - взял с декодера MERG, только без защитного диода. От мотора резисторы по 10К, на землю сейчас стоит 56К, подобранный опытным путем.

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

Чтобы не засорять эту тему, можно сделать отдельную.
Цитата

Аватара пользователя 384.tnt23 » Ср апр 08, 2020 11:46 am

Разбираюсь с пропорциональной частью для начала. Выставил в прошивке фиксированную установку, соответствующую 10 шагам скорости, и корректирую ее дробной частью ошибки. Пока что пытаюсь обойтись дробями степеней двойки, получается так себе.

В качестве моста использую чип A4953 от Allegro. Я его ставил в самодельный шилд DCC++, работает отлично, решил поставить в декодер. Как дело дошло до BEMF, выяснилась неприятная особенность моста - время перехода в Z состояние у него около 1мс, поэтому процедура замера не может производиться слишком часто. Сейчас замер выполняется каждые 20мс.

bemf speed 10 with commutation.png
bemf speed 10 with commutation.png (7.23 КБ) 1727 просмотров


После остановки PWM приходится ждать 1мс и потом еще немного для надежности. Желтый прямоугольник - 16 выборок АЦП, каждая прогоняется через простой цифровой фильтр. После фильтра данные суммируются, и сумма используется как входная величина для регулятора.
Цитата

Аватара пользователя 385.tnt23 » Пт апр 10, 2020 10:03 am

Аппаратно. От входа ацп 1) 2 резистора по 10к к выходам н-моста (клеммы двигателя) 2) резистор 2к на землю, и конденсатор 0.1мкф на землю 3) защитный диод шоттки на +питания мк. Опорное напряжение от внутреннего источника (1.1в у меги88).
Интересно, я прикинул - для 14в входного напряжения на моторе после делителя 10K/2K на входе АЦП будет около 2.3в, с запасом. А что будет на самых малых оборотах? или тут помогает интегрирование на внешнем конденсаторе?

В моем случае с делителем 10K/56K вход сильно перегружается при полном входном сигнале, но АЦП на тихом ходу мотора практически ничего не видит - только если поставить 5К вместо 10К. Вряд ли чувствительность АЦП stm32 сильно хуже меги. Ну или такой мотор подвернулся, BR80 от Mechano.
Цитата

Аватара пользователя 387.старина_U » Пт апр 10, 2020 2:14 pm

Интересно, я прикинул - для 14в входного напряжения на моторе после делителя 10K/2K на входе АЦП будет около 2.3в, с запасом. А что будет на самых малых оборотах? или тут помогает интегрирование на внешнем конденсаторе?

В моем случае с делителем 10K/56K вход сильно перегружается при полном входном сигнале, но АЦП на тихом ходу мотора практически ничего не видит ...
Во...
Вот поэтому я в своё время и предложил перешить всё с простого ШИМа и коллекторного движка на бесщёточный с постоянными магнитами (BLDC).
Всё-таки контроль скорости по пульсациям противо-ЭДС требует некого постоянного уровня напряжения на зажимах мотора.
А на малых скоростях... :? ...не фунциклит.
Или применять датчики Холла/оптопары с кодовым диском...
И вжо этот бэк_ЭМФ.
Цитата
Изображение

Аватара пользователя 388.tnt23 » Пт апр 10, 2020 2:52 pm

Дельная статья, спасибо. Созерцание либы BackEmfMotor принесло осознание, что замер BEMF и коррекция необязательно должны происходить одновременно.
Цитата

Аватара пользователя 389.tnt23 » Пт апр 10, 2020 3:09 pm

Вот поэтому я в своё время и предложил перешить всё с простого ШИМа и коллекторного движка на бесщёточный с постоянными магнитами (BLDC).
Всё-таки контроль скорости по пульсациям противо-ЭДС требует некого постоянного уровня напряжения на зажимах мотора.
Это как-то вовсе уж радикально. А что делать со старыми коллекторными моторчиками, если переделать не хватает пороху?
Я бы еще понял вариант при возможности добавить шестерней в редуктор, но и это для сильных духом.

А стабилизация скорости вращения коллекторных движков по обратной ЭДС все же возможна, чему примером коммерческие декодеры, да и самодельные декодеры почти двадцатилетней давности от MERG.
Цитата

Аватара пользователя 390.Poezdnik » Пт апр 10, 2020 4:22 pm

Приветствую!

Интересная тема рассматривается. Сам мечтаю о стабилизации оборотов электромоторчиков в модельках.
Back EMF - весьма тонкий метод. А есть ещё - на основе формулы : Uдв = E + Iя * Rя.
Тогда, скорость якоря n = (U - Iя * Rя)/k . где k - конструкционный коэффициент (подбираем его).
Цитата
Поле сортировки

« Цифровое управление, Аналоговая автоматика и их элементы