Sw-motors.ru

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

Marlin: управление шаговыми двигателями

Marlin: управление шаговыми двигателями

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

Как выяснилось, прошивка Marlin не совсем честно управляет шаговыми двигателями. При увеличении частоты импульсов для шага, нарушается равномерность (период) импульсов.

Про разгон/торможение не буду рассказывать. Подключил осциллограф к пину STEP и гонял отключённый мотор с разной скоростью через Repetier-Host. У меня в настройках установлено 100 шагов на 1 мм. Считать скорость импульсов удобно — скорость 10 мм/с соответствует 10*100 = 1000 импульсов в секунду, т.е. частота импульсов 1 кГц. И наоборот — 5 кГц соответствует скорости перемещения 5000/100 = 50 мм/сек.

Начал с низкой скорости перемещения. Выставил 50 мм/сек и увидел что и ожидалось:

Импульсы пошли пачками по два. Период пачек 193 мкс — частота пачек 5.18 кГц. Умножаем частоту на 2 (два импульса в пачке) получаем 103,6 мм/сек.

Дальнейшее повышение скорости перемещения выглядит также: 180 мм/сек соответствует 7,19 кГц * 2 — это 14380 импульсов в секунду (143 мм/сек).

Формально, количество импульсов соответствует (немного с занижением) скорости перемещения, но фактически, это может привести к искажению печатаемой модели. Если для перемещения печатающей головки на таких скоростях это сильно может не повлиять из-за инерции, то на экструдере это может привести к неравномерной подачи прутка. В зависимости от драйвера, этот эффект может сгладиться, например, если драйвер делает аппроксимацию микрошагами (1/128) и контроллирует реальное вращение вала. Если простой драйвер, например, A4988 — тут теряем момент на валу двигателя и можем получить пропуск шагов.

Если посмотреть в прошивку:

Измерения подтверждаются кодом — для частоты импульсов от 10 кГц до 20 кГц получаем пачки по 2 импульса. Если частота выше 20 кГц — в пачке 4 импульса.

Из этого можно сделать следующий вывод:

При выборе количества микрошагов (1/16, 1/32, 1/128 и т.п.) нужно проверять, что пачки импульсов не повлияют на результат. Особенно это критично для экструдера. Если выбрать 1/128 микрошаг на драйвере экструдера, то предельная максимальная скорость вычисляется из ограничения частоты импульсов в 10 кГц. У экструдера без редуктора, на один оборот 200 шагов (если шаг двигателя 1,8 градусов).

Предельная скорость вращения вала экструдера 10000 Гц / (200 * 128) = 0,390625 оборотов в секунду, если превысить эту скорость, то возможно появление волн и т.п. — подача пластика будет пульсирующей.

Шестерёнки у всех разные — скорость подачи прутка можно пересчитать из скорости оборотов, зная диаметр шестерёнки. Это примерный расчёт, т.к. соотношение скорости подачи прутка и диаметра шестерёнки может зависеть от силы прижима и других параметров.

Итог такой: толще сопло — крупнее микрошаг. Сравнивать дроби — 1/16 больше, чем 1/128, т.е. крупнее.

Подпишитесь на автора

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

Raspberry Pi в Киеве (Украина)

Arduino и многое другое купить в Киеве

В вашей корзине

Raspberry Pi. Урок 10. Шаговый двигатель

  • Опубликовано 18.05.2015
  • by leo
  • in Без рубрики

Шаговый двигатель — это что-то среднее между обычным электромотором (Урок 9) и сервоприводом (Урок 8). Их преимущество в том, что можно точно регулировать их положение, двигать вперед или назад на один «шаг» за раз, а также они могут вращаться непрерывно.

В этом уроке мы узнаем, как управлять шаговым двигателем с помощью Raspberry Pi и все того же чипа управления мотором L293D, который мы использовали с электромотором в Уроке 9.

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

В этом проекте не сильно важно, используете Вы L293D или ULN2803. Если у Вас нет ни одного из чипов, то, возможно, лучше выбрать ULN2803, поскольку его стоимость ниже и в комплекте к нему четыре запасных детали.

Двигателю требуется меньше питания и менее чувствителен к перепадам напряжения, чем электродвигатели и сервоприводы. Питания 5В от Raspberry Pi будет достаточно, если Pi имеет хороший источник питания как минимум 1А.

Детали

Для этого проекта Вам понадобятся следующие детали:

Шаговый двигатель 5В

Интегральная схема L293D

Макетная плата половинного размера

Аппаратное обеспечение (L293D)

У шагового двигателя есть пять проводов, поэтому в этот раз мы будем использовать обе части L293D. Это значит, что нужно будет сделать много соединений на макетной плате.

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

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

Ориентируйтесь по цветам, а не по позиции откуда идет провод.

Аппаратное обеспечение (ULN2803)

Если Вы используете ULN2803, тогда используются все пять проводов.

У шагового двигателя есть пять проводов, поэтому в этот раз мы будем использовать обе части L293D. Это значит, что нужно будет сделать много соединений на макетной плате.

Установка не может быть использована с 5-пиновыми (однополюсными) шаговыми двигателями.

Шаговые двигатели

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

Подача питания на катушки в правильном порядке заставляет работать двигатель. Количество шагов шагового двигателя в одном полном вращении — это количество зубчиков колеса.

Двигатель, который мы используем имеет 8 шагов, но поскольку в нем есть понижающий редуктор 1:64, то шагов 512 (8х64).

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

Читать еще:  Как проверить автомобильный генератор?

Поскольку мы используем L293D, который отлично справляется с изменением направления тока, мы не будем использовать красный провод. Мы можем подавать ток в любом направлении на все катушки.

ULN2803

В уроке 9 мы уже рассматривали L293D. ULN2803 — очень полезный чип.

В то время как у L293D есть четыре вывода, полярность которых может быть изменена, у ULN2803 таких выводов 8, что позволяет усилить слабые сигналы с разъемов GPIO raspberry Pi и переключить их на более высокие показатели тока.

Однако в отличии от L293D, вывод ULN2803 может только поглощать ток, поэтому используется позитивный красный провод шагового двигателя. Поэтому вместо использования всей катушки между, например, розовым и оранжевым проводами, только половина катушки между красным и розовым проводами получает питание.

Программное обеспечение

В этом проекте используется библиотека Rpi.GPIO. Если Вы не использовали ее раньше, Вам нужно установить это.

Чтобы установить код, подключитесь к Pi через SSH и откройте окно редактора с помощью команды:

Затем скопируйте код ниже в окно редактора и сохраните (CTRL-X, затем Y).

GPIO . setmode ( GPIO . BCM )

GPIO . setup ( enable_pin , GPIO . OUT )

GPIO . setup ( coil_A_1_pin , GPIO . OUT )

GPIO . setup ( coil_A_2_pin , GPIO . OUT )

GPIO . setup ( coil_B_1_pin , GPIO . OUT )

GPIO . setup ( coil_B_2_pin , GPIO . OUT )

GPIO . output ( enable_pin , 1 )

def forward ( delay , steps ):

for i in range ( 0 , steps ):

setStep ( 1 , 0 , 1 , 0 )

time . sleep ( delay )

setStep ( 0 , 1 , 1 , 0 )

time . sleep ( delay )

setStep ( 0 , 1 , 0 , 1 )

time . sleep ( delay )

setStep ( 1 , 0 , 0 , 1 )

time . sleep ( delay )

def backwards ( delay , steps ):

for i in range ( 0 , steps ):

setStep ( 1 , 0 , 0 , 1 )

time . sleep ( delay )

setStep ( 0 , 1 , 0 , 1 )

time . sleep ( delay )

setStep ( 0 , 1 , 1 , 0 )

time . sleep ( delay )

setStep ( 1 , 0 , 1 , 0 )

time . sleep ( delay )

def setStep ( w1 , w2 , w3 , w4 ):

GPIO . output ( coil_A_1_pin , w1 )

GPIO . output ( coil_A_2_pin , w2 )

GPIO . output ( coil_B_1_pin , w3 )

GPIO . output ( coil_B_2_pin , w4 )

delay = raw_input ( «Delay between steps (milliseconds)?» )

steps = raw_input ( «How many steps forward? « )

forward ( int ( delay ) / 1000.0 , int ( steps ))

steps = raw_input ( «How many steps backwards? « )

backwards ( int ( delay ) / 1000.0 , int ( steps ))

Настройка и тестирование

Программу нужно запустить от имени администратора, поэтому введите следующую команду в сессию SSH.

Задайте значение delay (5 подойдет), а затем количество шагов (number of steps) (512 — полный оборот).

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

R13-PROJECT

Электронное познавательное развлекательное

Настройки библиотеки GRBL 1.1f

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

Для замены любого параметра необходимо отправить номер параметра и его новое значение, например $30=255. В ответ контроллер должен ответить OK. Это значит, что настройка обновилась и сохранена в энергонезависимую память.

А теперь о самих параметрах библиотеки GRBL.

$0 – Длительность импульса ля управления шаговым двигателем, микросекунд
Это значение подбирается экспериментально, и оно зависит от длинны проводов до драйвера шагового двигателя и от “скорострельности” драйвера. Слишком короткие импульсы драйвер может не заметить, а слишком длинные, при большой скорости перемещения будут накладываться друг на друга. По умолчанию это значение равно 10, но чаще всего можно снизить до 4-8.

$1 – Задержка отключения двигателей, миллисекунд
При завершении перемещения контроллер обесточивает двигатель, что бы исключить лишний нагрева драйвера и двигателя, а так же для экономии электроэнергии. Этот параметр указывает, через какое время производить отключение двигателя. Если вам необходимо постоянное удержание положения каретки (возможно смещение из-за гравитации, драйвер не запоминает положение микрощага, нет стопорения за счет механики) то данный параметр необходимо установить в 255. Значение 255 укажет контроллеру, что двигатели необходимо всегда держать включенными.

$2 – Инверсия импульсов движения шагового двигателя (сигнал STEP), маска
Этот параметр задает порядок смены высокого и низкого сигналов на выходе. По умолчанию сигнал на выходе контроллера низкий и при подаче сигнала он меняется на высокий. Если включить инверсию, то будет наоборот, высокий сигнал переключится на низкий. Время переключения сигнала задает параметр $0. В большинстве случаев не требуется переключение данного параметра. Но если так случилось, что ваш драйвер шагового двигателя требует инверсии, то задать маску инверсии можно на этом примере:
значение маска х Y Z
1 00000001 Д Н Н
2 00000010 Н Д Н
3 00000011 Д Д Н
4 00000100 Н Н Д
5 00000101 Д Н Д
6 00000110 Н Д Д
7 00000111 Д Д Д
например необходимо инвертировать ось Х тогда параметр $2=1, если необходимо инвертировать оси Y и Z тогда необходимо $2=6

$3 – Инверсия движения двигателя (сигнал DIR), маска
Контроллер считает, что при низком уровне выходного сигнала двигатель будет вращаться так, что это приведет к увеличению значении координаты (каретка поедет от нулы в положительном направлении). Но не всегда и везде это так, и что бы не менять подключение проводов к шаговому двигателю, можно измениь маску, тем самым изменив направление вращения.
Переключается данный параметр аналогично параметру $2

$4 – Инверсия сигнала включения драйвера шаговых двигателей (сигнал ENABLE), логический
По умолчанию контроллер считает включающим низкий сигнал (притягивает линию к земле для включения драйвера, чаще всего так и есть). Для переключения инверсии следует отправить $4=1. (по умолчанию настроено $4=0).

$5 – Инверсия входов концевых выключателей, логический
По умолчанию входы, к которым подключаются концевые выключатели подтянуты через резистор к + шины питания платы, и на них высокий уровень. Если необходимо, что бы плата сама НЕ генерировала подтяжку, например в датчике уже все есть или необходимо, что бы плата реагировала на высокий сигнал, а не на низкий, то сигнал необходимо инвертировать. При этом контроллер отключит подтягивающий резистор, и формирование высокого уровня ложиться на ваши плечи, так же как и защита от перенапряжения на линии. Включается $5=1, отключается $5=0.

Читать еще:  Датчик оборотов двигателя f14d4

$6 – Инверсия входа контактного датчика, логический
По умолчанию контроллер настроен на нормально разомкнутый концевой выключатель, который при срабатывании замкнет вход на землю. Если вы используете нормально замкнутый концевой выключатель, который при срабатывании наоборот размыкает цепь – то этот параметр необходимо инвертировать. Включается $6=1, отключается $6=0.

$10 – Вывод статуса, маска
Задает вывод данных с контроллера, когда их запрашивает пользователь командой ?. Эти данные включают в себя: значения на входах, текущие переопределенные значения, текущие координаты, текущее состояние, текущую скорость подачи, состояния буферов, и номер выполняемой команды G-кода (если было включено в исходных кодах перед компиляцией).

По умолчанию в отчет библиотеки GRBL v1.1+ входит вывод практически всей информации в стандартном выводе статуса. Весь лишний мусор можно скрывать, оставив только информацию о тех параметрах, которые изменились. Это сильно ускоряет скорость общения с контроллером. Данная функция в основном требуется для отладки и испытании производительности контроллер, когда нужно например протестировать переполнение буфера при сложных расчетах и т.д. Простым смертным в 99% случаев это все не требуется. и рекомендуется оставить параметр по умолчанию. Если Вам потребовалось изменить данный параметр – то эта статья Вам ни к чему – вы и так все в исходниках найдете, или прочитаете официальную документацию на другом языке 🙂

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

$12 – Отклонение от дуги, мм
Библиотека GRBL обрабатывает дуги и окружности как совокупность отрезкой. Окружность или дуга разбивается не н-ное количество отрезков. Данный параметр задает максимальное отклонение траектории от идеальной. Точность станка обычно не превышает этого отклонения, но если вы замечаете на дугах угловатости, то стоит уменьшить значение этого параметра. Он так же влияет на скорость обработки, так как для каждого стыка необходимо определить максимальную скорость и на основании парметра 11 высчитать торможение, если оно требуется. Максимальное отклонение высчитывается как перпендикуляр от отрезка до дуги.

$13 – Отчет в дюймах, boolean
По умолчанию Grbl выводит координаты текущей позиции, а также параметры смещения начала координат и данные измерения (probing) в мм. Командой $13=1 можно изменить значение параметра и переключить выводй на дюймы. $13=0 возвращает вывод в мм.

$20 – Мягкие границы (soft limit), логический
Этот параметр включает виртуальные границы, за которые станку нельзя выезжать. Данный параметр необходимо включать совместно с параметром $22. Работают они так – станок при получении команды $H ищет начальную точку, а далее при работе следит за рабочей координатой, и если кнтроллеру приходит команда, которая вынудит его выехать за эти границы, то станок прекратит обработку сформировав сигнал ошибки. Текущее положение при этом не сбрасывается. $20=1 для включения, и $20=0 для отключения.

$21 – Жесткие границы (hard limit), логический
При включении данного параметра, контрллер будет следить за концевыми выключателями и если в процесе работы один из них стработает, то работа прекратится в аварийном режиме. Для продолжения работы контроллер необходимо сбросить. Сделано это для безопасности.Для включения жестких границ потреьуется по 2 концевых выключателя на каждую ось, для ограничения перемещения в двух крайних положениях. Концевые выключатели вешают парно на 1 вход концевых выключателей, при срабатывании любого из двух должен вырабатываться сигнал, интерпретируемый контроллером.

$22 – Поиск начальной позиции (HOME), логический
Поиск начальной позиции.При включении станка, он не знает в какой позиции находится его инструмент, и ему необходимо задать точку отсчета. при подаче команды $H контроллер будет искать нулевое положение перемещая инструмент в положение увеличения координаты, пока не произойдет срабатывание концевого выключателя. По умолчанию в первую очередь в нулевую точку едет ось Z, а за ней оси X и Y. Если вы используете контроллер для лазерного гравера, то в исходном коде необходимо установить запрет поиска нулевой точки оси Z, так как этой оси нет, и контроллер не найдя концевого выключателя выдаст ошибку или зависнет.
Еще одно применение этой команды – при отключении электропитания всегда можно привести инструмент в нулевое положение и запустить выполнение программы не с самого начала, нулевая точка будет совпадать и не произойдет сбоя при позиционировании инструмента.

$23 – Инверсия направления начальной точки, маска
По-умолчанию, Grbl ищет нулевую точку, в положительном направлении. Если у вашего станка концевые выключатели находятся в отрицательном направлении перемещения, то следует инвертировать данный параметр. Она работает точно так же, как и маска инверсии порта шаговых импульсов (параметр $2), все что вам нужно это указать значение из таблицы, указывающее какие оси нужно инвертировать для поиска в противоположном направлении.

$24 – Скорость подачи при поиске нулевой точки, мм/мин
При поиске нулевой точки контроллер вначале перемещает оси на высокой подаче, затем делает откат на небольшое расстояние и уже на низкой скорости точно определяет координату. Данный параметр задает скорость перемещения инструмента после отката при точном определении координаты (низкая скорость)

Читать еще:  Двигатель 2nz какое масло заливают

$25 – Скорость поиска начальной точки, мм/мин
Данный параметр задает начальную скорость поиска нулевой координаты (бОльшую скорость). Данную скорость следует подобрать так, что бы концевой выключатель успевал обрабатываться контроллером.

$26 – Подавление дребезга при поиске начальной точки, миллисекунд
При срабатывании концевого выключателя (особенно механического), наблюдается шум на входе (поочередные всплески от того, что контакт не сразу прижимается а еще немного пружинит). Что бы исключить данный шум из расчета ьребуется либо установка фильтра, либо програмная задержка, которая и задается этим параметром. Для большинства случаев требуемое значения 5-25 миллисекунд.

$27 – Отъезд от начальной точки, мм
Для того, что бы использовать одну пару концевых выключателей для определения нулевой точки и для определения жестких границ служит этот параметр. После нахождения нулевой точки станок отъедет от нее на заданное расстояние. Если этого не сделать ( не разомкнуть концевой выключатель) то после процедуры поиска нулевой границы контроллер опросив концевик, посчитает , что произошла аварийная ситуация.

$30 – Максимальные обороты шпинделя, Об/мин
Задает значение ШИМ соответствующее максимальному значению напряжения на выходе (5 вольт для AVR и 3,3V для ARM плат). Это значение используется для регулировки оборотами шпинделя или мощностью лазера при выжигании. По умолчанию, Grbl строит линейную зависимость из 255 отсчетов между максимальными-минимальными оборотами шпинделя. Значение равное 0 отключает шпиндель, значение 255 включает на максимум. В файле config.h есть дополнительные параметры, влияющие на это, и если вас это не устраивает, то необходимо изменить перед компиляцией прошивки.

$31 – Минимальные обороты шпинделя, Об/мин
Задает минимальное значение на выходе ШИМ, равному (напряжение питания платы/256). Этот параметр задает значение, с которого гарантировано происходит пуск шпинделя или зажигание лазера.

$32 – Режим лазера, логический
Если включить данный параметр, то контроллер перейдет на режим управления лазером. Лазер висит на пине отвечающем за обороты шпинделя. Контроллер, прежде чем изменить направление движения командой S дает задержку, что бы шпиндель разогнался или сбросил обороты, и только после этого начинает движение. В случае с лазером, делать этого не нужно, иначе в точках изменения яркости будут наблюдаться более черные точки или полосы. Так же это увеличивает скорость выжигания.

$100, $101 , $102 – [X,Y,Z] шагов/мм
Данные параметры задают количество шагов, сделав которое ось сдвинется на 1 мм. Например шаговый двигатель имеет 200 шагов на 1 оборот, контроллер настроен на 16 микрошаг. Теперь допустим, что при вращении двигателя на 1 оборот инструмент переместился на 32 мм, тогда имеем. 200 шагов умножить на 16 микрошаг – 3200 импульсов нужно подать контроллеры, что бы шаговый двигатель сделал 1 оборот, и переместил инструмент на 32 мм. значит на 1 мм он сдвинется за 3200/32мм=100 шагов.

$110, $111, $112 – [X,Y,Z] Максимальная скорость, мм/мин
Эти параметры задают максимальную скорость перемещения для каждой из осей. Контроллер при получении G кода анализирует скорости указанные в нем, и если команда задает скорость выше данных значений, то он ограничивает скорость. Так же эти значения также определяют максимальную скорость перемещения при выполнении команды G0. Параметр определяется экспериментально, пока не будет наблюдаться пропуск шагов, после этого снижается скорость на 10-20 процентов, и используется как основное значение.

$120, $121, $122 – [X,Y,Z] Ускорение, мм/сек^2
Эти параметры задают параметры ускорения в мм/сек за секунду. Чем меньше это значение, тем более плавное движение, но и большее время обработки сложных деталей с большим количеством мелкиъ элементов. Так же определяется экспериментально.

$130, $131, $132 – [X,Y,Z] Максимальное перемещение, мм
Эти параметры задает максимальное допустимое перемещение от нулевой точки по каждой из осей при включенных мягких границах (sofl limit). См. параметры $20, $22.

arduinoLab

Двухканальный драйвер коллекторных моторов TB6612

TB6612FNG — это двухканальный мостовой (H-bridge) драйвер для двух коллекторных двигателей или одного шагового.

Характеристики драйвера:

  • Диапазон напряжения питания силовой части: 4,5V … 13,5V.
  • Диапазон напряжения питания логической части: 2,7 … 5,5V

Особенности модуля:

Модуль собран на микросхеме TB6612FNG от Toshiba, это двухканальный мостовой драйвер, микросхема функциональна схожа с популярными драйверами L293D, L298N но в отличии от них, в драйвере использованы MOSFET транзисторы, драйвер также имеет защиту по температуре, перенапряжению и короткому замыканию. Может управляется логическим уровнем 3.3 вольта.

На модуле не удобно выполнена маркировка выводов, по этому имеет смысл запаять штырьки со стороны микросхемы.

Подключение модуля к Arduino:

Назначение выходов:

  • PWMA PWMB — Вход для управления скоростью вращения мотора, для канала A и B соответственно, подключается на выход arduino с поддержкой ШИМ (PWM).
  • AIN1 AIN2 — Входы полумостов канала A, подключаются на любые свободные выходы arduino.
  • BIN1 BIN2 — Входы полумостов канала B.
  • A01 A02 — Выходы полумостов канала A, подключается коллекторный двигатель.
  • B01 B02 — Выходы полумостов канала B.
  • STBY — Включение микросхемы, подключаются на любой свободный выход arduino.
  • VM — Вход питания силовой части микросхемы, питание двигателей.
  • VCC — Вход питания логической части микросхемы.
  • GND — Масса.

Все входы управления (PWMA(B), A(B)IN1(2), STBY) притянуты к массе резистором на 200к.

Подключение к arduino:

Подключение и работа с модулем не отличается от других мостовых драйверов, модуль можно подключать на любые свободные выходы arduino, кроме ног PWM, для него выход должен уметь генерировать ШИМ, такие выходы обозначены

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

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector