การใช้งาน stepper motor บน raspberry pi ด้วย Python

The short URL : http://www.ezenow.com/WvTWK

การใช้งาน stepper motor บน raspberry pi ด้วย Python  แอดมินซื้อของมาดองไว้ทำ lab หลายอาทิตย์ วันนี้ได้เลิกขี้เกียจ จับเอา stepper กับ driver มาลองยำเล่นดู รวมทั้งแงะเอา stepper เก่าๆ จากเครื่อง scanner มาเล่นด้วย ซึ่งใช้ได้กับของโคลนราคาถูกๆ ด้วย มาดูกันครับ

stepper motor stepper motor scanner

เตรียมของ

  1. Raspbian OS ลง python-dev
  2. Stepper motor พร้อม driver  (120 บาท)

การต่อสาย

  1. จากตัว stepper มาที่วงจร driver จะมีสายอยู่ 5 เส้น น้ำเงิน ชมพู เหลือง ส้ม (IN1-4) แดง (+)  ถ้าเป็นชุดที่มากับสามารถเสียบลง socket ได้เลย แต่ถ้าแงะมาจากเครื่องอื่น ต้องลองไล่สายดู สายแดงปรกติจะเป็นไฟเลี้ยง (+) อยู่แล้ว
  2. จากบอร์ด driver ไปหา Raspberry Pi จะมีอยู่ 6 เส้น คือ
    1. ground ต่อกับขา PIN 2 ของ Raspberry Pi
    2. +5v ต่อกับขา PIN 6 ของ Raspberry Pi
    3. IN1 ต่อกับขา PIN 18 ของ Raspberry Pi
    4. IN2 ต่อกับขา PIN 22 ของ Raspberry Pi
    5. IN3 ต่อกับขา PIN 24 ของ Raspberry Pi
    6. IN4 ต่อกับขา PIN 26 ของ Raspberry Pi

Python Code

#———————————–
# Name: Stepper Motor
#
# Author: matt.hawkins
#
# Created: 11/07/2012
# Copyright: (c) matt.hawkins 2012
#———————————–
#!/usr/bin/env python
 
# Import required libraries
import time
import RPi.GPIO as GPIO
 
# Use BCM GPIO references
# instead of physical pin numbers
GPIO.setmode(GPIO.BCM)
 
# Define GPIO signals to use
# Pins 18,22,24,26
# GPIO24,GPIO25,GPIO8,GPIO7
StepPins = [24,25,8,7]
 
# Set all pins as output
for pin in StepPins:
  print “Setup pins”
  GPIO.setup(pin,GPIO.OUT)
  GPIO.output(pin, False)
 
# Define some settings
StepCounter = 0
WaitTime = 0.5
 
# Define simple sequence
StepCount1 = 4
Seq1 = []
Seq1 = range(0, StepCount1)
Seq1[0] = [1,0,0,0]
Seq1[1] = [0,1,0,0]
Seq1[2] = [0,0,1,0]
Seq1[3] = [0,0,0,1]
 
# Define advanced sequence
# as shown in manufacturers datasheet
StepCount2 = 8
Seq2 = []
Seq2 = range(0, StepCount2)
Seq2[0] = [1,0,0,0]
Seq2[1] = [1,1,0,0]
Seq2[2] = [0,1,0,0]
Seq2[3] = [0,1,1,0]
Seq2[4] = [0,0,1,0]
Seq2[5] = [0,0,1,1]
Seq2[6] = [0,0,0,1]
Seq2[7] = [1,0,0,1]
 
# Choose a sequence to use
Seq = Seq1
StepCount = StepCount1
 
# Start main loop
while 1==1:
 
  for pin in range(0, 4):
    xpin = StepPins[pin]
    if Seq[StepCounter][pin]!=0:
      print ” Step %i Enable %i” %(StepCounter,xpin)
      GPIO.output(xpin, True)
    else:
      GPIO.output(xpin, False)
 
  StepCounter += 1
 
  # If we reach the end of the sequence
  # start again
  if (StepCounter==StepCount):
    StepCounter = 0
  if (StepCounter<0):
    StepCounter = StepCount
 
  # Wait before moving on
  time.sleep(WaitTime)

sudo nano stepper.py แล้ว copy code ข้างบน มาวาง  sudo python stepper.py เพื่อรัน

ทดลองแก้ จาก

Seq1[0] = [1,0,0,0]
Seq1[1] = [0,1,0,0]
Seq1[2] = [0,0,1,0]
Seq1[3] = [0,0,0,1]

เป็น

Seq1[3] = [1,0,0,0]
Seq1[2] = [0,1,0,0]
Seq1[1] = [0,0,1,0]
Seq1[0] = [0,0,0,1]

The short URL : http://www.ezenow.com/WvTWK
WordPress SEO fine-tune by Meta SEO Pack from Poradnik Webmastera