Как подключить шаговый двигатель к raspberry
Raspberry Pi в Киеве (Украина)
Arduino и многое другое купить в Киеве
В вашей корзине
Raspberry Pi. Урок 10. Шаговый двигатель
Шаговый двигатель — это что-то среднее между обычным электромотором (Урок 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).
delay = raw_input ( «Delay between steps (milliseconds)?» )
steps = raw_input ( «How many steps forward? « )
steps = raw_input ( «How many steps backwards? « )
Настройка и тестирование
Программу нужно запустить от имени администратора, поэтому введите следующую команду в сессию SSH.
Задайте значение delay (5 подойдет), а затем количество шагов (number of steps) (512 — полный оборот).
Поэкспериментируйте со значением delay, чтобы достичь максимальной скорости двигателя.
Подключение DC электромоторов к Raspberry Pi через драйвер L298N
Управление DC электромоторами
Управление электромотором подразумевает под собой управление скоростью и направлением его вращения. Это достигается сочетанием двух методов:
Управление скоростью вращения при помощи ШИМ
Скорость вращения мотора регулируется через изменение уровня подаваемого на него напряжения.
ШИМ это методика, суть которой состоит в том, что среднее значение напряжение на входе регулируется серией импульсов ВКЛ-ВЫКЛ, т.е быстрыми включениями и выключениями подачи напряжения питания к двигателю.
Эта картинка иллюстрирует данную зависимость:
H-Bridge
Направление вращения регулируется сменой полярности входного напряжения. Стандартным способом реализации такой смены является H-Bridge
В электрической цепи (которая визуально напоминает букву Н) H-Bridge присутствуют 4 ключа с мотором в центре этой цепи.
Полярность входного напряжения на моторе будет зависить от того, какая пара ключей замыкает цепь в настоящий момент. Вот так это выглядит:
Основой этого модуля является чёрный чип с радиатором. L298N является двухканальным драйвером, и следовательно может независимо управлять двумя электромоторами. Поэтому данный драйвер хорошо подходит для использования в двухколёсных роботах, поворот которых осуществляется за счёт разницы в скорости вращения правого и левого колеса.
Питание драйвера
L298N имеет также встроенный стабилизатор (78M05) напряжения до 5V. Когда установлен джампер, то этот стабилизатор работает и с контакта Vss можно снимать 5V 0.5А для питания управляющего драйвером устройства. Когда джампер снят, то стабилизатор выключен, а значит нам нужно питатьуправляющее драйвером устройство от независимого источника питания.
Если джампер установлен, то контакт Vss работает как выход . Подавать на него напряжение извне в этом случае запрещено
Падение напряжения на L298N
Падение напряжение на драйвере может достигать 2В, за счёт падения напряжения на транзисторах Н-Моста. Таким образом, при подаче на контакт Vs 12В до электромоторов дойдёт только 10В, а значит они не смогут выйти на максимум своих оборотов (естественно речь идёт о 12-ти вольтовых DC электромоторах). Таким образом напряжение, подаваемое на контакт Vss должно быть на 2V выше напряжения работы электромотора (14В для 12-ти вольтовых моторов, 7В для пятивольтовых соответственно)
Подключение DC электромоторов к драйверу
Электромоторы подключаются к зажимным контактам по краям платы.
Контакты контроля направления вращения
Возможно 4 варианта:
Контакты контроля скорости
Для управления скоростью вращения моторов используется контакты ENA (мотор А), ENB(мотор В)
Подключение L298N к Raspberry Pi
Теперь, когда мы хорошо знакомы с драйвером L298N, можно подключить к нему питание, моторы и Raspberry Pi
Raspberry Pi я запитал через 5V внешний аккумулятор PowerBank. Поскольку у меня не было аккумулятора на 12V драйвер L298N я запитал от того же внешнего аккумулятора, вставив в него повышающий DC/DC преобразователь
В следующей статье рассмотрим программирование двухколёсного робота с драйвером L298N
Управление моторами постоянного тока с помощью Python на Raspberry Pi
Russian (Pусский) translation by Yuri Yuriev (you can also view the original English article)
В этом уроке я покажу, как подключить двигатели к вашему Raspberry Pi. Это позволит в реальном мире построить робот, включить вентилятор в жаркий день или даже бросить угощение вашей кошке или собаке, пока вы отсутствуете.
Задача
Мы планируем подключить один или два мотора к Raspberry Pi с минимальным количеством компонентов. Когда мы соберём электронику на макете, я покажу, как ей управлять, используя Python, чтобы сначала запустить двигатель, а затем добавить управление для изменения направление вращения, чтобы мы могли вернуться назад.
Во время урока потребуется внимание и немного смелости, особенно если вы новичок в коннекторах GPIO. Хочу подчеркнуть, что я не несу ответственности за любой ущерб, причинённый вашему Raspberry Pi и/или компонентам.
ВАЖНО: не подключайте двигатель, независимо от того, насколько он мал, прямо на Raspberry Pi, он повредит вашу Raspberry Pi.
Основной процессор может подавать мощность, достаточную только для освещения светодиода, примерно 20 мА. Мотор будет потреблять ток не менее 400 мА, чтобы начать вращение.
Требования
Чтобы запустить двигатель, вам понадобятся:
GPIO пины
Если вы ещё не присматривались к Raspberry Pi раньше, теперь, возможно, лучшее время его разглядеть. Имеется 26 выводов, сгруппированных в два ряда по 13 и они называются General Purpose Input Output header или GPIO для краткости. Это сочетание четырех силовых контактов, пяти контактов заземления и 17 пинов данных.
Некоторые из этих pins данных имеют дополнительные функции, такие как i2c bus, SPI bus и последовательные разъемы UART, все из которых могут подключаться к другому оборудованию, чтобы позволить Raspberry Pi общаться с такими элементами, как Arduino, Analogue to Digital Convertor (ADC) или дополнительные платы, такие как PiGlow или PiFace.
СОВЕТ: работайте с выводами GPIO, когда Pi отключен, так как любое случайное соединение (или короткое замыкание) 2 контактов может привести к повреждению Raspberry Pi.
Сборка контура
Подключение питания и заземления
Это важно сделать, пока питание Raspberry Pi отключено, поскольку вы хотите избежать короткого замыкания каких-либо разъёмов по ошибке.
Во-первых, подключаем силовые и заземляющие провода. Как и в большинстве проектов в электронике, всё, что соединяется между собой, потребует общей основы. Это показано чёрными проводами.
Рисунок 2: Подключите провода питания и заземления
Чтение контактов на микросхемах Integrated Circuit (IC) легко сделать, установив метку или точку слева, так что, начиная с нижнего левого угла будет pin 1.
Рисунок 3. Pin 1 в левом нижнем углу
Добавление проводов данных
Теперь добавьте три провода от контактов GPIO к L293D.
Чрезвычайно важно, чтобы вы дважды проверили каждое соединение перед установкой батарей. Только когда вы уверены, что всё на месте, подключите провода батареи к электрическим шинам макета.
Добавить второй двигатель (дополнительно)
Одна из замечательных особенностей L293D состоит в том, что он может обрабатывать два двигателя независимо, и каждый может работать на разных скоростях или направлениях. Используя этот IC, можно создать двухколесный робот, способный поворачиваться, легко перемещаясь вперёд и назад.
Добавление второго двигателя включает всего три дополнительных провода и сам двигатель.
Включение
Важно проверить все проводки перед добавлением любого источника питания, так как некоторые провода могут немного запутаться, поэтому легко пропустить соединение и отправить 5V на 3.3V Raspberry Pi.
Всегда проверяйте электропроводку снова и снова!
Если вы ещё не установили SD-карту для своего Pi, то сначала стоит понять, как это делается, прочитав How to Flash an SD Card for Raspberry Pi.
Со свежеприготовленной SD-картой Raspbian подключите Raspberry Pi как обычно и загрузитесь.
Тестирование
Чтобы включить двигатель в течение двух секунд, используйте следующий код:
Первые две строки говорят Python, что необходимо в программе.
В первой строке вы задаёте доступ к модулю RPi.GPIO. Этот модуль выполняет всю тяжёлую работу, связанную с поворотом контактов GPIO on и off на Raspberry Pi.
Вторая строка выводит модуль time в sleep, чтобы сделать pause, давая script время выполнить определённое действие и оставляя мотор включенным на несколько секунд.
Функция setmode указывает RPi.GPIO нумерацию на плате Raspberry Pi. Цифры 16, 18 и 22 сообщают Python номера pins, связанных с двигателями.
Наконец, укажите Raspberry Pi все выходы, которые делаются с GPIO.OUT.
Когда скрипт настроен, Raspberry Pi готова включить моторы. Он включит несколько выводов, подождет две секунды, затем выключит их, как показано в оставшейся части script.
Сохраните и выйдите, нажав CTRL-X, в нижней части сообщения появится запрос подтвердить изменения. Нажмите Y и Enter для подтверждения. Теперь вы снова в командной строке, чтобы запустить script и увидеть, как вращается двигатель.
sudo python motor.py
Если двигатель не вращается, проверьте проводку или батареи. Отладка и выяснение причин могут раздражать, но это полезный шаг в изучении нового!
Теперь поворачиваем
Блестяще, когда мотор крутится, но ещё лучше заставить его повернуть, я покажу вам, как это сделать.
Ничего не делаем с проводкой, чисто Python. Это достигается путём создания нового script по имени motorback.py. Чтобы создать script в Nano, введите команду:
Введите следующий код:
CTRL-X, затем Y, затем Enter для сохранения.
Сценарий очень похож на предыдущий, но если вы заметили, для поворота мы сделали Motor1A low и Motor1B high.
Чтобы остановить двигатель, вы выключите low, Motor1E.
Если вы находите это запутанным, посмотрите Truth Table, чтобы увидеть, что происходит.
Truth table
Есть только два состояния, которые позволяют двигателю вращаться, когда Enable включено или high и либо A, либо B должны быть high, но не оба.
Заключение
В этом уроке я показал основы подключения моторов к Raspberry Pi. Придётся глубоко вздохнуть и сделать это, если вы не занимались подключением чего-либо к вашему новому Pi, но вскоре, как только вы начнете играть с контактами GPIO, будет трудно остановиться.
Этот урок открывает двери в мир созидания роботов с мигающими LED lights и ультразвуковыми датчиками, даёт почувствовать его среду.
Найдите шасси для сборки с аккумулятором сотового телефона, чтобы ваш Raspberry Pi стал мобильным.
Управляем шаговыми движками и DC моторами, L298 и Raspberry Pi
Рассмотрим драйвер электродвигателей на транзисторах и микросхеме L298, разберемся с принципом работы H-моста. Узнаем особенности подключения драйверов на L298 к разным двигателям и источникам питания, проведем простые эксперименты с шаговыми движками и двигателями постоянного напряжения. Подключение к Raspberry Pi и простейшие программы для теста управления драйвером.
Что такое H-мост
При проектировании станков, роботов и других автоматизированных устройств возникает необходимость управлять электродвигателем постоянного тока или же катушками шагового движка. Для того, чтобы иметь возможность управлять обмоткой двигателя и заставить его вал вращаться в разные стороны, необходимо выполнять коммутацию с переполюсовкой. Для подобной цели используется так называемый «H-мост».
Рис. 1. Как работает H-мост, принцип коммутации двигателя для вращения в разные стороны.
Как видим, при помощи 4х переключателей мы можем подключать мотор к источнику питания в разной полярности, что в свою очередь заставит вращаться его вал в разные стороны. Переключатели можно заменить на реле, или же на мощные электронные ключи на транзисторах.
Важно заметить что НЕЛЬЗЯ допускать замыкания двух ключей на одной стороне H-моста, поскольку получится короткое замыкание, при проектировании схемы моста нужно заложить это правило в логику и таким образом реализовать защиту.
Схема простого H-моста на кремниевых транзисторах
Собрать простой драйвер двигателя постоянного тока (или для обмотки шагового двигателя) можно на распространенных кремниевых транзисторах.
Рис. 2. Принципиальная схема простого драйвера электродвигателя на кремниевых транзисторах.
Такой драйвер позволяет управлять электродвигателем постоянного тока с питающим напряжением до 25В (для КТ817А, КТ816А) и до 45В (для КТ817Б-Г, КТ816Б-Г) с током не более 3А. При большом рабочем и нагрузочном токе двигателя выходные транзисторы КТ817 и КТ816 должны быть установлены на радиаторы достаточного размера.
Установка диодов VD1-VD2 обязательна, они нужны для защиты выходных транзисторов от обратного тока. На их место можно поставить отечественные КД105А или другие на больший ток.
Собрав две такие схемки (2х6 транзисторов) можно также управлять шаговым двигателем или же двумя двигателями постоянного тока.
Для того чтобы не городить огород из 12 транзисторов можно применить специализированные микросхемы, ниже мы рассмотрим пример с микросхемой L298 и готовым блоком на ее основе.
Микросхема L298, характеристики и возможности
Рис. 3. Микросхема L298 в корпусах Multiwatt15 PowerSO20.
Основные технические характеристики:
Если посмотреть на структурную схему микросхему L298 то мы можем увидеть что-то на подобии схемы на рисунке 2, только с дополнительными логическими элементами.
Таким образом мы можем установить направление прохождения тока и управлять его подачей (включено или выключено, а также ШИМ).
Схема драйвера на микросхеме L298
Ниже представлена простая схема для драйвера двигателей на микросхеме L298N. Управление осуществляется по четырем проводам (вместо шести у L298) благодаря использованию дополнительных инверторов в микросхеме CD4011.
Рис. 5. Принципиальная схема драйвера электродвигателей на микросхеме L298N.
Для питания логики обеих микросхем нужно стабилизированное напряжение +5В (P2), можно использовать интегральный стабилизатор, например L7805 или же питать логику от имеющейся линии питания +5В. Для подачи питающего напряжения на двигатели используется отдельная линия питания P1.
Микросхему CD4011 можно заменить на отечественную К176ЛА7. Диоды Шоттки можно поставить другого номинала, на 35В/4А и более. Если не планируется ограничивать ток обмоток двигателя(двигателей) то низкоомные ограничивающие резисторы R9-R10 можно исключить из схемы, заменив их на перемычки.
Если есть готовый модуль с L298 и нужно изготовить лишь конвертер сигналов для управления им по четырем пинам, то отдельную схему и печатную плату такого конвертера вы найдете в статье, касающейся силовой электроники для самодельного робота.
Готовые модули на L298
В интернете можно заказать готовый модуль на L298, правда в нем будет 6 входов для управления.
Рис. 6. Готовые модули на L298.
Я для своих нужд приобрел готовый модуль по типу как на рисунке слева. В нем присутствует микросхема L298 и небольшой стабилизатор для подачи +5В на логику микросхемы.
Для подключения данной платки важно четко уяснить одну особенность:
Для того чтобы сэкономить два входа при подключении такого блока к Arduino или Raspberry Pi можно добавить часть схемы на CD4001, как на рисунке 5.
L298 + DC двигатели + Raspberry Pi
Для данного эксперимента к модулю на L298 были подключены два двигателя постоянного тока. Питание всего модуля осуществляется от одного аккумулятора на 6В. Поскольку это напряжение меньше 12В (смотрим выше описание) то перемычку внутреннего стабилизатора оставляем установленной и дополнительное питание +5В для логики не потребуется.
Перемычки «ENA» и «ENB», которые разрешают подачу питания на выходные мосты, оставлены установленными. Таким образом, для управления каждым из двигателей используем оставшиеся четыре входа: IN1, IN2, IN3, IN4.
После подключения питания на модуле загорится светодиод, теперь можем подать на каждый из входов поочередно +5В и посмотреть как будут вращаться наши движки.
Теперь подключим наш модуль к Raspberry Pi и напишем простую тестовую программу на Python. Для подключения модуля я использовал выводы GPIO вот в таком соответствии:
Raspberry Pi GPIO | Модуль L298 |
Вывод 7 (GPIO4) | IN1 |
Вывод 9 (GND) | GND (разъем питания) |
Вывод 11 (GPIO17) | IN2 |
Вывод 13 (GPIO27) | IN3 |
Вывод 15 (GPIO22) | IN4 |
Рис. 7. L298 + Raspberry Pi + электродвигатели постоянного тока.
Теперь испробуем простую программу, написанную на Python, которая поможет понять принцип управления электродвигателем постоянного тока.
Загружаем малинку, открываем Терминал или же подключаемся к ней удаленно при помощи SSH. Создаем новый файл и открываем его для редактирования при помощи команды:
Вставляем в редактор код скрипта на Python, который приведен ниже:
Выходим из редактора и сохраняем файл. Делаем скрипт исполняемым и запускаем его:
После запуска скрипта один из двигателей начнет вращаться в одну сторону на протяжении пяти секунд, потом он выключится и через 10 секунд начнет вращаться в другую сторону на протяжении 5-ти секунд.
Ниже приведен более сложный и функциональный пример программы, которая будет взаимодействовать с пользователем и позволит интерактивно управлять двумя электродвигателями. Аналогично первому скрипту, программу можно сохранить в тот же файл или в новый отдельно созданный.
Важно чтобы в данном примере кода соблюдались отступы, об этом я уже писал раньше вот тут.
Рис. 8. Программа на Python для управления двигателями при помощи драйвера L298 (терминал Konsole, KDE).
Краткая видео-демонстрация работы данного эксперимента приведена ниже:
Хочу заметить, что управлять скоростью вращения вала электродвигателя постоянного тока можно с использованием широтно-импульсной модуляции (ШИМ, PWM), как использовать этот метод для GPIO вы можете узнать из подробной статьи, посвященной модулю «RPi.GPIO».
Что такое шаговый двигатель, типы шаговиков
Шаговые двигатели надежны, стойки к износу и позволяют контролировать вращение на определенный угол, применяются в автоматизации процессов, на производстве, в электронно-вычислительной аппаратуре(CD-DVD приводы, принтеры, копиры) и т.п.
Такие двигатели бывают следующих видов:
Рис. 9. Типы шаговых двигателей: биполярный, униполярный, с четырьмя обмотками.
Определить тип используемого двигателя можно, как правило, по количеству выводов на его корпусе, а также не помешает прозвонить все выводы тестером для определения есть ли соеднения между обмотками.
L298 + шаговый двигатель + Raspberry Pi
Теперь давайте подключим шаговый двигатель, в моем случае применен биполярный мощный шаговый двигатель, извлеченный из старого матричного принтера.
Для подключения одного биполярного двигателя потребуется два выхода драйвера на L298 (два H-моста). Для данного эксперимента модуль L298 нужно подключить к Raspberry Pi так же, как и в варианте с DC-двигателями.
По сути дела, при помощи малинки, мы будем поочередно и с некоторой задержкой подавать импульсы на обмотки движка, чем заставим его вал вращаться в нужную нам сторону и с нужной скоростью.
Рис. 10. Подключение биполярного шагового двигателя к модулю L298 для управления через Raspberry Pi.
Если все уже подключено, то переходим к экспериментам с простой тестовой программой на Python, которая поможет понять как работать с шаговыми двигателем используя L298 + Raspberry Pi.
Создадим файл для скрипта и откроем его для редактирования:
Вставляем в редактор следующий код скрипта на Python:
Делаем файл со скриптом исполняемым и запускаем его на исполнение:
осле запуска скрипта, шаговый двигатель должен совершить 4 шага (вращение в одну сторону), потом подождав 10 секунд он снова начнет свое вращение и сделает уже 20*4 шагов.
А теперь рассмотрим пример интерактивной программы, которая позволяет управлять направлением и скоростью вращения (последовательные шаги) шагового двигателя с использованием клавиатуры.
Вы можете сохранить ниже приведенный скрипт в отдельный файл и сделав его исполняемым запустить, или же заменить исходный код программы в уже созданном скрипте из предыдущего примера.
Теперь клацаем клавиши стрелок влево и вправо и смотрим как будет изменяться направление вращения вала двигателя, а при нажатии клавиш вверх и вниз скорость будет увеличиваться и уменьшаться соответственно.
Если же двигатель не вращается, то возможно что потребуется сменить полярность подключения одной из обмоток к модулю на L298.
Рис. 11. Программа управления биполярным шаговым двигателем, L298, Raspberry Pi.
Видео-демонстрация работы шагового двигателя:
Заключение
Надеюсь вы получили ответ на вопрос «что такое H-мост и как он работает», из экспериментов должно быть понятно как применять драйвер на микросхеме L298 и подключать к нему разные движки.
Важно заметить что в интернете можно найти готовые библиотеки и скрипты на Python для удобного управления двигателями при помощи H-моста на L298 с использованием Raspberry Pi.
Здравствуйте, спасибо за статью, на англоязычных форумах пишут что GND не нужно подключать к малинке, у вас в схеме подключено, в чем сокральный смысл подключения земли?
В моем эксперименте малинка запитана от одного аккумулятора через DC-DC преобразователь, а модуль на L298 питается от другого аккумулятора.
«Земля» малинки и модуля L298 должны быть соединены, иначе при подаче с GPIO пина малинки высокого уровня модуль на L298 его просто не «почувствует». Чтобы не соединять минусы батарей (по сути землю малинки и модуля) отдельным проводом я просто подсоединил вывод GPIO 9 (GND) к клеме GND на модуле, вот и весь сакральный смысл.
Уважаемый автор, подскажите пожалуйста про первую программу «l298_dc_motors_test.py» в ней у меня получилось управлять двигателями поочередно, а у меня нужно чтобы они могли работать и совместно. Как это реализовать в программе?
Спасибо за ответ и за просмотр коментариев.
Здравствуйте, сделал все, как у вас, движок подключён правильно, но он не проворачивается, дергается и все. Биполярный ШЭД у меня.
но он не проворачивается, дергается и все.
Вам нужно опытным путем определить последовательность подачи импульсов на входы двайвера L298, при которой двигатель будет вращаться (делать последовательные шаги в нужном направлении).
Нужно отключить платку драйвера от Raspberry Pi и проводником, подключенным через резистор 1КОм к плюсу питания (+5В), пройтись по входам модуля, наблюдая за шагами вала двигателя.
Когда последовательности подачи импульсов для вращения движка определены, можно исправить номера пинов в следующих блоках кода программы:
Здравствуйте,спасибо за статью) А если вместо драйвера L298 взять l293d и управлять 2мя биполярными ШД,то как писать программу,и с подключением будет иначе или как?)
Для самостоятельной сборки драйвера на основе L293 можно использовать схему из даташита:
Микросхема L293D уже содержит в себе защитные диоды, а L293 потребует дополнительной установки внешних защитных диодов.
Ограничения по выходным токам:
Для экспериментов можно использовать ту же самую программу, что и для L298. Нужно будет лишь изменить в ней порядок подачи импульсов на выходы GPIO (подключены к входам драйвера L293), чтобы вал движка начал вращаться в нужные стороны. Номера выходов в коде программы задаются числовыми значениями, например: «impulse(22)».
Добавлены примеры простейших скриптов (без использования функций и интерфейса взаимодействия) для экспериментов с коллекторным и шаговым двигателем постоянного тока, который подключен к модулю L298.
Здравствуйте, Автор! Скажите а есть ли варианты плавного запуска двигателя на python скрипте? И если в скрипте много повторяющегося кода, есть ли варианты добавить его куданить один раз, и потом вызывать меньжим куском кода? Что бы не городить портянку одного и того же кода. И еще возможно ли сделать вариант запуска двигателя в режиме микрошага? Или через raspberry это плохая затея? Заметил что при работе двигатель инога непроизвольно выдает «стуки», как будто в какой то позиции иногда резко притормаживается, толи это помехи от малинки толи вращающий момент попадает в пустое пространство. Не бывало ли у вас подобного?я
Если же нужно плавно увеличивать ток на обмотках движка, то здесь все сложнее. На выходах GPIO может быть только логический 0 или 1, соответственно на выходах драйвера, к которым подключены обмотки шагового двигателя, будет или 0В или +12В. Для эмуляции спадания и возрастания напряжения на выходе драйвера L298 можно применить широтно-импульсную модуляцию (в статье по этой ссылке также описаны все текущие возможности модуля RPi.GPIO).
Еще можно собрать небольшую электронную схему, которая будет управлять, например, током через линию питания выходных каскадов драйвера L298, которая в свою очередь будет управляться несколькими пинами GPIO или же через шину I2C.
Если в работе движка нужна точность и стабильность, то для управления L298 здесь пожалуй что лучше собрать небольшой блочек на AVR-микроконтроллере, который в свою очередь будет получать команды с малинки и выполнять раздачу импульсов на драйвер L298 из своей внутренней программы.
Насчет стуков и притормаживаний. Нужно понимать что Raspbian (GNU/Linux) не является операционной системой реального времени, ресурсы платформы распределяются между большим количеством разных процессов и прерываний для периферийных устройств. Есть вероятность того, что ваша программа на Python конкурирует за ресурсы микропроцессора и иногда не вкладывается в прописанное в ней время выполнения задержки или подачи импульса через GPIO.
Также причиной появления стуков и «пробоин» между шагами может быть слабый источник питания, к которому подключены выходные каскады (+12В. 30В) модуля L298. Шаговый двигатель, в зависимости от габаритов и модели, может потреблять несколько Ампер тока при удержании вала в фиксированной позиции, это нужно учитывать.