python代码实现树莓派3b+驱动步进电机

本文介绍如何使用树莓派3b+主板通过Python编程控制步进电机的运行,包括所需硬件、GPIO引脚定义、驱动板连接方法及Python代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python代码实现树莓派3b+驱动步进电机

   之前买了个树莓派,刚买回来那会儿热情高涨,折腾了一段时间,然后就放那吃灰了。前几天忽然想起来这个东西了,决定再玩玩儿,于是就从某宝上购买了一套步进电机、驱动板。东西收到后就开始折腾研究,下边来总结下折腾的结果吧。

  先来说下都需要什么吧,树莓派的这一套都少不了,树莓派3b+主板、TF卡、树莓派电源、步进电机以及对应的驱动板、杜邦线6根(母对母),差不多就这么多吧。

引脚

  首先,我们先看下树莓派的40个Pin都是什么功能吧!可以通过过树莓派的命令行窗口来查询,输入命令:

 gpio readall

  输出的结果是什么呢?见下图:

  上边图中已经全部显示了40个GPIO的定义。下边是我从网上荡了一张图带颜色的图,看的会更清楚一些:

  上图可以看到,这些Pin的编码方式有三种,分别是BOARD编码、BCM编码和WiringPi编码。这些都是什么含义呢?下边我们来一一说下:

BOARD编码

  上图也写了,就是物理引脚嘛,怎么编码的呢,就是在一列的引脚1、2,旁边的是3、4……直接上图吧,估计也说不清楚。由于我的主板已经安装到盒子里边了,固定也挺麻烦的,我就从网上荡一张来说事儿吧!

  

  上图从左到右、从下到上以及进行编码,物理编码的起始值为1,从1到40。

BCM编码

   BCM编码起始为是从0开始编码的,并且不像BOARD编码方式那样有序,他是根据功能进行编码的。具体的编码可以结合BOARD编码查看上边那张带颜色的表,从而确定每个引脚的功能。

WiringPin编码

   这是另外一种编码方式,具体也没研究的太透,这里就简单略过吧,免得误人子弟了。

  至于为什么要讲这写呢,首先是连接点击要用,另外就是编写代码要用。

步进电机及驱动板

  看完编码当时,加下来我们再说下步进电机和驱动板电路吧。

步进电机

   我这个型号是28BYJ-48 5V DC,也没少好解释的,某宝上一搜一大把,而且还很便宜。

 

 

驱动板

  驱动板必须要跟点击匹配,否则必有一坏,就是看什么坏了。这个买的时候跟老板说,都懂,顺便一起买了,白菜价。

  下来就说怎么用吧,步进电机根据自己的接口进行连接,由于我的就是那个匹配白色排针接口的,所以就不解释了,就算是傻子也接不错。

  重点是怎么跟树莓派连接?IN1~IN4是控制信号输入接口;G接树莓派的GND引脚,不要问我为什么,就是这么接的,查看原理图得出来的结论。V呢接树莓派5V的引脚,不要问我为什么,记住就是这么接的就行了。

  怎么显示他们的工作状态呢,看到上边的D1~D4了没,那就是等,给谁信号谁亮。

  我就不上我具体的接线图了,因为盒子拆装太麻烦,并且我的杜邦线都是临时凑出来的,不好看。

代码

   下边我们说代码,由于我只会python,所以我就用python来编写,不要让我用C了什么的给你写个,不写,不会!

  首先就是安装模块呗,装啥呢?装RPi.GPIO。我用的是python3,所以就在python3下安装的。如果你的出错了别找我,我也不会,因为我的没有出错。解决办法就是百度,网上一找一大堆。

  怎么安装呢?

pip3 install RPi.GPIO

  接着等提示安装成功就行了。

  接下里就是写py代码了,由于我就是做了个简单的测试,所以代码也很简答,能让步进电机转起来。代码呢也是找的,因为他的比我的好看,并且也规范:

import RPi.GPIO as GPIO
import time
 
delay=2 #delay 2ms
 
pin_4 = 4
pin_17 = 17
pin_23 = 23
pin_24 = 24
 
GPIO.setmode(GPIO.BCM) #设置引脚的编码方式
    
def init():
    GPIO.setwarnings(False)
    GPIO.setup(pin_4, GPIO.OUT)
    GPIO.setup(pin_17, GPIO.OUT)
    GPIO.setup(pin_23, GPIO.OUT)
    GPIO.setup(pin_24, GPIO.OUT)
 
 
def forward(delay):  
    setStep(1, 0, 0, 0)
    time.sleep(delay)
    setStep(0, 1, 0, 0)
    time.sleep(delay)
    setStep(0, 0, 1, 0)
    time.sleep(delay)
    setStep(0, 0, 0, 1)
    time.sleep(delay)
 
def setStep(w1, w2, w3, w4):
  GPIO.output(pin_4, w1)
  GPIO.output(pin_17, w2)
  GPIO.output(pin_23, w3)
  GPIO.output(pin_24, w4)
  
def main():
    init() 
    while True:
        forward(int(delay) / 1000.0)
         
main() # 调用main

 

   至于代码呢,很简单简单看下吧,设置引脚的编码方式,这就是我上边为什么那么费劲的讲编码方式的原因了,虽然你可能还是看读懂。接下来就是设置引脚的输出,说白了就是你用树莓派的那几个脚来控制步进电机,这个引脚可以根据自己的喜好进行设置。下来就是设置点击怎么转,方向自己设定。

  基本上呢就这么多,我也是第一次,什么都不懂,一切都来自网络。

 

参考链接

树莓派 40Pin 引脚对照表

树莓派驱动步进式电机python编程实现

转载于:https://www.cnblogs.com/ZN-225/p/11028987.html

第1章 绪 论…………………………………………………………1 §1.1 设计的意义 …………………………………………1 §1.2 设计要解决的问题…………………………………1 §1.3 发展概况……………………………………………1 第2章 步进电机驱动分析与设计 …………………2 §2.1 程序开发环境 ……………………………2 §2.2 实验内容 ………………………………………2 §2.3 程序需要实现的功能……………………………2 §2.4 实验原理…………………………………………2 §2.4.1 步进电机的工作原理……………………………2 §2.4.2 调速原理…………………………………………4 §2.4.3 键盘扫描软件原理………………………………4 第3步进电机驱动设计…………………………………5 §3.1 硬件设计……………………………………………5 §3.1.1 设计思路………………………………………5 §3.2 软件设计…………………………………………5 §3.2.1 主程序模块设计…………………………………5 §3.2.2 定时器/计数器模块设计……………………6 §3.2.3 键盘扫描与处理模块设计………………………7 第4章 测试…………………………………………………8 第5章 总结…………………………………………………9 参 考 文 献…………………………………………………10 附录: 步进电机驱动程序代码……………………………11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值