Как у нас с трихограммой?
Perelesnik:
Давайте я немного иначе объясню для понимания:
Задача трихограммницы - равномерно высыпать "манку" по гону вне зависимости от скорости полета.
То есть, хоть летим со скоростью 2 км/ч, хоть 102 км/ч, хоть каждые несколько секунд резко меняем скорость полета... во всех случаях на каждом гектаре (или на каждом километре, или на каждом метре) должно оказаться совершенно одинаковое количество "манки".
То есть, стоим - не сыплется, начинаем медленно ползти вперед - начинает чуть-чуть сыпаться, летим с максимальной скоростью - сыплется обильно и щедро. Но в каждом из таких вариантов движения на каждом метре гона будет одинаковое количество манки. Хоть против ветра летим, хоть по ветру... ну и так далее.
Значение скорости полета здесь не главное. Это такое, как бы сказать, вспомогательное, значение, по которому можно измерить пройденное расстояние за единицу времени (впрочем, это и есть определение скорости :) ) ... но для дела нам важно как раз расстояние, на которое нужно равномерно уложить "манку".
Отсюда и пропорция: чем быстрее летим, тем быстрее вращаем колесико.
И подстроечником устанавливается не скорость вращения шнека (!). Скорость вращения - это производная величина от скорости полета и некоего коэффициента "миллилитры на километр". Подстроечником задается именно этот коэффициент. Оперируем при настройке мы только миллилитрами и реальными километрами (метрами). А уже потом это все перекладывается (не нами перекладывается, а программой перекладывается без всякого нашего участия) на скорость полета, чтобы вычислить необходимую скорость вращения колесика в каждый определенный момент времени.
Еще раз: "крутилкой" мы устанавливаем миллилитры на километр обработки. И всё. Больше мы ничего не устанавливаем.
Оно нам и не нужно.
Для того, чтобы миллилитры соответствовали реальности, есть еще калибровка - еще один подстроечник, которым мы подстраиваем коэффициент "миллилитры/оборот колесика".
Для того, чтобы оперировать не километрами, а гектарами (так удобнее), мы имеем третий подстоечник - для установки ширины гона.
Вот и всё: всего 3 значения, которые оператор задает "руками".
Теперь "зачем эти 36 км/ч" нужны. Нужны они просто для того, чтобы при калибровке расходомера не приходилось ехать/лететь с какой-то скоростью, а можно было спокойно сидеть на стуле и никуда не двигаться физически. Без данных о скорости (или при данных от GPS, что скорость = 0) колесико вращаться не будет (что как бы естественно).
Если взять трихограммницу в руки и идти/бежать с ней по улице или ехать с ней в автомобиле, или лететь... будет тот же результат. Но это немного не удобно. Поэтому для настройки/калибровки реальное значение скорости от GPS подменяем каким-то "вымышленным" значением, чтобы создать у трихограммницы иллюзию того, что она движется с какой-то скоростью (что дистанция обработки увеличивается с течением времени), а не лежит спокойно на столе. Обманываем технику, так сказать.
Для принципиальных противников обмана техники всё так же доступен честный вариант с реальным перемещением трихограммницы по местности в процессе настройки/калибровки.
Второй важный момент: почему 36 км/ч , а не, допустим, 200 км/ч? И почему я интересуюсь у пользователей по поводу их реальных скоростей полета при обработке.
Дело в том, что двигатель на дозаторе имеет пределы скорости вращения. Нижний предел не существенный здесь, а вот верхний - имеет значение.
Если программа просчитает, что для обеспечения требуемой дозировки на какой-то скорости реального полета нужно 150 об/минуту, а сам двигатель физически способен выдать максимум 110 об/мин, то, естественно, он и будет вращаться на своих предельных 110 оборотах, и требуемой дозировки не обеспечит.
Если такое случается, то нужно просто поставить более "сыпучее" колесико дозатора из набора, чтобы обеспечить нужную дозировку при данной реальной скорости на оборотах двигателя менее 110 об/мин.
Но как это обнаружить? Как понять, что нужно подобрать именно вот такое колесико?
Можно, конечно, засыпать манку и летать на требуемой скорости, а потом посмотреть - высыпало оно сколько нужно было по расчетам или недосыпало. Если должно было высыпать литр, а высыпало 700 мл, значит, колесико нужно поставить чуток побольше.
Но это неудобно.
Удобнее все определить и настроить на земле, не вставая со стула.
Вот, больше никакой ценности у параметра "36 км/ч" не существует.
Это просто для удобства первоначальной настройки. В работе этот параметр никоим образом не используется и ни на что не влияет.
Для "Ская" и "Бекаса" ставлю 120-130 км/ч, для "Цессны" и "АН-2" (я сам в шоке, что до сих пор люди на АН-2 работают по трихограмме, но это факт) 150 км/ч и выше, для вертолетов тоже свое, для беспилотников - от 12 км/ч (и такое просили) до 60 км/ч...
Но это значение используют техники может раз, может, два раза... пока настройку сделают, а дальше оно годами работает, и больше никто и не вспоминает, что этот режим настройки в трихограммнице существует. И оно фактически никак не используется....
Нет, вру. Используют. Для того, чтобы после полета высыпать остаток манки из бункера. Так удобно, кстати.
реношник:
Спасибо за такое пространное описание. Но я прекрасно понимаю как связан расход со скоростью и т.п..
Но всеравно ваше описание совершенно не дает (мне) понимания принципа расчета в вашей программе..
" То есть, стоим - не сыплется, начинаем медленно ползти вперед - начинает чуть-чуть сыпаться, летим с максимальной скоростью - сыплется обильно и щедро. Но в каждом из таких вариантов движения на каждом метре гона будет одинаковое количество манки. "
Вот именно тут я не понимаю....
Вы откалибровали расход (скорость вращения колесика/шнека) при скорости 36 км,час (или той, что указал заказчик). При полете с этой скоростью расход трихограммы будет соответствовать плану.
Теперь представляю, что коптер летит со скоростью 20 км/ч, понятно, что нужно уменьшить скорость вращения колесика (уменьшаем % заполнения ШИМ).
Но я не представляю как в программе рассчитывается с какой скоростью при этом должно вращаться колесико для новой (20км/ч) скорости ?!
У вас есть какая-то формула для такого расчета или просто есть какой-то СРЕДНИЙ коэффициент пропорциональности ?
Kagor:
"зачем эти 36 км/ч" -плаваючий "0" :)
Perelesnik:
Калибруется не скорость вращения колесика. Единственная калибровка здесь - это определение того, сколько реально высыплется манки за один оборот конкретного установленного в дозатор колеса ( не важно даже, за один оборот, за сто оборотов или за четверть оборота... но, для упрощения, пусть будет за один оборот).
При этом совсем не важно, с какой скоростью это колесо вращается. Хоть 5 оборотов в минуту, хоть 100 оборотов в минуту - объём высыпанной за один оборот манки от этого никак не изменится. Соответственно, эта калибровка будет верной при любых скоростях вращения колеса, так как скорость здесь никак не учитывается - учитывается только объём за один оборот.
И калибровать можно на любой скорости вращения колеса - результат калибровки от этого никак не изменится.
Это единственная калибровка, предусмотренная в данном приборе. Других калибровок нет.
Дальше, зная точное соотношение между одним оборотом колеса и объёмом высыпающейся за этот оборот манки, мы можем из значения обороты в минуту вывести значение миллилитры в минуту ( или в секунду, или в миллисекунду). А также произвести обратную операцию: вычислить необходимые обороты колеса в минуту из значения миллилитры в минуту. А миллилитры в минуту у нас выводятся из установленной дозировки ( миллилитры на километр) и скорости полёта.
Миллилитры на километр ( или миллилитры на гектар при указании ширины гона) мы задаем подстроечником, и эта величина у нас является константой. А переменная величина - реальная скорость полёта.
Никаких средних, усредненных и приблизительных величин в формулах не используется. Только точные значения и точные зависимости этих значений. Благо, что практически все значения находятся в простой пропорциональной зависимости. Все, кроме управляющего сигнала, регулирующего напряжение, подающееся на двигатель. Здесь исключение по причине того, что нагрузка на колесо при работе варьируется непредсказуемым образом.
А в остальном тут простая математика. Примерную логику описал выше. Ну а в результате получаем, что если, допустим, при скорости полёта 20 км.ч. нужная дозировка достигается при оборотах колеса в 50 об.мин., то при скорости полёта 40 км.ч. колесо будет вращаться со скоростью 100 об.мин. и в обеих случаях будет одинаковая дозировка манки на единицу расстояния. Что, по сути, и требуется от трихограммницы. А если скорость будет 0, то и колесо будет иметь 0 оборотов в минуту.
Perelesnik:
Поясню на примере, как работает программа, и как вычисляется необходимая скорость вращения колеса.
Итак, частота вычисления у нас 5 Герц, или раз в 0.2 секунды.
Допустим, в этот момент мы летим со скоростью 20 м/с ( то есть 72 км/ч).
Получаем данные от GPS об этом факте: 72 км/ч.
Ранее мы откалибровали расходомер, и теперь программа располагает коэффициентом "миллилитры на один оборот колеса". Допустим, мы получили 1.2 мл на 1 оборот.
Также мы установили необходимую дозировку внесения. Допустим, 20 мл на 1 гектар.
И еще мы указали ширину гона. Допустим, 50 метров.
Такие у нас исходные данные.
Теперь вычисления:
- Переводим мл/Га в мл/км. При ширине гона 50 метров на 1 гектар получается 200 метров пути. То есть, 20 мл на 200 метров и, следовательно, 100 мл на 1 км.
Это значение никак от скорости полета не зависит.
- Сколько миллилитров манки нам нужно высыпать за 0.2 секунды при скорости полета 72 км/ч ?
За 0.2 секунды мы должны пролететь 4 метра (20 м/с * 0.2 с). 100 мл на 1 км - это 0.1 мл на 1 метр. Следовательно, 0.1 мл/метр * 4 метра = 0.4 мл.
Примечание: в реальных условиях работы программы никогда не бывает ровно 0.2 секунды по таймеру. Программа работает в цикле, цикл занимает некоторое время, поэтому достижение условия " > 200 миллисекунд" может наступить при значении и 201 миллисекунда, и 205 миллисекунд. Для вычислений берется реальное значение. То есть, не 200 миллисекунд, а сколько реально получилось.
Для упрощения здесь примем вариант, что промежуток времени составил ровно 200 миллисекунд, или 0.2 секунды.
- Итак, зная, что за 0.2 секунды мы должны внести 0.4 мл манки и зная, что 1 оборот колеса нам дает 1.2 мл этой манки, определяем, что за 0.2 секунды колесо должно провернуться на 1/3 оборота ( 0.4 / 1.2).
- Какие обороты в минуту должно иметь колесо в данный момент, чтобы за 0.2 секунды оно провернулось на 1/3 оборота? Считаем: 1/3 / 0.2 * 60 = 100 оборотов в минуту.
- Обращаемся к показаниям подпрограммы, вычисляющей реальные обороты двигателя на основании показаний энкодера, чтобы узнать, с какой реальной скоростью вращается колесо в данный момент. Допустим, что в предыдущие 0.2 секунды мы летели с меньшей скоростью, и у нас были другие расчеты, и потому сейчас колесо вращается со скоростью 95 об/мин.
Но теперь мы летим быстрее, и нам нужно уже 100 об/мин.
Поэтому, вносим поправку в PWM , который у нас управляет напряжением, подаваемым на двигатель. Увеличиваем его на (100-95) * коэффициант. Коэффициент этот был выведен опытным путем так, чтобы двигатель наиболее адекватно реагировал на вносимые поправки... и этот коэффициент по сути просто отражает специфику поведения конкретного вида двигателей. Я его вычислил уже давно, и просто использую в каждой программе, где применяется вот именно такие двигатели.
Ну, допустим, коэффициент этот равен "2".
Тогда поправка будет (100-95) * 2 = 10.
Смотрим, какой был PWM в предыдущем цикле. Допустим, он равнялся 120. Новое значение будет 120 + 10 = 130.
Даем поправку на двигатель и смотрим, что получилось. А получилось, допустим, 98 об/мин. Значит, вычисляем следующую поправку: (100-98) * 2 = 4.
Предыдущее значение PWM у нас теперь 130, поэтому новое будет 130+4 = 134.
Даем на двигатель это значение и смотрим результат. Допустим, он теперь стал 105 об/мин. Вычисляем новую поправку (100-105)*2 = -10. Вносим поправку: 134 - 10 = 124.
И снова проверяем... пока не получим 100=100 и поправка = 0.
Вот так и живем ;)
Конечно, в реальности не бывает таких невероятных ускорений полета, как я взял для примера, поэтому в реальности все происходит гораздо-гораздо более плавно по поправкам. Но здесь взял такие данные просто для наглядности, чтобы не возиться с цифрами, отличающимися на несколько сотых или даже тысячных.
Навигация