0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用8051单片机控制双向直流电机

科技观察员 来源:英锐恩 作者:英锐恩 2023-07-07 10:58 次阅读

如何将直流电机连接到8051单片机?在本文中,主要有8051单片机+DC电机系统两个部分。首先是带有控制电机所需程序的8051单片机,其次是合适的驱动电路

大多数直流电机的功率要求远远超出了单片机的范围,而且在反转旋转方向时产生的电压尖峰更容易损坏单片机。因此将直流电机直接连接到单片机是不明智的,完美的解决方案是在单片机和直流电机之间使用电机驱动电路。

一、L293电机驱动芯片

L293是一款专用的H桥电机驱动器IC,采用16引脚封装。L293的电流容量为600mA/通道,电源电压范围为4.5至36VDC。它们配有内部高速钳位二极管,用于电感尖峰保护。L293的其他优点包括高抗噪性、内部ESD保护、热关断、每个通道的独立输入电源等。L293电机驱动器的引脚排列和真值表如下图所示:

L293-pinout.png

二、使用8051单片机控制双向直流电机

这里的双向直流电机,它在预设时间(约1秒)后自动改变方向。AT89S51是这里使用的单片机,L293构成电机驱动器。电路图如下所示:

interfacing-dc-motor-8051.png

在电路元件R1、S1和C3中形成去抖动复位电路。C1、C2和X1与振荡器有关。端口引脚P1.0和P1.1连接到L293电机驱动器的相应输入引脚。电机连接在L293的输出引脚3和6之间。软件是这样写的,P1.0和P1.1的逻辑组合控制电机的方向。最初接通电源时,P1.0为高电平,P1.1为低电平。该状态保持预设时间(约1S),此时电机将沿顺时针方向运行(参见L293的功能表)。然后P1.0和P1.1的逻辑被交换并且这个条件也保持相同的持续时间。

控制程序1:

ORG 00H
MAIN: MOV P1,#00000001B
ACALL DELAY
MOV P1,#00000010B
ACALL DELAY
SJMP MAIN
DELAY: MOV R4,#0FH
WAIT1: MOV R3,#00H
WAIT2: MOV R2,#00H
WAIT3: DJNZ R2,WAIT3
DJNZ R3,WAIT2
DJNZ R4,WAIT1
RET
END

三、带按钮控制的双向电机

下面显示的电路是基于8051单片机的双向电机,其方向可以使用2个按钮开关控制。除了两个按钮开关之外,该电路与前一个电路非常相似。这些按钮开关连接到单片机的P0rt3。电阻R2和R3分别是P3.0和3.1的下拉电阻。

interfacing-dc-motor-8051-push-button.png

上述项目的代码是这样编写的,最初当电源打开时,电机保持关闭。当按下按钮开关S2时,P1.0变为高电平,而P1.1保持低电平。电机按顺时针方向运行,此状态一直保持到按下S3。当按下按钮开关S3时,P1.0和P1.1的逻辑切换,使电机以相反方向运行,这种状态一直保持到下一次按下S2。

控制程序2:

ORG 00H
MOV P3,#00000000B
MOV P1,#00000000B
MAIN:MOV A,P3
CJNE A,#00000001B,LABEL1
MOV P1,#00000001B
LABEL1:CJNE A,#00000010B,LABEL2
MOV P1,#00000010B
LABEL2:SJMP MAIN
END

检查特定按钮是否被按下是使用CJNE(如果不相等则比较并跳转)指令完成的。简而言之,CJNE指令比较两个操作数,如果操作数不相等,则跳转到预定义的LABEL。如果两个操作数相等,则不会发生任何事情并执行下一条指令。每当按下按钮S2时,P3的状态将是00000001B。该状态被移动到累加器A并使用CJNE指令与00000001B进行比较。两个操作数相等表示按下S2,执行下一条使电机顺时针转动的指令(MOV P1,#00000001B)。如果操作数不相等,则表示没有按下S2,控制器跳转到LABEL1以检查S3。要检查S3,P3的状态再次移动到A,并使用CJNE指令与00000010B进行比较。两个操作数相等表示按下S3,执行下一条使电机逆时针运行的指令(MOV P1,#00000010B)。两个操作数不相等意味着S3未被按下,控制器再次检查S2并重复此循环。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 直流电机
    +关注

    关注

    35

    文章

    1625

    浏览量

    69478
  • 8051单片机
    +关注

    关注

    5

    文章

    153

    浏览量

    25334
收藏 人收藏

    评论

    相关推荐

    51单片机直流电机控制

    方便的实现电机的智能控制。主体电路:即直流电机PWM控制模块。这部分电路主要由AT89C52单片机的I/O端口、定时计数器、外部中断扩展等
    发表于 08-06 15:42

    控制直流电机的正转反转和PWM调速直流电机驱动,单片机...

    控制直流电机的正转反转和PWM调速直流电机驱动,单片机与L298之间如何用光耦隔离?
    发表于 12-06 15:54

    单片机PWM控制直流电机调速

    本帖最后由 vbairbus 于 2014-4-10 22:50 编辑 单片机PWM控制直流电机调速,如果额定电流小于0.5A ,可用ULN2003做功率管控制
    发表于 04-10 22:49

    直流电机调速=步进电机直流电机正反转控制(程序+仿真)

    单片机控制直流电机的PWM调速=步进电机直流电机正反转控制(程序+仿真)
    发表于 05-01 15:36

    单片机控制直流电机

    如何用单片机控制直流电机,需要准备什么?能发一下代码吗?我现在有51单片机控制板和一个直流电机
    发表于 07-12 15:57

    单片机实现直流电机控制的应用实例是什么

    进行控制,采用三极管控制直流电机的电路如图9-3所示,图中的二极管为续流二极管,起到保护三极管的作用。图9-2 开关控制直流电机电路图图9-
    发表于 06-29 07:40

    51单片机控制直流电机调速电路的方法

    51单片机控制直流电机调速电路(含C语言源程序)51单片机控制直流电机调速电路(含C语言源程序)
    发表于 07-14 06:44

    如何去实现直流电机调速

    控制电动机电枢电压,实现调速。目前已有许多文献介绍直流电机调速,宋卫国等用89C51单片机实现了直流电机闭环调速;张立勋等用AVR单片机实现
    发表于 07-14 06:12

    使用单片机进行直流电机控制

    最近在使用单片机进行直流电机控制,驱动器使用的L298N,在使用的时候控制一台直流电机,驱动器上用三个输入端子来
    发表于 12-06 06:55

    单片机控制直流电机

    单片机控制直流电机 本设计以AT89C51单片机为核心,以4*4矩阵键盘做为输
    发表于 10-27 17:52 1.1w次阅读
    用<b class='flag-5'>单片机</b><b class='flag-5'>控制</b><b class='flag-5'>直流电机</b>

    单片机控制直流电机

    单片机控制直流电机,很好的C语言资料,快来学习吧。
    发表于 04-26 09:27 72次下载

    单片机控制直流电机基本原理

    直流无刷电动机在交通、轮毂电机、机械、纺织、航空等领域中已经得到广泛的应用。以往的直流无刷电动机控制只是简单的控制
    的头像 发表于 08-07 21:33 1.2w次阅读

    单片机操作直流电机

    单片机操作直流电机(电源技术研讨会武汉)-单片机操作直流电机控制电机的转速,PWM
    发表于 09-27 15:02 30次下载
    <b class='flag-5'>单片机</b>操作<b class='flag-5'>直流电机</b>

    PWM控制直流电机单片机实验)

    PWM控制直流电机单片机实验)有问题欢迎私信哦一.题目设计电路,使用定时器实现PWM对直流电机的转速控制,并且实现按键切换转动方向。并进行
    发表于 11-22 09:21 36次下载
    PWM<b class='flag-5'>控制</b><b class='flag-5'>直流电机</b>(<b class='flag-5'>单片机</b>实验)

    单片机实现直流电机控制的应用实例

    的通断进行控制,采用三极管控制直流电机的电路如图9-3所示,图中的二极管为续流二极管,起到保护三极管的作用。 图9-2 开关控制直流电机电路
    发表于 04-03 11:41 2次下载
    <b class='flag-5'>单片机</b>实现<b class='flag-5'>直流电机</b><b class='flag-5'>控制</b>的应用实例