Не работает шаговый двигатель 12 В, вибрирует, но не крутится.

Я работаю над проектом, и, к сожалению, мой двигатель постоянного тока не работает. Я подключил его следующим образом , используя совершенно новый двигатель (SP BN2A в этом документе, я взял его из биде, который был у меня дома), питая всю систему от источника постоянного тока, чтобы я мог точно контролировать напряжение, используя Raspberry Pi в качестве контроллера и используя следующий код:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

enable_pin = 5
coil_A_1_pin = 26
coil_A_2_pin = 19
coil_B_1_pin = 6
coil_B_2_pin = 13

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)

while True:
  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))

Мотор вибрирует и нагревается, когда я подаю питание на систему и запускаю код, но не вращается. Какая часть моей системы неверна? Это оборудование двигателя, проводка, код, источник питания или что-то еще?

Спасибо, любая помощь приветствуется.

Макетная графика.... действительно... не туда
как бы вы предпочли, чтобы я отформатировал его? Ничего страшного, я могу переделать это за 5 минут... Я новичок в этом деле EE, поэтому я не уверен в стандартах и ​​тому подобном.
@NeonCop Было бы лучше добавить электрическую схему к вашему вопросу - вы показали нам электрическую схему, что не одно и то же.
@AndrewMorton Есть ли какое-нибудь программное обеспечение, которое вы бы порекомендовали? Кроме того, как бы я поместил Raspberry Pi или датчик движения в принципиальную схему, это не так просто, как двигатель или батарея.
В редакторе вопросов есть кнопка, позволяющая создать электрическую схему. Для RPi вам нужно только указать подключения к/от него. Или вы можете использовать карандаш и бумагу и добавить фотографию к своему вопросу, но это не предпочтительный метод.
Это может быть так: electronics.stackexchange.com/questions/108686/… и обратите внимание, что работать от хилой 9-вольтовой батарейки (как показано в вашем мультфильме) тоже не получится.
Я не малиновый парень, но я не заметил, что ваши прямые и обратные функции имеют int для аргументов. Означает ли это, что ваша задержка усекается до нуля?
@Andyaka Это умная идея, но я действительно думаю, что L293D разработан специально для работы с напряжением моего двигателя (12 В), поэтому я не думаю, что проблема в слишком низком напряжении. Кроме того, моя батарея на самом деле 12 В, я использую источник питания постоянного тока.
@JohnBirckhead, вы правы, ввод, который он запрашивает, находится в мс, и, поскольку я обычно использую от 1 до 5, он может установить его на 0. Разве это не заставит двигатель вращаться непрерывно?
Для шагового двигателя помните, что масса ротора имеет инерцию. Вы должны ускорить массу, применив крутящий момент, достаточный для преодоления инерции и запуска двигателя, а затем должно быть достаточно времени, чтобы перевести его в следующее положение. Если вы шагнете слишком быстро, вы лишь немного сдвинетесь, отступив назад, в исходное положение, что и вызовет у вас описанный симптом. В вашем коде, если вы введете значение больше 1000, у вас будет время шага в одну секунду, и двигатель будет двигаться (хотя и медленно), если это ваша проблема.

Ответы (1)

Наконец-то разобрался! Я заменил униполярный двигатель на биполярный, и вся система заработала как есть! Чтобы использовать униполярный двигатель, необходимо использовать ИС управления двигателем специально для униполярного двигателя, и L293D не выполняет эту задачу.