python控制步进电机转动_python-树莓派通过按键控制步进电机正反转
硬件选择与设计
不管是直流电机还是步进电机,如果想要让其进行正常的转动,必须需要驱动器进行驱动,所以我们在这里选择的步进电机和驱动板型号分别为28BYJ-48-5V和UL2003芯片的五线四相步进电机驱动板。
步进电机驱动原理
要想驱动步进电机进行正常的正反转,就必须要先了解步进电机的驱动时序,此次选择28BYJ-48-5V是四相的电机,按照通电顺序不同可分为以下三种:单四拍,双四拍,八拍三种工作方式,本次实验采取的是八拍的工作方式。下面将列出三种工作方式下的正反转时序:
单四拍:
正转:A - B - C - D 反转:D - C - B - A
双四拍:
正转:AB - BC - CD - DA 反转:DA - DC - BC - AB
八拍:
正转:A - AB - B - BC - C - CD - D - DA
反转:DA - D - CD - C - BC - B - AB - A
GPIO口选择与硬件连线
因为涉及到按键控制步进电机的正反转,所以需要提前准备好八个杜邦线,驱动控制板上有六个引脚,需要连接到Pi的GPIO口上,另外对于按键可以自行设计,我这里是利用杜邦线一段连到Pi上的GPIO口上,另一端接地,进行模拟按键低电平触发。下边将列出具体的连接引脚:
IN1 (GPIO17)
IN2 (GPIO18)
IN3 (GPIO21)
IN4 (GPIO22)
5 V (Pin02)
Ground (Pin39)
key1 (GPIO23) #正转
key2 (GPIO24) #反转
引脚分布与功能图:
程序源码
创建python脚本stepmotor.py
#!/usr/bin/env python
#调用所需要的库
import time
import RPi.GPIO as gpio
#设置为BCM模式
gpio.setmode(gpio.BCM)
#设置所选择的io口
stepPins = [17,18,21,22]
key1 = 23
key2 = 24
#设置所有的io口为输出模式
for pin in stepPins: print ("Setup Pins") gpio.setup(pin,gpio.OUT) gpio.output(pin, False) #低电平触发
gpio.setup(key1, gpio.IN, gpio.PUD_UP)
gpio.setup(key2, gpio.IN, gpio.PUD_UP)
#定义变量
step1 = 0
step2 = 0
waittime = 0.005
#定义正转的序列
stepcount1 = 8
seq1 = []
seq1 = list(range(0, stepcount1))
seq1[0] = [1,0,0,0]
seq1[1] = [1,1,0,0]
seq1[2] = [0,1,0,0]
seq1[3] = [0,1,1,0]
seq1[4] = [0,0,1,0]
seq1[5] = [0,0,1,1]
seq1[6] = [0,0,0,1]
seq1[7] = [1,0,0,1]
#定义反转序列
stepcount2 = 8
seq2 = []
seq2 = list(range(0, stepcount2))
seq2[0] = [1,0,0,1]
seq2[1] = [0,0,0,1]
seq2[2] = [0,0,1,1]
seq2[3] = [1,0,1,0]
seq2[4] = [0,1,1,0]
seq2[5] = [0,1,0,0]
seq2[6] = [1,1,0,0]
seq2[7] = [1,0,0,0]
#开始进行循环转动
while True: if gpio.input(key1) == 0: for pin in range(0, 4): xpin = stepPins[pin] if seq1[step1][pin]!=0: print ("step %i enable %i" %(step1,xpin)) gpio.output(xpin, True) else: gpio.output(xpin, False) step1 += 1 #当序列要结束时,再一次循环序列 if (step1 == stepcount1): step1 = 0 if (step1 < 0): step1 = stepcount1 #延时等待时间 time.sleep(waittime) if gpio.input(key2) == 0: for pin in range(0, 4): xpin = stepPins[pin] if seq2[step2][pin]!=0: print ("step %i enable %i" %(step2,xpin)) gpio.output(xpin, True) else: gpio.output(xpin, False) step2 += 1 #当序列要结束时,再一次循环序列 if (step2 == stepcount2): step2 = 0 if (step2 < 0): step2 = stepcount2 #延时等待时间 time.sleep(waittime)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
终端运行:
sudo python3 stepmotor.py1
crtl + r 退出
waittime是默认等待时长,可以通过调节其数值,进行调整步进电机的转速。如果脚本运行得太快,电机控制器就跟不上了,可能会导致电机在运转,但是不会转动。这种性能可能取决于你的电机和它的控制器。
代码运行成功后,通过杜邦线一端接地,另一端去接GPIO23口进行模拟按键作用下的正转模式。同上GPIO24口可以进行模拟按键作用下的反转模式。
文章来源: blog.csdn.net,作者:Blue night,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_51072745/article/details/112547814
python控制步进电机转动_python-树莓派通过按键控制步进电机正反转相关推荐
- 【51单片机Task】:led十六进制控制led灯详解、按键控制流水灯、跑马灯等任务
学习目标: 学习普中51单片机的按键控制led灯. 电路图: 学习内容: LED灯的十六进制怎么算??? 在这给大家算一下:首 ...
- c51按键控制灯亮汇编语言,用一个按键控制LED灯亮/暗的汇编程序
今天又搞了一个小汇编,是用一个按键控制LED灯亮/暗的汇编程序.程序编好后,开始编译,发现又是通不过,找了好几遍也没找到原因,后来找枫雪大哥看了,才找出原因,原来编写程序时不能在中文环境下编写,不然就 ...
- python控制步进电机驱动器_树莓派通过GPIO控制步进电机(python)
步进电机的驱动程序一样是让我费了好大力气才使他正常工作,在代码上走了不少弯路 树莓派不建议直接使用舵机,虽然舵机方便,而且仅需要一根信号线,不过需要舒服pwm信号,而新版的b+板子已经没有了物理的pw ...
- 用python实现流程自动化_Python自动化开发 - 流程控制
一.拾遗主题 1.变量 理解变量在计算机内存中的表示 >>> a = "ABC" Python解释器干了两件事情: 在内存中创建了一个'ABC'的字符串: 在内存 ...
- python while语法结构_python语法之流程控制(if while for)
一.python语法之流程控制 1.1什么是流程控制? 流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构).分支结构(判断).循环结构 ...
- python控制led屏_python轮询机制控制led实例
我就废话不多说了,大家还是直接看代码吧! # -*- coding:utf-8 -*- # File: ceshitianqi import urllib2 import json import ti ...
- 通过按键控制二极管c语言,单片机一个按键控制一个发光二极管
满意答案 vs2026 2013.08.31 采纳率:58% 等级:12 已帮助:13269人 以下是用C语言实现的: #include sbit KEY=P1^0; sbit LED=P1^1 ...
- 51单片机实现独立按键控制LED灯
本节博客主要实现以下效果: 3-1独立按键控制LED亮灭 本段代码主要使用了if...else...语句实现按下按下灯亮,松开按键时灯灭 #include <REGX51.H>void m ...
- 单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移
目录 1.独立按键控制LED灯亮灭 2.独立按键控制LED灯状态 3.独立按键控制LED灯显示二进制 4.独立按键控制LED灯位移 5.附录 1.独立按键控制LED灯亮灭 独立按键控制LED灯状态,在 ...
- Chapter002-FPGA学习之按键控制LED灯和蜂鸣器
硬件原理 在正点原子开发板中,LED模块高电平驱动,蜂鸣器也是高电平驱动,按键按下,对应引脚为低电平: 原理图如下: 以上设备与FPGA引脚的对照表如下: 设备 引脚名称 对应FPGA引脚 按键 PL ...
最新文章
- DNS及DNS有什么作用
- 二十四,Arrays和比较器
- python就业方向及工资-【行情分享】python就业方向与薪资大揭秘
- 【Android基础】点击Back键退出应用程序
- 字符设备驱动初体验(hello驱动)
- 云原生时代下,容器安全的“四个挑战”和“两个关键”
- C#中获取当前时间:System.DateTime.Now.ToString()用法
- JavaScript定义类的几种方式
- Bootstrap4代码模板
- nohttp网络框架
- 谨防 ActiveSupport::Cache::Store 缓存 nil 值
- 安装报错_MySQL8.0安装后,报错ERROR 1045 (28000)
- 自适应布局 的 解决方案
- python二级基础题,计算机二级python部分基础操作题
- 深度学习《InfoGAN模型》
- NAS与SAN的区别
- 基于yoloV7-pose添加任意关键点 + 多类别分类网络修改
- 杂篇-01-Unity中创建Mesh时遇到的问题
- 针对文件流转Base64的操作
- c语言 return0作用
热门文章
- 千锋人工智能python培训班
- 谷粒商城P72根据接口文档编写获取分类的属性分组
- 量子笔记:量子计算 toy python implementation from scratch
- 管理经验(一)——如何当好一个管理者
- Integrating Caching Techniques in CDNs using a Classification Approach
- ​【原创】基于SSM的学院排课管理系统(排课管理系统毕业设计源代码)
- Leo-IM,开源好用的IM(基于Netty开发)
- lua 5.3开发调试环境搭建
- MT4.0版下载及相关说明
- 申请163邮箱——春节前,申请163邮箱回家过年