У магнита есть северный (красный) и южный (синий) полюс. Противоположные полюса притягиваются, одноимённые — отталкиваются.
Электромагниты работают как магниты только тогда, когда через них проходит электрический ток. Если увеличить силу тока, магнит станет сильнее. Если подключить его наоборот, полюса поменяются местами.
Двигатели
Коллекторные (щеточные) двигатели
Двигатели постоянного тока — самые простые в плане строения. Сверху и снизу у них расположены дугообразные магниты.
В центре находится электромагнит (тёмная рамка с серыми контактами), на который подают питание две (белые) щётки.
Когда вы подключаете питание (перемещаете ползунок напряжения вправо), верхняя часть электромагнита отталкивается от магнита сверху и притягивается к магниту снизу, поэтому электромагнит поворачивается. После половины оборота щётки отключаются. Нет питания — электромагнит не работает. Он продолжает вращаться (потому что уже находится в движении), пока не соприкоснётся со щётками снова, тогда его полюса меняются местами. Теперь та же сторона отталкивается от нижнего магнита и притягивается к верхнему, поэтому двигатель завершает оборот.
Мощные двигатели постоянного тока большие и дорогие, а вот маленькие широко используются. Загуглите “жёлтый мотор” — у них есть редуктор (сам двигатель вращается со скоростью более 9000 об/мин), они очень распространены в проектах ардуинщиков.
Для управления небольшим щеточным двигателем нужен драйвер (например, mx1508), поскольку двигатель потребляет больше энергии, чем может дать микроконтроллер (МК – маленький недокомпьютер), и для смены направления нужно менять полярность (менять местами + и -), чего микроконтроллер тоже делать не умеет. Чтобы найти, как его подключать, загуглите “mx1508 распиновка” или “mx1508 arduino”.
Управление выглядит примерно так:
import board
import pwmio
from adafruit_motor import motor
pwm_a = pwmio.PWMOut(board.D5, frequency=1600)
pwm_b = pwmio.PWMOut(board.D6, frequency=1600)
m1 = motor.DCMotor(pwm_a, pwm_b)
m1.throttle = -0.6 # назад, мощность 60%Подробнее об этом позже.
Бесколлекторные (синхронные) двигатели
Бесщеточные двигатели меньше и мощнее, но ими сложнее управлять.
Внутри ротора (вращающейся части) у них расположено много маленьких магнитов, которые вместе действуют как один большой кольцевой магнит.
В центре находятся 6 (иногда 9, обычно 12) электромагнитов, которые включаются один за другим в трех группах, создавая вращающееся магнитное поле. Ротор крутится синхронно с этим полем (отсюда название двиателя). Поскольку электромагниты не вращаются, провода подключаются напрямую, т.е. щеток нет (отсюда другое название).
Реальная скорость вращения обычно 3000+ об/мин.
Для подключения используют регулятор оборотов. Он питает двигатель (как драйвер) и преобразует простой сигнал, который микроконтроллер подаёт по одному проводу, в сложные управляющие сигналы для двигателя, передаваемые по трём проводам (как показано выше).
Управление:
import board
import pwmio
from adafruit_motor import servo
pwm = pwmio.PWMOut(board.D5, frequency=50)
m1 = servo.ContinuousServo(pwm, min_pulse=1000, max_pulse=2000)
m1.throttle = -0.2 # назад, мощность 20%Шаговые двигатели
Чтобы повернуть двигатель постоянного тока или бесщёточный двигатель на заданный угол, нужен датчик, который будет измерять его положение.
Более простой вариант — шаговые двигатели. Подайте импульс на пин STP драйвера (A4988, DRV8835), двигатель повернётся на 1,8 градуса. Ещё раз — ещё 1,8 градуса. Подайте 3 вольта на вывод DIR драйвера, импульс на STP — двигатель повернётся на 1,8 градуса в другую сторону. И всё, никаких датчиков.
Если нужно, чтобы двигатель вращался медленно, подавайте импульсы с низкой частотой. Если нужно быстрее — с более высокой.
У драйвера есть регулятор ограничения тока, который не даёт двигателю перегреться. Подробнее об этом здесь.
В самом двигателе находится магнитный ротор. У этого внешний край — северный полюс. Статор состоит из 8 электромагнитов с зубцами. Обратите внимание: нижние зубцы выровнены с ротором, а верхние — нет.
Когда зубцы статора становятся южным полюсом, зубцы ротора поворачиваются к ним. Когда они становятся северным полюсом, зубцы ротора поворачиваются так, чтобы оказаться напротив промежутков, т.е. быть подальше.
Микрошаги — это когда драйвер плавно регулирует подачу тока на каждую группу электромагнитов, а не просто включает и выключает их.
Управление:
import time
import board
from digitalio import DigitalInOut, Direction
dir = DigitalInOut(board.D5)
stp = DigitalInOut(board.D6)
dir.direction = Direction.OUTPUT
stp.direction = Direction.OUTPUT
def move(steps, direction):
dir.value = direction
time.sleep(0.001)
for _ in range(steps):
step_pin.value = True
time.sleep(0.001)
step_pin.value = False
time.sleep(0.001)
move(100, False) # полоборота