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

Комментарии: 12

  1. Ogurezzz

    У эникубика что-то похожее, по мотору справа и слева. У каждого свой драйвер и свой шаговик. При парковке обнуляются и потом на оба драйвера одинаковые импульсы подаются step/dir

    • Serge

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

      • Ogurezzz

        TIM1->EGR |= TIM_EGR_UG; //TIM1->SR &= ~TIM_SR_UIF; TIM1->CR1 |= TIM_CR1_CEN; Очистка флага прерывания еще +350нс Это я твой код включил Да, пока один из драйверов шаги не пропустит - все хорошо.

        • Serge

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

          • Ogurezzz

            ТЗ такое: В один момент времени мы запускаем 3 вещи: 1. Таймер 1 (генерация последовательности коротких импульсов) 2. АЦП в режиме DMA с максимальной частотой семплирования (около 1МГц). 3. Еще один таймер (3й )в режиме CaptureCompare на вход. Считает импульсы от начала измерения до сработки компаратора на плате. Серый это мой вариант, без очистки флага прерывания Желтый - твой. Прерыввания выключены в NVIC все по этому таймеру

            • Serge

              и ты боишься разбега или что?

              • Ogurezzz

                Сейчас у меня таймер 1 - ведущий. На его TIM_CR1_CEN ведомые ацп и таймер 3. Просто сейчас получается, что транзистор, который импульс выдает открывается на 300нс раньше, чем я того хочу. Т.е. измерение и отсчет времени начинаются на 300нс позже, чем сам импульс. Скорее всего это потом нивелируется калибровкой, но все же...

    • Serge

      что-то я такое в кукбуке видел, насколько помню, есть компенсаторный режим запуска ведомого таймера, типа два события одновременно происходили кстати, другой вопрос, но похожий: есть 4 оси, по движку на каждую, которые должны двигаться более-менее одновременно и на равное расстояние. Я думаю их засадить на один драйвер или тоже запараллелить драйвера, а в конце каждого рабочего цикла принудительно вгонять в упор, чтобы запоздавшие механически дошли (остальные будут пропускать). Это нормальный подход?

      • Ogurezzz

        Тут проблемы нет. Проблема в том, что как только я генерирую эвент, у меня сбрасывается таймер в 0 и на выход сразу подается единица. Если бы не надо было пускать N импульсов, то в режиме one pulse оно бы взлетело аж бегом

        • Serge

          а если подчинить оба таймера третьему?

Не нашли ответ?

Вам также может быть интересно