Как у нас с трихограммой?

<< < (11/47) > >>

Perelesnik:
Теперь "бонусом" об еще одном режиме работы дозатора.

Режим такой существует по той причине, что двигатели имеют не только верхний предел скорости вращения, но также не очень стабильно работают на слишком низких оборотах (получаем большой ампераж при малом подающемся напряжении, что может уменьшить ресурс работы двигателя - а это нам никак не нужно).

Данные двигатели хорошо себя чувствуют в диапазоне от 50 до 100 (110) об/мин. Больше 110 они физически не способны, это уже я писал выше, а вот что делать, когда нужно дать меньше 50 об/мин?
Допустим, мы работаем на вертолете или мультикоптере, и в какой-то момент работы у нас скорость оказывается такой, что двигателю трихограммницы нужно выдать всего 10 или 20 об/мин?

Или даже всего 5 об/мин...

Если мы поставим программе задачу обеспечить эти 5 об/мин по тому алгоритму, который я привел в посте выше, добра из этого не получится. Двигатель будет пытаться это сделать, но... фактически начнет просто мучительно гудеть и активно разогреваться, пока все возрастающая сила тока при почти неподвижном роторе не угробит обмотки этого ротора.

Поэтому, в данном случае программа переходит в импульсный режим работы.

Как это работает:

Когда программа обнаруживает, что нужна скорость вращения меньше 50 об/мин, отключается предыдущий алгоритм управления двигателем и включается другой алгоритм.

Новый алгоритм работает по таймеру. Период срабатывания таймера примерно 1 секунда (почему примерно - писал выше). Для вычислений берется реальное значение тайминга.

Снова разберем на примере. Для наглядности возьмем данные те же, что и раньше. Но только скорость полета у нас будет не 20 м/с, а 5 м/с.

- Итак, при скорости 5 м/с мы за 1 секунду пролетим именно 5 метров.

- Знаем по предыдущим вычислениям, что на 1 метр нам нужно высыпать 0.1 мл манки. Следовательно, на 5 метров нам нужно высыпать 5 * 0.1 = 0.5 мл.

- Зная, что за один полный оборот колеса мы высыпаем 1.2 мл манки, определяем, что на 0.5 мл нужно произвести 0.5 / 1.2 = 0.42 оборота.
На самом деле, программа для внутренних вычислений не использует значение "обороты в минуту". Вместо этого она оперирует данными энкодера, которые соотносятся как 870 шагов (сигналов с энкодера) на 1 полный оборот колеса.
То есть, для программы итог вычислений будет выглядеть не как 0.42 оборота, а как 365 шагов.

- Запускаем двигатель на оптимальной скорости вращения (хз на какой скорости, если честно, просто даем высокий уровень PWM, чтобы двигатель гарантированно начал вращаться).

- Отсчитываем требуемые 365 шагов и просто отключаем двигатель, обнуляя значение PWM.

- Так как двигатель и вся его трансмиссия имеет некоторый момент инерции, да еще и момент отключения может не очень точно совпасть с нужным моментом (программа работает в цикле, поэтому условие "> 365" может наступить и при значении 370, например), то до момента полной остановки колеса мы получим значение, большее, чем 365. Ну, допустим, энкодер насчитает нам аж 380 шагов вместо заданных 365.

Но нам же нужно получить точную дозировку на нашем поле. Так что делать?

А мы на следующем цикле просто вносим поправку на величину фактического расхождения, который имели в предыдущем цикле.

То есть, 380 - 365 = 15 (это то, что мы лишнего накрутили). Поэтому в следующем цикле задача будет уже не 365, а 365 - 15 = 350 шагов.

В результате, дебет с кредитом сойдутся :)  Мы внесем на 1 гектар именно столько, сколько и загадывали.

реношник:
Ответ #50 : 19.12.2018, 10:26:13

Вот теперь стало понятно... Просто я не думал, что вы пошли таким не рациональным путем... Но каждое решение имеет право на существование...

Perelesnik:
Цитата: реношник от 19.12.2018, 20:28:20 pm

Ответ #50 : 19.12.2018, 10:26:13

Вот теперь стало понятно... Просто я не думал, что вы пошли таким не рациональным путем... Но каждое решение имеет право на существование...


А какой путь рациональный? А то я за эти годы уже много вариантов перепробовал и перепроверил, пока не остановился на вот таком. Он оказался самым точным.

реношник:
Цитата: Perelesnik от 19.12.2018, 20:38:56 pm

Цитата: реношник от 19.12.2018, 20:28:20 pm

Ответ #50 : 19.12.2018, 10:26:13

Вот теперь стало понятно... Просто я не думал, что вы пошли таким не рациональным путем... Но каждое решение имеет право на существование...


А какой путь рациональный? А то я за эти годы уже много вариантов перепробовал и перепроверил, пока не остановился на вот таком. Он оказался самым точным.


Чуть позже скомпоную материал и покажу, пока все разрознено ...

реношник:
Как обещал, немного про ЖПС...

По моему мнению использовать 10Гц совершенно не оправдано...

1 . собрал такую конструкцию на Wemos XI (32MHz)

 

2 . набросал программку.
в ней идет чтение КАЖДОЙ посылки !!! парсинг БЕЗ костылей (библиотек). ЖПС модуль отправляет ТОЛЬКО ОДНУ строку, частота 5 Гц...



3 . результат в мониторе - между посылками "луп" проходит 5 (пять) итераций !!!  ВСЕГО ПЯТЬ, при том, что там ничего не выполняется !!!
Если добавить вывод еще пары строк, то количество пустых проходов уменьшится. Не говорю про, что что будет если напихать обработку энкодера, управление ШИМ, а если еще и парсинг с "костылями"...
Тут и UBX  не спасет ...


Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница