avatar_peat

Опережение, OVS , алгоритмы и примочка для любых BLDC контроллеров с холлами.

Автор peat, 16 Сен. 2016 в 11:36

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

peat

Господа знатоки. Поднимаю тему с OVS. Сама теория ослабления магнитного поля не интересует. Интересует практическая реализация идеи.
Предыстория.
Все началось со стенда , где я мучал 500ваттный циклон. Поворачивая планку с холлами на небльшой градус  относительно оси вращения , я заметил что обороты можно сильно увелчить или уменьшить без поднятия напряжения. . Про падение КПД опустим.


Помучав финик со 120% режимом , я ощутил действие опережения на практике. Если на моем МАС при напряжении 56 вольт максималка без опережения = 48 кмч , то с опережением я еду 60 кмч.
Такой режим необходим скажем на прогазовках , когда ты просто обязан ехать в потоке машин, или когда батарейка с мотором куплена , а максималка неожиданно ниже чем расчитывалось, а переделывать что либо уже нет ни сил ни денег ни желания.
ПОшустрив по инету я наткнулся на очень интересный проект



https://endless-sphere.com/forums/viewtopic.php?f=2&t=19054

Товарищ сделал платку , которая вставляется между контроллером и мотором и динамически изменяет опережение (сигнал с холлов) в зависимости от тока потребления и положения ручки газа.
На выбор по внешней кнопке есть 2 профиля.
Все бы ничего , но на финике режимом 120% пользоваться практически невозможно , если вкачиваемая мощность больше 2 квт. Во время включения режима происходит резкий рывок на скорости. Контроля скорости ручкой газа уже не возможен.
То что предлагает мужик с форума имеет плавное нарастание и аналогичен режиму OVS на минике.
Все бы ничего , но проект у мужика подох. Заказать такую плату не реально.
Так как с 1998 года я плотно сижу на платформе PIC ,то написать такую шню  мне не составит особого труда.
Зачем это нужно.
По мимо того что эта приблуда может увеличить обороты МК , она еще может точно подстроить обороты под KV мотора.
Вращая планку с холлами  на стенде , фактически сымитировав работу этого устройства , я повысил КПД циклона почти на 10% от заводских настроек. То есть появится возможность точно подстроить фазы включения обмоток под вашу связку  контроллер-мотор.

Немного теории почему заводские настройки положения холлов могут снижать КПД мотора.
Спойлер
Разбирая схемы некоторых контролеров BLDC  я заметил одну особенность. Почти у всех на входах с холлов стоит RC цепочка (фильтр)  , которая немного сдвигает время физического прихода сигнала с холлов. У разных контроллеров эта цепь с разными номиналами. Время прихода сигнала будет всегда разным. То есть запаздывать с разным интервалом времени. Ко всему прочему добавляется задержка на обработку сигнала с холлов самим алгоритмом контроллера. Это 2 неизбежных фактора на пути сигнала с датчика холла в моторе.
К ним присоединяется задержка на включение самих фетов (драйвер , большая емкость на затворе , что дополнительно вносит задержку.
После того как феты включились , нарастание магнитного поля в моторе происходит не мгновенно а так же с задержкой. То есть сама конструкция (индукция) мотора вносит задержку к появлению магнитного поля в зубе.
Итого имеем 4 фактора , которые влияют на задержку между приходом сигнала от холлов и появлением магнитного поля на зубах статора.
Перечислю -
1. RC цепочка между холлами и контроллером.
2. Алгоритмы контроллера.
3. Задержка на включение FET .
4. Задержка появления пика магнитного поля на зубьях статора из за индукции мотора.

Если мы меняем контроллер или мотор , 2 любых фактора постоянно меняются. Это может объяснять , почему для некоторых моторов подходит контроллер , а для других нет, или на оборот.
Просто стечение обстоятельств такие что сигнал с холлов конкретного мотора проходя через все 4 задержки , получает порцию магнитного поля вовремя. Замени контроллер , задержка станет другой или больше или меньше , в результате магнитное поле будет заранее или с опозданием, в следствии чего КПД немного падает.
Я видел в некоторых оборотистых моторах , холлы стоят немного вперед. Сделано это как раз для компенсации этих задержек.
К сожалению в наших МК холлы вклеены в зубья и поиграться опережением не получится никак.
Только электронникой.

На практике , если ваши обороты отличаются от заявленного Kv производителем  это означет что пик магнитного поля на зубьях появляется не совсем вовремя из за вышеописанных задержек , соответственно то КПД не идеально.  Это касается всех моторов , по этому и важна подстройка углов для каждого комплекта мотор-контроллер причем в индивидуальном порядке.

Полная аналогия ДВС и зажигание. Расстроили туда-сюда хоть чуть чуть и привет мощность.





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

Сейчас нужно понять алгоритмы , на каком принципе работает опережение у адаппто и у этого мужика со сфер. Вудить что либо у Жеки по теме не реально. да и не обязан он выклдывать детали коммерческого проекта. По этому опустим адапто.

Есть головы чтобы подсказать как это может работать ?

Мое видение этого алгоритма:
Спойлер
Если планку с холлами я двигаю вперед на физическом уровне , то и выход сигнала с холлов будет всегда с постоянным опережением как бы я не изменял обороты. 
В нашем же случае , когда идет полная подмена сигнала с холлов , то определение "наперед" происходит исходя из предыдущего интервала (оборота).
То есть по сути алгоритм смотрит за какое время произошел оборот вала двигателя опираясь на сигнал с физического холла  , и на следующем обороте , генерирует заранее сигнал для контроллера. Все это прекрасно работает на фиксированных оборотах.
А если обороты растут или падают ? Вот тут у меня загвоздка в понимании.
От куда алгоритм будет знать интервал следующего оборота  (чтобы вычислить опережение) , если физически, на следующем обороте  интервал изменится  ? На сколько ?
Машину времени еще не изобрели...
Но у других то рабоает и прекрасно. значит алгоритмы другие. Какие ?




илс

[user]peat[/user], а написать тому мужику в личку?
Задать соотв. вопросы по алгоритму?

Даже если проект забросил, думаю поделится теоретическими наработками..... почему нет?

Опять же можно апнуть тему на Сфере, вдруг кто занимается подобными проектами?
===
Кстати, когда ездил на ДД с магнитами 35мм (эквивалент номинала 1,5кВт), никакого рывка на финике в режиме 120%, не ощущал.
Хотя настройки токов, были в меру агрессивными.  :bn:

peat

Цитата: илс от 16 Сен. 2016 в 11:47
[user]peat[/user], а написать тому мужику в личку?
Задать соотв. вопросы по алгоритму?

Даже если проект забросил, думаю поделится теоретическими наработками..... почему нет?

Опять же можно апнуть тему на Сфере, вдруг кто занимается подобными проектами?
===
Кстати, когда ездил на ДД с магнитами 35мм (эквивалент номинала 1,5кВт), никакого рывка на финике в режиме 120%, не ощущал.
Хотя настройки токов, были в меру агрессивными.  :bn:

Так пиал не раз.. еще с прошлого года. Тишина.. Причем судя по уходу писем с аутбокса , он их читает.

Спойлер
Кстати, когда ездил на ДД с магнитами 35мм (эквивалент номинала 1,5кВт), никакого рывка на финике в режиме 120%, не ощущал.

Там на токах 99 батарейного и 180 фазного. У тебя таких нету.
На низких токах рывка не ощущается.

Night-Prizrak

Ну при подмене сигнала с холлов имхо ни о каком "опережении" речи не идет - ибо тут "опаздывание", задержка сигнала минимум на 180%...
Имхо - как это работает.
первые импульсы контроллер "пропускает" без изменений
приходит первый импульс от первого холла, контроллер начинает отсчет до появления второго импульса.
приходит второй - контроллер вычисляет время между импульсами
и вместо третьего импульса он уже генерериут свой, со сдвигом в ту или иную сторону.
Продолжая при этом считать и корректировать все последующие импульсы.
Тоесть по сути есть "опаздывание" на 2 импульса от текущих изменений, но поскольку процессы тут весьма быстротечны, то такое опаздывание в реалиях мало того что не заметно пользователю - оно еще и не особо критично, ибо на маленьких скоростях это вообще не важно, а на больших - все равно нельзя затормозить колесо так быстро, чтобы между 2мя импульсами разница во времени была больше пары процентов. Исключение - заблокированное колесо, но там уже любые рассчеты и опоздания не имеют смысла.
Ну по крайней мере я это вижу себе именно так.

on4ip

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

peat

А что если включать с запаздыванием ? как предложил [user]Night-Prizrak[/user] ?
Получается что надо опаздывать  на 6 приходов кода, когда цикл холлов повторяется , а на многополюсных моторах он повторяется через где то 10 градусов положения  колеса , а не 360 как я думал.
Верно иду ?


on4ip

ну конечно нужно иметь какойто буфер для того чтоб делать компенсацию по расчетному значению, по идее это все в ЦОС почитать можно. Но запомнить нужно именно полный оборот иначе управление будет не правильное так как оно должно быть синхронизированно с потоком магнитов .
В жизни все не так, как на самом деле.

Night-Prizrak

Вобщем то можно - первый полный оборот пропускаем "напрямую", не вмешиваемся в форму сигнала, а с первого импульса второго оборота начинаем коррекцию сигналов. Только как проц поймёт где у мотора оборот закончился? нужно в таком случае под каждый двигатель в программе забивать кол-во полюсов на оборот ротора... Что не совсем "юзерфрендли"
Но все-таки мне не до конца понятно - почему нужно именно целый оборот запоминать? почему нельзя рассчитывать каджый следующий код импульсов по предыдущим 2м?

peat

Цитата: Night-Prizrak от 16 Сен. 2016 в 13:58
Вобщем то можно - первый полный оборот пропускаем "напрямую", не вмешиваемся в форму сигнала, а с первого импульса второго оборота начинаем коррекцию сигналов. Только как проц поймёт где у мотора оборот закончился? нужно в таком случае под каждый двигатель в программе забивать кол-во полюсов на оборот ротора... Что не совсем "юзерфрендли"
Но все-таки мне не до конца понятно - почему нужно именно целый оборот запоминать? почему нельзя рассчитывать каджый следующий код импульсов по предыдущим 2м?

Цитироватьпочему нельзя рассчитывать каджый следующий код импульсов по предыдущим 2м?
Я тоже так думаю.
1 полный цикл холлов - 6 комбинаций. Для контроллера начало 7-й комбинации и есть полный цикл. А сколько там на длине окружности колеса (диаметр) циклов , контроллеру по ходу дела фиолетово. Я только только начал изучать тему , по этому на точность не претендую.
Во всех работающих системах никуда не забивается длина окружности и кличество магнитов. Финик вообще ничегопро это не знает , однако работает там ovs



acyd

полный цикл 360гр (в мк это расстояние в 2 магнита), переключения холлов идет каждые 60гр. Надо уметь определять положение в промежутке 60гр. Т.е преобразователь предугадывает на основании ранее полученных данных.  Для тех кто на треугольник перешел хорошее подспорье - на 30гр сдвинуть программно.

clawham

Привет! Я такое делал на атмеге
Закончилось тем что нужно это делать не на меге а на плисине. на меге на програмных прерываниях сильный джиттер особенно на низких скоростях(с нуля вообще нереально - приходится один-в-один выдавать на ружу входа) и на высоких оборотах(у меня редукторник 8FUN SWXK) - не хватает частоты процу хотя я до 25 мегагерц задирал - не успевает нормально. приходится планку с холами сильно отклонять на позднее зажигание и процем только задержку увеличивать но со стартом всеравно беда.

Ну и неравномерность холловых сигналов. они не работают симетрично ни между собой ни на протяжении круга так что предсказать по предыдущему такту следующий - очень сомнительное удовольствие - промаживаемся и как следствие гудение повышеный нагрев и мало кпд. пробовал и на редукторнике и на дд звезда тяговом и треугольнике - забросил - гиблая затея...или на апаратных таймерах 103-х стмовских армов или на плисине и частоте 66 мегагерц чисто аппаратно.

Как делал я в простом случае алгоритмически?
Заводил входы холлов на аппаратные прерывания.
считал сколько тактов прошло с прошлого переключения состояния холлов в тактах процессора.
дальше выдавал следующую комбинацию сигнала холлов через промежуток от текущего срабатывания в кол-во тактов прошедшых за прошлое изменение состояния /360 * 60 * коэфф смещения. все это на прерываниях аппаратных и от таймера. в основном цикле латентно насколько успевалось - обрабатывались времена последнего изменения сосояния холлов, искалось в табличке соотношение нужного опережения от тока и положения ручки газа и частоты ну и выдавалось новое значение коэффициента задержки. ну и так де отрабатывались аварийные ситуации.

Атмега 328 была. 25 мегагерц. код оптимизировался на скорость выполнения и использовались битовые операции и асемблерные вставки дабы сэкономить время. но всеравно срабатывание прерывания и момент попадания в обработчик иногда занимает 6 тактов иногда 20 а иногда они накладывались и вообще привет...
1)8FUN SWXK 250w24V@17A48V 13S4P LGD1, China kontr
3)MXUS 3000 @90A80V LiFePo 20Ah 25S, Nucular 12F
Telegram @clawham

acyd


peat

ЦитироватьЗакончилось тем что нужно это делать не на меге а на плисине. на меге на програмных прерываниях сильный джиттер
Мне это не грозит. Наверное ..  :laugh:  PIC  я програмлю на чистом асме. Там время на обработку четко фиксровано и не зависит ни от чего. Естессно прерывания аппаратные.  Частота кварца ..если 16-18 серия то 20 мгц. Я думаю этого вполне хватит чтобы обработать аппаратное прерывание для PIC. Компилятор атмеги сильно раздувает задачи. на нем хорошо интерфейсы писать да не сложные задачи. Что касается быстрой обработки сигнала , то это только асм.
Естессно сам обработчик вылизывается и оптимизируется под одинаковое время счета для стабильности.
В пике есть 16-ти битные таймера , аж 2  штуки. Тактировать можно как с кварца , так и внешне. Снаружи можно поставить кварцевый осциллятор повышенной стабильности  отдельно. Интервал счета будет ровным. Это аппаратные таймеры.
Ладно , сейчас алгоритмы надо выявить. И понять что как делать для начала. Пока нет четкого понимания процесса.


okyar

А что мешает сделать механическое опережение с запасом на весь диапазон регулировок и от него уже запаздывать? Или желание не трогать конструкцию МК ?

acyd


okyar

Цитата: acyd от 16 Сен. 2016 в 15:59
запаздывание 330гр = опережение  30гр?
Неа, к тому моменту оно может стать и 20 и 40.

TRO

360 градусов / 6 положений холлов это уже 60 градусов опережения которые есть, от них легко запаздывать на разогнанном моторе. Если хотим точности и желательно с низов, то для првильности предсказания прийдется считать еще ускорение и делать на него поправку (фанаты могут пойти дальше и обсчитывать еще динамику изменения ускорения как уже третью производную). Короче все сведется к банальному ПИДу. При этом за одно можно неравномерность срабатывания датчкивов холла поправить (замерить за несколько кругов неравномерность и прописать для каждого поправку, эту калибровку контроллер может делать сам между делом, чтобы не калиброватся отдельной процедурой на каждый мотор), то что для кого то это проблема еще не значит что та же мега не успеет с нормальным оптимизированным подходом на асме (заедейсвовав по максимуму таймера и модули захвата, чтобы бОльшая часть времязависимого алгоритма крутилась вообще аппаратно). По уму можно вообще сделать процесс обучения (завести на платку ток потребления и газульку, желательно и регеном, чтобы для многих иттераций не ждать выбега колеса).
Ну и как уже писали, с низов включать этот режим смысла нет.

Теперь все же немного теории, что касается повышения оборотов. Самый правильный способ для этого не опережение (опережение нужно в основном для компенсации запаздывания тока из за индуктивности, и выражается не в градусах, а в константе времени). Правильно это плавно исключать верхушку синусоиды из цикла ШИМ, при этом получаются два временных интервала на один такт коммутации (что в принципе продвинутые контроллеры и делают, т.е. то что многие принимают за режим с опережением на самом деле более сложный финт). Но для достижения этого эффекта манипуляции с холлами не помогут, нужно фактически менять мозги контроллеру.



Wahoo 2012 29er, +собран складной двухосис на раме"Land Rover" 69er с эл. мотором, и и МОНОКОЛЕСО

peat

Цитата: okyar от 16 Сен. 2016 в 15:45
А что мешает сделать механическое опережение с запасом на весь диапазон регулировок и от него уже запаздывать? Или желание не трогать конструкцию МК ?
В циклоне так и сделано простым поворотом магнитного кольца энкодера. Там холлы считывают информацию от отдельного кольца а не от магнитов.
Во всех МК холлы жестко вклеены в пазу между зубьев. Что либо там менять не катит никак.

VVK

Если коротко, то в моем контроллере измерение длительности срабатывания холлов выполняется по прерываниям, а синус (или трапеция) генерируются отдельными таймерами. Эти таймера во времени привязаны к прерываниям холлов, но через дополнительный счетчик, значение которого определяет сдвиг фазы. Это позволяет задавать задержку/опережение фаз по отношению к холлам.
Для такого алгоритма больших вычислительных мощностей не требуется, PIC должен справиться.

Night-Prizrak

Цитата: peat от 16 Сен. 2016 в 17:14
Во всех МК холлы жестко вклеены в пазу между зубьев. Что либо там менять не катит никак.
не совсем... 
в ДД от Спарты - стоит кольцо в крышке и целых 6 холлов на плате статора.
в редукторнике  от Газели 135мм передней (тот еще мутант) - 3 холла на платке, привинчивающейся к корпусу моторчика.
как бы за всех не говорю - это глупо, но есть и исключения в МК ;)

on4ip

А вообще векторный привод решает это все без изврата=)
В жизни все не так, как на самом деле.

Night-Prizrak

Цитата: on4ip от 16 Сен. 2016 в 18:08
А вообще векторный привод решает это все без изврата=)
Ага, схемку бы, с прошивками, с разводками плат..  чтоб самому собрать "за парубаксов"   ;-D

on4ip

В жизни все не так, как на самом деле.

Yaroslav

Раньше ездил на 36 вольт поэтому режим 120% инфинеона был включен все время. Алгоритм у них там какой то хитрый, если с нуля ехать на 120, то сначала разгоняется до нормальной скорости а когда ток начинает падать, появляется рывок и дополнительное ускорение до 120℅, очень напрягает, в первом контроллере от вольты, ускорение было плавное до максимальной скорости, правда там 115℅. Сейчас езжу на 100℅, 120 использую редко, только когда нужно кого то обогнать.
Вообще круто было бы иметь точную настройку холлов на любом контроллере, думаю девайс будет многим актуален.
Строю лигерад

peat

А как OVS у адапто работает ? В плане эксплуатационных параметров.
Алгоритмы опустим.
То есть уопережение начинается от чего? от некой около предельной скорости ? Тоесть контроллер , зная Kv мотора и зная текущее напряжение понимает что скорость околопредельная и начинает плавно с этой скорости повышать опережение с коээфициентом заданным в настройках.. верно ?
Допустим . При няпряжении 60 вольт , предельная скорость МК - 60 кмч (или сколько то там оборотв скорее всего.
На скорости скажем 55 кмч , начинается  плавный рост опережения и на 60 кмч оно достигает воего максимума. Дальше как байк поедет так и поедет..
Но там по ходу дела еще и ток подключается.
Очень не хочется огорода с шунтами.

on4ip

Кстати для разных моторов диапазон опережения и поведение в том диапазоне будет разное. Касаемо тока его амплитуда заданная ручкой газа не меняется все время если задание ручки не меняется. Вам не надо шунты никакие. Увеличивайте угол и все.дальше система сама разберется. Рывок в контроллерах происходит из за ступенчатого  изменения коррекции холлов. Коррекция должна меняться плавна сохраняя определенный зазор по напряжению от оборотов.
В жизни все не так, как на самом деле.

peat

ПОка все в тумане по алгоритмам. Если бы планку можно было бы наперед поставить , то с попаданием в нужный угол путем торлько задержки - все тут прозрачно.  С другой стороны , наперед будет , если задерживать на 1 оборот минус требуемый градус ( по времени).
Пока собираю данные.
Еще есть мысль задерживать опираясь на цикл холлов. Это 6 комбинаций всего. Тоесть не 1 оборот , а 6 тактов.
Смотрим.
Пришли 6 тактов. Интервалы между сменами кода скажем 10мс.

Нужно 2 распареллеленные задачи.

1. Смотрим , с каким интервалом пришли 6 тактов с холлов. Допустим 10мс.
2. Чтобы было опережение , генерим следующие 6 тактов , только с интервалом уже 9 мс,
3 Пока подмененные такты уходят в контроллер, параллельно смотрим с каким интервалом приходят следующие 6 тактов с холлов.
4. цикл непрерывен и замкнулся.
Остается вопрос чтоделать на самом старте , ведь подмены там не должно быть. Вот тут просто делаем задержку 0 и все что пришло с холлов тут же отправляется в контроллер.
Алгоритм по ходу до безобразия прост.



mr.Dream

[user]peat[/user], я себе буду делать контроллер, и алгоритм будет такой: меряю с запаздыванием не на целый оборот минус опережение, а только на 1/6 оборота (электрического), то есть на один такт переключения состояния холлов.  Грубо говоря, это приблизительно то, как бы сместили все холлы на 60° физически, и сделали управляемую линию задержки.  Только я думаю еще, делать это на МК, или же сделать "аналоговую" задержку сигналов? Это разгрузит МК,
Короче, пока обороты низкие и на старте - переключаем ключи "как надо", после определенных оборотов (периода переключения состояния холлов) программно подменяем холлы, как будто бы мы их физически свернули на угол, и тогда измеряя период переключения ставим такую же задержку, но с коррекцией в нужную сторону. Используя три таймера.

Yaroslav

[user]mr.Dream[/user], я тоже про это думал, зачем пропускать целый оборот, если достаточно одного такта
Строю лигерад

Frolikum

Оглашу своё субъективное мнение.
Интервал времени между любой сменой комбинации холлов несёт информацию о скорости(при равномерном распределении датчиков в моторе что практически исключено и придётся использовать хитрые цифровые фильтры) и нет необходимости ждать шесть тактов или тем более целого оборота. Захватываем время между одной сменой комбинации и следующей за ней, находим отношение между ними и делаем вывод о том разгоняется или тормозится а может просто равномерно крутится мотор. Другими словами находим производную для скорости и если так уж хочется опережения/отставания то захваченные попугаи умнажаем на этот коэффициент и на так желанный коэффициент опережения. Полученное число и будет тем желанным моментом. Его записываем в регистр сравнения и ждем прерывания по этому событию. А так как каждый раз при захвате числа от датчиков оно будет пропорционально скорости то можно принимать решение о том необходимо ли вводить коэффициент опережения или нет. Тем более что тайминги при низких скоростях не используют.

TRO

Цитата: Yaroslav от 17 Сен. 2016 в 18:34
[user]mr.Dream[/user], я тоже про это думал, зачем пропускать целый оборот, если достаточно одного такта
Походу Чупа не читает что ему пишут в теме, так как об этом уже было написано уже как минимум раза три включая меня, и вот еще раза три написали

Wahoo 2012 29er, +собран складной двухосис на раме"Land Rover" 69er с эл. мотором, и и МОНОКОЛЕСО

Frolikum

Проблема не в самом алгоритме а в его реализации. На практике приходится использовать фильтры не только для скорости но и для ускорений так как реальный мир куда более "жесток" чем всякие там протеусы.

Цитата: mr.Dream от 17 Сен. 2016 в 18:25
Только я думаю еще, делать это на МК, или же сделать "аналоговую" задержку сигналов? Это разгрузит МК,

Используя три таймера.

Прерывания от датчиков не так уж и нагрузят МК. Даже десять килогерц для этих ребят не проблема. А вот программные фильтры вот это проблема, иначе не нужны были бы ДСП процы.

А вот насчёт трёх таймеров вы однозначно погорячились. Это расточительство.

okyar


peat

Цитата: TRO от 17 Сен. 2016 в 18:46
Цитата: Yaroslav от 17 Сен. 2016 в 18:34
[user]mr.Dream[/user], я тоже про это думал, зачем пропускать целый оборот, если достаточно одного такта
Походу Чупа не читает что ему пишут в теме, так как об этом уже было написано уже как минимум раза три включая меня, и вот еще раза три написали

да нет жеж.. я же написал что 1 оборот не нуден.. достаточно 6 тактов. Просто каждые 6 сменикомбинаций холлов, на 7й комбинации  по пололожению  магнитов и тоже самое что начало 1й комбинации. Это цикл длящийся ровно 6 проходов магнитов через один зуб. По этому нет необходимости делать 1 оборот. Сейчас картина вырисовывается уже в деталях.

mr.Dream

[user]peat[/user], один цикл - это две смены полярности на отдельно взятом зубе. Рассматривайте любой мотор, как простейший, для лучшего понимания: два магнытных полюса и три фазных обмотки.  Остальные моторы контроллер видит аналогично, и он вообще не знает сколько там пар полюсов и фазных зубов, и не нужно ему знать. 6 тактов - это каждая фаза, смещена относительно другой на 120 градусов пересекающаяся с магнитами, смещеннымти на 180. За этот "оборот" каждый холл один раз включится, один раз выключится, но каждый из них соотвественно с задержкой 1/3 оборота или 120°. Мотор при этом физически может провернуться на часть оборота, или даже на малую долю его, если соотношение пар полюсов магнитов и зубцов статора не 2:3. При 4:3 будет два "электрических" оборота на один физический, при 10:12 будет еще больше, и так далее ))

TRO

Цитата: peat от 18 Сен. 2016 в 01:18
Цитата: TRO от 17 Сен. 2016 в 18:46
Цитата: Yaroslav от 17 Сен. 2016 в 18:34
[user]mr.Dream[/user], я тоже про это думал, зачем пропускать целый оборот, если достаточно одного такта
Походу Чупа не читает что ему пишут в теме, так как об этом уже было написано уже как минимум раза три включая меня, и вот еще раза три написали

да нет жеж.. я же написал что 1 оборот не нуден.. достаточно 6 тактов. ...
Это и есть один электрический оборот. Про механические мы тут речь не ведем.
Речь о том что достаточно замерить время от одной до другого смены (два такта).
А что бы вычислить ускорение (разницу) достатчочно двух таких тактов.
А полный ЭЛЕКТРИЧЕСКИЙ оборот из шести тактов (на линейной скороти) нужен толко один раз для калибровки ошибки положения датчиков холла.

Wahoo 2012 29er, +собран складной двухосис на раме"Land Rover" 69er с эл. мотором, и и МОНОКОЛЕСО

Frolikum

Цитата: TRO от 18 Сен. 2016 в 11:48
А полный ЭЛЕКТРИЧЕСКИЙ оборот из шести тактов (на линейной скороти) нужен толко один раз для калибровки ошибки положения датчиков холла.
Для этого надо что бы на моторе стоял хотя бы ещё один датчик. Лучше энкодер достаточного разрешения иначе не по чем будет калиброваться.
Как узнать что холл смещен если нет почему мерять.

TRO

[user]Frolikum[/user], По среднему всех холлов, очевидно же.
Абсольтная точность там не нужна, затея как раз затевается для оптимального подбора этого самого значения (опережение-запаздыванием) под разные обороты и нагрузки.

Wahoo 2012 29er, +собран складной двухосис на раме"Land Rover" 69er с эл. мотором, и и МОНОКОЛЕСО