Страница 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
    Banned
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    позволяет ли объем памяти держать таблицу корней?

  10. #970

    По умолчанию

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

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

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

Ваши права

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