树莓派小车————基本运动篇
在完成小车每一个小功能时,第一步要了解原理和电路连接方式。之后才能开始编码控制。这一篇就来讲解小车的基本运动功能,即前进、后退、左转、右转、停止。(当然你也可以自己添加,左后转和右后转)
- 该部分用到的硬件模块:步进电机、橡胶轮、L298N电机驱动板、树莓派、12V的锂电池组、杜邦线若干。
- 电路连接
- 焊接电机上的线
这部分焊接比较简单,如果你买的步进电机上的线已经连接好,就不需要焊接。如果没有焊接线,找两根颜色不一样的线焊接上就行,最好是红色和黑色,因为两根线代表正负极。
往电机的两个铜片孔中焊接正负极线时,可能有人会讲正极哪个孔,负极哪个孔,我发现其实没关系,因为在接L298N端口时,正负极接反了也没关系,不会烧坏电机或者L298N。可能就是你写的代码让轮子正转,它却反转。所以你可以通过自己尝试,如果不对,修改代码或者接线都可以。 - L298N和电机、树莓派的连接
这部分连接可以用一个L298N控制四个电机,也可以用两个控制四个,为了方便和节约硬件,选择一个控制四个。
通过下面的电路连接示意图你就可以明白怎么连接了。
先观察你手中的L298N,可以看到有四个OUT端口和四个IN端口,顾名思义,IN就是接受外面传来的信号,OUT就是将接受到的信号传送出去。即:接受树莓派的信号,传达给了电机。
(1)像上图中的电路连接一样,你只需要将四个电机的正负极连接到OUT端口。每一边接两个电机(上图中的连接方式应该一眼就懂,不做多余解释)。
(2)在连接L298N和树莓派时,你需要先了解树莓派的编码方式,每个引脚都代表什么,当然不用背,下面给你一张图。
通过上图你可以看到三种编码格式,我建议用BOARD模式,因为这就是物理模式,从1开始往下数就行。
(3)L298N四个IN口和树莓派连接时,必须连接树莓派的GPIO口,在图中我选择的是BOARD模式中的11、12、13、15。这几个都是GPIO口。当然你在设计时可以选择其他的GPIO口,这并不是固定的,在代码中定义时,保证正确就行。
(4)L298N的+5V和树莓派的+5V连接,2号或者4号引脚。 - 电源和L298N的连接
这部分也很简单,就是将锂电池的正极和L298N的+12V口连接,负极和GND连接。 - PWM调速功能的连接
(1)图中圈出来的部分就是调速端,新的L298N这部分是有跳线帽连接着的,你需要拔掉上面的跳线帽,不然就默认是最快的速度。
(2)每个调速端是有两个引脚的,靠外的引脚是连接GPIO口的,所以你只需要用两根线将靠外的两个引脚和树莓派的两个GPIO口连接(同理你可以选择任何两个没被占用的GPIO口)。
- L298N控制步进电机的原理:
从上图中可以看出,通过改变IN1,IN2,IN3,IN4四个输入口的电平信号就可以控制电机的正反转,IN1,IN2两个输入口用来控制左边的电机,IN3,IN4用来控制右边的电机。所以我们可以改变电平的高低控制小车前进,后退,左转,右转以及停止。 - 代码
#coding=utf-8
import RPi.GPIO as GPIO
import time
#定义电机模块的GPIO口
PWMA=18 #调速端A(左)
IN1=11
IN2=12
PWMB=16 #调速端B(右)
IN3=13
IN4=15
def init():#设置解除警告GPIO.setwarnings(False)#设置引脚模式为物理模式GPIO.setmode(GPIO.BOARD)#对四个电机进行初始化,将引脚设置为输出GPIO.setup(IN1,GPIO.OUT)GPIO.setup(IN2,GPIO.OUT)GPIO.setup(IN3,GPIO.OUT)GPIO.setup(IN4,GPIO.OUT)#调速端的初始化GPIO.setup(PWMA,GPIO.OUT)GPIO.setup(PWMB,GPIO.OUT)#根据上面的控制原理,我们通过控制每个引脚的电平信号,来控制小车的转向
#让小车前进
def turn_up(speed,t_time): #定义两个参数,一个是速度,一个是时间L_Motor.ChangeDutyCycle(speed) #设置占空比,控制速度,speed的取值范围0-100,原理是控制电源通断的时间占比GPIO.output(IN1,GPIO.HIGH)GPIO.output(IN2,GPIO.LOW)R_Motor.ChangeDutyCycle(speed)GPIO.output(IN3,GPIO.HIGH)GPIO.output(IN4,GPIO.LOW)time.sleep(t_time)#让小车后退
def turn_back(speed,t_time):L_Motor.ChangeDutyCycle(speed)GPIO.output(IN1,GPIO.LOW)GPIO.output(IN2,GPIO.HIGH)R_Motor.ChangeDutyCycle(speed)GPIO.output(IN3,GPIO.LOW)GPIO.output(IN4,GPIO.HIGH)time.sleep(t_time)#让小车向左转
def turn_left(speed,t_time):L_Motor.ChangeDutyCycle(speed)GPIO.output(IN1,False)GPIO.output(IN2,False)R_Motor.ChangeDutyCycle(speed)GPIO.output(IN3,GPIO.HIGH)GPIO.output(IN4,GPIO.LOW)time.sleep(t_time)#让小车向右转
def turn_right(speed,t_time):L_Motor.ChangeDutyCycle(speed)GPIO.output(IN1,GPIO.HIGH)GPIO.output(IN2,GPIO.LOW)R_Motor.ChangeDutyCycle(speed)GPIO.output(IN3,False)GPIO.output(IN4,False)time.sleep(t_time)#让小车停止
def car_stop():L_Motor.ChangeDutyCycle(0)GPIO.output(IN1,False)GPIO.output(IN2,False)L_Motor.ChangeDutyCycle(0)GPIO.output(IN3,False)GPIO.output(IN4,False)
#主函数
if __name__=="__main__":init()L_Motor=GPIO.PWM(PWMA,100)L_Motor.start(0)R_Motor=GPIO.PWM(PWMB,100)R_Motor.start(0)try:turn_up(20,2) #测试前进except KeyboardInterrupt:GPIO.cleanup() #清除GPIO占用
树莓派小车————基本运动篇相关推荐
- 树莓派小车————循迹篇
所谓的循迹就是让小车识别导引线,跟着导引线运行,在导引线组成的赛道上运行.循迹可以用红外传感器或者摄像头完成.我选择的是用红外传感器进行黑线循迹. 该部分主要涉及到的硬件:两个红外循迹传感器(型号见准 ...
- 树莓派小车————避障篇
避障模块的功能就是让小车能够检测到障碍物并且可以正确的避开障碍物.当然避障的方式有很多种.我选择的是超声波结合红外传感器来避障. 为什么要用超声波传感器结合红外传感器? 因为硬件原因,没有舵机,原本超 ...
- 树莓派小车#1 - 硬件采购和简单运动控制系统
文章目录 raspCar小车 项目立项概览 硬件介绍 1. TT电机 2. L298N驱动模块 3. 控制器 4. 电源 电机控制 1. 电机引脚输出 2. 网页及交互 总结 raspCar小车 暑假 ...
- MQTT树莓派小车局域网控制移动
最近在做MQTT ,一种轻量级的应用层通信协议 然后用MQTT代替socket做消息传送控制我的树莓派小车运动,这样的好处是 很多的云服务器都支持MQTT 所以可以实现远程控制小车做安防 本文首先在上 ...
- 树莓派小车教程(三)之——初步实现网页控制小车速度可调(顺序执行)
项目场景: 之前写了一篇手把手树莓派小车教程(二)之--基于Tornado框架的网页控制小车(按键+鼠标点击).当时只记录了如何通过Tornado框架能让网页控制小车跑起来(以恒定速度),但是项目中小 ...
- 基于ros_arduino_bridge的智能小车----下位机篇
基于ros_arduino_bridge的智能小车----下位机篇 参考文章: 基于ros_arduino_bridge的智能小车----上位机篇 基于ros_arduino_bridge的智能小车- ...
- Arduino智能小车——循迹篇
Arduino智能小车--循迹篇 Arduino智能小车系列教程时空门: Arduino智能小车--拼装篇 点击跳转 Arduino智能小车--测试篇 点击跳转 Arduino智能小车--调速篇 点击 ...
- 树莓派笔记15:手机控制树莓派小车
1 成果展示 花了点时间做了简单的手机控制树莓派小车项目,其实主要是对之前各种学习内容的一个综合利用,也特地抽出时间学习了一下最基本的Android开发.下面的图片是成果的展示,树莓派小车由树莓派.小 ...
- html控制树莓派小车,用家里旧的红外遥控器控制树莓派小车
0x01 前言 红外遥控是一种无线.非接触控制技术,在工业控制.航空航天.家电等领域都得到了广泛应用.大部分的电视的遥控器,空调遥控器就都是红外遥控.在baidu上检索了树莓派小车的各种控制方案,没有 ...
最新文章
- 网络广告投放四大技巧有哪些?怎么样投放效果最好?
- [国际A类会议] 2018最最最顶级的人工智能国际峰会汇总!CCF推荐!
- Python基础教程:七种运算符
- SpringBoot(Thymeleaf)拼接跳转链接
- java泛型学习二:解惑通配符
- oc知识点 类的扩展
- express路由管理的几种自动化方法分享-js教程-PHP中文网
- CSS3---新增内容
- 解决fatal: unable to connect to github.com问题
- pytorch DistributedDataParallel提示未参与loss计算的变量错误
- 印花导带容易出现的问题及其解决方法
- linux按数量复制文件,linux下dd命令使用详解---用指定大小的块拷贝一个文件
- Matlab深度学习——Matconvnet配置
- python就业方向那么广,为什么还是很多人找不到工作?
- 逆火软件测试工资,逆火刷机软件介绍和软件使用说明
- c++中 append()函数用法
- 找到了airdrop无法发现对方的原因了,原因你想不到!
- 关于input在苹果和安卓手机上调用相机和相册的问题
- css写阴影颜色渐变,css3——阴影(立体感,层次效果),渐变色按钮
- JavaScript 实现页面内时间实时倒计时 计时器内附完整文件欢迎调用(可用于抢购倒计时,记录恋爱纪念日总时长等)输出对应的天数小时分钟秒数