完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、介绍
直流电机是一种将直流电能转换为机械能的电动机,因其良好的调速性能而在电力拖动中得到广泛应用,用于驱动各种设备,如电风扇、遥控小车、电动车窗等,也非常适合作为机器人的行走机构。 L298N是ST公司生产的一种高电压、大电流电机驱动芯片,内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端。该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。 二、组件 ★Raspberry Pi 3主板*1 ★树莓派电源*1 ★L298N模块*1 ★DC3V-6V直流减速电机TT马达*1 ★微型数字直流电压表头*1(可选) ★18650可充电锂电池*2 ★面包板*1(可选) ★40P软排线*1 ★跳线若干 三、实验原理 (一)、L298N模块 L298N双H桥直流电机驱动模块的引脚可以归纳成电源、控制和输出等三大类,下面是各类引脚的功能说明。 1.电压类引脚 VCC输入:L298N芯片的电源正极,范围可以是5V ~ 35V,如果需从模块内取电给树莓派供电,则其范围为7V~35V。2.控制类引脚 ENA、ENB:A、B通道的使能端,高电平有效,可以用PWM来实现调速,向使能端输入不同占空比的PWM脉冲信号就可以控制电机的转速。使用时,可以接到树莓派的GPIO上,实现用程序进行控制。控制方式及直流电机状态表如下: 3.输出类引脚 OUTA、OUTB为A通道输出,为直流电机等设备提供电源。 (二)、直流减速电机 在了解直流电机工作原理之前,先复习一下高中几个物理知识: 第一.左手定则 通电导线处于磁场中时,所受安培力 F (或运动)的方向、磁感应强度B的方向 以及通电导体棒的电流I三者方向之间的关系的定律。 简而言之,让磁感线穿过手掌正面,手指方向为电流方向,大拇指方向为产生磁力的方向 第二.右手定则 右手定则,是产生感生电动势,也是发电机的原理 让磁感线穿过掌心,大拇指方向为运动方向,手指方向为产生的电动势方向。 1.直流电机的原理 直流电机里边固定有环状永磁体,电流通过转子上的线圈产生安培力,当转子上的线圈与磁场平行时,再继续转受到的磁场方向将改变,因此此时转子末端的电刷跟转换片交替接触,从而线圈上的电流方向也改变,产生的洛伦兹力方向不变,所以电机能保持一个方向转动。 2.直流电机的种类 2.1有刷电机 顾名思义,就是有刷子,主要作用就是让中间的转子与电源有电气连接,还可以转动。 为了让两者之间既有接触,能导电;又有转动,实现电流的变相,一般的常见做法是在碳刷加一个弹簧。这样,换向器与碳刷便有了频繁的摩擦。所以碳刷很容易磨损,必须经常进行更换。并且磨损掉的碳渣渣在电机里面形成了积碳,需要经常清理。 早期电机都是有刷电机,后来为了解决磨损,有了无刷电机。 2.2无刷电机 无刷电机中,换相的工作交由控制器中的控制电路(一般为霍尔传感器+控制器,更先进的技术是磁编码器)来完成。 无刷电机采取电子换向,线圈不动,磁极旋转。无刷电机,是使用一套电子设备,通过霍尔元件,感知永磁体磁极的位置,根据这种感知,使用电子线路,适时切换线圈中电流的方向,保证产生正确方向的磁力,来驱动电机。消除了有刷电机的缺点。 2.3直流减速电机 一般直流电机的转速都是一分钟几千上万转的,所以一般需要安装减速器。减速器是一种相对精密的机械零件,使用它的目的是降低转速,增加转矩。减速后的直流电机力矩增大、可控性更强。按照传动级数不同可分为单级和多级减速器;按照传动类型可分为齿轮减速器、蜗杆减速器和行星齿轮减速器。 齿轮减速器:体积较小,传递扭矩大,但是有一定的回程间隙。 蜗轮蜗杆减速机:具有反向自锁功能,可以有较大的减速比,但是一般体积较大,传动效率不高,精度不高。 行星减速器:结构比较紧凑,回程间隙小、精度较高,使用寿命很长,额定输出扭矩可以做的很大,但价格略贵。 (三)、直流电压表头 用于监视18650电池组电压,及时掌握电池电压状态,便于及时充电。也可用于手机锂电池、镍氢电池组和其它电池组的电压,以及摩托车、汽车等电瓶的电压,也可用于其它电压测量用途。 1、本电压表接线简单,常规用两根线,红接正,黑接负,内有反接保护,接反不烧。 2、常规无需外接工作电源,可以用测量电压直接工作,测量电压范围二线2.4-30V。 3、宽电压工作,红色最低测量电压2.4V,最大安全承压可达40V ,超过40V可能损坏。 4、在测量10V以下电压时,小数点后显示两位;在测量10V以上电压时,小数点后显示一位。 (四)、18650电池组 由于电动机需要的电流远远大于树莓派GPIO的供电能力,所以必须使用外接电源,选用大容量的18650电池是个不错的选择,许多充电宝和电动车电池组都是使用的这个。 同时,使用电动机的场景总是移动的情况,所以电池组可能还要给树莓派供电。以前购买套装时赠送的18650电池,每次充满电,只坚挺了10分钟,而且电压掉得非常快。这里我选用的某宝SupFire/神火电池,负极加了保护芯片的AB5-S,39元1颗,充电器还另算钱。不过效果好多了,充满电后串联两颗电池初始8.23V,一天一个电动机的实验做下来,还有7.6V。 四、实验步骤 第1步: 连接电路。 [tr]树莓派(name)T型转接板(BCM)L298N模块[/tr]
这里必须说一下,上面的电路图是使用电子设计自动化软件Fritzing画的,易学好用,但是必须要学习哈,光看是半天搞不懂滴! 特别是元件库里找不到的电子元件,只能自己创建,就需要自己画SVG图(Scalable Vector Graphics,意思为可缩放的矢量图形),这里我用的是Inkscape,一款外国开发的开源矢量图形编辑软件。画图中的一个重要经验是:在Friting里找到并导出类似的元件SVG图,然后在Inkscape里修改,最后又导入Friting里合成。 学会第一次虽慢,但是以后就难不倒你了,而且画得很快! Fritzing下载地址https://fritzing.org/download/ Inkscape下载地址https://inkscape.org/release/inkscape-1.0/ 第2步: 基础实验里我只用L298N的B通道控制了一个电机,控制命令也很粗糙,后面我会做智能小车的综合实验,会实现图形界面控制和自动循迹。 当输入r0 ~ r9,速度由0到快;当输入f0 ~ f9,反方向速度由0到快;当输入b时,电机制动。 #!/usr/bin/env pythonimport RPi.GPIO as GPIOimport timeENB = 18 #使能信号INC = 23 #信号输入1IND = 24 #信号输入2GPIO.setwarnings(False) #关闭警告信息def setup(enable_pin,in1_pin,in2_pin): '''初始化引脚''' GPIO.setmode(GPIO.BCM) GPIO.setup(enable_pin, GPIO.OUT) GPIO.setup(in1_pin, GPIO.OUT) GPIO.setup(in2_pin, GPIO.OUT) def pwm(enable_pin): '''初始化PWM(脉宽调制)''' pwm = GPIO.PWM(enable_pin, 500) pwm.start(0) return pwmdef changespeed(pwm,speed): '''通过改变占空比改变马达转速''' pwm.ChangeDutyCycle(speed) def clockwise(in1_pin,in2_pin): '''马达顺时针转的信号''' GPIO.output(in1_pin, 1) GPIO.output(in2_pin, 0) def counter_clockwise(in1_pin,in2_pin): '''马达逆时针转的信号''' GPIO.output(in1_pin, 0) GPIO.output(in2_pin, 1) def brake(pwm,in1_pin,in2_pin): '''马达制动的信号''' GPIO.output(in1_pin, 0) GPIO.output(in2_pin, 0) changespeed(pwm,100) #使能信号为高电平,IN1和IN2都为0或1时马达制动def loop(): while True: '''通过输入的命令改变马达转动''' cmd = input("Command, f/r/b 0..9, E.g. f5 :") direction = cmd[0] if direction == "f": clockwise(INC,IND) if direction == "r": counter_clockwise(INC,IND) if direction == "b": #刹车制动, brake(ENB_pwm,INC,IND) continue speed = int(cmd[1]) * 10 #通过输入0~9的数字更改占空比0~90% changespeed(ENB_pwm,speed)def destroy(): ENB_pwm.stop() GPIO.cleanup() # Release resourceif __name__ == '__main__': # Program start from here try: setup(ENB,INC,IND) #初始化引脚 ENB_pwm=pwm(ENB) #初始化PWM loop() except KeyboardInterrupt: # When 'Ctrl+C' is pressed destroy() finally: destroy()实验结果示例: |
|||
|
|||
只有小组成员才能发言,加入小组>>
2431 浏览 0 评论
9078 浏览 4 评论
36741 浏览 19 评论
5020 浏览 0 评论
24701 浏览 34 评论
1513浏览 2评论
1731浏览 1评论
2171浏览 1评论
1539浏览 0评论
510浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 12:54 , Processed in 1.230834 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号