1
\$\begingroup\$

I'm working on a project and unfortunately my DC motor is not working. I wired it like this, am using a brand-new motor (SP BN2A in this document, I scavenged it from a bidet I had at home), powering the whole system with a DC power supply so I can control the voltage exactly, using Raspberry Pi as the controller and using the following code:

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))

The motor vibrates and heats up when I power the system and run the code, but doesn't spin. What part of my system is wrong? Is it the hardware of the motor, the wiring, the code, the power supply, or something else?

Thanks, all help is appreciated.

\$\endgroup\$
  • \$\begingroup\$ Breadboard graphics.... really... not going there \$\endgroup\$ – Trevor_G Jul 14 '17 at 17:26
  • \$\begingroup\$ how would you prefer I format it? It's no big deal I can redo it in 5 minutes... I'm new to this EE thing so I'm not sure about standards and stuff like that \$\endgroup\$ – NeonCop Jul 14 '17 at 17:29
  • \$\begingroup\$ @NeonCop Adding a circuit diagram to your question would be best - you have shown us a wiring diagram, which is not the same thing. \$\endgroup\$ – Andrew Morton Jul 14 '17 at 17:37
  • \$\begingroup\$ @AndrewMorton Is there any software that you would recommend? Also how would I put a Raspberry Pi or motion sensor into the circuit diagram it's not as easy as a motor or a battery. \$\endgroup\$ – NeonCop Jul 14 '17 at 17:56
  • \$\begingroup\$ There is a button in the question editor which will let you create a circuit diagram. For a RPi, you only need to indicate the connections to/from it. Or you can use a pencil and paper and add a photo to your question, but that is not the preferred method. \$\endgroup\$ – Andrew Morton Jul 14 '17 at 18:04
1
\$\begingroup\$

Finally figured it out! I substituted the unipolar motor for a bipolar one, and the whole system worked perfectly as is! To use the unipolar motor, it is necessary to use a motor-driving IC specifically for the unipolar motor, and the L293D does not accomplish the task.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.