树莓派论坛

 找回密码
 立即注册

树莓派/Raspberry Pi控制步进电机(附代码)!!!!

ukonline2000 发表于 2012-7-22 15:49:26 | 显示全部楼层 |阅读模式
本帖最后由 ukonline2000 于 2014-3-21 22:18 编辑

本来打算写arduino的代码,后来发现网上有个步进电机的代码,于是用这个代码试了试驱动步进电机,效果不错!
http://player.youku.com/player.php/sid/XNDMwNDUyMjEy/v.swf



2012-07-22_14-59-57_461.jpg 2012-07-22_15-00-11_771.jpg

材料:
1.树莓派
2.全功能扩展版http://www.shumeipai.net/thread-455-1-1.html
3.步进电机28BYJ-48-5V或者28BYJ-48-12V

使用GPIO0-GPIO3口

附python代码(这里要感谢matt.hawkins提供的源代码):
Stepper Motor.zip (1 KB, 下载次数: 165)
###########################################################
  1. #-----------------------------------
  2. # Name: Stepper Motor
  3. #
  4. # Author: matt.hawkins
  5. #
  6. # Created: 11/07/2012
  7. # Copyright: (c) matt.hawkins 2012
  8. #-----------------------------------
  9. #!/usr/bin/env python

  10. # Import required libraries
  11. import time
  12. import RPi.GPIO as GPIO

  13. # Use BCM GPIO references
  14. # instead of physical pin numbers
  15. GPIO.setmode(GPIO.BCM)

  16. # Define GPIO signals to use
  17. # GPIO24,GPIO25,GPIO8,GPIO7
  18. StepPins = [17,18,21,22]

  19. # Set all pins as output
  20. for pin in StepPins:
  21.   print  "Setup pins"
  22.   GPIO.setup(pin,GPIO.OUT)
  23.   GPIO.output(pin, False)

  24. # Define some settings
  25. StepCounter = 0
  26. WaitTime = 0

  27. # Define simple sequence
  28. StepCount1 = 4
  29. Seq1 = []
  30. Seq1 = range(0, StepCount1)
  31. Seq1[0] = [1,0,0,0]
  32. Seq1[1] = [0,1,0,0]
  33. Seq1[2] = [0,0,1,0]
  34. Seq1[3] = [0,0,0,1]

  35. # Define advanced sequence
  36. # as shown in manufacturers datasheet
  37. StepCount2 = 8
  38. Seq2 = []
  39. Seq2 = range(0, StepCount2)
  40. Seq2[0] = [1,0,0,0]
  41. Seq2[1] = [1,1,0,0]
  42. Seq2[2] = [0,1,0,0]
  43. Seq2[3] = [0,1,1,0]
  44. Seq2[4] = [0,0,1,0]
  45. Seq2[5] = [0,0,1,1]
  46. Seq2[6] = [0,0,0,1]
  47. Seq2[7] = [1,0,0,1]

  48. # Choose a sequence to use
  49. Seq = Seq1
  50. StepCount = StepCount1

  51. # Start main loop
  52. while 1==1:

  53.   for pin in range(0, 4):
  54.     xpin = StepPins[pin]
  55.     if Seq[StepCounter][pin]!=0:
  56.       print  " Step %i Enable %i" %(StepCounter,xpin)
  57.       GPIO.output(xpin, True)
  58.     else:
  59.       GPIO.output(xpin, False)

  60.   StepCounter += 1

  61.   # If we reach the end of the sequence
  62.   # start again
  63.   if (StepCounter==StepCount):
  64.     StepCounter = 0
  65.   if (StepCounter<0):
  66.     StepCounter = StepCount

  67.   # Wait before moving on
  68.   time.sleep(WaitTime)
复制代码
ukonline2000  楼主| 发表于 2012-7-22 16:13:26 | 显示全部楼层
自己的沙发
树老大 发表于 2012-7-22 16:29:02 | 显示全部楼层
技术贴,支持了。
bianbian 发表于 2012-7-22 18:50:39 | 显示全部楼层
2.0板子进展怎样啊
topzdx 发表于 2012-7-22 18:53:30 | 显示全部楼层

回 ukonline2000 的帖子

ukonline2000:自己的沙发  (2012-07-22 16:13) 
等待时间 为0?
每秒多少脉冲?
树老大 发表于 2012-7-23 12:03:24 | 显示全部楼层
怎么觉得有点搞笑啊。
lb_8848 发表于 2012-8-11 19:02:28 | 显示全部楼层
能链接驱动板,不用直接出脉冲么?
xietian 发表于 2013-2-27 20:26:32 | 显示全部楼层
脉冲频率最大是多少?
linux0ne 发表于 2013-10-12 17:37:20 | 显示全部楼层
ULN2803驱动板  可以被这个取代了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版 | Archiver | 树莓派论坛 ( 粤ICP备15075382号-1 )