วิธีการเดินสายมอเตอร์สเต็ป


10

ฉันเพิ่งซื้อหนึ่งใน สเต็ปเปอร์มอเตอร์และแผงควบคุม - และฉันไม่สามารถหาเอกสารใด ๆ วิธีเชื่อมต่อกับ Raspberry Pi - ฉันพยายามใช้ AdaFruit กวดวิชาและในขณะที่ฉันได้รับการเชื่อมต่อทั้งหมดที่เหมาะสม เชื่อมต่อพิน gpio แล้ว (ไฟ LED ที่แผงควบคุมสว่างขึ้นอย่างถูกต้องมอเตอร์ไม่ทำอะไรเลย)

ไม่มีใครรู้ว่าฉันอาจหาข้อมูลเพิ่มเติมเกี่ยวกับวิธีการเชื่อมต่อ raspberry pi กับ stepper motor หรือไม่?

ปรับปรุง: 15 พ.ย. 2556 รหัสโปรแกรมของฉันคือสิ่งนี้

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


ไฟ LED กำลังติดสว่างในลำดับที่ถูกต้องด้วยความล่าช้า 0.5 วินาทีหรือไม่?
John La Rooy

หวังว่าฉันจะลงคะแนนได้หลายครั้ง
Loko

พวกมันส่องสว่างในลำดับที่ถูกต้องเมื่อมีการหน่วงเวลา
Steve French

คำตอบ:


6

คุณต้องการไดรเวอร์บัส 3.3 โวลต์ถึง 5 โวลต์ ชุดมอเตอร์ที่คุณซื้อมาสำหรับ Arduino ซึ่งใช้ 5 โวลต์ gpio, rpi ใช้ 3.3 โวลต์เพียงพอที่จะนำไฟ แต่ไม่ทำงาน คุณสามารถรับตัวควบคุมมอเตอร์ที่ยอมรับ 3.3 โวลต์สายควบคุม

จำเอาไว้เสมอตรวจสอบคะแนนโวลต์ของคุณ !!


[หัวเหม็น] ฉันไม่คิดอย่างนั้น - มีวิธีใดบ้างที่จะให้ตัวควบคุมมอเตอร์ทำงานได้อย่างที่คุณคิดได้ - ฉันรู้ว่าฉันกำลังขอสิ่งมหัศจรรย์ที่นี่หรือฉันโชคไม่ดี?
Steve French

@SteveFrench นั่นเป็นเหตุผลที่พวกเขาสร้างไดร์เวอร์บัสแรงดันไฟฟ้าคู่ซึ่งบัฟเฟอร์ระหว่างแรงดันไฟฟ้าฉันซื้อบางอย่างใน eBay เมื่อหลายเดือนก่อน แต่จำไม่ได้ตอนที่ พวกเขาเป็นเรื่องธรรมดาและพร้อมใช้งาน
hildred

แต่สีแดงในภาพเชื่อมต่อกับขา 5V ไม่ใช่ 3.3 ไม่ควรที่จะโอเค ?? ฉันไม่ได้ใช้ด้วยตัวเอง แต่ฉันคิดว่ามีข้อแม้อยู่บ้าง ..
goldilocks

1
@ goldilocks มันขึ้นอยู่กับชิปควบคุม แต่อาจจะไม่ ฉันไม่ได้ค้นหาแผ่นข้อมูลสำหรับชิพคอนโทรลเลอร์ แต่ชิปแรงดันไฟฟ้าคู่ส่วนใหญ่ใช้ 3.3v io เมื่อ vcc เชื่อมต่อกับ 3.3v แต่ก่อนที่จะลองทำคุณต้องทำให้มันเป็นชิพแรงดันไฟฟ้าคู่ส่วนใหญ่เป็นแรงดันไฟฟ้าเดี่ยว นอกจากนี้ยังมีชิปแรงดันไฟฟ้ากว้าง แต่บรรทัดล่างคือตรวจสอบแผ่นข้อมูลสำหรับชิปของคุณ
hildred

0

บทความ adafruit พูดว่า

แม้ว่ารหัสด้านล่างกล่าวถึง pin 18 ของตัวเชื่อมต่อ GPIO ที่ใช้เป็น PIN เปิดใช้งานจำเป็นต้องใช้เฉพาะเมื่อใช้ L293D

หากไฟ LED เป็นแสงและคุณได้ตรวจสอบอีกครั้งว่าคุณมี 5V บนสายสีแดงถึงเวลาที่ต้องสงสัยว่ามอเตอร์นั้นมีปัญหา

เมื่อตัดการเชื่อมต่อมอเตอร์ให้ใช้มัลติมิเตอร์เพื่อตรวจสอบความต้านทานระหว่างสายไฟแต่ละเส้นกับสายสีแดง พวกเขาควรจะเหมือนกัน


ฉันได้แสดงความคิดเห็นกับ enable_pin และได้ใช้มอเตอร์ที่แตกต่างกันทั้งหมดเพื่อประโยชน์ ฉันลองใช้วิธี mutimeter ในวันนี้ - ขอบคุณสำหรับความช่วยเหลือของคุณ
Steve French

ฉันตรวจสอบความต้านทาน - ไม่มีความแตกต่างในความต้านทาน - น่างงมาก
Steve French

อะไรจะเป็นวิธีที่ดีในการทดสอบ 5v บนสายสีแดง ฉันได้ลองใส่มัลติมิเตอร์ตรงนั้น แต่ชีพจรดูเหมือนจะไม่นานพอที่จะลงทะเบียนอะไร
Steve French

0

ก่อนอื่นคุณใช้แหล่งจ่ายไฟอะไร ในการตั้งค่าที่ฉันเห็น Vcc เดียวกันจะใช้ในการขับ RPi, มอเตอร์และบอร์ด (จัมเปอร์ shorted) ฉันประหลาดใจที่ไม่ได้รีเซ็ตราสเบอร์รี่ (วาดจาก + 5V มากเกินไปมีแนวโน้มที่จะทำเช่นนั้น) แต่ฉันไม่รู้ลักษณะของมอเตอร์จริง ๆ - ใช่ไหม?

คุณสามารถใช้สเต็ปในการเคลื่อนย้าย (อย่างน้อยขั้นตอนเดียว) โดยการเชื่อมต่อ + 5V จากแหล่งจ่ายไฟเป็นสีแดงจากมอเตอร์และ GND ไปยังเทอร์มินัล 4 ตัวที่เหลืออยู่ตามลำดับ

ถ้าไฟ LED สว่างขึ้นและมอเตอร์ไม่เคลื่อนไหวดูเหมือนว่ามันจะไม่เป็นกระแสมากพอ หากเป็นกรณีนี้ให้ใช้แหล่งจ่ายไฟที่แรงขึ้นหรือ (แนะนำ) เพิ่ม PSU แยกต่างหากเพื่อจ่ายไฟให้กับมอเตอร์ - ถอดจัมเปอร์ออกแล้วติด Vcc เข้ากับขานอกสุดแล้วเชื่อมต่อ GND เข้ากับบรรทัดเดียวกันบนเขียงหั่นขนม สาย "-" (สายกราวนด์อย่าปลดสายที่มีอยู่แล้ว)

(มีความเป็นไปได้เล็กน้อยที่มีบางอย่างผิดปกติกับบอร์ดคุณสามารถให้ภาพที่ดีของด้านหลังของบอร์ดได้หรือไม่ (ด้านประสาน)


ฉันสามารถทำให้สเต็ปเปอร์มอเตอร์เคลื่อนที่ได้โดยตรง - ฉันลองใช้วิธีอื่นตอนนี้
Steve French

ลองใช้วิธี vcc - ผลลัพธ์เดียวกัน บางทีบอร์ดเหล่านี้ก็ไม่สามารถใช้กับไพด้วยเหตุผลบางอย่าง
Steve French

ถ้าไฟ LED สว่างไปทางขวาบอร์ดจะทำงานอย่างถูกต้อง มอเตอร์มีข้อบกพร่องหรือมีกระแสไม่เพียงพอ (หรือไม่น่าเป็นไปได้ที่การเดินสาย / ขั้วต่อที่ด้านมอเตอร์เสียหาย) คุณเคยลองไหมถ้ามอเตอร์เคลื่อนที่โดยไม่ใช้บอร์ด
เอสเอฟ

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 ที่ดี แต่จบลงที่ stackexchange เพราะ มอเตอร์ไม่ได้ทำอะไรเลย ยกเว้นมันเป็น เมื่อหยิบขึ้นมาฉันจะรู้สึก "heartbeat" เล็ก ๆ น้อย ๆ ทุกครั้งที่ LED เปลี่ยนฉันเปลี่ยนพารามิเตอร์ WaitTime จาก 0.5 เป็นค่าที่เล็กลงและเล็กลงจนกระทั่ง 0.001 อนุญาตให้หมุนเต็มใน 8.5 วินาที

แต่ฉันเปลี่ยนซีเควนเชียลเป็น 2 (ผู้ผลิต) เนื่องจากประเภท 1 ดูเหมือนจะหยุดมอเตอร์เป็นครั้งคราวแม้จะใช้งาน "หัวใจเต้น"

ฉันเปลี่ยนรหัสเพื่อให้ฉันสามารถทดสอบจำนวนขั้นตอนที่การหมุนเต็มรูปแบบเกิดขึ้นและสร้างสวิตช์บรรทัดคำสั่งเพื่อหมุนตามเข็มนาฬิกาหรือตามเข็มนาฬิกาทวนเข็มนาฬิกา

ด้วย WaitTime ที่ 0.001 เรียกใช้การทดสอบ CW จากนั้นใช้ขั้นตอนจำนวนเดียวกัน CCW ทำให้เกิดข้อผิดพลาดเพียงเล็กน้อยนั่นคือมันไม่ได้อยู่ในตำแหน่งที่เริ่มต้น

การตั้งค่า WaitTime เป็น 0.01 ทำให้ฉันสามารถแสดงการดำเนินการซ้ำได้ถึง 4100 ขั้นตอนทั้ง CW หรือ CCW จะสิ้นสุดที่จุดเดียวกันเสมอ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.