Зарегистрирован: Вт май 05, 2009 10:43:42 Сообщений: 1087 Откуда: Россия
Рейтинг сообщения:0
Макетная установка - автомобильный аккумулятор, нагрузка - два электрода в пластмассовом ведре с соленой водой. Как раз у той установки, куда это будет лепиться - выход 15 В 400 А. Автомобильный аккумулятор не сильно слабее.
bad2cat писал(а):
Я так понимаю, там главные потери - динамические на переключателях?
Да, они самые. Там на выходе 10 запараллеленых транзистора IRF4905, шоттки на 600 А, индуктивноость на кольцах из распыленного железа марки 52. Полная гальваническая развязка, силовые цепи связаны по оптике. ОС - изолированный датчик тока на эффекте холла ACS series от Allegro Потери: - нагрев проводников - не бесконечн короткие участки линейной работы полевых транзисторов на время возрастания напряжения на затвоорах -Активное сопротивление переходов транзисторов. -Потери в диодах шоттки -потери в индуктивности
радиусом скажем метр, и длиной пару метров при разрешении 0,01 мм
Да уж, для такой точности, таблица будет ~600К значений
Таблицу можно интерполировать не линейной функцией, а допустим, квадратичной, или более высоким полиномом. Точность растёт очень быстро. Я как-то извращался с полиномиальной аппроксимацией одной ужасной функции. Думаю, для синуса можно что-то аналогичное придумать и быстро считаемое в рамках арифметики с фиксированной точкой (синус в отличие от той функции в математическом смысле очень хорошая функция, и это скажется). Точность можно сделать хоть 10^-10 при желании. Не думаю что размер таблицы вылезет за сотню чисел в сумме по всем коэффициентам всех полиномов.
Зарегистрирован: Вт май 05, 2009 10:43:42 Сообщений: 1087 Откуда: Россия
Рейтинг сообщения:0
Таблица уже неактуальна, допилил модуль - софт считает синус - 9 значащих разрядов с плавающей точкой за 45 тактов. А так как у меня один катет и гипотенуза известны, то через основное тригонометрическое тождество вообще за 30 тактов. Проблема снята. На 168 МГц выше крыши.
П.С. B@R5uk, я к сожалению в высшей математике никогда не был особо силен, и то, что вы кинули по ссылке,- для меня инопланетные разговоры на инопланетном языке о вещах иной цивилизации. .
Расчеты с фиксирванной точкой для меня неактуальны - АЛУ чипа за 1 такт щелкает операции с плавающей точкой.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Зарегистрирован: Вт май 05, 2009 10:43:42 Сообщений: 1087 Откуда: Россия
Рейтинг сообщения:0
Проведя тесты в железе, пришел к тому, что пойду по пути организации "гибридной" логики работы устройства. Что можно(по максимуму) - считать целочисленной арифметикой, что необходимо- с плавающей точкой, поскольку расчетов очень много, ошибка экспоненты накапливается.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Таблицу можно интерполировать не линейной функцией, а допустим, квадратичной, или более высоким полиномом.
Обычно используют не просто полином, а разложение в ряд Тейлора в окрестности текущей точки таблицы. Так получается наилучшее соотношение точности и скорости.
Cat писал(а):
софт считает синус - 9 значащих разрядов с плавающей точкой
Эм... У числа с плавающей точкой одинарной точности мантисса имеет всего ~7 десятичных знаков. Откуда 9 взялось?
FPGAlover писал(а):
Конечно можно, но боремся то за быстродействие.
Это и так один из самых быстрых и точных методов. Можно быстрее, но точность будет страдать.
Обычно используют не просто полином, а разложение в ряд Тейлора в окрестности текущей точки таблицы. Так получается наилучшее соотношение точности и скорости
линейная быстрее и при заданной ТС точности (10^-5) - уж точно не хуже.
Кратенько: Так вот максимальное отклонение для такой таблицы (шаг 0,1 градуса) всего 0,38 ppm в точке 90 градусов (или 0 градусов для косинуса). А минимальное значение 0,00033 ppm в точке 0 градусов. Сравнение производится в середине интервала между табличными значениями, разумеется. А для таблицы с шагом 1 градус размер таблицы будет 360 байт, а наихудшее отклонение от идеального синуса (в точке 90 градусов) - 38 ppm. Внизу в файликах - оба случая для трёх точек аппроксимации.
Стоит ли городить сложные и медлительные аппроксимации по рядам Тейлора? Вряд ли.
Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42 Сообщений: 744 Откуда: Караганда, Казахстан
Рейтинг сообщения:0
Я тут попробовал интерполяцию высоких порядков. Конкретно - конечные разности и первую интерполяционную формулу Ньютона. Исходная таблица синусов - 7 (семь!) значений - для 0, 15, 30, 45, 60, 75 и 90 градусов. Расчет по формуле Ньютона - 11 умножений, 6 делений и штук 20 сложений-вычитаний "точных" (double) чисел, ну, плюс склолько-то манипуляций с индексами и циклами. Ну, еще, для вычисления конечных разностей нужно 21 вычитание, но это можно сделать заранее, подготовив матрицу 7*7, у которой нулевой столбец будет содержать таблицу синусов, а столбцы 1-6 - конечные разности соответствующего порядка.
Так вот, погрешность в диапазоне (0..14) градусов не превышает 0.0035%, причем, что странно, чем меньше угол, тем больше погрешность.
Да, ни разу не вникал в представление плавучки на АРМ, но подозреваю, что у нее есть что-то общее с Системой-360. Так вот, лет 40 назад у нас в политехе происходил массовый переход с ЭВМ "Минск-32" на ЕС ЭВМ, которая клон Системы-360. Там Фортран-4, и там Фортран-4, скопировали, собрали, часть задач пошла молча, а часть начала врать! Выяснилось: у Минск-32 мантисса плавающего числа 28 бит, а у Системы-360 - 23. И эти лишние 5 битов мантиссы оказались весьма критичными, многие численные методы при таком снижении точности вычислений отказались работать. После замены обычной точности на двойную все заработало.
Повторюсь, понятия не имею о плавучке АРМ, но любой четырёхбайтовой плавучке для многих численных методов не хватает точности. Имейте это в виду.
Да, я упражнялся на писюке, на визуальном Си. Могу выложить исходник.
_________________ Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Расчет по формуле Ньютона - 11 умножений, 6 делений и штук 20 сложений-вычитаний "точных" (double) чисел, ну, плюс склолько-то манипуляций с индексами и циклами.
Ужасно! Для простейшей линейной интерполяции между значениями таблицы - 1 сложение, 1 вычитание , 1 умножение, 1 деление, + операции с индексами - 1 деление + 2 выборки из памяти Либо сделать 2 таблицы - 1-я с синусами, 2-я с разницей синусов из первой табл. Тогда на 1 вычитание и 1 деление меньше. Но объём общей таблицы в 2 раза больше.
погрешность в диапазоне (0..14) градусов не превышает 0.0035%, причем, что странно, чем меньше угол, тем больше погрешность.
т.е. 35 ppm (частей на миллион). Это многовато для библио-функции, но лишку для любого прикладного Фурье или анализатора спектра. Там достаточно суммарного, т.е. по всем операциям 0,5%, или, если считать за экран FHD т.е. 1000 линий, должно быть не более размаха в 0,5 пиксела, или 0,25 х10E-3 или 250 ppm, а учитывая, что обычно график на экране занимает не более пол-экрана, то и все 500 ppm точности.
Кстати, для диапазона 0-15 градусов, размер таблицы для линейной интерполяции может быть очень мал. для точности 0,025 ppm (т.е. 0,25 x10E-9 или 9 фактических дес.знаков) это 1200 байт (это позволяет делать длительные расчёты, накопительные). или для точности 0,1 ppm - для одно-двукратного расчёта, размер таблицы можно снизить до 600 байт.
И эти лишние 5 битов мантиссы оказались весьма критичными,
ну это 1,5 десятичных знака добавка. 1. на картинке - первая строка, второй столбец - кол-во дес.знаков.... первый столбец - разрядность мантиссы. там было 8, ну я для вашего случая подставил 5.)
2\a. Вторая картинка - вычисление погрешности табличного синуса при линейной интерполяции на 15 градусах. Полная таблица 0-90 займёт 7200 байт. До 15 градусов в 6 раз меньше - 1200 байт 2\b. Ошибка перемножения БПФ это попытка подсчитать общую ошибку БПФ 1024 точек, используя таблицу синусов с аппроксимацией. Вычисленная дельта (ошибка) берётся 22 раза - 10 бабочек (умножение и сложение) + нормализация и окно. Итого 22 операции. Формула такая - корень кв. из 22 квадратов дельты.
Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42 Сообщений: 744 Откуда: Караганда, Казахстан
Рейтинг сообщения:0
Вы чуточку не въехали. Во-первых, это просто демонстрация возможностей интерполяции высоких порядков, а не предложение "делай так". Во-вторых, для диапазона 15-30 градусов нужно рассчитать свою таблицу конечных разностей, для 15-30-45-60-75-90-105(==75) градусов. И, поскольку в первой интерполяционной формуле Ньютона для диапазона из первого шага (у нас шаг 15 градусов) используются только дельта Y0, их можно просчитать заранее, в виде таблицы:
Код:
x0=0 Y0, dY0, d2Y0...d6Y0 // посчитанное для x0=0 x0=15 Y0, dY0, d2Y0...d6Y0 // посчитанное для x0=15 x0=30 ......
И т.д., до 75 (или 90) градусов.
И вообще, эта формула Ньютона при N=1 дает простую линейную интерполяцию, при N=2 - квадратичную, и т.д. Практически, я бы подобрал величину шага и N, т.е. порядок интерполяции, ориентируясь на скорость и память, применительно к конкретному случаю.
_________________ Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Таблица уже неактуальна, допилил модуль - софт считает синус - 9 значащих разрядов с плавающей точкой за 45 тактов
45 - многовато как-то. У меня на фиксированной точке синус полиномом считается за 27 тактов (на ядре M4). Правда точность немного ниже - погрешность чуть меньше 1e-6. При желании можно ещё примерно в 2 раза быстрее - если сразу массив значений считать.
И "9 значащих разрядов с плавающей точкой" - не верю. У float размер мантиссы меньше чем 9 разрядов - не может в принципе она обеспечить такой точности.
[uquote="Cat",url="/forum/viewtopic.php?p=2419929#p2419929"]И "9 значащих разрядов с плавающей точкой" - не верю. У float размер мантиссы меньше чем 9 разрядов - не может в принципе она обеспечить такой точности.
lg(2^31bit)=9,3 разрядов (+1 бит это знак числа). если конечно самому арифметику делать на фикс точке.
Таблица синусов не влезет ни в какую память, когда надо отрисовать дугу радиусом скажем метр, и длиной пару метров при разрешении 0,01 мм.
Вообще есть метода называется trigonometric identity. Позволяет заменить таблицу фаз с 2^N на две длиной 2^(N/2). Тоесть для 32битной таблицы синуса нужно две таблицы по 65к точек. При этом получаются не интерполированые а истинные значения синуса и косинуса. Для вычисления одной точки нужно два умножения и сложение. Супер шустро потому что на кортексе-м4 это одна команда для 16биток. Пример есть в книжке Digital waveform generation ( https://www.amazon.com/Digital-Waveform ... 1107020972 ). Также описано в старой редакции Титце Шенка Полупроводниковая схемотехника (Москва: Издательство «Мир»: Редакция литературы по новой технике, 1982), страницы 341 и 342 (книжка с зеленой обложкой)
Вообще есть метода называется trigonometric identity. Позволяет заменить таблицу фаз с 2^N на две длиной 2^(N/2). Тоесть для 32битной таблицы синуса нужно две таблицы по 65к точек..
Не нужно, почитайте комменты, Когда вы, программисты, научитесь читать ?)) я даже таблички приводил, что нужно всего 900 ячеек (3600 байт), чтобы удовлетворило 32 бита (10 в -9, меньше 1ppm). И опять, очередной программист, делает "открытие". в этом и отличие радиоинженера- электронщика, от особо одарённых, от программистов. они ничего не проверяют
Не нужно, почитайте комменты, Когда вы, программисты, научитесь читать ?)) я даже таблички приводил, что нужно всего 900 ячеек (3600 байт), чтобы удовлетворило 32 бита (10 в -9, меньше 1ppm).
С чего такая агрессия? человеку нужно было точное решение, варианты с разложением в ряд тейлора и с тригонометрическим оба позволяют выбрать нужную точность апроксимации. Решение линейной интерполяцией это разложение в ряд тейлора с первыми двумя членами. Я бы не стал такое знание выдавать за собственное изобретение, кроме неграмотности ничего не показывает. И да, таблица в 3600 нужной точности не обеспечит, это все тюлька. А большее количество членов ряда автору топика слишком долго вычислять, он поэтому и написал.
И опять, очередной программист, делает "открытие". в этом и отличие радиоинженера- электронщика, от особо одарённых, от программистов. они ничего не проверяют
Да уж куда нам убогим до целого инженера-электронщика...
_________________ Информация по RLC mini находится >тут<
ха-ха, переизбыток лишних знаний у человека затмевает разум. в 100й раз, типичный случай ) опять, "читать не буду, ваши знания - тюлька". програмист зашит программой биоробота "идиота" с синдромом Даннинга Крюгера: "вы все дураки, только я молодец, откуда у вас агрессия, надо нежно со мной, я люблю Эпл и вообще запад". ну это вообще комплексом любовь к западу идёт и предательство своих, может у этой модели и нет этого. но ещё ни разу я не ошибался ) посмотрим дальше.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения