Страница 39 из 47
Re: Самодельный локомотивный декодер.
Добавлено: Вс апр 05, 2020 7:42 am
tnt23
Привет от новичка! Нагуглил эту тему и побежал регистрироваться
Тоже делаю свой
декодер, и вот дошло дело до Back EMF. Есть какие-нибудь практические советы, как это лучше реализовать и аппаратно, и алгоритмически? Интернеты почитал, осилил даже недетский топик по BEMF на Modelldepo
Реализовывать классический PID-регулятор пока боюсь, может, можно меньшей кровью обойтись.
Re: Самодельный локомотивный декодер.
Добавлено: Вс апр 05, 2020 1:21 pm
Engineer_Keen
Аппаратно. От входа ацп 1) 2 резистора по 10к к выходам н-моста (клеммы двигателя) 2) резистор 2к на землю, и конденсатор 0.1мкф на землю 3) защитный диод шоттки на +питания мк. Опорное напряжение от внутреннего источника (1.1в у меги88).
Программно. ШИМ прерывается на некоторые промежутки времени, далее, нужно смотреть осциллографом, когда на входе ацп заканчивается выброс от коммутации моста и начинается чистая обратная эдс, после этого делается один или несколько семплов, из которых берется среднее. Составляется таблица эдс (для простоты - линейная), из которой берется опорное значения для сравнения и от разницы таблицы и считанного делаем регулировку. Я сделал сначала только P, вполне нормально, потом добавил I, сильной разницы не было, но при некоторых настройках без этого звена все затухало. Потом добавил D, но результат не понравился, а может я не правильно чтото посчитал, на ассемблере не очень удобно было. Так что я остановился на PI регуляторе, хотя I там не совсем такое как в формулах. Точные формулы не скажу, это было пол года назад, и все на рабочем компе. Как результат - старый пиковский двигатель стабильно вращается с частотой в единицы оборотов в секунду, не зависимо от нагрузки, но для этого нужно долго опытным путем подбирать частоту шим, размер окна для снятия эдс, частоту ацп и параметры регулятора.
Re: Самодельный локомотивный декодер.
Добавлено: Вс апр 05, 2020 4:07 pm
tnt23
Василий, спасибо.
Декодер у меня на stm32f030, входная часть почти такая же - взял с декодера MERG, только без защитного диода. От мотора резисторы по 10К, на землю сейчас стоит 56К, подобранный опытным путем.
По программной части буду осмысливать. Сбор первичных данных и усреднение сделаны, но смущало, что измеренное напряжение на минимальных оборотах практически не отличалось от нуля. После вашего ответа пришло в голову откалибровать АЦП при старте (по даташиту это рекомендуют для уменьшения погрешности смещения, которая гуляет от экземпляра к экземпляру), и данные на первом шаге скорости уже стали хоть на что-то похожи.
Чтобы не засорять эту тему, можно сделать отдельную.
Re: Самодельный локомотивный декодер.
Добавлено: Ср апр 08, 2020 11:46 am
tnt23
Разбираюсь с пропорциональной частью для начала. Выставил в прошивке фиксированную установку, соответствующую 10 шагам скорости, и корректирую ее дробной частью ошибки. Пока что пытаюсь обойтись дробями степеней двойки, получается так себе.
В качестве моста использую чип A4953 от Allegro. Я его ставил в самодельный шилд DCC++, работает отлично, решил поставить в
декодер. Как дело дошло до BEMF, выяснилась неприятная особенность моста - время перехода в Z состояние у него около 1мс, поэтому процедура замера не может производиться слишком часто. Сейчас замер выполняется каждые 20мс.
- bemf speed 10 with commutation.png (7.23 КБ) 1941 просмотр
После остановки PWM приходится ждать 1мс и потом еще немного для надежности. Желтый прямоугольник - 16 выборок АЦП, каждая прогоняется через простой цифровой фильтр. После фильтра данные суммируются, и сумма используется как входная величина для регулятора.
Re: Самодельный локомотивный декодер.
Добавлено: Пт апр 10, 2020 10:03 am
tnt23
Engineer_Keen писал(а): ↑Вс апр 05, 2020 1:21 pm
Аппаратно. От входа ацп 1) 2 резистора по 10к к выходам н-моста (клеммы двигателя) 2) резистор 2к на землю, и конденсатор 0.1мкф на землю 3) защитный диод шоттки на +питания мк. Опорное напряжение от внутреннего источника (1.1в у меги88).
Интересно, я прикинул - для 14в входного напряжения на моторе после делителя 10K/2K на входе АЦП будет около 2.3в, с запасом. А что будет на самых малых оборотах? или тут помогает интегрирование на внешнем конденсаторе?
В моем случае с делителем 10K/56K вход сильно перегружается при полном входном сигнале, но АЦП на тихом ходу мотора практически ничего не видит - только если поставить 5К вместо 10К. Вряд ли чувствительность АЦП stm32 сильно хуже меги. Ну или такой мотор подвернулся, BR80 от Mechano.
Re: Самодельный локомотивный декодер.
Добавлено: Пт апр 10, 2020 2:01 pm
BR95009
Re: Самодельный локомотивный декодер.
Добавлено: Пт апр 10, 2020 2:14 pm
старина_U
tnt23 писал(а): ↑Пт апр 10, 2020 10:03 am
Интересно, я прикинул - для 14в входного напряжения на моторе после делителя 10K/2K на входе АЦП будет около 2.3в, с запасом. А что будет на самых малых оборотах? или тут помогает интегрирование на внешнем конденсаторе?
В моем случае с делителем 10K/56K вход сильно перегружается при полном входном сигнале, но АЦП на тихом ходу мотора практически ничего не видит ...
Во...
Вот поэтому я в своё время и предложил перешить всё с простого ШИМа и коллекторного движка на бесщёточный с постоянными магнитами (BLDC).
Всё-таки контроль скорости по пульсациям противо-ЭДС требует некого постоянного уровня напряжения на зажимах мотора.
А на малых скоростях...
...не фунциклит.
Или применять датчики Холла/оптопары с кодовым диском...
И вжо этот бэк_ЭМФ.
Re: Самодельный локомотивный декодер.
Добавлено: Пт апр 10, 2020 2:52 pm
tnt23
Дельная статья, спасибо. Созерцание либы BackEmfMotor принесло осознание, что замер BEMF и коррекция необязательно должны происходить одновременно.
Re: Самодельный локомотивный декодер.
Добавлено: Пт апр 10, 2020 3:09 pm
tnt23
старина_U писал(а): ↑Пт апр 10, 2020 2:14 pm
Вот поэтому я в своё время и предложил перешить всё с простого ШИМа и коллекторного движка на бесщёточный с постоянными магнитами (BLDC).
Всё-таки контроль скорости по пульсациям противо-ЭДС требует некого постоянного уровня напряжения на зажимах мотора.
Это как-то вовсе уж радикально. А что делать со старыми коллекторными моторчиками, если переделать не хватает пороху?
Я бы еще понял вариант при возможности добавить шестерней в редуктор, но и это для сильных духом.
А стабилизация скорости вращения коллекторных движков по обратной ЭДС все же возможна, чему примером коммерческие
декодеры, да и самодельные
декодеры почти двадцатилетней давности от MERG.
Re: Самодельный локомотивный декодер.
Добавлено: Пт апр 10, 2020 4:22 pm
Poezdnik
Приветствую!
Интересная тема рассматривается. Сам мечтаю о стабилизации оборотов электромоторчиков в модельках.
Back EMF - весьма тонкий метод. А есть ещё - на основе формулы : Uдв = E + Iя * Rя.
Тогда, скорость якоря n = (U - Iя * Rя)/k . где k - конструкционный коэффициент (подбираем его).