树莓派论坛

 找回密码
 立即注册

让你的马达动起来 RaspberryPI Control Motor with Python

teddy2017 发表于 2017-7-9 17:54:56 | 显示全部楼层 |阅读模式
让你的马达动起来
RaspberryPI ControlMotor with Python
·  
1 介绍
   本章我们将使用树莓派以及Python代码简答的控制马达旋转小实验。在开始前,您将需要如下资源(可在公众号Source下回复指定关键字即可找到相关工具):
   1.装有Rspian Jessie系统的raspberry PI 3。
   2.L298N驱动板。是ST公司生产的一种高电压、大电流电机驱动芯片,工作电压可达46V,瞬间峰值电流可达3A,额定功率25W。
   L298N.jpg
   3.12V电源,小车马达。
2 安装
1,我们首先要将装好系统的树莓派各个GPIO口功能正常。
2,将树莓派上的GPIO 4 17 23 24 分别接到电机驱动板上的IN1、IN2、IN3、IN4口.我们使用的马达连接驱动板后,IN1IN2 是控制左边的马达, IN3 IN4是控制右边的马达. 控制的原理拿左边的电机来讲: 依次把驱动板的IN1~IN2置为高电平,就可以驱动马达,也就是说,要把树莓派的2个GPIO输出口依次置为高电平。例如,假设用0代表低电平,1代表高电平的话,GPIO0、1口的电平第一次被置为1、0,第二次被置为0、1,持续下去,电机就会运作。
我们来看一下Python代码:
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()   
    whileTrue:  
        forward(int(delay) / 1000.0)  
         
main() #调用main
附上这张引脚图,左边是单数,右边是双数,记住这个接线就一般不会弄错了。
pi3_gpio.png
代码很不多,控制4路IO高低电平切换,但是也足够你来调试一会了,注意一定要设置延迟时间。
1.jpg
关注树莓派的奇幻之旅获得更多内容:

Wechat .jpg


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版 | Archiver | 树莓派论坛 ( 粤ICP备15075382号-1 )