Электрофокусер на базе отладочной платы Arduino Uno, часть 3

    Продолжаю описание электрофокусера с блоком управления на базе Arduino. Третья часть посвящена коду микроконтроллера, а так же некоторым тонкостям сборки и настройки.
    Первая часть тут, вторая часть тут.

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


    Код микроконтроллера


    Код микроконтроллера разрабатывался и отлаживался в среде Arduino 1.0.5-r2, последняя версия доступна на githab`е.

    Так как изначально ставилась задача управления только одним фокусером, я не стал пользоваться возможностями ООП. Только управление шаговым двигателем выделено в отдельный класс в библиотеку StepperClass.

    Исходя из поставленой задачи, микроконтроллер должен выполнять следующие основные функции:
    1. Инициализировать фокусер — Setup();
    2. Периодически снимать состояние кнопок и потенциометра с пульта ДУ, управлять индикацией состояния светодиодами;
    3. Общаться с ПО на ноутбуке по RS232 — serialEvent() и SendCmd();
    4. И управлять шаговым двигателем, вращая его с заданной скоростью в заданном направлении, считая шаги с учетом режима микрошага, при необходимости контролирую выход за заданные границы — StepperClass;


    Пару слов о Loop()


    Опрос потенциометра производиться с интервалом, заданным в CheckSpeedTime (по умолчанию 100 мс). Кнопки опрашивают каждый раз, хотя это конечно избыточно, можно так же привязать к CheckSpeedTime .

    Вращение мотора осуществляется через вызов глобальной функции Roll(), которая транслирует его далее на StepperClass.Roll(), мигая при этом светодиодом на пине motorled.
    При изменении текущей скорости любым способом меняется яркость светодиода на пине speedled.

    При достаточно долгом бездействии (задается в ReleaseTime) снимается напряжение с двигателя (ШД имеют свойство активно кушать ток и греться). Безусловна, эта опция «на любителя». По-хорошему, после точной фокусировки фокусер трогать нельзя. В идеале — его необходимо механически зафиксировать, если это предусмотрено конструкцией фокусера. Если этого не сделать, то сняв ток с ШД, мы можем получить небольшое смещение положения фокусера, то есть небольшую расфокусировку. В каждом конкретном случае нужно проверять, приводит ли снятие напряжение к смещению фокусера, и если да – отключать автоматическое снятие напряжения в скетче и, либо снимать его вручную (предварительно заблокировав фокусер фиксатором), либо вообще не снимать.

    Лирическое отступление на тему библиотеки управления ШД
    Существует довольно много библиотек, которые позволяют буквально сходу начать работать с ШД, не разбираясь в деталях. Я попробовал несколько разных, больше всего мне понравилась AccelStepper . Она достаточно популярна, имеет официальные ответвления, например от Adafruit. Для данной и всех подобных задачах она вполне подходит, я пользовался ей в течение примерно полугода. Библиотека универсальная, она не ориентирована на какой-то конкретный драйвер ШД. При инициализации мы указываем управляющие пины — и вперед. Рекомендую!

    Но и у нее есть недостатки. Главный из них — нет поддержки микрошага. В ряде задач это крайне неудобно. Скорости в библиотеке задаются в оборотах в секунду, а позиция в шагах. Очевидно, что сменив режим микрошага, мы получим иную скорость, и неправильное положение. Если режим микрошага не меняется — ничего страшного, единожды вводим поправочные коэффициенты. Но если режим микрошага динамически переключается, ситуация сильно усложняется. Один из вариантов — делать обертку (wrapper), которая запоминает режим и автоматически пересчитывает координаты и скорости. Что я и делал до поры до времени.

    В данном проекте использование AccelStepper вполне приемлемо и оправдано. Я столкнулся с некоторыми странностями и как минимум с одним багом (если поставить скорость в 0 и шагнуть — управление не возвращается, зависаем), но в целом — рекомендую к использованию.

    Разработка собственного класса для управления ШД — вынужденный шаг. В другом проекте работа с микрошагом для меня это стала критически важной и промучившись какое время я написал свою библиотеку, существенно более простую, но зато с поддержкой микрошага и ориентированную на работу с линейкой драйверов от Polulu (A4988, DRV8825). Библиотека очень маленькая, выложена на github, текст заголовочника содержит комментарии.

    Библиотека будет дорабатываться и обновляться. В честности, есть планы по существенной доработке функции Roll() с целью повышения точности и плавности хода (учет пропущенных по времени шагов, режим «догоняем»).

    Использовать разные библиотеки в близких проектах мне не хотелось, поэтому фокусер так же был переведен на StepperClass.


    И еще одно лирическое отступления о единицах измерения
    В данном случае точное знание скорости вращения не дает пользователю абсолютно ничего. Можно провести аналогию с регулировкой громкости в быту — нам не важно, в каких она единицах та или иная ручка, линейная шкала или логарифмическая. Нам важно, что если ползунок внизу — то тихо, а вверху — громко.

    В этом проекте я решил не усложнять жизнь и придерживаться этого же принципа. Как таковая скорость вообще не рассчитывается. Слева быстро, справа — медленно. В то время как код микроконтроллера везде оперирует не скоростью, а интервалом между шагами двигателя, что на практике несколько удобнее.


    Протокол управления фокусером по RS232


    Ничего стандартного или общепринятого в деле управления фокусировочными устройствами я не нашел (хотя честно признаться, рыл не глубоко). В будущем планирую написать ASCOM-драйвер и использовать с BackyardEOS, а с чем-то еще мне вряд ли придется интегрироваться. Поэтому решил использовать свой очень простой протокол:
    168 ID команды (1 байт) параметр команды 13 10


    Контрольной суммы нет, размер команды не ограничивается (только разумным размером буфера приема — 255 байт) и в посылке не предопределен. При приеме команды происходит накопление буфере до тех пор, пока не придет идентификатор конца команды #13#10. После этого идентификатор команды и параметр команды выделяются из буфера и команда выполнятся. Пропуск идентификатора начала или конца команды может привести к пропуску одной команды. На практике это не критично. Более подробно команды и параметры опишу в следующей части, тут это не так важно.

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

    Все команды, кроме FOCUSER_GO_TO_POSITION выполняются сразу. Переход на заданную позицию выполняется в главном цикле, так эта операция может выполняться долго, а нам нужно сохранить возможность отмены операции.
    Фактически, протокол полностью имитирует работу пульта ДУ и даже чуть больше.

    Тонкости адаптации и настройки, а так же некоторые грабли



    Регулировка тока на А4988 и пропуск шагов


    Драйвер ШД А4988 имеет встроенный ограничитель тока, подаваемого на ШД. Штука очень полезная и важная. Как ей пользоваться описано на сайте разработчика. Но у нее есть один интересный эффект. Как мы знаем, при снижении силы тока падает крутящий момент. Как ни странно, конкретно на А4988 в режиме микрошага это может выражаться в регулярном 100% пропуске шагов на определенной фазе. Поэтому в режиме 1/16 запросто можно получить вместе 16 шагов, только 4, или 8. Добавляем тока – и все хорошо.

    Подключение ШД


    При подключении ШД к драйверу желательно не перепутать отводы между парами (см. схемы подключения биполярных ШД). Перепутать отводы внутри пары не страшно, получите вращение в другую сторону. Рекомендую первым делом прозвонить пары отводов и проверить сопротивление обмоток, соответствует ли оно тому, что вам обещали.
    Один раз мне продали ШД под номинальное напряжение 12В, а оказалось, что на самом деле он рассчитан на 2.8В. А я удивлялся — почему он у меня как-то странно ходит, драйвер греется, ардуинка иногда выключается…

    Максимальная скорость вращения, пауза между шагами и микрошаг


    У любого ШД есть максимальная скорость вращения. Обычно — это сотни оборотов в секунду. С точки зрения управления ШД это значит, что существует некий минимальный интервал времени между шагами. Пытаться делать шаги чащи не только бесполезно, но даже вредно — ШД будет дергаться, свистеть, гудеть, но нормально ходить не будет. Это еще одна возможность получить ШД, не желающий ходить нормально. Максимальную скорость производитель указывает тоже далеко не всегда, так что вполне вероятно ее придется определять опытным путем.

    Важный и интересный момент, о котором обычно не пишут — как использование режима микрошага влияет на максимальную скорость и минимальную длительность паузы между шагами соответственно. Отвечаю – использование микрошага практически никак не влияет на максимальную скорость вращения. По крайней мере, несущественно в рамках данной работы. А вот на длительность паузы между шагами — очень даже влияет. Чем более мелкий шаг мы используем, тем чаще нужно давать команду на следующий шаг. В качестве эксперимента я провел тестирование одного из своих двигателей и получил вот такую вот картину:

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

    Легко заметить, что максимальная скорость 0,161 была достигнута в режиме 1/8 микрошага с интервалом между шагами в 125 микросекунд (чистая удача, на полном шаге ее тоже наверняка удалось бы получить с интервалом где-то около 1200). Чуть меньшая скорость 0,139 была получена дважды, в режиме полного шага с интервалом1250 микросекунд, и в режиме 1/16 шага с интервалом 50 микросекунд. Близкая скорость 0,135 была получена в режиме 1/4 микрошага с интервалом 300 микросекунд. Получается, что при переходе от полного шага к 1/16 шага для сохранения текущей скорости интервал между шагами нужно сократить ровно в 25 раз (но не в 16! ).
    Так же видно, что в режиме 1/32 микрошага максимальную скорость получить было бы невозможно. В этом случае нас ограничивается время выполнения loop(), которое на Arduino Uno составляет порядка 30 микросекунд на пустом цикле (по крайней мере так было на «китайце», где я проводил эксперименты).

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

    Что нужно поменять в скетче для адаптации под другой двигатель


    • Максимальное и минимальное значение скорости. Задается в MIN_SPEED_DELAY и MAX_SPEED_DELAY как интервал между шагами в микросекундах. Можно нащупать опытным путем;
    • Микрошаг. Задается исходя из возможностей двигателя в DEFAULT_MS. Если крутящего момента хватает — лучше оставить 1/16;
    • Кол-во шагов на оборот, задается в STEP_PER_REVOLUTION;
    • Нужно ли снимать напряжение с мотора при простое и время бездействия в IsRelease и ReleaseTime соответственно.


    На этом пожалуй все. Совершенно не освещенным осталось приложение под Windows для удаленного управления — программная панель управления фокусером. Возможно изложу в 4-ой части, но пока есть сомнения в целесообразности.
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 11
      +1
      У вас странная путаница с переменной IsRolling:
      1. Она не объявлена нестабильной (volatile), хотя обращение к ней происходит и из обработчика прерывания UART, и из главного цикла.
      2. Ей присваиваются то значения предопределенных констант (HOLD), то конкретные числовые значения (0), то логическое значение false.
      3. Так как Arduino использует C++, почему бы не воспользоваться перечислением (enum{}) для задания вариантов состояний?
        +1
        Спасибо большое за комментарий!

        1. Да, согласен, как-то я не подумал. Поправил, обновил.
        2. Одно или два места — это неаккуратноть при рефакторинге, изначально у этого флага было только два состояния. Есть похожий флаг IsRollingToNewPos, он бывает только HIGH и LOW.
        3. Думаю, что можно. Причина опять таки банальна — когда-то раньше состояний было два, а не три. Кроме того, enum удобен, когда значений много и по ним нужно делать перебор. Честно говоря, мне как-то и в голову не пришло его в этом месте использовать.
          0
          Тип-перечисление идеально подходит как раз для исключения таких ситуаций в жизненном цикле программы:
          • он гарантированно создает уникальные константы
          • он использует оптимальный для архитектуры тип для хранения
          • компилятор будет ругаться на попытку пропустить варианты перечислений в операторе множественного выбора
          • также он будет ругаться на попытку перепутать типы при присваивании


            0
            Да я в общем-то не спорю. Правда последние два пункта в данном скетче не актуальны.
            Заменил объявление с констант на enum, скомпилировалось вообще без правок. Да и править особо нечень, к IsRolling всего два обращения в Loop().

        0
        И управлять шаговым двигателем, вращая его с заданной скоростью в заданном направлении, считая шаги с учетом режима микрошага, при необходимости контролирую выход за заданные границы — StepperClas

        Крайне ненадежное управление, особенно на морозе. Шаговик имеет неприятную особенность — он может пропускать шаги.

        Также не рекомендуется делать шаг меньше одной второй от микрошага. Дело в том, что момент создаваемый шаговиком на дробных значениях шага сильно нелинеен и много меньше, чем указанный. В итоге под нагрузкой ротор физически не будет проворачиваться. Более того, положение в микрошаге неустойчиво и любое дуновение способно провернуть ротор

        Также после завершения фокусировки лучше не снимать напряжение с шаговика. Во-первых, сам принцип устройства позволяет парировать всякие порывы ветра, во-вторых в ходе ночи фокус у вас неизбежно будет плавать. Вам всеравно нужно будет фокусироваться повторно и лучше иметь теплый прибор, особенно если запаса по моменту фактически нет.

        P.S. Как показала практика, для звездного неба если нет возможности сделать фазированный автофокус, то лучший алгоритм это:
        Расфокусировать, чтоб звезды были одного размера. Запоминаем положение, потом проходим фокус и ищем такой же размер «бублика». Запоминаем. Теперь ставим в середину.

        P.P.S. Для особо светосильных систем (уровня единицы) описанный выше алгоритм уже не катит

          0
          Спасибо большое за комментарий!
          Не совсем с Вами согласен, поэтому давайте подискутируем.

          1. По поводу важности пропуска шагов я уже отмечал. Если есть обратная связь в виде человека, корректирующего точность фокусировки — пропуск шага не играет принципиальной роли. Ну шагнем еще раз. Неудобно, но не критично.

          2. Что касается причины пропусков. Шаговик пропускает не потому, что ему так хочется или он такой плохой, а потому, что ему не хватает крутящего момента. О том, что крутящий момент ШД в режиме микрошага может быть существенно меньше номинального я указывал. О том, что в разной фазе полного шага крутящий момент разный – тоже предупредил. Хотя в сети можно найти примеры, когда в режиме микрошага крутящий момент увеличивался, а не уменьшался! Например тут или вот тут (сам не проверял, ручаться не готов). Так что тут не все так однозначно.

          Итак, пропуск шага происходит по причине нехватки крутящего момента. Нехватка крутящего момента может быть обусловлена двумя причинами:
          • Падение мощности двигателя;
          • Увеличение силы трения на фокусере и валу самого двигателя и как следствие, увеличение требуемого для проворота крутящего момента.

          Соответственно наличие пропусков определяется соотношением этих двух моментов – выдаваемого и требуемого.

          Совершенно очевидно, что при отрицательных температурах сила трения на подвижных механических элементах конструкции фокусера может сильно увеличиться (особенно если это рефрактор с длинным фокусером простой конструкции типа «труба в трубе», а не фокусер Крейфорда на подшипниках), и для проворота нужен будет заметно больший крутящий момент. На валу ШД сила трения тоже увеличится, но я уверен — она несопоставимо меньше силы трения на самом фокусере (хотя конечно по-хорошему, надо провести эксперимент).

          Честно признаюсь, я не знаю, как влияет мороз на индуктивность обмоток. Но не думаю, что в худшую сторону. Есть еще какие-то причины снижения мощности ШД на морозе? Попробовал поискать в Интернете, сходу – безрезультатно.

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

          Поэтому я считаю, что в данном случае ШД вполне подходит, а проблема пропуска шагов — это проблема правильного подбора ШД и режима работы. Так, чтобы мощности ШД хватало для того, чтобы во всех ситуациях выдавать достаточный крутящий момент. Рекомендация работать в режиме 1/2 микрошага не может быть универсальной, все зависит от конкретного двигателя и соотношения его крутящего момента с необходимым. Тем более, что режима 1/2 может не хватить по точности позиционирования.

          Честно говоря, фраза «Более того, положение в микрошаге неустойчиво и любое дуновение способно провернуть ротор» меня очень смущает. Складывается ощущение, что у вас ШД вообще без запаса по крутящему моменту был выбран, если его порывом ветра можно было сместить. И что это за фокусер такой, если не секрет? Мне очень сложно представить себе такой порыв ветра, который мог бы как-то сместить фокусер (даже без двигетеля). Разьве что вместе с монтировкой и наблюдателем :) Раньше начнутся проблемы с жесткостью монтировки, тут уже не до фокусера будет.
          Тем не менее, вопрос устойчивости положения ШД в разных фазах полного шага надо изучать, у меня нет точных данных. Хотя с другой стороны, надо ли? Об этом в следующем пункте.

          Приведу конкретный пример. МАК 127, необходимый крутящий момент фокусера при комнатной температуры около 0,4-0,5 кг/см. Я взял ШД с номинальным крутящим моментом 1,2 кг/см. Прекрасно работает в режиме 1/16 без пропусков. Проверял вплоть до температуры -5 С (ниже пока не было). А первый ШД, который я попробовал использовать на этом телескопе имел номинальный крутящий момент 0,5 кг/см. И тоже прекрасно работал на 1/16 микрошага при комнатной температуре. Но начинал пропускать шаги при малейшем перекосе! При этом изменение режима микрошага существенно ситуацию не изменяло.

          3. Касаемо снятия напряжение при бездействии. Я подробно об этом написал в статье. Я считаю, что если конструкцией фокусера предусмотрен механический фиксатор — лучше воспользоваться им. Во-первых, это самый надежный вариант как ни крути. Во-вторых, экономим запас батарей. В-третьих, признаться я несколько обеспокоен наличием греющегося элемента (мотора) в непосредственной близости от телескопа или непосредственно на нем. Если от ШД будет нагреваться труба фокусера, а тем паче – труба телескопа, еще неизвестно что хуже, нагрев или расфокусировка. Но практического опыта у меня нет, так что это только опасения. Свои ШД я старался подбирать так, чтобы они грелись не сильно. Мой опыт работы с МАКом и рефрактором говорит, что температурный градиент – это очень плохо. Для той же фокусировки. В четвертых, можно не беспокоиться по поводу устойчивости удержания положения ШД, если есть такие опасения. Если механического фиксатора нет, мотор греется не сильно и питание постоянное (а не от АКБ) — я конечно двумя руками за непрерывное удержание.

          4. По поводу методов фокусировки. Спасибо, интересный метод. Я пользуюсь маской Бахтинова, оцениваю точность на глаз по положению среднего луча. Единственное, что меня смущает: что значит «все звезды были одного размера»? Мне казалось, что размер дифракционной картины зависит от яркости звезды. Или там зависимости нелинейная и в определенный момент различие не существенно?

          И еще раз спасибо за комментарий. Выбор ШД — очень важный этап.
            0
            Увы, первые две статьи я как-то пропустил и когда писал комент не было времени их читать. Сразу оговорюсь, что мой опыт получен на профессиональных телескопах, где важен был вопрос автоматизации и даже роботизации. Для любительской астрономии, где в подавляющем числе случаев прибор контролируется человеком и нет проблем с самим конструктивом, многие вопросы снимаются.

            2.
            Причины пропуска шага вы хорошо расписали, забыв только одно — подвижка может встать на концевики. Для любителя это может и не страшно, а вот у меня зимой фокус был рядом с одним концом, летом рядом с другим и это напрягало.
            «Более того, положение в микрошаге неустойчиво и любое дуновение способно провернуть ротор» меня очень смущает.

            Если вы посмотрите на принцип работы шаговика, то вы поймете, что при дробном шаге вы получите ухудшение зацепления. Хотя вполне возможно, что есть некий дробный шаг, которой в данном экземпляре даст чуть больший момент от номинального.
            Если потом возьмете и посчитаете создаваемое поле, то заметите, что между зубцами поле ведет себя отвратным образом и промежуточное положение там неустойчиво.
            Выражение про дуновение я применил иносказательно говоря о том, что любое воздействие в промежуточном положении может провернуть ротор в ту или иную сторону. Это важно, когда вы заканчиваете движение.
            Хотя опять же, это не играет роли, когда человек следит за всем непосредственно. Но при автоматизации начинаются проблемы
            Ну и да, гнутия монтировки и самой конструкции фокусировачного узла приводят к его подклиниванию, но вы это и сами сказали.
            0,4-0,5 кг/см. Я взял ШД с номинальным крутящим моментом 1,2 кг/см.

            3-х кратный запас, вот всегда бы так.

            3.Градиент температур от шаговика страшен, если вы отводите тепло прямо на оптику. В противном случае уширение металла довольно быстро перейдет в устоявшийся режим.

            4. Маска Бахтинова это один из фазированных методов фокусировки. Я просто добавил вдруг кому понадобиться.
            «все звезды были одного размера»? Мне казалось, что размер дифракционной картины зависит от яркости звезды.

            Первое — размер дифракционной картины никогда не зависит от яркости звезды. Она всегда одна и тажа и измеряется в угловой мере.
            Яркость звезды определяет высоту гауссианы, уровень же шума на кадре не зависит от размера звезды (кроме особых случаев), отсюда и разница.

            В случае когда мы отходим далеко от фокуса размер изображение определяется уже законами геометрической оптики. Нарисуйте ход лучей для простой линзы и вы все поймете.
              0
              2. Вы имеет ввиду крайние положения фокусера? Соответственно, в этом положении максимальный перекос и как следствие максимальный требуемый крутящий момент?

              Честно говоря, я еще не дошел до таких высот, чтобы рассчитывать поле ШД :)
              Но на сколько я понимаю, положение между зубцами (я так понимаю речь идет и токе в обмотках на разных фазах) — положение устойчивого равновесия. Именно поэтому ШД и делает шаг. Кроме того, на практике я наблюдаю, что если после пропуска шагов какой-то последующий будет бОльший, как бы компенсирующий. Это так?

              3. По поводу градиента температур — Павел как-то на асторофоруме писал про «термоклин (неоднородность воздуха в трубе телескопа), которые дают эффект, аналогичный астигматизму». Соответственно я боюсь не неравномерного расширения металла трубы, а нагрева воздуха в трубе.

              4. По поводу дифракцинной картины — я как раз и имел ввиду разность в визуальном размере из-за того, что крылья гауссианы будут накрыты фоном, поэтому яркие зведы как бы больше. Теперь понятно. То есть расфокусируем значительно сильнее, чем до четкой дифракционной картины. А чем потом измеряете диаметр?

                0
                Прошу простить, написанный комментарий не был отправлен из-за проблем со связью, а я заметил этолько сейчас.

                2. Обычно концевики это упоры, хотя можно придуть системы, где момент резко возрастает сам по себе.
                Но на сколько я понимаю, положение между зубцами (я так понимаю речь идет и токе в обмотках на разных фазах) — положение устойчивого равновесия. Именно поэтому ШД и делает шаг

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

                Сомнительно, скорее всего на пропущенном шаге создалось напряжение, которое на удачном шаге разрядилось.

                3. Есть довольно много примеров, когда в оптический тракт подавался осушенный и чуть подогретый воздух и было только лучше.

                Не важен сам разогрев воздуха в трубе, важна турбулентность, которую он создает. Если вы поставите киловатную печку то да, будут проблемы, в противном случае проблем не должно быть вообще. Хотя, если у вас стабильность атмосферы как на Гаваях, то тут я уже не так уверен.

                4. Наименее зашумленный критерий, что у меня получился — площадь
                  0
                  Добрый день!

                  Но на сколько я понимаю, положение между зубцами (я так понимаю речь идет и токе в обмотках на разных фазах) — положение устойчивого равновесия. Именно поэтому ШД и делает шаг

                  да, все верно.

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

                  Сомнительно, скорее всего на пропущенном шаге создалось напряжение, которое на удачном шаге разрядилось.


                  Если говорить о полных шагах — беспорно, но внутри шага… Если для каждой фазы внутри полного шага положение устойчивого равновесия одно единственное, это как раз все объясняет. И тогда получается что пропуск микрошага не так страшен как пропуск полного шага, ибо нагоним позже, когда хватит крутящего момента. В общем, надо еще поэкспериментировать и поизучать этот вопрос.

                  3. А градиент? Если воздух в трубе разогрет неравномерно и градиент достаточно высок, коэффициент преломления будет различным, отсюда эффекты сродни астигматизму. По крайней мере так я понял понятие «термоклина».
                  Хотя конечно Вы правы в том, что в «наших палестинах» на фоне крайне нестабильной и грязной атмосферы это все может быть не заметно.

                  4. Чтобы посчитать площадь, надо знать диаметр (ну или радиус), поэтому я и спросил как вы его меряете :)

          0
          2. Ну если у нас есть обратная связь. не важно человек это или нет проблема купируется но не полностью. В случае отсутствия фундаментальное свойство — одинаковая величина шага пропадает. Этим соображением, что в сторонних библиотеках нет поддержки микрошага.
          3. Если говорить о термоклине — о слое воздуха с отличным коэфффициентом преломления от окружающих, то это аналогично тому, что в тракт ввели плоскопараллельную призму. Для светосильной оптики это критично, но уже с 2.5 -3 малозаметно.

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

          4.Зачем? Достаточно выделить группу пикселей возвышающуюся над фоном и посчитать их.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое