步进电机和普通电机最大的不同是步进电机可以更加精确地旋转,这个特性使得它们在各种树莓派项目中得到广泛运用。

步进电机选择

市面上有很多步进电机可供选择,最后我们还是决定使用ULN2003控制板和28BJY-48电机。选择它的原因是:便宜、5V供电、易于连接树莓派的GPIO接口等等。28BJY-48步进电机的数据表中还有很多详细信息。

树莓派的连接

先将步进电机连接到控制板。控制板上有6个引脚,需要连接到Pi的GPIO接口上,连接如下:

5V (P1-02)

GND (P1-06)

Inp1 (P1-11)

Inp2 (P1-15)

Inp3 (P1-16)

Inp4 (P1-18)

上面的P1-XX指的是本文中使用的树莓派的引脚号。这些定义在下面Python代码的StepPins列表中,因此如果使用不同的引脚,请确保更新Python列表。您可以使用其他GPIO 引脚,只是记住要更新Python的脚本。

要控制步进电机旋转,我们需要一系列“high” 和 “low” 电平,通过设置正确的高低电平顺序,电机就会旋转,颠倒顺序旋转方向也会相反。

Python控制步进电机的代码示例

代码使用RPi.GPIO库,定义了4步和8步序列。

#!/usr/bin/python

# Import required libraries

import sys

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

# Physical pins 11,15,16,18

# GPIO17,GPIO22,GPIO23,GPIO24

StepPins = [17,22,23,24]

# Set all pins as output

for pin in StepPins:

print "Setup pins"

GPIO.setup(pin,GPIO.OUT)

GPIO.output(pin, False)

# Define advanced sequence

# as shown in manufacturers datasheet

Seq = [[1,0,0,1],

[1,0,0,0],

[1,1,0,0],

[0,1,0,0],

[0,1,1,0],

[0,0,1,0],

[0,0,1,1],

[0,0,0,1]]

StepCount = len(Seq)

StepDir = 1 # Set to 1 or 2 for clockwise

# Set to -1 or -2 for anti-clockwise

# Read wait time from command line

if len(sys.argv)>1:

WaitTime = int(sys.argv[1])/float(1000)

else:

WaitTime = 10/float(1000)

# Initialise variables

StepCounter = 0

# Start main loop

while True:

print StepCounter,

print Seq[StepCounter]

for pin in range(0, 4):

xpin = StepPins[pin]if Seq[StepCounter][pin]!=0:

print " Enable GPIO %i" %(xpin)

GPIO.output(xpin, True)

else:

GPIO.output(xpin, False)

StepCounter += StepDir

# If we reach the end of the sequence

# start again

if (StepCounter>=StepCount):

StepCounter = 0

if (StepCounter<0):

StepCounter = StepCount+StepDir

# Wait before moving on

time.sleep(WaitTime)

代码保存为“stepper.py”,然后使用“sudo”来运行:

sudo python stepper.py

按Ctrl-C退出。

step等待时间

在本例中,默认等待时间设置为0.01秒(10毫秒)。要改变旋转速度,你可以改变这个值。我发现我可以在电机停止工作之前将它减少到4ms。如果脚本运行得太快,电机控制器就跟不上了。这种性能可能取决于你的电机和它的控制器。要指定不同的等待时间,可以使用以下方法:

sudo python stepper.py 20

其中20是毫秒数。

步幅

完整的步幅由8个步幅组成。如果将StepDir设置为-2或2,则步幅数会减少到4。4步步幅速度更快,但扭矩更低。8步步幅速度更慢,但扭矩更高。

现在我们可以使用树莓派和Python脚本来控制步进电机了。如果再加上一个小马达,一个小型机器人的雏形就出现了!

python控制电机_树莓派使用Python控制步进电机相关推荐

  1. [转载] 树莓派并行控制电机_使用由并行端口控制的软盘驱动步进电机的相机摇摄器

    参考链接: Python中的摩尔斯电码翻译器 树莓派并行控制电机 Here's a clever guy to watch, Ashish Derhgawen in New Delhi. He's a ...

  2. python控制电机_树莓派Python控制步进电机

    步进电机控制在Python 玩了LED,开关和蜂鸣器后,我觉得自然的下一步是用步进电机或两个.这可能构成了一个想法的一部分,我不得不创建一个自动停止动画动画"转台",用于旋转和拍摄 ...

  3. STM32 HAL库PID控制电机 第三章 PID控制双电机

    STM32 HAL库PID控制电机 第三章 PID控制双电机 注:本文含全部PID控制代码,保证可以运行,如不能运行可以留言回复 1 基础配置 1.1 编码器电路图及配置 引脚 定时器通道 PA0 T ...

  4. python舵机控制程序_树莓派PWM控制舵机的两种方式

    PWM控制舵机简介 通常情况下,伺服电机(舵机)是由一个标准的直流系统和一个内部反馈控制装置(一个减速齿轮和电位计)来组成的.伺服电机(舵机)的主要作用是将齿轮轴旋转到一个预定义的方向上.伺服电机(舵 ...

  5. python控制电机_[MicroPython]TurnipBit开发板旋转按钮控制直流电机转速

    1.实验目的: 学习在PC机系统中扩展简单I/O 接口的方法 学习TurnipBit拼插编程 了解直流电机的工作原理 学习L298N的工作原理 学习TurnipBit扩展板L298N和按键模块的接线方 ...

  6. python自动控制程序_巧用 python 脚本控制你的C程序

    python是一门艺术语言,除了开发桌面程序,还能够开发网络应用,数据库应用,还可以代替shell编写一些的实用脚本,本文主要讲述了如何利用 python 程序控制你的 C 程序的行为. 作为例子,本 ...

  7. 树莓派python开发教程_树莓派Raspberry开发从基础到进阶视频+设计资料超详细教程下载...

    课程内容 [初级篇]重点推荐:树莓派开发实战视频教程+文档教程(含源码) 课程目录 教学视频与源代码 1.[进阶篇]Raspberry详细视频教程 树莓派基础 安装树莓派的操作系统 远程登录和使用树莓 ...

  8. python硬件编程_树莓派c语言 设置并使用树莓派进行Python和C语言编程 - 硬件设备 - 服务器之家...

    树莓派c语言 设置并使用树莓派进行Python和C语言编程 发布时间:2017-03-01 来源:服务器之家 设置并使用树莓派进行Python和C语言编程 (下) Python部落组织翻译, 禁止转载 ...

  9. 树莓派python编程小车_树莓派小车教程(三)——软件代码

    原标题:树莓派小车教程(三)--软件代码 树莓派小车教程(三)--软件代码 2017-07-07 琳小豆 HelloWorld少儿编程 树莓派小车教程 (三) 在上一次教程中,我们已经完成了硬件连接. ...

最新文章

  1. 敏捷研发之代码评审与工具
  2. 普通人有必要学python-风变编程:普通人学Python有意义吗?
  3. I.MX6ULL镜像文件
  4. 1.9 Java数组和字符串的相互转换
  5. 2.2基本算法之递归和自调用函数_数据结构与算法之5——队列和栈
  6. STM32工作笔记0085---UCOSIII信号量和互斥信号量(上)
  7. jupyter notebook + 服务器中docker 使用配置
  8. ESP8266教程——采用AT指令
  9. 微信小程序漏洞:可下载任意微信小游戏源代码(附赠源码)
  10. ADNI数据集相关概念初步整理
  11. python爬虫总结,看这篇就够了
  12. 干碳纤维 湿碳纤维_纤维状网站故障不是一种选择
  13. 安格鲁貂出现感冒如何解决?
  14. 火伞云APP盾,您身边的DDoS攻击安全保护专家
  15. 经典的股票量化交易策略(含源码)
  16. CWS(美国国土安全部下属的软件保证项目)与SANS(权威安全培训组织)联合编制的最危险的25个编程错误
  17. Java基础(一) 八大基本数据类型
  18. C++学习笔记,坚持自律!
  19. 2020.2.5普及C组 Hank比赛【纪中】【DP】
  20. 信息系统项目管理师-项目质量管理

热门文章

  1. Java @Value(${xxx})取properties时中文乱码
  2. Float IP 浮动IP地址
  3. 深度解读如何在H5中完美融入VR技术
  4. ACM算法分类和资源
  5. SQLServer添加mdf文件和ldf文件
  6. 关于网上商城开发的随笔记录4
  7. Fritzing 元件绘制
  8. Vue--》Vue3打造可扩展的项目管理系统后台的完整指南(七)
  9. [教程] 康盛创想 Linux(基于CentOS的LNMP) 服务器部署标准 白丁简明版
  10. 10个漂亮的jQuery日历插件下载【转载】