Показано с 1 по 10 из 1349

Тема: Hardella IDE

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    У меня вполне конкретная задача: необходимо за заданное время сгенерировать определенное количество импульсов. Как мне посчитать ускорение ?
    Есть 2 варианта:
    1) Для конкретного значения "начальной скорости" подобрать ускорение, чтобы в итоге разгонялось за нужное время
    Например, если нужно разогнать с начальной скорости 300Гц с ускорением 5'000 кГц/сек, то нужно указывать accelRamp=860000.

    Будет такая картина:
    2017-06-30_860.png
    Общая продолжительность -- 17.82мс

    > 300*0.01782+5e6*(0.01782**2)/2
    => 799

    Т.е. получается 800 импульсов за то время, какое должно было быть при нач. скорости 300 и ускорении 5'000 кГц/сек
    Конкретное значение 8'600'000 я нашёл просто подбором.

    2) Переписать весь stepper блок.
    Последний раз редактировалось Владимир Ситников; 30.06.2017 в 17:34.

  2. #2

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Переписать весь stepper блок.
    Чем новый stepper блок должен отличаться от существующего ?

  3. #3

    По умолчанию

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

  4. #4

    По умолчанию

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

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

  5. #5

    По умолчанию

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

  6. #6

    По умолчанию

    Цитата Сообщение от 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) и вывести общую формулу.

Ваши права

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