Как стать автором
Обновить
16
0

Пользователь

Отправить сообщение

Превосходное изложение материала по микроконтроллерами! Сам добывал эту информацию с большим трудом. Респект за статью!

Постоянные магниты. Это bldc двигатель. Cogging присутствует, но в работе он может быть устранен программно.

Вот моя разработка такого двигателя от расчётов до разработки ПО по векторном управлению.

https://youtube.com/shorts/C_YTRQ453vM?feature=share

Идея была сделать активную эл.магнитную подвеску в автомобиль.

А это опытный образец по мощности 1:5

Я очень внимательно слушал лекции Teaching Old Motors New Tricks — Part 1/2/3. И лучше чем там врядли мне удастся рассказать.
Нет, его нет в открытом доступе. Но могу сказать, что я разрабатываю активную электромагнитную подвеску для автомобиля и уже есть некоторые успехи: рассчитал опытный образец линейного электромагнитного двигателя 1:10, изготовил его из металла, и реализовал на нем векторное управление с нуля. На данный момент достиг того времени, когда необходимо научить систему удерживать уровень в зависимости от колебаний основания.
>Очень интересно про togle on match, как Вы поняли, что АЦП преобразует не каждый раз?

Экспериментально, я видел, что в CCR записываются новые значения, но в массиве преобразованных значений не появлялись новые.

>Я делал led драйвер buck current mode на g071 и АЦП у меня работал в таком же режиме, capture compare был всегда один и тот же т.к. мне интересно было сэмплить после коммутации.
И я ничего такого не замечал, но я не то чтобы прям проверял.

У меня есть предположение, что если в параметре таймера External Trigger Conversion Edge установлен Trigger detection on the rising/failing edge флаг события по CCR устанавливается и сбрасывается только тогда, когда CNT и CCR равны. и единожды подняв флаг при первом сравнении и сделав преобразование, флаг так и остается висеть не смотря даже на то, что новое значение записано в CCR. Далее при работе в этом же режиме когда произойдет следующее сравнение таймер попытается снова поднять уже поднятый на предыдущем преобразовании флаг но в конечном итоге ADC не увидит никакого изменения флага и останется его ждать. А вот когда флаг при каждом сравнении меняет своё состояние всё работает нормально.

>Ещё вопрос про HAL, почему вы не проверяете, что халовские функции возвращают? Или это просто для удобства восприятия кода?
Это статья не про то, как правильно программировать и обходить различные ошибки. Кому будет необходимо — напишет, в этой же статье я описываю концепцию. Если будет слишком много воды, то самая главная суть описанная в статье будет расплывчата.

Оно было, но я его потом вырезал, т.к. посчитал, что это отход от темы :)

В моем контроллере BLDC мотор управляется с помощью векторного управления. А из векторного управления известно, что всего может быть 8 возможных векторов тока (U+, W-, V+, U-, W+, V-, Zp, Zm). Применяя различную длительность этих векторов, можно задать любой угол и величину DQ тока. Также в моем контроллере, управление осуществляется с частотой 1кГц. Т.е. каждую миллисекунду должны быть измерены токи, которые текут в соответствующих фазах. А поскольку частота ШИМ составляет 20кГц, что в 20раз больше частоты управления, то в момент управления необходимо рассчитать точный момент измерения фазного тока и сделать несколько измерений к следующему моменту управления чтобы скорректировать D ток.
Главная цель была иметь автозар подход к проектированию моего личного проекта.
Сперва я вручную создавал порты, прописывал связи, потом мне это надоело и я решил написать утилиту которая бы делала это автоматически. Когда она немного созрела, я выложил её на всеобщее обозрение.
С указанными вами программами не знаком.

Да, чтобы поддержать формат стандарта работы очень много.
Нет, AGE ещё только в зачаточном состоянии и имеет возможности только для работы с одним MCU. Чисто теоретически я представляю, как сделать разбиение по MCU, но это займёт тоже какое-то время

Ок. Поправил.
Да, очерёдность вызовов runnables настраивается в окне распределения по задачам планировщика. От arxml стандарта пришлось отойти, т.к. решил что если объекты будут связаны друг с другом через guid, то при переименовывании элементов проекта, связи остаются целыми.
Если будет необходимость, то поддержка arxml также будет добавлена

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность