python控制电机_树莓派使用Python控制步进电机
步进电机和普通电机最大的不同是步进电机可以更加精确地旋转,这个特性使得它们在各种树莓派项目中得到广泛运用。
步进电机选择
市面上有很多步进电机可供选择,最后我们还是决定使用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控制步进电机相关推荐
- [转载] 树莓派并行控制电机_使用由并行端口控制的软盘驱动步进电机的相机摇摄器
参考链接: Python中的摩尔斯电码翻译器 树莓派并行控制电机 Here's a clever guy to watch, Ashish Derhgawen in New Delhi. He's a ...
- python控制电机_树莓派Python控制步进电机
步进电机控制在Python 玩了LED,开关和蜂鸣器后,我觉得自然的下一步是用步进电机或两个.这可能构成了一个想法的一部分,我不得不创建一个自动停止动画动画"转台",用于旋转和拍摄 ...
- STM32 HAL库PID控制电机 第三章 PID控制双电机
STM32 HAL库PID控制电机 第三章 PID控制双电机 注:本文含全部PID控制代码,保证可以运行,如不能运行可以留言回复 1 基础配置 1.1 编码器电路图及配置 引脚 定时器通道 PA0 T ...
- python舵机控制程序_树莓派PWM控制舵机的两种方式
PWM控制舵机简介 通常情况下,伺服电机(舵机)是由一个标准的直流系统和一个内部反馈控制装置(一个减速齿轮和电位计)来组成的.伺服电机(舵机)的主要作用是将齿轮轴旋转到一个预定义的方向上.伺服电机(舵 ...
- python控制电机_[MicroPython]TurnipBit开发板旋转按钮控制直流电机转速
1.实验目的: 学习在PC机系统中扩展简单I/O 接口的方法 学习TurnipBit拼插编程 了解直流电机的工作原理 学习L298N的工作原理 学习TurnipBit扩展板L298N和按键模块的接线方 ...
- python自动控制程序_巧用 python 脚本控制你的C程序
python是一门艺术语言,除了开发桌面程序,还能够开发网络应用,数据库应用,还可以代替shell编写一些的实用脚本,本文主要讲述了如何利用 python 程序控制你的 C 程序的行为. 作为例子,本 ...
- 树莓派python开发教程_树莓派Raspberry开发从基础到进阶视频+设计资料超详细教程下载...
课程内容 [初级篇]重点推荐:树莓派开发实战视频教程+文档教程(含源码) 课程目录 教学视频与源代码 1.[进阶篇]Raspberry详细视频教程 树莓派基础 安装树莓派的操作系统 远程登录和使用树莓 ...
- python硬件编程_树莓派c语言 设置并使用树莓派进行Python和C语言编程 - 硬件设备 - 服务器之家...
树莓派c语言 设置并使用树莓派进行Python和C语言编程 发布时间:2017-03-01 来源:服务器之家 设置并使用树莓派进行Python和C语言编程 (下) Python部落组织翻译, 禁止转载 ...
- 树莓派python编程小车_树莓派小车教程(三)——软件代码
原标题:树莓派小车教程(三)--软件代码 树莓派小车教程(三)--软件代码 2017-07-07 琳小豆 HelloWorld少儿编程 树莓派小车教程 (三) 在上一次教程中,我们已经完成了硬件连接. ...
最新文章
- 敏捷研发之代码评审与工具
- 普通人有必要学python-风变编程:普通人学Python有意义吗?
- I.MX6ULL镜像文件
- 1.9 Java数组和字符串的相互转换
- 2.2基本算法之递归和自调用函数_数据结构与算法之5——队列和栈
- STM32工作笔记0085---UCOSIII信号量和互斥信号量(上)
- jupyter notebook + 服务器中docker 使用配置
- ESP8266教程——采用AT指令
- 微信小程序漏洞:可下载任意微信小游戏源代码(附赠源码)
- ADNI数据集相关概念初步整理
- python爬虫总结,看这篇就够了
- 干碳纤维 湿碳纤维_纤维状网站故障不是一种选择
- 安格鲁貂出现感冒如何解决?
- 火伞云APP盾,您身边的DDoS攻击安全保护专家
- 经典的股票量化交易策略(含源码)
- CWS(美国国土安全部下属的软件保证项目)与SANS(权威安全培训组织)联合编制的最危险的25个编程错误
- Java基础(一) 八大基本数据类型
- C++学习笔记,坚持自律!
- 2020.2.5普及C组 Hank比赛【纪中】【DP】
- 信息系统项目管理师-项目质量管理