Страница 97 из 135 ПерваяПервая ... 47879596979899107 ... ПоследняяПоследняя
Показано с 961 по 970 из 1349

Тема: Hardella IDE

  1. #961

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Для конкретного значения "начальной скорости" подобрать ускорение, чтобы в итоге разгонялось за нужное время
    Например, если нужно разогнать с начальной скорости 300Гц с ускорением 5'000 кГц/сек, то нужно указывать accelRamp=860000.
    Разве accelRamp - это не ускорение ? Что тогда такое 5'000 кГц/сек, decelRamp ?
    Последний раз редактировалось Newcomer; 30.06.2017 в 18:06.

  2. #962

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Точную формулу можете привести ?
    Формулу чего?
    Формулу того, когда должен возникать импульс?

    s = v0*t + a*t2/2

    Применяем формулу квадратного уравнения, и получаем, что импульс с номером n должен возникнуть в момент tn
    tn = ((v02 + 2*a*n)0.5 - v0)/a

    Но это, конечно, "формула для сферического ШД в вакууме". Т.е. чтобы оценить работу блока PRU_STEPPER на больших ускорениях, нужно в качестве a использовать не accelRamp, а немного другое значение.
    Последний раз редактировалось Владимир Ситников; 30.06.2017 в 18:26.

  3. #963

    По умолчанию

    Я при расчете a пользуюсь такой формулой: a = 2*s/t*t. Но при большом s steper не успевает выдать требуемое число импульсов за заданное время.
    Последний раз редактировалось Newcomer; 30.06.2017 в 18:28.

  4. #964

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Разве accelRamp - это не ускорение ? Что тогда такое 5'000 кГц/сек ?
    Так исходно же был вопрос
    Цитата Сообщение от Newcomer Посмотреть сообщение
    accel_ramp := 5000000,
    accel_ramp := 5000000 Гц/сек == 5000кГц/сек == 5 кГц/мс

    accelRamp это должно быть ускорение. Но при больших значениях ускорения-скорости фактическое ускорение не совпадает с указанным в accelRamp.

  5. #965

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Но при больших значениях ускорения-скорости фактическое ускорение не совпадает с указанным в accelRamp.
    Это интересно. Если я задаю accel_ramp = 5000000, то чему оно будет равно на самом деле ?

  6. #966

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Это интересно. Если я задаю accel_ramp = 5000000, то чему оно будет равно на самом деле ?
    В общем, построил для нескольких значений accel_ramp первые 1000 импульсов, и получается следующая связь между accel_ramp и фактическим a:

    accelRamp = -4e-9 * a2 + 1,7252 * a - 118961
    a = 1e-9 * accelRamp2 + 0,5677 * accelRamp +85109

    Иными словами, если указать accel_ramp = 5000000, то будет a = 1e-9 * 50000002 + 0,5677 * 5000000 + 85109 == 2948609

    Вспоминаем, что когда указывали 5000000, то разгонялось за 23мс.
    Проверяем: 300 * 0,023 + 2948609 * 0,0232/2 == 786 -- т.е. весьма близко к 800.

    И наоборот. Чтобы получить a = 5000000, то нужно указывать accelRamp = -4e-9 * 50000002 + 1,7252 * 5000000 - 118961 == 8407039

    И не забываем, что эти формулы только для min_speed=300.

    Возможно, стоит провести больше экспериментов (для разных min_speed) и вывести общую формулу.

  7. #967

    По умолчанию

    А из за чего такие сложности ?

  8. #968

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    А из за чего такие сложности ?
    Точное решение квадратного уравнения делать на PRU тяжело, т.к. там только целые числа, и умножения-деления-квадратного корня толком нет.

    Можно было бы для каждого импульса применять формулу квадратного уравнения, но тогда пришлось бы для каждого импульса вычислять формулу из #973:
    tn = ((v02 + 2*a*n)0.5 - v0)/a

    Конечно, v02 это константа и вычислять 2an не так сложно, но всё равно остаются квадратный корень и деление.
    Квадратный корень может занимать 0.5мкс, деление до 1мкс.


    Сейчас же используется более простая формула -- без квадратного корня. Из сложных операций только одно деление. Это позволяет экономить ресурсы PRU. Из-за того, что квадратный корень не используется и получается отклонение от "эталонной формулы".

  9. #969
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,255

    По умолчанию

    позволяет ли объем памяти держать таблицу корней?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #970

    По умолчанию

    В моей задаче надо за одно и то же фиксированное время генерировать разное количество импульсов. Число импульсов, которое надо генерировать за фиксированное время может колебаться от 16 до 1120.

    Какова будет формула пересчета a в accelRamp при нулевой начальной частоте ?
    Последний раз редактировалось Newcomer; 01.07.2017 в 11:27.

Страница 97 из 135 ПерваяПервая ... 47879596979899107 ... ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •