스테퍼 모터를 배선하는 방법?


10

최근 에이 스테퍼 모터 및 드라이버 보드 중 하나를 구입 했으며 라즈베리 파이에 연결하는 방법에 대한 문서를 찾을 수 없습니다 .AdaFruit 튜토리얼 을 사용하려고 시도 중이며 적절한 연결을 모두 얻었습니다. GPIO 핀이 연결됨 (드라이버 보드의 LED가 올바르게 켜지고 모터가 작동하지 않음).

누구나 라즈베리 파이를 스테퍼 모터에 연결하는 방법에 대한 자세한 정보를 어디에서 찾을 수 있는지 알고 있습니까?

업데이트 : 2013 년 11 월 15 일 내 프로그램 코드는 다음과 같습니다.

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

#enable_pin = 18
coil_A_1_pin = 4
coil_A_2_pin = 17
coil_B_1_pin = 23
coil_B_2_pin = 24

#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)
    setStep(0, 1, 1, 0)
    setStep(0, 1, 0, 1)
    setStep(1, 0, 0, 1)

def backwards(delay, steps):  
  for i in range(0, steps):
    setStep(1, 0, 0, 1)
    setStep(0, 1, 0, 1)
    setStep(0, 1, 1, 0)
    setStep(1, 0, 1, 0)


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

내 브레드 보드는 다음과 같습니다 여기에 이미지 설명을 입력하십시오

내 드라이버 보드는 다음과 같습니다 여기에 이미지 설명을 입력하십시오

나는 가지고있다

IN1 => GPIO 4

IN2 => GPIO 17

IN3 => GPIO 23

IN4 => GPIO 24


0.5 초 지연으로 LED가 올바른 순서로 점등됩니까?
John La Rooy

여러 번 투표 할 수 있으면 좋겠습니다.
Loko

지연과 함께 올바른 순서로 점등됩니다.
Steve French

답변:


6

3.3V ~ 5V 버스 드라이버가 필요합니다. 당신이 구입 한 모터 키트는 5 볼트 gpio를 사용하는 Arduino 용이며 rpi는 3.3 볼트를 사용하므로 LED를 트립하기에 충분하지만 작동하지 않습니다. 3.3V 제어 라인을 수용하는 모터 컨트롤러를 얻을 수도 있습니다.

항상 정격 전압을 확인하십시오!


[Smacks head] 나는 그것을 생각하지 않았다-당신이 생각할 수있는 모터 컨트롤러를 작동시킬 수있는 방법이 있습니까?
Steve French

@SteveFrench 그렇기 때문에 전압 사이에서 버퍼링되는 이중 전압 버스 드라이버를 만드는 이유는 몇 달 전에 이베이에서 구입했지만 부품 번호를 기억할 수는 없습니다. 그것들은 일반적이며 쉽게 구할 수 있습니다
19:17에

그러나 사진의 빨간색은 3.3이 아닌 5V 핀에 연결됩니다. 괜찮을까요? 나는 그것을 직접 사용하지는 않았지만 몇 가지주의 사항이 있다고 생각합니다.
goldilocks

1
@goldilocks 그것은 컨트롤러 칩에 달려 있지만 아마도 아닐 것입니다. 컨트롤러 칩에 대한 데이터 시트를 찾지 않았지만 대부분의 이중 전압 칩은 vcc가 3.3v에 연결될 때 3.3v io를 사용합니다. 그러나 시도하기 전에 이중 전압 칩이며 대부분 단일 전압입니다. 넓은 전압 칩도 있지만 결론은 칩의 데이터 시트를 확인하는 것입니다.
초에 hildred

0

Adafruit 기사는 말합니다

아래 코드는 GPIO 커넥터의 18 번 핀이 Enable 핀으로 사용되지만 L293D를 사용할 때만 필요합니다.

LED가 켜지고 빨간색 선에 5V가 있는지 다시 확인한 경우 모터에 결함이있는 것으로 의심됩니다.

모터가 분리 된 상태에서 멀티 미터를 사용하여 각 전선과 적색 전선 사이의 저항을 확인하십시오. 그들은 거의 같아야합니다


enable_pin을 주석 처리하고 다른 모터를 사용했습니다. 나는 오늘 mutimeter 접근법을 시도하고 있습니다-당신의 도움에 감사드립니다
Steve French

나는 저항을 확인했다-저항의 차이가 없다-매우 당황했다.
Steve French

빨간 선에서 5v를 테스트하는 좋은 방법은 무엇입니까? 멀티 미터를 직접 거기에 올려 놓으려고했지만 펄스가 등록 할만 큼 오래 가지 않는 것 같습니다.
Steve French

0

먼저, 어떤 전원 공급 장치를 사용하고 있습니까? 내가 본 구성에서 동일한 Vcc가 RPi, 모터 및 보드를 구동하는 데 사용됩니다 (점퍼 단락). 라즈베리를 재설정하지 않는 것이 놀랍습니다 (+ 5V에서 너무 많이 가져 오는 것이 그렇게하는 경향이 있습니다).하지만 실제로 모터의 특성을 알지 못합니다.

전원 공급 장치의 + 5V를 모터의 빨간색에 연결하고 GND를 나머지 4 개의 터미널에 순서대로 연결하여 스테퍼를 움직일 수 있습니까 (최소한 단일 단계)?

LED가 켜지고 모터가 움직이지 않으면 실제로 전류가 충분하지 않은 것 같습니다. 이 경우 더 강력한 전원 공급 장치를 얻거나 (권장) 별도의 PSU를 추가하여 모터에 전원을 공급하십시오. 점퍼를 제거하고 그 자리에서 Vcc를 가장 바깥 쪽 핀에 연결하고 GND를 브레드 보드의 동일한 라인에 연결하십시오 "-"와이어 (공통 접지, 이미있는 것을 분리하지 마십시오.)

(보드에도 문제가있을 가능성이 적습니다. 보드 뒷면의 좋은 사진을 제공 할 수 있습니까? (납땜면)?


스테퍼 모터를 직접 움직일 수 있습니다-다른 방법을 시도하고 있습니다.
Steve French

방금 VCC 방법을 시도했습니다-같은 결과. 어쩌면이 보드는 어떤 이유로 파이와 함께 사용할 수 없습니다.
Steve French

LED가 올바르게 켜지면 보드가 올바르게 작동하는 것입니다. 모터에 결함이 있거나 충분한 전류를 얻지 못합니다 (또는 모터 측의 배선 / 커넥터가 손상되지 않았을 가능성이 있습니다). 보드를 사용하지 않고 모터가 움직이면 접점을 직접 연결하는 것만 시도 했습니까?
SF.

0

AdaFruit 코드와 코드를 살펴보면 단계 순서가 잘못 된 것 같습니다. 특히 하나의 핀이 아닌 두 개의 핀을 동시에 구동 해야하는 것처럼 보입니다.

AdaFruit 코드를 기반으로 다음 시퀀스가 ​​작동해야한다고 생각합니다.

# Define simple sequence
StepCount1 = 4
Seq1 = []
Seq1 = range(0, StepCount1)
Seq1[0] = [1,0,1,0]
Seq1[1] = [0,1,1,0]
Seq1[2] = [0,1,0,1]
Seq1[3] = [1,0,0,1]

오류가 발생했을 때 프로그램의 실제 시퀀스가 ​​오류임을 복사해야합니다.
Steve French

0

나는 http://www.raspberrypi-spy.co.uk/2012/07/stepper-motor-control-in-python/ , GPIO 핀의 좋은 그룹화를 따라가는 가이드를 따르고 있지만 모터는 아무것도하지 않았다. 그렇지 않았다. 픽업했을 때 LED가 바뀔 때마다 작은 "하트 비트"를 느낄 수있었습니다. 0.001이 8.5 초 안에 완전히 회전 할 때까지 WaitTime 매개 변수를 0.5에서 더 작은 값으로 변경했습니다.

그러나 타입 1이 작동하는 "하트 비트"로 모터를 멈추는 것처럼 보였기 때문에 시퀀스 타입을 2 (제조업체)로 변경했습니다.

코드를 변경하여 전체 회전에 걸리는 단계 수를 테스트하고 시계 방향 또는 시계 방향으로 회전하는 명령 줄 스위치를 만들었습니다.

0.001의 WaitTime으로 테스트 CW를 실행 한 다음 동일한 수의 단계를 사용하여 CCW는 약간의 오류를 생성했습니다. 즉, 시작 위치에 정렬되지 않았습니다.

WaitTime을 0.01로 설정하면 CW 또는 CCW가 항상 같은 지점에서 4100 단계의 반복 실행을 표시 할 수있었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.