Bmw-rumyancevo.ru

БМВ Мастер — Автожурнал
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Шаговый Двигатель Без Драйвера — Stepper Motor Run Without Driver

Шаговый Двигатель Без Драйвера — Stepper Motor Run Without Driver

Шаговый двигатель Без Драйвера — Stepper Motor Run Without Driver

Simple best life hack run a 12v

stepper motor without a driver
How to Run a Stepper Motor Without a Driver

Управление шаговым двигателем без драйвера.
Circuit — Stop Frame: 0:13 sec
Parts:
3300 mF capacitor — Конденсатор
12V AC transformer — Трансформатор

If you really like this video then don’t forget to like it.
Share, support, subscribe.

шаговый двигатель, двигатель, arduino, stepper, своими руками, motor, stepper motor, драйвер, схема, чпу, без драйвера, diy, запуск, cnc, шаговый, подключение, мотор, ардуино, подключение шагового двигателя, как сделать, a4988, stepper motor (engine category), driver circuit, nema17, двигателя, stepper driver, шаговый мотор, шаговый двигатель без драйвера, униполярный, драйвера, биполярный, конденсатор, шагового, аналог блока питания, раскрутка, шаговые двигатели, stepper motor without driver, подключить, паять, драйвер шагового двигателя, driver, l298n, engine (literature subject), как подключить, electric motor (engine category), drv8825, stepper motor (invention), without, run, как запустить шаговый двигатель, life hack, трансформатор, электротехника, производство, делаю сам, творчество, без микросхемы, без бп, рукопоп, переменное напряжение, запуск шагового двигателя, без блока питания, жд, хард диск, без контроллера, hdd, технология, mobile, connect, easy driver, программирование, распиновка, вывод, графика, display, graphics, вольтметр, вольтаж, картинка, voltmeter, voltage, дмитрий, скетч, measure, sketch, измерять, напряжение, picture, сам, output, programming, pinout, сделай, screen, шаговик, драйвер a4988, как проверить драйвер, как прозвонить шаговый двигатель, шаговый двигатель подключение, шаговый двигатель проверка, тестер шаговых двигателей, тестер, как подключить шаговый двигатель, как проверить шаговый двигатель, с обычного блока питания, паяльник, часть 1, подключение драйвера, 2дша78, цифровая логика, логика, autoandelectronics, просто, lcd, tft, драйвер для шагового двигателя, дисплей, мобильный, adafruit, utft, гибридный, 6 проводов, торможение, ускорение, режимы работы, шд, шаговики, двухфазные, униполярные, экран, шаговый двигатель униполярный, мач3, драйвер шаговых двигателей, mach3, l297+298, waitalone, схема подключения шагового двигателя, easy hack, hack, electronics hack, stepper motor hack, how to connect stepper to arduino, how to connect stepper motor to arduino, самодельный чпу, чпу станок, 3d printer, nema17 4401, как сделать чпу, самодельный 3д принтер, как подключить шаговый двигатель к ардуино, как подключить шаговый мотор к ардуино, diy cnc, самоделка, эксперимент, cpld microstep, cpld, фарат, емкость, плис, xc2c64a, test cpld, driver micristep, microstep, кондер, звезда, часть 2, эмитация бп, жесткий дсик, мастерить, пальник, переменка, сдвиг фазы, транс, переменый ток, мотор нема17, шаговый нема17, sata power, шаговый двигатель биполярный, шаговые двигателя биполярные и униполярные, printer, калибровать чпу, шаговый двигатель datasheet, шаговый мотор включить, включить шаговый двигатель, как работает шаговый двигатель, станк чпу, подобрать шаговый двигатель для чпу, как подобрать шаговый двигатель для станка чпу, включить моторчик от cd или hdd, podkluchenie_dvigatelja_cd_rom, как подключить двигатель от cd rom, шаговый двигатель для станка чпу, шаговые двигателя, какой подойдет для чпу, шаговый двигатель из принтера, шд из принтера, запустить шаговый мотор, как подключить шаговый мотор, stepper motor nema17, драйвер двигателей, h мост, холдер, stepper nema17, motor nem17, шаговый мотор нема17, нема17, шаговый двиготель, 18650, ардуино мотор-редуктор, крутим шд, станок из принтера, питание на шаговый двигатель, как подсоединить шаговый двигатель, device driver (software genre), станок, запуск шд., драйвер шд, простой драйвер шд, как запустить двигатель от cd rom и hdd, pulse generator connection, grbl, laser cnc machine, cnc machine, из принтера, из приводов, фрезерный чпу, станок дома, сделай сам, строим чпу, step motor, электроника, fl57sth76-2804a, запуска, радиоэлектроника, радиолюбитель, easy driver 4.4, l293d, how-to, way, baseball, series, yankees, sports, stadium, game, gigabyte, простой, запуск шагового двигателя без драйвера, mlb, league, you, always, auto, motorcycle, boat, train, sox, airplane, как запустить, техногенный апокалипсис, free energy, generator, capacitor, led, bulb, управление, купить драйвер, control, power supply, transformer, шаговый двигатель купить, arduino motor, без, шаговый двигатель для чпу, транзистор, volts, 9v, 12v, circuit, как запустить шаговый двигатель без драйвера, настроить, создать, сделатьъ, принцип работы, как работает, такие дела, absheiper, сделать, taskalfa, шаговым, схема подключения звезда и треугольник, odd, запускать шд от fdd, как пустить шаговик, шагаем, двигателем, шагать, kyocera,

Управление шаговым двигателем с помощью Arduino и последовательного

Я хотел бы создать программу Arduino, которая получает (через последовательный канал) только две команды: «1» и «2». С помощью этих команд я хотел бы Arduino управлять таким шаговым двигателем, как этот:

  • Если я пишу «1» на серийном номере, двигатель должен двигаться по часовой стрелке
  • Если я пишу «2» на серийном номере, двигатель должен двигаться против часовой стрелки

Я уже написал код, который работает только наполовину:

Когда он активен, программа ожидает команды на serial port и успевает прочитать их. Проблема в том, что в обоих случаях (1 и 2) двигатель движется сначала по часовой стрелке, а затем против часовой стрелки, и это не тот результат, которого я хотел бы достичь.

Можете ли вы помочь мне в этом начинании?

2 ответа

  • Управление двигателем DC с помощью Arduino Mega и Simple-H HV Motor Shield

Я пытаюсь управлять одним двигателем DC, используя простой экран двигателя HV и соединение H-моста. Мне нужно контролировать как скорость, так и направление с помощью последовательного монитора (например, f 220 будет означать вперед со скоростью 220). Вот код, который у меня есть: М1 вызывает.

Привет, я совсем новичок в Arduino и электронике, так что потерпите меня. У меня есть проект по управлению шаговым двигателем с помощью Matlab и Simulink. А сейчас я просто хочу запустить эту штуку. Я подключил схему, протестировал ее с помощью простого кода для шагового двигателя, и она работает.

Использование операции сравнения вместо оператора присваивания типа so.Double цитата около 1 не требуется, так как переменная имеет тип данных int . Используйте команду else после первой команды if statement, чтобы работала только одна из команд.

Хорошо, вот окончательный код; все работает!

Похожие вопросы:

У меня есть простая схема H-моста , настроенная по этой схеме: Я пытаюсь управлять маленьким двигателем DC через этот H-мост с помощью Arduino Uno , но я никогда раньше не программировал ни один из.

Читать еще:  Электрическая схема двигателя honda

Я строю систему с Arduino Uno , силовым щитом ( REf для моделирования ) и биполярным шаговым двигателем. Я не могу запустить двигатель с помощью шаговой библиотеки из Arduino. Я создаю экземпляр.

У меня есть вопрос относительно управления шаговым двигателем при использовании стека Microchip TCP/IP. В прошлом я использовал таймер для управления моим шаговым двигателем. Я устанавливаю период.

Я пытаюсь управлять одним двигателем DC, используя простой экран двигателя HV и соединение H-моста. Мне нужно контролировать как скорость, так и направление с помощью последовательного монитора.

Привет, я совсем новичок в Arduino и электронике, так что потерпите меня. У меня есть проект по управлению шаговым двигателем с помощью Matlab и Simulink. А сейчас я просто хочу запустить эту штуку.

Я изучаю проект по управлению роботом с visual studio C#. я хочу управлять шаговым двигателем, соединенным arduino с положением трека. Но я не посылаю значения трека в виде целого числа в arduino по.

Я работаю с шаговым двигателем, подключенным к контактам 9, 10, 11 и 12 на Arduino Uno. Для того чтобы вращать шаговый двигатель, я написал вспомогательный метод. Этот конкретный шаговый двигатель.

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

Использование android вещей (Pico i.MX7D I/O) как управлять 4-контактным биполярным шаговым двигателем . Можете ли вы решить мне конфигурацию пин-кода? Это моя установка если кто-нибудь знает о step.

Я совершенно новичок в шаговых двигателях и изо всех сил пытаюсь управлять шаговым двигателем с помощью Android вещей. У меня есть программа Arduino для управления шаговым двигателем Nema 23.

Управление шаговыми двигателями с помощью Simatic S7-1200 с ограниченным количеством импульсных выходов

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

Раннее было принято решение построить систему автоматизации на базе одноплатного микрокомпьютера Orange pi plus 2e и микроконтроллера Arduino Nano. Для этих плат нашлось применения для другого подобного проекта, но это уже другая история. Но в последствии, после обсуждений всех преимуществ и недостатков остановились на PLC CPU 1214C DC/DC/DC с каталожным номером 6ES7 214-1AG40-0XB0 у которого на борту можно сконфигурировать до четырех импульсных выводов управления и модуль дискретных выходов SM 1222 DQ16 x 24VDC с каталожным номером 6ES7 222-1BH32-0XB0. Шаговые двигатели были выбраны из серии KRS56, управляемые драйверами TB6560 V2.

Выше представлено изображение из functional manual S7-1200 Motion Control V13 SP1 для понимания общей картины структуры управления


Рисунок 1 – схема выходов управления драйверами ШД и схема подключения ШД

Загвоздка состояла в том, что хотели найти компромис между бюджетом и оптимально выбранными комплектующими. И первая задача по управлению состояла в том, что на борту PLC только четыре импульсных вывода, а в исходном проекте необходимо было управлять восьмью шаговыми двигателями и одним сервоприводом по ШИМ. После ознакомления с тех-требованиями алгоритма управления системы выяснилось, что одновременный запуск приводов (шаговых двигателей) был не более двух единиц. И конструкция задвижек позволяла оставлять их без удерживающего момента. Поэтому решил реализовать программно так, чтобы один импульсный вывод можно задействовать для множества драйверов шаговых двигателей, управляя разрешающим входом EN драйвера. Импульсный вывод ШИМ управления сервопривода, конечно, оставался обособленно, т.к. это является аппаратно сконфигурированным. Таким образом я реализовал функциональный блок управления ШД. Алгоритм управления системой был выполнен в программном пакете TIA Portal v14 на графическом языке LAD.


Рисунок 2 – Функциональный блок управления драйвером ШД

Внутри функциональный блок представляет собой простую дискретную логику на лестничной диаграмме с сохранением состояния и таймаутом на срабатывание


Рисунок 3 – Функциональный блок детально

Настройка и программирование импульсных выходов для управления шаговыми двигателями подробно расписаны в мануалах, например STEP 7 S7- — 1200 Motion Control V13 SP1, также в сети есть видеоролики с объснением требуемых шагов
Приведу лишь пару скриншотов настройки импульсного выхода в моем проекте


Рисунок 4 – параметрирование импульсного выхода

Для управления непосредственно самим ипульсным выходом необходимо использовать библиотечные функции такие как MC_Power, MC_Home, MC_MoveAbsolute и прочие в данном разделе. Подробное описание функций находится в справочном разделе TIA Portal и в указанных мануалах.

На следующем рисунке приведены части логики, где в части и части 2 показано использование библиотечных функциональных блоков управления ипульсными выходами. Блок MC_Power используется для инициализации аппаратного управления, блок MC_Home – для обнуления позиции. Так как логика работы управления ШД поворотной части задвижки основывается на выборе точных позиций опытным путем, то используется блок MC_MoveAbsolute, где значения точных позиций и скорость являются уставками и расположены в соответсвующих тегах блока данных. На скрине упущены промежуточные преобразования между управляющим экземпляром блока FB1 SHUTTER и блоком MC_MoveAbsolute. Если кратко, то выходные сигналы из первого блока, такие как SW_OUT_EN – разрешение запуска драйвера ШД, являются входными для второго блока в качестве сигнала “execute”. На рисунке в части 3 и 4 показано управление выходными сигналами PLC, идущими на входа драйверов ШД, которые также формируются в блоке FB1 SHUTTER. Другими словами, можно создать множество экземпляров данного блока FB1 SHUTTER, связанного с управляющими библиотечными блоками импульсных выходов. Но соответствующие драйверы ШД будут задействованы только при наличии (или отсутствии в зависимости от схемы подключения) разрещающих входных сигналов, которые можно формировать отдельными ветвями логики.


Рисунок 5 – Логика управления импульсным выходом

Алгоритм управления двухполюсным шаговым двигателем в микрошаговом режиме

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

Читать еще:  Что такое двигатель tbi

Двухполюсные шаговые двигатели предполагают простой способ позиционирования с выбранной скоростью перемещения и не требуют применения замкнутых контуров регулирования с использованием датчиков углового положения и других аналогичных средств. Для улучшения рабочих характеристик можно применить метод, известный как микрошаговое позиционирование, при котором на типовой сигнал, обеспечивающий работу в полношаговом режиме, накладывается синусоидальный ток.
Шаговые двигатели являются замечательными исполнительными устройствами для управления перемещением, поскольку они могут работать в пошаговом режиме. Эта особенность предоставляет два преимущества:
– требуемое положение легко достигается перемещением на расчетное число шагов с последующей остановкой;
– точность скорости перемещения достигается за счет управления шагами во времени.
Шаговый двигатель может останавливаться в заданном положении и удерживаться в этом состоянии независимо от изменений внешней нагрузки, и в то же самое время скорость вращения двигателя может поддерживаться равномерной даже при изменении напряжения источника питания. При использовании других типов двигателей без применения замкнутых контуров регулирования добиться таких результатов невозможно, в то время как для шаговых двигателей ничего подобного не требуется.
Однако шаговые двигатели имеют и свои недостатки, которые в некоторых случаях создают существенные проблемы. Одним из самых серьезных недостатков является резонанс или вибрации, возникающие при генерации последовательности шагов в моменты изменения знака угловой скорости. На рисунке 1 показано, что происходит с угловым положением двигателя в режиме полного шага для осуществления требуемого позиционирования. Когда ротору необходимо переместиться на следующую позицию, расположенную на расстоянии 1,8° от его текущего положения, перед достижением заданной цели он неминуемо будет колебаться в определенных угловых пределах.

В момент принятия решения о следующем шаге важным параметром является расстояние между целью и текущим положением. Расстояние, проходимое ротором, во многом зависит от его стартовой позиции, и от того насколько она удалена от цели. Данное расстояние определяет скорость вращения ротора, изменение которой может привести к вибрации двигателя и потере им крутящего момента. Очень легко проследить, когда появляются вибрации на каждом конкретном двигателе: нужно медленно ускорять двигатель для постепенного увеличения скорости. При этом можно отметить зоны, в которых при изменении скорости вибрации либо увеличиваются, либо уменьшаются.
Как вибрация, так и потеря крутящего момента являются очень нежелательными явлениями. Поэтому при работе с шаговым двигателем важно их устранять. Один способ устранения этих недостатков заключается в ограничении тока до значений, позволяющих значительно снизить вибрации. К сожалению, если ток не модулировать динамически в соответствии с изменением нагрузки, система будет страдать от «выпадения» шагов, что является даже большей угрозой, поэтому всегда тяжело искать компромисс между точностью позиционирования и скоростью.
Более хорошим решением этой проблемы является ограничение вибраций за счет уменьшения расстояния, которое ротор должен преодолеть за один шаг. Двигатели характеризуются пошаговым разрешением. 200-ступенчатый шаговый двигатель за один шаг перемещается на 1,8°. Если удастся каким-либо способом разделить каждый шаг на несколько микрошагов, расстояние, проходимое ротором за один микрошаг, станет гораздо меньше 1,8°. Чем меньше шаг перемещения, тем меньше энергии потребуется для достижения заданного положения, а угроза возникновения вибраций станет минимальной.

Для формирования множества микрошагов, составляющих один полный шаг, необходимо иметь возможность регулирования тока. Большинство серийно выпускаемых интегрированных Н-мостов может решить эту задачу. Как показано на рисунке 2, регулировку тока в таком случае легко осуществить, измеряя ток, протекающий через чувствительный резистор RSENSE
Чувствительный резистор RSENSE стоит последовательно с обмоткой двигателя, поэтому измеряется реальный ток в обмотке. Падение напряжения на этом резисторе подается на усилитель с известным коэффициентом усиления. Напряжение необходимо усиливать для минимизации потерь, поскольку используемый резистор очень мал. После этого усиленное напряжение сравнивается с эталонным напряжением VREF. Когда напряжение, пропорциональное току в обмотке, становится больше напряжения VREF, Н-мост отключается на заданное время. По истечении этого времени Н-мост снова подключается. Процесс отключения Н-моста, как только ток достигает заданного значения ITRIP, постоянно повторяется, что и обеспечивает регулирование тока.

Подача эталонного напряжения обеспечивается внешними цепями. При модуляции напряжения VREF происходит модуляция тока в обмотке. Таким образом удается получить разбиение шага на микрошаги. При изменении величины тока изменяется магнитное поле статора. Управляя током обмотки, можно регулировать напряженность магнитного поля статора, которое, в свою очередь, определяет положение ротора. Например, если на 200-ступенчатый шаговый двигатель подан полный ток, каждый шаг составляет 1,8°. Но если на тот же двигатель помимо полного тока подается еще и половина от полного тока, то каждый шаг будет равен 0,9°, т.е. ток можно делить произвольным образом и получать еще меньшие шаги, а, значит, и лучшее разрешение.

Двухполюсные шаговые двигатели часто работают в режиме полных шагов. Для этого управляют фазами токов в каждой из обмоток, реализуя одну из четырех возможных комбинаций, показанных на рисунке 3: HI-LO, HI-HI, LO-HI и LO-LO, где LO означает ток –IMAX, а HI соответствует +IMAX. Если соблюдать такую последовательность переключений, двигатель будет вращаться в одном направлении. Если перевернуть эту последовательность, двигатель будет вращаться в противоположном направлении.
Положение ротора контролируется количеством шагов, выполняемых относительно известной стартовой позиции. Для установки скорости перемещения требуется задавать интервал времени между шагами. Скорость в таком случае будет обратно пропорциональна этому времени и измеряться количеством шагов в секунду (SPS). Для генерации этих шагов применяют внутренний таймер, настроенный на вычисление временных интервалов. После чего для управления фазами в соответствии с направлением вращения может быть использована подпрограмма обслуживания прерываний (ISR). Например, если текущий шаг находится в квадратурной позиции HI-HI, можно использовать полярность коммутации LO-HI, чтобы переместить двигатель на один шаг вперед, или HI-LO, чтобы передвинуться назад.
При модуляции значения VREF, поданного в схему Н-моста, происходит наложение на коммутационный сигнал, формирующий полный шаг токового компонента, что и позволяет получить микрошаги. На рисунке 4 показан этот механизм. Отметим, что сигнал PHASE всегда имеет положительное значение. При этом, когда уровень сигнала PHASE равен HI, ток в обмотке двигателя положительный, а когда LO — ток считается отрицательным. Это означает, что цифровой сигнал PHASE (также называемый в некоторых Н-мостах Direction (направление)), задает направление тока, но не его величину. Величина тока определяется модуляцией VREF.

Читать еще:  Что такое тормозить двигателем автомобиль

В следующем примере на вывод VREF подается сигнал, соответствующий половине полной синусоидальной волны. В принципе, можно использовать любые непрерывные сигналы, главное, чтобы они обеспечивали плавное перемещение. Синусоидальные сигналы являются промышленным стандартом, необязательным для исполнения. Разработчики могут применять и другие формы сигналов, лишь бы это вело к хорошим результатам. Поэтому для формирования микрошагов часто используются микроконтроллеры или цифровые сигнальные процессоры (DSP).
В результате наложения VREF-сигнала на фазовый сигнал формируется переменный сигнал (в рассматриваемом случае синусоидальный), используемый для управления всеми обмотками шагового двигателя. Рассмотрим, как генерируется VREF-сигнал.
Для формирования VREF-сигнала можно использовать модуль ЦАП. Поскольку у двухполюсного шагового двигателя две обмотки, требуются два канала ЦАП. Вместо ЦАП для формирования вполне приемлемого программируемого аналогового напряжения можно использовать быстродействующий широтно-импульсный модулятор (PWM), на выходе которого стоит фильтр нижних частот. Амплитуда такого аналогового сигнала выбирается при помощи внутренней справочной таблицы, хранящей форму сигнала, определенную для каждого конкретного приложения. Каждый раз при подготовке шага из справочной таблицы выбирается соответствующее значение и пересылается в регистр ЦАП.
При формировании и использовании справочной таблицы нельзя забывать о нескольких важных моментах. Первый из них — глубина данной таблицы. Количество элементов таблицы всегда превышает число значений тока в два раза. Поэтому, если требуется разделить полный шаг на восемь частей (восемь микрошагов), необходимо формировать восемь значений тока, и, значит, таблица должна содержать 16 элементов. Такая таблица будет хранить информацию о вращении на 180°. Для следующих 180° используется та же самая таблица, но с противоположной полярностью. Таким образом, сначала таблица используется для положительных токов, а потом — для отрицательных.
На практике для управления любым двухполюсным шаговым двигателем требуются два сигнала со сдвигом фаз: PHASE A и PHASE B. В случае синусоидальных сигналов PHASE A и PHASE B являются синусоидами, смещенными относительно друг друга на 90°. Другими словами, если PHASE A является синусоидой, PHASE B будет косинусоидой. Поэтому нет необходимости использовать две таблицы, можно ипользовать одну и ту же таблицу дважды.
Если для формирования синусоидального сигнала PHASE A используется таблица на 16 элементов, то для получения косинусоидального сигнала PHASE В можно применить ту же таблицу, сместившись по ней на 8 элементов. Эту процедуру можно описать следующим псевдокодом:

#define TABLE_DEPTH 16
VREF_PHASEA = LOOKUPTABLE[INDEX]
VREF_PHASEB = LOOKUPTABLE[(INDEX + TABLE_DEPTH / 2) & (TABLE_DEPTH-1)]
Increase INDEX.

Отметим, что индекс PHASE В необходимо нормализовать в соответствии с размером таблицы. Если для PHASE A из таблицы выбирается значение элемента #15, для PHASE B надо использовать не элемент #23, поскольку он выходит за пределы таблицы, а элемент #7. Корректное нормализованное значение можно получить, применив логическую операцию «И» к индексу справочной таблицы и размеру таблицы, отняв от него 1. Такой элемент «И» часто называют INDEX_MASK.
Разобравшись с тем, как получить из справочной таблицы информацию о величине тока, будем разбираться с фазовой информацией. Требуется ответить на вопрос, надо ли ее также хранить в таблице. Если да, то будет ли размер такой таблицы в четыре раза больше числа значений тока на один шаг. В действительности, в создании новой таблицы нет необходимости, поскольку информацию о фазе сигнала PHASE можно получить из самой переменной INDEX.
Значение INDEX меняется в пределах 0… TABLE_DEPTH — 1. Но если позволить переменной INDEX меняться в пределах 0… 2×TABLE_DEPTH, старший значащий разряд результирующего числа можно использовать для определения полярности сигнала PHASE. Рассмотрим случай из микрошагов по 8°. В этом случае TABLE_DEPTH равно 16, но параметр INDEX будет меняться в диапазоне 0…31. Поскольку теперь требуется две маски: одна для фазовой информации (PHASE_MASK), а другая для извлечения данных из справочной таблицы (INDEX_MASK), необходимо изменить стратегию формирования индекса. Новый псевдокод будет выглядеть следующим образом:

#define PHASE_MASK 0x10
PHASEA = INDEX & PHASE_MASK
PHASEB = (INDEX + TABLE_DEPTH / 2) & PHASE_MASK.

Отметим, что при получении фазы сигнала PHASE нет необходимости заботиться о преобразовании значения INDEX, поскольку за это несет ответственность старший значащий разряд. Другими словами, старший значащий разряд определяет фазу сигнала, а все более младшие разряды используются в качестве индекса справочной таблицы для извлечения информации о величине тока.

#define TABLE_DEPTH 16
#define INDEX_MASK TABLE_DEPTH — 1
VREF_PHASEA = LOOKUPTABLE[INDEX & INDEX_MASK]
VREF_PHASEB = LOOKUPTABLE[(INDEX + TABLE_DEPTH / 2) & (INDEX_MASK)]
INDEX = INDEX + IndexIncrement.

Здесь изменен способ увеличения индекса. Но иногда возникает потребность не увеличивать индекс, а уменьшать его. Например, когда есть необходимость извлечь из справочной таблицы информацию о направлении вращения. Другими словами, перемещение по таблице вперед соответствует вращению двигателя по часовой стрелке, а назад — против часовой стрелки.
Теперь рассмотрим технические средства реализации представленного кода для корректного использования справочной таблицы. Для формирования пошаговых команд используется аппаратно реализованный запуск ISR. Это может быть либо захват входа таймера, либо соответствующая конфигурация порта входов/выходов общего назначения (GPIO) для осуществления прерывания. Необходимо заранее определиться, как будет распознаваться пошаговая команда: по переднему, заднему или по обоим фронтам. Как только регистрируется такой переход, начинает выполняться код, определенный выше.
Вторая ISR отвечает за запросы о направлении вращения. И здесь может быть использована любая форма аппаратного входа, обеспечивающая прерывание по переходу, при этом такой вход должен реагировать как на передний, так и на задний фронт. При регистрации переднего фронта индекс увеличивается на +1. При регистрации заднего фронта индекс уменьшается на –1.
Из всего сказанного видно, что довольно просто превратить драйвер шагового двигателя в микрошаговый коммутатор, и при этом код программы для осуществления одного микрошага будет достаточно мал.

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

Ссылка на основную публикацию
Adblock
detector