Jump to content

    

amaora

Участник
  • Content Count

    511
  • Joined

  • Last visited

Community Reputation

0 Обычный

About amaora

  • Rank
    Знающий

Recent Profile Visitors

4465 profile views
  1. Уверен. Но у меня нет цели делать именно возврат энергии, главная функция тормоз, а рекуперация побочный и не всегда желательный эффект. При большом токе торможения на низкой скорости рекуперации конечно уже не будет.
  2. Не так много вариантов чтобы на самокате аккумулятор не смог принять ток регенерации при торможении. Резисторы нужны тем кто питается от источника в который нельзя возвращать энергию. У меня есть тестовый самокат со своим контроллером. Резистора нет. Механического тормоза нет. Аккумулятор слабый на ~3 Ач. И ничего тормозится хорошо и плавно.
  3. То есть это попытка доработать контроллер, который умеет тормозить только с помощью КЗ обмоток. А хочется регулировать момент торможения. Когда делается КЗ обмоток, ток возрастает до значений ЭДС/сопротивление_обмоток, почти вся энергия при этом рассеивается на сопротивлении обмоток. Если начать регулировать тормозной ток и понизить его, то обнаружится, что мотор возвращает энергию в питающую сеть. Это будет происходить независимо от того хотим мы рекуперацию или нет. Больше ток - больше потерь, энергия рассеивается в моторе. Меньше ток - меньше потерь, энергия возвращается. Если источник не может принять требуемую энергию за требуемое время то приходится рассеивать ее в резисторе (или пытаться что-то делать с конденсаторами). На низкой скорости когда ЭДС мала, ток торможения может оказаться недостаточным. На таком тормозе нельзя будет остановиться на горке, будете ползти вниз с некоторой малой скоростью. Если уверены, что мотор выдерживает КЗ обмоток на полной скорости с инерционной нагрузкой, то можете делать такое торможение. Но избавиться от рекуперации и одновременно получить регулировку тока торможения будет непросто. Подумайте на тем, что произойдет в ваших схемах если закрыть ключ после того как ток достигнет некоторого (заданного) значения.
  4. Тормоз это всего лишь изменение направления тока, этим занимается контроллер, не нужно дополнительных выпрямителей и ключей. А эти тормозные доработки будут конфликтовать с контроллером, очень просто сделать КЗ и остаться без тормозов. Механические на этот случай и нужны.
  5. Код привязывается к данным. Нельзя извне например сбросить состояние, или сделать несколько экземпляров данных обрабатываемых одной функцией.
  6. Зачем volatile? pix = *bmp++; *outpix++ = (pix & 1) ? 0xFFFF : 0; *outpix++ = (pix & 2) ? 0xFFFF : 0; *outpix++ = (pix & 4) ? 0xFFFF : 0; *outpix++ = (pix & 8) ? 0xFFFF : 0; *outpix++ = (pix & 16) ? 0xFFFF : 0; *outpix++ = (pix & 32) ? 0xFFFF : 0; *outpix++ = (pix & 64) ? 0xFFFF : 0; *outpix++ = (pix & 128) ? 0xFFFF : 0;
  7. То, что Вам нужно это называется оптимизация доступа к регистрам периферии, а не атомарность. У меня подобная задача возникала с обертками над GPIO. Несколько записей в один регистр можно свернуть в одну, но компилятор видя volatile в объявлении не может этого сделать. Но я пришел к тому, что вся эта возня не стоит затраченных усилий, лучше оставить неоптимальный но простой и надежный вариант. А при особой необходимости делать оптимизированные варианты кода на низком уровне, на примере GPIO это может быть чтение нескольких входов одной операцией. Один из простых вариантов, уже предлагали выше, делать локальные копии. То же что у Вас с макросами, только можно скопировать в локальную структуру, изменить поля и записать обратно. Тогда количество операций перестанет зависеть от количества изменяемых полей. Во что это красиво завернуть в C, вот вопрос без ответа.
  8. Можно несколько объявлений иметь. Можно барьеры расставлять. Локальные копии делать. То, что хочет ТС не получится с volatile. На каждую операцию с битовым полем будет и чтение и запись.
  9. Если в объявлении нет слов volatile, то компилятор может свернуть запись нескольких битовых полей в одно чтение-модификация-запись. Не проверяли?
  10. На максимальной скорости будет так. А здесь скорость 0, так что потребляемая мощность равна i^2*R, выдаваемая 0. Провода хорошо охлаждаются, и они короткие, важнее перегрев обмоток, их доля в общем сопротивлениии много больше.
  11. Радиус 0.1м, значит 10 Нм это ~10 кг. При этом ток 20А, который можно считать долговременным максимальным для этого колеса.
  12. Это много сложнее обработки датчиков Холла. Возможность использования такого метода зависит от конструкции двигателя. На гироскутерном колесе я получал не больше ~5 Нм, дальше оценка срывается. Сейчас отладил получше, получаю ~10 Нм при фазном токе 20А. Но метод очень капризный и требующий настройки под конкретный двигатель.
  13. П должен быть таким большим чтобы регулятор всегда был в насыщении, лишь небольшая область остается линейной. В пределах этой линейной области находится остаточная ошибка. Если можете так настроить, то траектория регулирования всегда будет предельной (до малой линейной области), ускорение/торможение ограничивается только моментом двигателя и инерцией объекта. Если не можете так настроить, то проблема в задержках скорее всего, запаздывающая оценка оценка скорости, запаздывающее исполнение. Да, управление должно происходить моментом (током), а не чем то еще.
  14. Попробуйте без И составляющей для начала. Простой жесткий почти релейный регулятор из одного П слагаемого. Если и с ним будет раскачиваться и перерегулироваться, то ищите задержки в системе. Если будет хорошо но не устраивает релейная работа и статическая ошибка регулирования, то смотрите на способы ограничения влияния интегральной составляющей или другой регулятор.
  15. На F4 я успеваю считать ~25 бездатчиковых наблюдателей (для компенсации дрейфа сопротивления обмоток при работе на низких скоростях) и еще HFI и контуры управления, все на частоте 30 кГц. Только HFI работает по измерениям токов сделанных один раз за период. А по ссылке измерение производных тока в пределах одного периода, такое я не делал. Измерять успеваю 6 каналов на каждом периоде с помощью 2 АЦП. Еще один АЦП свободен для медленных сигналов. Можно и больше измерять, главное выборку тока расположить точно в центре периода, а остальные измерения можно делать после. Оставшееся время АЦП смотрят нет ли перегрузки по току с помощью analog watchdog.