树莓派论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10125|回复: 11
收起左侧

树莓派控制步进电机

[复制链接]
发表于 2013-5-9 16:40:51 | 显示全部楼层 |阅读模式
本帖最后由 hahabear 于 2013-5-9 16:40 编辑

一、拿到树莓派爬墙N天,终于能控制步进电机,代码也是根据他的修改的
      参考帖子 http://www.shumeipai.net/thread-540-1-1.html
二、关于GPIO口的说明
      参考地址:http://elinux.org/RPi_Low-level_peripherals#Introduction
三、步进电机使用说明
     见附件:“步进电机_28BYJ-48介绍和驱动及c编程.doc”和“28BYJ48电机详细使用说明.pdf”
四、硬件连接
      需要步进电机驱动板,拿出已经满是灰尘的51单片机的开发板,上面有ULN2003模块。GPIO23、GPIO24、GPIO25、GPIO22分别控制步进电机的A橙、B黄、C粉、D蓝四根信号线。步进电机电源取自单片机开发板电机驱动电路VCC/5V

五、代码
求教,如果把去掉会提示GPIO口已经在使用。貌似只有GPIO23口是这样。
  1. #!/usr/bin/env python

  2. import RPi.GPIO as GPIO
  3. import time

  4. # 设置GIPO口的标号方式
  5. GPIO.setmode(GPIO.BCM)               
  6. GPIO.setwarnings(False)               
  7. #使用GPIO23,GPIO24,GPIO25,GPIO22
  8. StepPins = [23,24,25,22]

  9. #将选择的GPIO口设置为输出
  10. for pin in StepPins:
  11.         print('SET PINs OUT')
  12.         GPIO.setup(pin, GPIO.OUT)
  13.         GPIO.output(pin, False)

  14. #设置反转表
  15. Seq_reversal = []
  16. Seq_reversal = range(0,4)
  17. Seq_reversal[0] = [1,0,0,0]
  18. Seq_reversal[1] = [0,1,0,0]
  19. Seq_reversal[2] = [0,0,1,0]
  20. Seq_reversal[3] = [0,0,0,1]
  21. #设置正转表
  22. Seq_forward = []
  23. Seq_forward = range(0,4)
  24. Seq_forward[0] = [0,0,0,1]
  25. Seq_forward[1] = [0,0,1,0]
  26. Seq_forward[2] = [0,1,0,0]
  27. Seq_forward[3] = [1,0,0,0]

  28. #反转
  29. def Reversal():
  30.         global stepcounter
  31.         for pin in range(0,4):
  32.                 xpin = StepPins[pin]
  33.                 if Seq_reversal[stepcounter][pin] == 1:
  34.                         GPIO.output(xpin, True)
  35.                 else:
  36.                         GPIO.output(xpin, False)
  37.         stepcounter += 1

  38.         if stepcounter >=4 :
  39.                 stepcounter = 0
  40.         if stepcounter < 0:
  41.                 stepcounter = 4
  42.         time.sleep(0.005)

  43. #正转
  44. def Forward():
  45.         global stepcounter
  46.         for pin in range(0,4):
  47.                 xpin = StepPins[pin]
  48.                 if Seq_forward[stepcounter][pin] == 1:
  49.                         GPIO.output(xpin, True)
  50.                 else:
  51.                         GPIO.output(xpin, False)
  52.         stepcounter += 1

  53.         if stepcounter >=4 :
  54.                 stepcounter = 0
  55.         time.sleep(0.005)

  56. if __name__ == '__main__':
  57.         print('Begin')
  58.         stepcounter = 0
  59.         num = 0
  60.         #反转一圈后,正转一圈,一直循环
  61.         while True:
  62.                 if num < 2048:
  63.                         print('Reserval')
  64.                         print(num)
  65.                         Reversal()
  66.                         num += 1
  67.                 elif num >= 2048 and num < 4096:
  68.                         print('Forward')
  69.                         print(num)
  70.                         Forward()
  71.                         num += 1
  72.                 elif num >= 4096:
  73.                         num = 0
复制代码
步进电机减速比为32.  旋转一圈需要360/(5.625/32)=2048.


单片机上的步进电机驱动电路

单片机上的步进电机驱动电路

连接图

连接图

28BYJ48电机详细使用说明.pdf

246.78 KB, 下载次数: 32

步进电机_28BYJ-48介绍和驱动及c编程.doc

160.5 KB, 下载次数: 36

回复

使用道具 举报

发表于 2013-5-9 17:19:49 | 显示全部楼层
请教一下,如果有多个电机,如何控制?

比如,操作航模,至少需要方向舵和升降舵。

多维度的操作控制,是比较有实用意义的问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-9 17:30:08 | 显示全部楼层
lawme 发表于 2013-5-9 17:19
请教一下,如果有多个电机,如何控制?

比如,操作航模,至少需要方向舵和升降舵。

我是刚接触树莓派,还在学习中。你也是玩航模的?固定翼还是直升机?
回复 支持 反对

使用道具 举报

发表于 2013-5-9 17:37:07 | 显示全部楼层
我玩的是“空手道”,只说不练,呵呵。

我对航模有兴趣,但不知如何下手。

回复 支持 反对

使用道具 举报

发表于 2013-5-9 18:14:59 | 显示全部楼层
本帖最后由 lawme 于 2013-5-9 18:16 编辑

上网找些资料看,感觉比较容易制作的是“四旋翼直升机”。

它不需要固定翼飞机的气动学知识,和复杂的技术工艺。

比较难办的是对四台电动机转速的遥控。


回复 支持 反对

使用道具 举报

发表于 2013-5-10 11:25:18 | 显示全部楼层
不能直接接在电机上么
是供电不足?
回复 支持 反对

使用道具 举报

发表于 2013-5-10 11:26:00 | 显示全部楼层
不能直接 接在电机上么?
供电不足?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-14 14:32:22 | 显示全部楼层
lawme 发表于 2013-5-9 18:14
上网找些资料看,感觉比较容易制作的是“四旋翼直升机”。

它不需要固定翼飞机的气动学知识,和复杂的技 ...

没有接触过四旋翼,认真学习树莓派。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-14 14:32:58 | 显示全部楼层
269569205 发表于 2013-5-10 11:25
不能直接接在电机上么
是供电不足?

看帖子说是供电电流不够,我没有试过
回复 支持 反对

使用道具 举报

发表于 2013-5-16 15:50:05 | 显示全部楼层
马克!以后慢慢学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-25 23:26 , Processed in 1.156250 second(s), 30 queries , Gzip On.

Powered by Shumeipai.net! X3.2

© 2001-2015 树莓派论坛安全联盟

快速回复 返回顶部 返回列表