Проект "MaxController"

Автор jeka, 23 Май 2010 в 23:54

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

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

nordiver

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

i

Цитата: jeka от 03 Июнь 2010 в 16:51
...Апноут читал, но не понял, почему посреди синусов у них на графиках провалы. Странно как-то. Английский is not so good, поэтому может что не увидел... На мотор действительно нужно подавать такой жоповидный синус?
Вот здесь по-русски.

zap

#38
Цитата: jeka от 03 Июнь 2010 в 16:51
Планирую делать сразу синус, благо алгоритм там не сложный. При старте мотора с нулевой скорости все равно будет использоваться "китайский алгоритм", так что переключиться на него ради сравнения возможность будет. Форма сигнала меняется просто - синус выбирается по таблице, а вместо синуса в таблицу можно что угодно записать.
Апноут читал, но не понял, почему посреди синусов у них на графиках провалы. Странно как-то. Английский is not so good, поэтому может что не увидел... На мотор действительно нужно подавать такой жоповидный синус?
Откуда есть пошла форма жопская у графика управляющего сигнала обсуждали на днях вот тут. А вот в этой теме nikvic подметил очень важную особенность мотор-колеса - в силу того, что это индуктивность, по мере возрастания оборотов меняется фазовый сдвиг графика тока (а магнитная сила прямо пропорционально току) относительно подаваемого на фазовые вывода напряжения. А это, в свою очередь, приводит к падению момента и КПД.

Насколько я понял, китайский контроллер с блочным управлением подаёт сигнал с опережением по фазе на 30 градусов (при 0 км/ч), а при 30 км/ч фаза тока наоборот отстаёт уже на 20 градусов. ПМСМ это одна из главных причин того, что максимальный пробег получается при скорости около 15км/ч - при этой скорости фаза управляющего напряжения и фаза тока в обмотках примерно совпадают. И именно поэтому нет смысла увлекаться увеличением скорости элвела тупым увеличением напряжения аккумулятора - без коррекции фазы сигнала основная масса дополнительной энергии теряется впустую при скоростях выше ~35км/ч (на противодействие вращению).
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

nikvic

Цитата: zap от 03 Июнь 2010 в 17:36
Насколько я понял, китайский контроллер с блочным управлением подаёт сигнал с опережением по фазе на 30 градусов (при 0 км/ч),...

Никак нет. Это эффект путаницы напряжения от центральной точки и фазных напряжений.
У большинства МК индуктивность обмоток несущественна для рабочих оборотов.

jeka

Все, разобрался ;) Спасибо за разъяснения.
Заодно подключился осциллографом к контроллеру, посмотрел китайский контроллер polariss от веломастеров. Выдает тупо ШИМом, в точности как на осцилограмме hulong-а.
При раскручивании мотора на педалях и замеряя от земли получаю в точности тот жопосинус, что в appnote.
LiFe A123 40AH/78v, max-e, крошка 3 витка.
На форуме бываю нерегулярно, поэтому лучше звонить чем писать в личку. Телефон adaptto: +7 495 215 2878.

nikvic

Цитата: jeka от 03 Июнь 2010 в 16:51
Апноут читал, но не понял, почему посреди синусов у них на графиках провалы. Странно как-то. Английский is not so good, поэтому может что не увидел... На мотор действительно нужно подавать такой жоповидный синус?
Вам нужно заботиться о том, как "шимить" фазы. Вот "графическое" описание полного использования  напряжения батареи, Uбат -

Представьте себе вращение равностороннего треугольника (или звезды - неважно) со стороной U <= Uбат  и момент, когда он расположен "косо". У него есть самая нижняя вершина (фаза) - вот её нужно просто соединить с "-" батареи на всё то время, пока она нижняя, т.е на протяжении 120 гр..
Две верхние на этот период нужно шимить, цепляя их в плюсу.
Скважность должна быть  равна текущему возвышению, делённому на Uбат.

Отношение U/Uбат  описывает состояние "газа": для полного газа размах межфазного напряжения будет равен Uбат.


...В апноуте сделано несколько иначе, что сокращает таблицу. Там, как я понимаю,  попеременно используется то плюс, то минус в качестве "основы": инверсией используется "зеркальность" картинки..

Павел

#42
Цитата: nikvic от 09 Июнь 2010 в 16:54
Две верхние на этот период нужно шимить, цепляя их в плюсу.
А вот и нет. Одну из них (левую, если крутить по час. сртелке) первые 60о из 120о шимить надо к минусу (когда она ниже средней точки треугольника), потом 60о к плюсу, но толку думаю мало, а иначе препятствуем вращению.

Извиняюсь, напутал, 30о к минусу и 90о к плюсу, т.к. ЭДС обмотки 30о направлена к общей точке, след. ток должен быть от неё, и 90о наоборот:

nikvic

Цитата: Павел от 09 Июнь 2010 в 22:35
Цитата: nikvic от 09 Июнь 2010 в 16:54
Две верхние на этот период нужно шимить, цепляя их в плюсу.
А вот и нет. Одну из них (левую, если крутить по час. сртелке) первые 60о из 120о шимить надо к минусу (когда она ниже средней точки треугольника), потом 60о к плюсу, но толку думаю мало, а иначе препятствуем вращению.
Я уже объяснил, что это - всего лишь вариант, использующий зеркальную и поворотную симметрию. Моя первая модель  понятней, вторую я не разбирал здесь.

Для "плавного перехода" от китайского варианта к синусу вторая модель подходит лучше. Для программирования вторая естественнее (экономия памяти), но отследить её логику сложнее.

jeka

Комплектуха вся в наличии, плата почти запаяна. Программатор msp430, что вышибло, пока реанимировать не удалось. Завтра, если повезет, куплю с запасом буферные микрухи 74AHC244 (ее вышибло). Более популярные 74HC244 запаивал, не работает с ней :(
Как и предпологал, вылезло несколько некритичных косячков в разводке. Пока программатор не работает, отлаживаю основные цепи (стабилизаторы, драйверы и прочую обвязку).
LiFe A123 40AH/78v, max-e, крошка 3 витка.
На форуме бываю нерегулярно, поэтому лучше звонить чем писать в личку. Телефон adaptto: +7 495 215 2878.

Sergey M

Привет всем. А какая себистоимость по итогу вышла у платы?

Vetal

Цитата: Sergey M от 16 Июнь 2010 в 20:57
Привет всем. А какая себистоимость по итогу вышла у платы?
Себистоимость включать должна по идее все расходы, от времени на разработку и настройку до всех израсходованных деталей. Вопрос напрашивается, что Вам даст эта себистоимость, да и вряд ли ее автор считать будет, т.к. надо сидеть и расписывать все расходы и затраты времени, на что тоже надо время. Себистоимость одного экземпляра во много раз выше серийного изделия. Можно примерно предположить сумму - дофигища :)

jeka

Себестоимость изделия (комплектующие+плата) получается 4000руб если поездить по конторам (3000р - основные детали+1000 на плату и россыпуху, которую не считал) или 6000р по ценам чипа-дипа.
Это за сам контроллер. Если на руль вешать дисплей, то еще примерно 2к руб.
На разработку сейчас потратил около 10000р
LiFe A123 40AH/78v, max-e, крошка 3 витка.
На форуме бываю нерегулярно, поэтому лучше звонить чем писать в личку. Телефон adaptto: +7 495 215 2878.

jeka

Давно новостей от меня не было.
Итак, колесо уже крутится :) Пока от датчиков холла, без интерполяции, но синус готов.
Сразу всплыл косячок. При кручении колеса видно, что датчики холла расположены не строго под 120градусов друг к другу. Т.е. при очень низкой скорости вращения на разных периодах колесо на ощупь крутится с разной силой. Если опережение уменьшать - то с одних магнитов соскакивает, на других зависает.
Возникла идея сделать калибровку.
Суть калибровки такова: колесо очень медленно (и обязательно без нагрузки) крутим синусом без датчиков холла. При этом фиксируем моменты срабатывания датчиков холла и сохраняем углы срабатывания. После при работе когда холл переключает на другую позицию, подстраиваем угол на сохраненную позицию.
LiFe A123 40AH/78v, max-e, крошка 3 витка.
На форуме бываю нерегулярно, поэтому лучше звонить чем писать в личку. Телефон adaptto: +7 495 215 2878.

i

Цитата: jeka от 02 Июль 2010 в 12:52
...Сразу всплыл косячок... ...датчики холла расположены не строго под 120градусов друг к другу...
Скорее всего "косячок" сидит в программе, это более вероятно.
Проверьте прерывания, все ли они могут срабатывать вовремя, не "ресетится"-ли проц (такое бывае когда прерывания стартуют ранее инициализации стека). Если прерывания не используются, проверте длительность главного цикла, не слишком ли он велик и нет ли в нем "мёртвых" петель.

FAS_r7

Цитата: jeka от 02 Июль 2010 в 12:52
Давно новостей от меня не было.  Итак, колесо уже крутится :)
...
Суть калибровки такова: колесо очень медленно (и обязательно без нагрузки) крутим синусом без датчиков холла. При этом фиксируем моменты срабатывания датчиков холла и сохраняем углы срабатывания. После при работе когда холл переключает на другую позицию, подстраиваем угол на сохраненную позицию.
Поздравляю!   Класс, столько упорства и решимости, по белому завидую!   +1 вам
...
Интересная идея. Думаю должна быть полезна, т.к. очень вероятно, что не во все моторы датчики вкрячены строго где надо, особенно в китайских поделках.

zap

#51
То что датчики могут иметь отклонения, это к бабке не ходи. Но при блочном управлении это не должно вносить большую разницу, а вот при синусодиальном это может внести очень существенные погрешности.

Про калибровку датчиков я думал ещё с год назад. Эта функция полезна ещё и тем, что позволит работать и с моторами где датчики со сдвигом 60, и 120 градусов. И фазные провода можно ффтыкать как угодно :)
С уважением,
Андрей

Поражаю масштабностью некопмпетентность (ц) из лички

jeka

Сейчас я доделал синус - крутит. Прям по тем таблицам, что в апноуте.
Алгоритм пока сырой: подсчитываю сколько было тиков ШИМа на текущем интервале (60 град.) датчиков холла. Интерполирую синус на следующий интервал.
Поэтому разница в длине этих интервалов образует стыки синусов.
По ощущениям (испытывал на lyuann, которое с планетаркой) - при синусе стало крутится значительно плавнее. Гул стал существенно тише, особенно под нагрузкой. Но не исчез совсем. Подозреваю что частично из-за стыков. Посмотрел осциллографом - на синус похоже, но немного битый.
Так что датчики холла нужно полюбому калибовать.
Т.к. мой лгоритм начинает интерполировать при достижении небольшой скорости (порядка 0.5-1 км/ч), то когда контролируешь колесо рукой - очень хорошо заметен перепад: прекращаются перескоки между магнитами и немного увеличивается момент. Ток не мерял, насчет КПД не скажу. Скорее всего ток тоже менятся при изменении алгоритма.
Еще есть приколы с имп. понижающим преобразователем, что "i" в схемке использовал. Он при больших токах на полевиках или иногда при касании осциллографом к земле почему-то вырубается. А чтоб включился нужно чтоб на вторичке (контроллере) напрядение упало до 0. А когда подключена отладка и она питает вторичку, напряжение до 0 не падает и чтоб оживить приходится вырубать-врубать отладку.
LiFe A123 40AH/78v, max-e, крошка 3 витка.
На форуме бываю нерегулярно, поэтому лучше звонить чем писать в личку. Телефон adaptto: +7 495 215 2878.

jeka

После перерыва продолжаю заниматься созданием прошивки контроллера.

Задача: как быстро просчитать, сколько тиков откладывать на следующий интервал в B градусов, если предыдущий интервал в A градусов был пройден за N тиков. Т.е. X=N*(B/A).
Как быстро B поделить на A, если A и B имеют значения - около 600 (кол-во градусов *10), скажем, актуальный диапазон - от 500 до 700.
Процессор 16-битный, Можно использовать lookup таблицы до 8КБ размером, а также аппаратный умножитель 16bit*16bit=32bit.

Не совсем точный, но приемлимый алгоритм можно сделать с помощью lookup таблицы: Скажем, так:
I=100+A-B
I=min(199,I); защита от вехней границы
I=max(0,I); защита от нижней границы
X=table[ I ]; Выгребаем значение по индексу I из lookup таблицы в 200 значений.
Этот алгоритм имеет погрешность, т.к. не совсем честный. Возможно что-то с 2мя lookup таблицами?
LiFe A123 40AH/78v, max-e, крошка 3 витка.
На форуме бываю нерегулярно, поэтому лучше звонить чем писать в личку. Телефон adaptto: +7 495 215 2878.