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

原文地址:https://www.cnblogs.com/ZN-225/p/11028987.html

时间: 2024-10-07 19:35:23

python代码实现树莓派3b+驱动步进电机的相关文章

树莓派3b驱动dht11温湿度传感器

新建并打开C文件 touch dht11.c sudo vim dht11.c 编写驱动程序 1 #include<wiringPi.h> 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<stdint.h> 5 #define MAX_TIME 85 6 #define DHT11PIN 7 7 #define ATTEMPTS 5 //retry 5 times when no response 8

树莓派3b添加python时间同步脚本

树莓派没有电池,因此断电后系统时间会停止,直到你开机后又继续计时. 因为项目需要用到本地时间,精度要求不高不想折腾(如果需要高精度,需要安装ntp),所以考虑用python脚本同步百度的时间,精度误差很小在0.5-1秒之内,需要网络支持. 1.创建python程序 sudo nano date.py 2.写入python代码 # -*- coding: UTF-8 -*- import os import time import httplib #获取远程服务器时间并同步本地 def get_w

树莓派3b+ 舵机驱动开发

设备:树莓派 3b+操作系统:Raspbian远程访问:SSH舵机型号:MG90S使用语言:C,使用wiringPi库. 遇到的难点:1. PWM频率计算2. 命令行参数传入C代码时,char向int转换 舵机控制主要用到的函数介绍: wiringPiSetup(); pinMode(1,PWM_OUTPUT); //only wiringPi pin 1 (BCM_GPIO 18) supports PWM pwmSetMode(PWM_MODE_MS); // Set to mode: ma

树莓派3B 安装微雪LCD5inch显示器(包含软键盘)

树莓派单独使用时,往往需要触摸屏和软键盘用以方便操作,微雪LCD显示器就能较好的实现这个功能, 正好实验室又买入了一个3B的板子和一个5inch的显示器,便对着官方的安装手册,亲自安装了一次. 一:材料准备 树莓派官方镜像,本人使用的是2016-05-27-raspbian-jessie镜像 Win32DiskImager.exe 用来烧录镜像. USB读卡器 matchbox-keyboard.zip 微雪LCD盘软键盘 树莓派LCD驱动 160813 二:镜像烧入 将镜像文件下载到电脑(PC

intel Z8300 2G 32G小主机跟树莓派3B的功耗/性能对比

具体硬件平台就不详细说了,浪费时间码字,贴一个淘宝上的配置: 有点广告的既视感,哈哈,不过我200块咸鱼收的2手,配置比这个稍低,比如CPU是Z8300,网卡是百兆的,WIFI可能也不是双频的(这个不确定. 因为linux下这玩意没驱动起来)不过我买回来不是做NAS,只是想搞个7*24在线的小服务器,映射到外网做一点小服务.所以配置差点也无所谓的样子 先来个待机功耗图: 待机2.0瓦.不过这个是算上这个220V/5V 3A的效率的,因为电源的总功率是15W(5V/3A)而目标功率小于3W,所以也

openvino:yolov3转换成tenserflow模型再转换成openvino模型,并用神经计算棒一代加速树莓派3b+

在转换yolo3是时遇到了问题: [ ERROR ]  List of operations that cannot be converted to IE IR:        [ ERROR ]      LeakyRelu (72)        [ ERROR ]          detector/darknet-53/Conv/LeakyRelu ........ [ ERROR ]  Part of the nodes was not translated to IE. Stoppe

如何使用windows远程桌面控制树莓派3B

文章开头先来吐槽一下网上的免费教程.虽然现在是信息时代,我们可以在网上学习各种各样的知识.但是网上的教程鱼龙混杂,缺少时间有效性.甚至有些纯粹是误导,只看到结果,根本不披露实现过程.这一点要鄙视一下.       在实际操作过程中,你会遇到很多问题,这些问题对于还是小白的你来说,如果百度查不到,那就会打击你对树莓派的信心,加速树莓派吃灰的进程.所以,我会不定期的更新树莓派3b 的教程,教你一步一步的玩转树莓派!每一篇文章我都会注明更新日期,方便大家查阅.好,闲言少叙,开始今天的正题:树莓派3B(

树莓派3B 开启串口

网上的很多方法,都很麻烦,要下文件还要改很多参数,但是经我测试,其实没那么多步骤!(不知道是不是我的树莓派版本高的原因) 通过 cat /proc/version命令得到的版本是 linux version 4.9.35-v7+ 2017年6月 注:网上说树莓派3B,有两个串口,一个是硬件串口给了蓝牙使用,一个是mini串口才是映射到了GPIO口上,但mini串口不稳定 开启硬件串口方法分两步,第一步将硬件串口与mini串口互换,第二步,关闭远程控制功能: 一. sudo nano /boot/

为树莓派3B添加LCD1602液晶屏

树莓派3B针脚说明 LCD1602接线说明 VSS,接地VDD,接5V电源VO,液晶对比度调节,接电位器中间的引脚,电位器两边的引脚分别接5V和接地.RS,寄存器选择,接GPIO14RW,读写选择,接地,表示写模式EN,使能信号,接GPIO15D0,数据位0,4位工作模式下不用,不接D1,数据位1,4位工作模式下不用,不接D2,数据位2,4位工作模式下不用,不接D3,数据位3,4位工作模式下不用,不接D4,数据位4,接GPIO17D5,数据位5,接GPIO18D6,数据位6,接GPIO27D7,