zoukankan      html  css  js  c++  java
  • python代码实现树莓派3b+驱动步进电机

    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编程实现

  • 相关阅读:
    多屏显示
    Scss sass
    静态页面常用到
    display:flex
    怎么看服务器是属于阿里云的还是腾讯云
    介绍一款好用 mongodb 可视化工具
    图解Mongo Shell的使用
    Win10 安装配置 MongoDB 4.0 踩坑记
    phpexcel来做表格导出(多个工作sheet)及设置单元格格式
    phpexcel 导出方法
  • 原文地址:https://www.cnblogs.com/ZN-225/p/11028987.html
Copyright © 2011-2022 走看看