Jump to content

    

amaora

Участник
  • Content Count

    519
  • Joined

  • Last visited

Community Reputation

0 Обычный

About amaora

  • Rank
    Знающий

Recent Profile Visitors

4516 profile views
  1. Странное чего-то делаете, и пишете странное. Вопрос решается правильным управлением все тем же мостом. Не нужны дополнительные схемы буста, выпрямители и другие странные конфигурации. Что действительно может быть полезно, это тормозной резистор, для случая если аккумулятор не справляется или оказывается по каким-то причинам отключенным от звена постоянного тока.
  2. Параметры те, что получаются в результате калибровки на стенде. Понятно, что сигнал нестабилен от температуры, но это не значит, что там просто слагаемое которое от температуры зависит. 1. Калибруем на стенде при нормальной температуре; 2. Калибруем на стенде при другой температуре; Сравниваем результаты. а) Если видим, что меняется только нулевой сигнал, то отлично, та методика из первого поста подходит; б) Если имеем разные масштабы-перекосы (или что вы еще оцениваете на стенде?) то значит и для них нужно тоже строить аппроксимацию от температуры; в) Калибровка не дает требуемого результата на другой температуре, значит даже в рамках этой стендовой калибровки модель не достаточно полная. 3. Калибруем при третьем значении температуры (при четвертом, пятом ..., пока не поймем, что зависит от температуры, а что нет). Да, полиномы для коэффициентов это самое простое решение, "в лоб". Более простое решение можно попытаться найти анализируя данные калибровки на разной температуре и на разных экземплярах акселерометров. Больше ничего не скажу наверно, непосредственно калибровкой не занимаюсь.
  3. Нет, хотел понять в чем вопрос. Ну если не получается, не буду. То есть раздельно калибруется по перекосам-масштабам, при одной температуре. А после хотите отдельно по температуре в неподвижном положении. По вашей ссылке модель и предполагает такое упрощение. Если это не работает то наверно надо предположить, что нельзя зависимость от температуры вот так просто отделить от всего остального. Если есть возможность то я бы попробовал провести эту МНК калибровку при другой температуре (пусть однократно, экспериментально), чтобы понять какие параметры термостабильны а какие нет.
  4. Добились каким путем? геометрическая калибровка в нескольких положениях?
  5. Да, только я прочитал и убедился, что по этим ссылкам есть модели погрешностей акселерометров в достаточно простом виде. Какие-то варианты, если знаете это все то я вопросов не понимаю. Добавка: Есть погрешности, которые предположительно зависят от температуры, другие погрешности, можно считать постоянным. Вы оценили и скомпенсировали зависящую от температуры часть (аддитивно) в условиях неподвижного акселерометра. А теперь ожидаете, что эта компенсация будет работать при движении акселерометра. До этой температурной калибровки измерения акселерометра были достаточно точны во всех положениях? пусть и в одной температурной точке.
  6. https://etu.ru/assets/files/nauka/dissertacii/2016/Dranicina/Dissertaciya_Dranicina_podpis.pdf https://www.radiovega.su/jour/article/view/90/77 https://dspace.susu.ru/xmlui/bitstream/handle/0001.74/267/26.pdf?sequence=1&isAllowed=y ftp://ftp.mao.kiev.ua/pub/journals/knit/2011-17/knit-2011-17-2-02.pdf https://mai.ru/upload/iblock/d22/matasov_tikhomirov_rus.pdf
  7. Нужна подходящая под ваши требования модель акселерометров. Для разных акселерометров и разных требований к итоговой точности (или сложности процедуры калибровки) она будет разная. Может быть от температуры меняется направления осей и/или масштабные коэффициенты. В вашей модели все это загоняется в один эквивалентный нулевой сигнал в одном положении.
  8. Модель слишком простая. От температуры не только нулевые сигналы могут дрейфовать. Если нужно в разных положениях получать точный результат, то и калибровать надо во всех положениях в каждой температурной точке.
  9. Уверен. Но у меня нет цели делать именно возврат энергии, главная функция тормоз, а рекуперация побочный и не всегда желательный эффект. При большом токе торможения на низкой скорости рекуперации конечно уже не будет.
  10. Не так много вариантов чтобы на самокате аккумулятор не смог принять ток регенерации при торможении. Резисторы нужны тем кто питается от источника в который нельзя возвращать энергию. У меня есть тестовый самокат со своим контроллером. Резистора нет. Механического тормоза нет. Аккумулятор слабый на ~3 Ач. И ничего тормозится хорошо и плавно.
  11. То есть это попытка доработать контроллер, который умеет тормозить только с помощью КЗ обмоток. А хочется регулировать момент торможения. Когда делается КЗ обмоток, ток возрастает до значений ЭДС/сопротивление_обмоток, почти вся энергия при этом рассеивается на сопротивлении обмоток. Если начать регулировать тормозной ток и понизить его, то обнаружится, что мотор возвращает энергию в питающую сеть. Это будет происходить независимо от того хотим мы рекуперацию или нет. Больше ток - больше потерь, энергия рассеивается в моторе. Меньше ток - меньше потерь, энергия возвращается. Если источник не может принять требуемую энергию за требуемое время то приходится рассеивать ее в резисторе (или пытаться что-то делать с конденсаторами). На низкой скорости когда ЭДС мала, ток торможения может оказаться недостаточным. На таком тормозе нельзя будет остановиться на горке, будете ползти вниз с некоторой малой скоростью. Если уверены, что мотор выдерживает КЗ обмоток на полной скорости с инерционной нагрузкой, то можете делать такое торможение. Но избавиться от рекуперации и одновременно получить регулировку тока торможения будет непросто. Подумайте на тем, что произойдет в ваших схемах если закрыть ключ после того как ток достигнет некоторого (заданного) значения.
  12. Тормоз это всего лишь изменение направления тока, этим занимается контроллер, не нужно дополнительных выпрямителей и ключей. А эти тормозные доработки будут конфликтовать с контроллером, очень просто сделать КЗ и остаться без тормозов. Механические на этот случай и нужны.
  13. Код привязывается к данным. Нельзя извне например сбросить состояние, или сделать несколько экземпляров данных обрабатываемых одной функцией.
  14. Зачем 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;
  15. То, что Вам нужно это называется оптимизация доступа к регистрам периферии, а не атомарность. У меня подобная задача возникала с обертками над GPIO. Несколько записей в один регистр можно свернуть в одну, но компилятор видя volatile в объявлении не может этого сделать. Но я пришел к тому, что вся эта возня не стоит затраченных усилий, лучше оставить неоптимальный но простой и надежный вариант. А при особой необходимости делать оптимизированные варианты кода на низком уровне, на примере GPIO это может быть чтение нескольких входов одной операцией. Один из простых вариантов, уже предлагали выше, делать локальные копии. То же что у Вас с макросами, только можно скопировать в локальную структуру, изменить поля и записать обратно. Тогда количество операций перестанет зависеть от количества изменяемых полей. Во что это красиво завернуть в C, вот вопрос без ответа.