В общем, построил для нескольких значений 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) и вывести общую формулу.