Контроллер для кордовых электричек

Маркс

по трем его построить не получится, это разница между фазовыми сигналами

Маркс

ну я и тормоз )))
обороты в минуту, а частота меандра в Герцах (единицы в секунды)
310 / (2700 / 60) = 6,89
480 / (4200 / 60) = 6,86
500 / (4380 / 60) = 6,85
800 / (6950 / 60) = 6,9
отклонение 2 процента, можно считать погрешностью измерений.
в общем все по науке, коэффициент пересчета Герц в обороты в секунду
равен половине количества магнитов.

думаю точность регулировки оборотов в 2 процента всех устроит )

VitalikV

Вполне, это скорее всего погрешность тахометра. И исходя из этого, для настройки оборотов, можно брать шаг 100.

Маркс

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

период импульсов с формирователя на малых оборотах 2 миллисекунды,
пишу программу так, что бы на каждом импульсе считались текущие обороты,
это примерно 50 раз в секунду.
и сразу второй вопрос, начиная с какого отклонения оборотов следует принимать меры ?
там в принципе процесс будет простой,
если при измерении оборотов отклонение больше или меньше <дельта>,
таймер будет <уменьшать>/<увеличивать> частоту PWW на входе в регулятор.

Маркс

упростил задачу, сейчас Ардуина считает время на один оборот в микросекундах,
вот это время и будет браться за основу для автоматической регулировки.
иначе придется лезть подключать плавающую арифметику, а ресурсы Меги 328 не бесконечные.

Маркс

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

обработчик прерываний считает количество прерываний от кросс платы
и сравнивает их с количеством полюсов мотора деленным на два
получая тем самым время в микросекундах на один оборот мотора

А дальше все просто, полученный результат измерений сравнивается с требуемым
если результат меньше требуемое значение минус дельта - обороты больше требуемых,
то уменьшаем длительность импульса PWM, уменьшаем обороты мотора.
и наоборот, если результат больше “требуемого значения плюс дельта” - увеличиваем длительность PWM.

Маркс
VitalikV:

А подсчет полюсов? Вручную?

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

VitalikV

Тогда в таймер добавить поле для записи параметра, не забыть. Или можно посчитать по обратной эдс , когда фаза неактивна. Нашел скетч esc на базе atmega48, там отслеживается обратная эдс, и на ее базе можно сделать аварийное отключение мотора, если мотор не вращается. Если нужно, скину скетч завтра.

Маркс

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

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

есть третий вариант, поставить на средних оборотах (дабы не сгорел) и ждать пока мотор выкушает батарейку,
а в процессе следить за напряжением и оборотами мотора,
вот только батарейки 2S у меня все от 2500 мАч (питание борта бензинки),
а тестовый моторчик маленький и кушает в пике 1,5А,
это cколько же времени мне придется ждать хоть какой то результат ?

VitalikV:

когда фаза неактивна

все равно надо знать количество полюсов

ipopov
Маркс:
  • увеличить нагрузку на мотор, установленный на стенде

грузить генератором (любой маленький эл двигатель на магнитах)

Маркс

не представляю как

если имеется в виду, присоединение к валу другого мотора в качестве генератора,
то совсем не вариант, моторчик в наличии только один, да и очень маленький )

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

RandomJ

Регулируемый источник питания нужен для настройки " батарейка садится а обороты держим"
А для нагрузки двигателя цепляем ему на вал такой же моторчик (или мощнее) в качестве генератора, к генератору цепляем выпрямитель (трёхфазный выпрямитель Ларионова) и к выпрямителю цепляем нужное количество лампочек. Количеством лампочек регулируем нагрузку на двигатель.

Маркс
RandomJ:

Регулируемый источник питания нужен для настройки " батарейка садится а обороты держим"

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

Маркс

имею траблу,
на графике время в микросекундах одного оборота мотора,
его считает ардуинка на основании прерываний, семь прерываний на один оборот
на данный момент выставлены 2500 оборотов/минуту, ну или 24000 миллисекунд на один оборот
отклонения это это погрешность измерений



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

эти всплески “вниз” влияют на работу регулировки оборотов

Маркс

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

честно говоря, совсем не ожидал такого течения событий ))

Маркс

проанализировал данные о длительности импульсов с кросс платы на Ардуинку,
в итоге понял, что не в фильтре дело, начал писать “оконный” фильтр,

принцип простой, берется восемь (число может быть любым) последовательных значений,
восемь удобно, потому как на восемь делить просто, сдвиг на 3 разряда в право ),
вычисляется среднее арифметическое (то самое деление суммы на восемь)
и следующее значение сравнивается с результатом деления,
если отличие больше чем на Х процентов, по моим прикидка надо сделать 25 процентов,
(это как раз деление на 4, т.е. сдвиг на два разряда), то данное значение отбрасывается.
если значение попадает в диапазон ±25 процентов от среднего в массиве,
его сохраняем в массив последним, а первое значение в массиве выбывает.

очень надеюсь, что к выходным гувернер заработает

Маркс

Мне на почту Сергей Андреев прислал еще один метод измерения оборотов.
Но связан он с достаточно серьезной доработкой мотора

Геннадий, доброго дня! давно не читал страничку форума про контроллер, тов заглянул. ребята возможно копают там слишком глубоко и не в том направлении. нужно много знать про мотор чтобы просто измерять обороты для последующей обработки, так как все будет изменяться от мотора к мотору. получается решение оч персонализированное.
наверное не буду оригинальным, сказав что Игорь Бургер, так сказать один из тех кто родоначальник и на практике давно эффективно использует такие девайсы, решает вопросы оч просто, поставив на планшайбу мотора и стационарное кольцо секцию из датчиков холла, получив таким образом энкодер, который тупо все считает, очень точно и прям сейчас. потом все логи и данные получаются у него записанными и их можно корректировать для следующих полетов. возможно это простое решение и по эффективности возможно лучшее
на сколько я понял, эта сборка стоит у него прямо в/на моторе

Маркс

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

Вариант “кольцевой буфер” с последовательной записью всех данных работает.
но из за попадания в буфер ошибочных данных, выпадают целые обороты мотора.
не сильно критично, но не приятно, это может составлять до 0,1 секунды.

если в буфер помещать только данные без ошибок, возникает коллизия
никак не получается обойти “неопределенное состояние”, это самое начало работы мотора,
когда мотор только начинает крутится, данные идут совсем хаотичные.
И при резком изменении оборотов, то же самое, гувернер вырубается.
Он тупо не понимает, какие данные верные, а какие с ошибкой.

VitalikV

А нам для гувернера, на сколько нужно считать обороты? Можно привязаться к каким либо другим параметрам, которые прямо или обратно пропорциональны оборотам? Например KV , известен, количество банок аккумулятора тоже. Напряжение на фазе при изменении нагрузки меняется, или всегда постоянно?

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