精华内容
下载资源
问答
  • keil软件开发,基于89c52单片机的pwm控制直流电机,通过4*4按键设置pwm值,并且在1620上显示出pwm的值。
  • 内含芯片手册,接线图,源码,适合新手快速学习掌握。
  • PWM控制直流电机调速

    千次阅读 2020-12-23 15:14:28
    PWM控制技术广泛地应用于开关稳压电源,不间断电源(UPS),以及交直流电动机传动等领。本文阐述了PWM变频调速系统的基本原理和特点,并在此基础上给出了一种基于MitelSA866DE三相PWM波形发生器和绝缘栅双极功率晶体管...

    绪论

    脉宽调制

    (PWM)

    控制技术,是利用半导体开关器件的导通和关断,把直流电压变

    成电压脉冲序列,

    并控制电压脉冲的宽度和脉冲序列的周期以达到变压变频目的的一

    种控制技术。

    PWM

    控制技术广泛地应用于开关稳压电源,不间断电源

    (UPS)

    ,以及交

    直流电动机传动等领。

    本文阐述了

    PWM

    变频调速系统的基本原理和特点,

    并在此基础

    上给出了一种基于

    Mitel   SA866DE

    三相

    PWM

    波形发生器和绝缘栅双极功率晶体管

    (IGBT)

    的变频调速设计方案。

    直流电动机具有优良的调速特性

    ,

    调速平滑、方便

    ,

    调速范围广

    ;

    过载能力大

    ,

    能承受频繁的冲击负载

    ,

    可实现频繁的无级快速起动、制动

    和反转

    ;

    能满足生产过程自动化系统各种不同的特殊运行要求,在许多需要调速或快

    速正反向的电力拖动系统领域中得到了广泛的应用。

    直流电动机的转速调节主要有三种方法:

    调节电枢供电的电压、

    减弱励磁磁通和

    改变电枢回路电阻。针对三种调速方法,都有各自的特点,也存在一定的缺陷。例如

    改变电枢回路电阻调速只能实现有级调速,

    减弱磁通虽然能够平滑调速,

    但这种方法

    的调速范围不大,一般都是配合变压调速使用。所以,在直流调速系统中,都是以变

    压调速为主。

    其中,

    在变压调速系统中,

    大体上又可分为可控整流式调速系统和直流

    PWM

    调速系统两种。直流

    PWM

    调速系统与可控整流式调速系统相比有下列优点

    :

    由于

    PWM

    调速系统的开关频率较高

    ,

    仅靠电枢电感的滤波作用就可获得平稳的直流电流

    ,

    低速特性好,稳速精度高,调速范围宽,可达

    1

    10000

    左右

    ;

    同样

    ,

    由于开关频率高

    ,

    快速响应特性好

    ,

    动态抗干扰能力强

    ,

    可以获得很宽的频带

    ;

    开关器件只工作在开关状

    ,

    主电路损耗小

    ,

    装置效率高

    ;

    直流电源采用不控整流时,电网功率因数比相控整流

    器高。

    正因为直流

    PWM

    调速系统有以上的优点,

    并且随着电力电子器件开关性能的不断

    提高

    ,

    直流脉宽调制

    (

    PWM)

    技术得到了飞速的发展。

    传统的模拟和数字电路

    PWM

    已被

    大规模集成电路所取代

    ,

    这就使得数字调制技术成为可能。

    目前

    ,

    在该领域中大部分应

    用的是数字脉宽调制器与微处理器集为一体的专用控制芯片

    ,

    TI

    公司生产的

    TMS320C24X

    系列芯片。

    电动机调速系统采用微机实现数字化控制

    ,

    是电气传动发展的

    主要方向之一。采用微机控制后

    ,

    整个调速系统实现全数字化

    ,

    结构简单

    ,

    可靠性高

    ,

    操作维护方便

    ,

    电动机稳态运转时转速精度可达到较高水平

    ,

    静动态各项指标均能较

    好地满足工业生产中高性能电气传动的要求。

    展开全文
  • PWM控制直流电机(单片机实验)

    万次阅读 多人点赞 2020-07-21 14:48:26
    PWM控制直流电机(单片机实验) 有问题欢迎私信哦 一.题目 设计电路,使用定时器实现PWM直流电机的转速控制,并且实现按键切换转动方向。并进行软件仿真,做出实物。 二.基本要求 1.设置按键控制直流电机的开关 2....

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

    有问题欢迎私信哦

    一.题目
    设计电路,使用定时器实现PWM对直流电机的转速控制,并且实现按键切换转动方向。并进行软件仿真,做出实物。
    二.基本要求
    1.设置按键控制直流电机的开关
    2.设置按键控制直流电机的加速、减速。
    3.设置按键控制直流电机的正反转。
    4.设置显示模块可以直观的了解到直流电机的工作状态。
    5.使用PROTUES软件进行电路设计并仿真。
    6.按照仿真设计实物。

    目录

    1. 项目分析 6
      1.1 设计思路 6
      1.2 系统框架构建 6
    2. 硬件设计 7
      2.1 硬件模块组成 7
      2.2 单片机控制模块 7
      2.2.1 单片机控制模块简介 7
      2.2.2 AT89C52简介 7
      2.2.3 AT89C52主要功能列举 7
      2.2.4 AT89C52引脚功能介绍 7
      2.3 电机驱动模块 8
      2.3.1 L298电机驱动简介 8
      2.3.2 L298N原理图 8
      2.3.3 L298N的逻辑功能 9
      2.4 数码管显示模块 9
      2.4.1 LED数码管简介 9
      2.4.2 LED七段数码管的结构 9
      2.5 键盘控制模块 10
      2.5.1 键盘控制模块介绍 10
      2.5.2 独立按键介绍 10
      2.5.3 独立按键与单片机的链接 10
    3. 软件设计 11
      3.1 代码设计 11
      3.2 仿真实现 14
    4. 系统调试总结分析 14

    1. 项目分析

    1.1 设计思路
    PWM控制直流电机的主要功能要求有:能够实现对直流电机的加速、减速、正反转和暂停,能够直观的了解到直流电机的工作状态,且可以很方便的实现对直流电机的智能控制。

    为此我们设计了以下几个部分来构成我们的直流电机PWM控制系统:
    主体电路:即直流电机PWM控制模块。这部分电路主要由AT89C52单片机的I/O端口、定时计数器、外部中断扩展等控制直流电机的加速、减速以及电机的正转和反转,能够很方便的实现电机的智能控制。其间是通过AT89C52单片机产生脉宽可调的脉冲信号并输入到L298N驱动芯片来控制直流电机工作的。
    该直流电机PWM控制系统由以下电路模块组成:
    设计输入部分:这一模块主要是利用带中断的独立式键盘来实现对直流电机的加速、减速以及电机的正反转和暂停控制。
    设计控制部分:主要由AT89C52单片机的外部中断扩展电路组成。直流电机PWM控制实现部分主要由一些二极管、电机和L298N直流电机驱动模块组成。
    设计显示部分:LED数码显示部分,实现对PWM脉宽调制占空比的实时显示。
    1.2 系统框架构建
    方案说明:直流电机PWM调速系统以AT89C52单片机为控制核心,由命令输入模块、LED显示模块及电机驱动模块组成。采用带中断的独立式键盘作为命令的输入,单片机在程序控制下,定时不断给L298直流电机驱动芯片发送PWM波形,H型驱动电路完成电机正,反转和急停控制;同时单片机不停的将PWM脉宽调制占空比送到LED数码管完成实时显示。如图1-2-1为预设框架图。
    在这里插入图片描述
    2. 硬件设计

    2.1 硬件模块组成
    (1) 单片机控制模块
    (2) 电机驱动模块
    (3) 数码管显示模块
    (4) 键盘控制模块

    2.2 单片机控制模块

    2.2.1 单片机控制模块简介
    在该模块,经过我们讨论比较之后我们选择了AT89C52构成我们的单片机控制模块。

    2.2.2 AT89C52简介
    AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。

    2.2.3 AT89C52主要功能列举
    (1) 拥有灵巧的8位CPU和在系统可编程Flash
    (2) 晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)
    (3) 内部程序存储器(ROM)为 8KB
    (4) 内部数据存储器(RAM)为 256字节
    (5) 32 个可编程I/O 口线
    (6) 8 个中断向量源
    (7) 三个 16 位定时器/计数器
    (8) 三级加密程序存储器
    (9) 全双工UART串行通道

    2.2.4 AT89C52引脚功能介绍

    VCC:AT89S52电源正端输入,接+5V。
    VSS:电源地端。
    XTAL1:单芯片系统时钟的反相放大器输入端。
    XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。
    RESET:AT89C52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89C52便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。
    EA/Vpp:"EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。
    ALE/PROG:ALE是英文"Address Latch Enable"的缩写,表示地址锁存器启用信号。AT89C52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为AT89C52是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。
    PSEN:此为"Program Store Enable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89C52可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。
    PORT0(P0.0~P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。
    PORT2(P2.0~P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89C52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。
    PORT1(P1.0~P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。
    PORT3(P3.0~P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。
    其引脚分配如下:
    P3.0:RXD,串行通信输入。
    P3.1:TXD,串行通信输出。
    P3.2:INT0,外部中断0输入。
    P3.3:INT1,外部中断1输入。
    P3.4:T0,计时计数器0输入。
    P3.5:T1,计时计数器1输入。
    P3.6:WR:外部数据存储器的写入信号。
    P3.7:RD,外部数据存储器的读取信号。
    RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
    ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
    /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
    /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
    XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
    XTAL2:来自反向振荡器的输出。

    2.3 电机驱动模块

    2.3.1 L298电机驱动简介
    L298是SGS公司的产品,L298N为15个管角的单块集成电路,高电压,高电流,四通道驱动,设计用L298N来接收DTL或者TTL逻辑电平,驱动感性负载(比如继电器,直流和步进马达)和开关电源晶体管。内部包含4通道逻辑驱动电路,其额定工作电流为 1 A,最大可达 1.5 A,Vss 电压最小 4.5 V,最大可达 36 V;Vs 电压最大值也是 36 V。L298N可直接对电机进行控制,无须隔离电路,可以驱动双电机。

    2.3.2 L298N原理图
    L298原理图如图2-3-1所示
    在这里插入图片描述
    图2-3-1 L298原理图

    2.3.3 L298N的逻辑功能
    当使能端为高电平时,输入端IN1为PWM信号,IN2为低电平信号时,电机正转;输入端IN1为低电平信号,IN2为PWM信号时,电机反转;IN1与IN2相同时,电机快速停止。当使能端为低电平时,电动机停止转动。
    在对直流电动机电压的控制和驱动中,半导体功率器件(L298)在使用上可以分为两种方式:线性放大驱动方式和开关驱动方式在线性放大驱动方式。
    半导体功率器件工作在线性区优点是控制原理简单,输出波动小,线性好,对邻近电路干扰小,缺点为功率器件工作在线性区,功率低和散热问题严重。开关驱动方式是使半导体功率器件工作在开关状态,通过脉调制(PWM)来控制电动机的电压,从而实现电动机转速的控制。如表2-3-1所示。

    2.4 数码管显示模块
    2.4.1 LED数码管简介
    LED(Light Emitting Diode),发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个“P-N结”。
    当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。而光的波长也就是光的颜色,是由形成P-N结的材料决定的。除半导体激光器外,当电流激励时能发射光学辐射的半导体二极管。严格地讲,术语LED应该仅应用于发射可见光的二极管;发射近红外辐射的二极管叫红外发光二极管(IRED,Infrared Emitting Diode);发射峰值波长在可见光短波限附近,由部份紫外辐射的二极管称为紫外发光二极管;但是习惯上把上述三种半导体二极管统称为发光二极管。
    2.4.2 LED七段数码管的结构
    LED七段数码管,如图2-4-2所示,是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。LED数码管常用的段数一般为7段,有的另加一个小数点 。LED数码管根据LED的接法不同,分为共阴和共阳两类 。
    共阴极结构,是8段发光二极管的阴极端连接在一起,阳极端分开控制,使用时公共端接地,要使哪根发光二极管,则对应的阳极端接高电平。共阳极结构,是8段发光二极管的阳极端连接在一起,阴极端分开控制,使用时公共端接电源。要使哪根发光二极管,则对应的阴极端接地。
    在这里插入图片描述
    图2-4-2 LED数码管结构图
    其中7段发光二极管构成7笔的字形“8”,1根发光二极管构成小数点。从a-g引脚输入不同的8位二进制编码,可显示不同的数字或字符。通常把控制发光二极管的7(或8)位二极管编制称为字段码。不同数字或字符其字段码不一样,对于同一个数字或字符,共阴极连接和共阳极连接的字段码也不一样,共阴极和共阳极的字段码互为反码。

    2.5 键盘控制模块

    2.5.1 键盘控制模块介绍
    键盘控制模块主要是用于操作设备运行的一种指令和数据输入装置。
    键盘按照接口原理可分为编码键盘与非编码键盘两类。这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别;非编码键盘主要是由软件来实现键盘的定义与识别。键盘按照其结构可分为独立式键盘与矩阵式键盘两类。独立式键盘主要用于按键较少的场合,矩阵式键盘主要用于按键较多的场合,也称行列式键盘。综合需求比较我们选择了独立式键盘用于我们的键盘控制模块。

    2.5.2 独立按键介绍
    独立按键主要是指轻触式按键开关,也称之为轻触开关。独立按键是一种电子开关,属于电子元器件类,使用时以满足操作力的条件向开关操作方向施压开关功能闭合接通,当撤销压力时开关即断开,其内部结构是靠金属弹片受力变化来实现通断的。
    独立键盘的按键相互独立,每个按键接一根I/O口线,一根I/O口线上的按键工作状态不会影响其它I/O口线的工作状态(引脚图如图2-5-1所示)。因此,通过检测I/O口线的电平状态,即可判断键盘上哪个键被按下。
    在这里插入图片描述
    图2-5-1 独立按键引脚图
    2.5.3 独立按键与单片机的链接
    如图2-5-2所示为单片机和独立按键链接的示意图
    在这里插入图片描述
    图2-5-2 独立键盘与单片机的链接
    3. 软件设计

    3.1 代码设计

    #include<reg52.h> 
    #define uchar unsigned char	
    #define uint unsigned int 
    #define value P0
    #define wei P2
    uchar sdkey;
    uchar zfkey;
    uchar zkgkey;	
    sbit motor_A_1=P3^5;
    sbit motor_A_2=P3^6;
    sbit zkg=P3^7;
    sbit k1=P1^0;  	// k1加速按键
    sbit k2=P1^1;   // K2减速按键
    sbit k3=P1^2;   // K3方向取反
    sbit k4=P1^3;   // k4电机开关
    uchar T=0;	     
    uchar W=0;	   
    uchar k=0;	    
    uint i=0;      
    uint l=0;
    uchar code smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x00};
    uchar code smgwei[]={0x01,0x02,0x04,0x08};
    void time0Init(void)
    {
    	TH0=0xff;
    	TL0=0xf6;			
    	TMOD=0x01;	
    	EA=1;						
    	ET0=1;
    	TR0=1;
    }
    void Delay(uint m)
    {
    	while(m--);	
    }
    void displaysmg(uint a,uint b)
    {
    	wei=~smgwei[a];
    	value=smgduan[b];
    	Delay(100);
    }
    void display()
    {
    	if(W>0)
    	{
      displaysmg(0,W/20);		
    	}
     if(zkg==1)
    	{
    		displaysmg(3,1);	
    	}	
    	else 
    	{
    		wei=0xff;
    	}
    	if(zfkey==1)
    				{
    						displaysmg(2,1);	
    				}
    				else
    				{
    				 displaysmg(2,6);			
    				}
    
    }
    void timer0() interrupt 1
    {		  		   
    	TH0=0xff;
    	TL0=0xf6;
    	T++;	 				
    	if(T==100)      
    	T=0; 
    	if(k==0)
    	 {
    		 
    		if(T>W)
    			motor_A_1 =0;
    		else
    			motor_A_1 =1;
         }
    	else
    	 {
    		if(T>W)
    			motor_A_2 =0;
    		else
    			motor_A_2 =1;
    	 }
    }	 
    void key(void)           
    {
    	if(k1==0)								 //加速
    	{	
    		Delay(100);						
    		{
    			while(k1==0);
    			if(W==100)
    			W=0;				
    			else
    				W+=20;	
    		}
    	}
    	else if(k2==0)					    //减速
    	{	
    		Delay(100);					    
    		{				 
    			while(k2==0);			   	
    			if(W==0)				    
    				W=100;				
    			else
    				W-=20;
    		}
    	}
    	else if(k3==0)					    //转向
    	{
    		Delay(100);									
    		{	
    			if(k3==0)
    			{		   
    			while(!k3);
    			k=!k;	
    			zfkey=~zfkey;
    			}
    		} 
    	}
    	else if(k4==0)						//总开关
    	{	
    		Delay(100);			            	
    		{	
    		  if(k4==0)
    			{	
    				zkg=~zkg;
    				zkgkey=~zkgkey;
    			}
    			while(!k4);
    			W=0;													
    		}
    	}
    }
    void main(void)
    {
    	zkg=0;
       zfkey=1;
    	   time0Init();			              		 
    	while(1)	 
    	   {
    	      if(k==0)
    	      motor_A_2=0;
    	      else
    	      motor_A_1=0;	 		
    key();						
    	   display();
    	}
    }
    

    3.2 仿真实现

    图3-2-1 电机顺时针-关闭状态仿真图
    图3-2-2 电机顺时针-开启状态仿真图
    图3-2-3 电机逆时针-关闭状态仿真图
    图3-2-3 电机顺时针-5档状态仿真图
    图3-2-4 电机逆时针-2档状态仿真图
    在这里插入图片描述
    图3-2-5 电机顺时针-2档状态仿真图

    图3-2-6 电机逆时针-2档状态实物图

    4. 系统调试总结分析

    4.1 仿真调试
    通过仿真我们能够直观的看到实验现象。其中数码管左边第一位为档位显示,右边第二位为顺时针/逆时针状态显示,右边第一位为电机开启/关闭状态显示。K1按键为加速按键,K2按键为减速按键,k3按键为电机转向选择按键,K4为电机的开关按键。
    1、加速按键K1
    按下加速按键K1的时候,数码管的档位显示会更改并显示当前档位,每次按下K1会将档位从当前显示数字加1。档位共分为6档,0~5,从1档到5档使得电机不断加速,5档时电机处于最高速度。0档时数码管并不显示任何,此时电机停止转动并且当目前为5档时,如果再次按下K1,电机速度会置0(数码管档位不显示),如再次按下K1,又会重新加1。同时电机会根据数码管显示的档位相应的转速转动。
    2、减速按键k2
    按下减速按键K2的时候,数码管的档位显示会更改并显示当前档位,每次按下k2的时候与加速相反,减速按键每次会让数码管显示数字减1,从5档到0档,数码管随着每次K2的按下都会随之减1,当数码管从5减到0,显示的数字不断减小,标示着电机转速不断下降。当前档位为0时,数码管不显示任何并且电机停止转动,如果当前档位为0,按下K2时,数码管会显示5,即为最高档位,同时电机也会位于最高速度。之后每次按下K2,又会重新减1。同时电机会根据数码管显示的档位相应的转速转动。
    3、方向按键K3
    方向按键K3按下的时候,数码管的右边第二位会显示1或者不显示,其中1表示电机转向为顺时针方向,数码管不显示表示电机逆时针转动。电机的转向不受电机开关K4的影响。电机转向可通过数码管显示1或者不显示直观的看到。
    4、电机开关按键K4
    电机默认状态为关机状态,此时数码管不显示。在这个状态下,可以人为的去选择电机的转向。同时也可以去调节电机的转速。但是当K4按下,数码管显示1,此时电机为开启状态,此时处于安全考虑档位会自动置0,即电机开启后,如不手动去调节档位,电机也不会工作。电机转向的选择并不受电机是否开启的影响。

    4.2 实物测试
    通过自己动手,我们完成了实验所需仪器的组装。整个装置由最小系统、数码管,4个独立按键以及L298N和直流电机组成。根据各个元器件的原理图以及仿真图,组装完成好实物之后。由直流电源提供12V的直流电给L298N模块供电,再通过L298N的模块给整个系统提供5V的供电用以完成实验。最后我们得到的实验结果和预期一致,可以通过按键用来控制电机的转速调节和电机的转向控制并通过数码管显示相关的信息。

    展开全文
  • .PAGE.......2011年全国大学生电子设计竞赛PWM控制直流电机转速(A题)【高职组】20摘 要本设计主要要实现的功能是,通过直流电机PWM控制系统,实现对直流电机的加速、减速以及电机的正转、反转和急停,并且可以调整...

    .

    PAGE

    ...

    .

    ...

    2011年全国大学生电子设计竞赛

    PWM控制直流电机转速(A题)

    【高职组】

    20

    摘 要

    本设计主要要实现的功能是,通过直流电机PWM控制系统,实现对直流电机的加速、减速以及电机的正转、反转和急停,并且可以调整电机的转速,能够很方便的实现电机的智能控制。主要采用直流电机PWM调速系统以AT89S52单片机为控制核心,由命令输入模块、LCD显示模块及电机驱动模块组成。使用带中断的独立式键盘作为命令的输入,单片机在程序控制下,定时不断给L298直流电机驱动芯片发送PWM波形H型驱动电路完成电机正、反转和急停控制,同时单片机不停的将PWM脉宽调制占空比送到LCD1602液晶来完成实时显示。

    关键词:直流电机;PWM;控制。

    abstract

    This design mainly in order to realize the function is, through the dc motor PWM control system, the implementation of the dc motor speed, motor and reducer, move forward, reverse and stop, and can adjust the speed of the motor, can easily realize the intelligent control of the machine. Mainly adopts dc motor PWM speed regulation system AT89S52 single chip microcomputer as control core, by the command input module, LCD display module and motor drive module. Using independent type keyboard with interruption as command input, single chip microcomputer under program control, timing, constantly send dc motor driver chip L298 PWM waveform H drive circuit to complete the motor positive and reverse and stop control, meanwhile microcontroller of the PWM pulse width modulation duty cycle to the LCD1602 LCD to complete real-time display.

    Keywords: dc motor; PWM. Control.

    目 录

    一 系统方案设计与分析 ……………………………………………4

    1系统总体框图 ………………………………………………………4

    2方案论证与选择 ……………………………………………………4

    2.1 控制模块的论证与选择…………………………………………4

    2.2 输入模块的论证与选择…………………………………………4

    2.3显示模块的论证与选择 …………………………………………5

    2.4 传感器的论证与选择 …………………………………………5

    3理论分析与计算 ……………………………………………………5

    3.1 PWM调速原理 ……………………………………………………5

    3.2 PWM调速方法……………………………………………………6

    二 硬件电路设计 ……………………………………………………6

    1控制系统 ……………………………………………………6

    2驱动模块 ……………………………………………………7

    3显示模块 ……………………………………………………8

    三 软件设计 ……………………………………………………9

    1程序流程图

    四 调试结果与分析……………………………………………………10

    五 元器件清单 ……………………………………………………12

    六 参考文献 ……………………………………………………12

    七 总结 ……………………………………………………12

    附录一:原理图 ……………………………………………………13

    附录二:源程序 ……………………………………………………14

    一 系统方案设计与分析

    1系统总体框图

    本系统主要由控制模块、显示模块、电机驱动模块、传感器模块、电源模块等组成,系统总体框图如图1所示。

    展开全文
  • Arduino应用——PWM控制直流电机风扇

    千次阅读 2020-12-05 14:22:16
    Arduino应用——PWM控制直流电机风扇PWM原理实验器件功能描述如何改变文本的样式插入链接与图片实现代码生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚...

    Arduino应用——PWM控制直流电机风扇

    最近在使用arduino UNO开发板完成课程小作业。其中一个要求设计一个电风扇控制系统,要求能够通过PWM调节风扇的转速。期间搜索了许多例程和方法,但受限于器件,效果不好。最后融合了两种方法,成功实现控制功能,因此在这里总结出来。

    PWM原理

    根据arduino官方社区的定义,PWM即脉冲宽度调制,是一种通过数字控制方式获得模拟结果的技术。数字控制用于创建方波,即在on和off之间切换的信号。通过改变信号处于ON状态时间和处于OFF状态时间的比例,这种模式可以模拟板子从Vcc(对UNO是5V)到off(GND,即0V)的所有电压。“ON”的持续时间称为 脉冲宽度。更改或调制脉冲宽度可以获得变化的模拟值。如果用LED灯足够快地重复此开关模式,效果相当于用一个介于0~Vcc之间的稳定电压,控制着LED灯的亮度。
    PWM
    0%占空比的图中,绿线代表固定时间段。如果arduino的PWM频率为500Hz,则该段持续时间或周期为2毫秒。analogWrite()函数的写入范围是0-255,那么analogWrite(255)代表请求100%的占空比(始终打开),而analogWrite(127)则是50%的占空比(一半时间)。

    实验器件

    器件数目
    Arduino UNO及USB下载线1
    ULN20031
    大面包板1
    直流电机1
    小风扇1
    4.7kΩ电阻2
    四角按键开关2
    杜邦线若干

    器件及布线图
    这里在附上这些器件的官方指南和工作原理的说明。

    • ULN2003
      是一种高压大电流的共发射极达林顿晶体管数组集成电路,内含7组达林顿对管,每组对管的电流容量是500mA,输出的电压最高50V。该集成电路还集成了7只共阴极形式连接的续流二极管,用于电感性负载的开关动作的电流续流。ULN2003A常见的封装形式有PDIP、SOIC、SOP或TSSOP。
      ULN2003

    实际操作时,ULN2003驱动板的IN1连接arduino的数字IO口9,供电口分别连接arduino的5V和gnd口。步进电机驱动部分最上方的接口连接直流电机。

    功能描述

    Arduino的板载输出电流是不够的,所以我们得需要借助ULN2003驱动板来实现。
    通过加速减速按键,能够控制负载/电机两端电压,改变电机转速。
    PWM频率一定时,脉冲宽度越大,占空比越大,提供给电机的平均电压越大,电机转速就越高。反之脉冲宽度越小,则占空比越小,提供给电机的平均电压越小,电机转速就低。

    接线图/原理图

    原理图

    实现代码

    代码及注释如下,可供参考。

    // 定义引脚
    const int buttonPin1 = 7; //定义buttonPin1引脚为7,加速按键
    const int buttonPin2 = 2; //定义buttonPin2引脚为8,减速按键
    const int motorPin = 9;   //定义motorPin引脚为9,驱动电机
    
    int buttonState1 = 0;
    int buttonState2 = 0;
    int outputValue = 0;
    int a1 = 0; //占空比,这里取0-255
    
    void setup() {
      //输入输出状态定义
      pinMode(buttonPin1, INPUT);
      pinMode(buttonPin2, INPUT);
      pinMode(motorPin, OUTPUT);
      Serial.begin(9600); //定义串口波特率
    }
    
    void loop() {
      // 串口监视器打印按键状态和电机转速
      buttonState1 = digitalRead(buttonPin1);
      buttonState2 = digitalRead(buttonPin2);
      Serial.print("加速按钮=");
      Serial.println(buttonState1);
      Serial.print("减速按钮=");
      Serial.println(buttonState2);
      delay(1000);
      outputValue=analogRead(motorPin); //outputValue:0~1023
      Serial.print("output=");
      Serial.println(outputValue);
      if(outputValue<=500{
      	if(buttonState1 == HIGH) { //如果加速按键按下
        	a1 += 20; // a1的变化数值可以根据实际需求调整
        	analogWrite(motorPin, a1); //将a的值赋给motorPin
        	delay(1000); //延迟1s
      	} 
      	if(buttonState2 == HIGH) { //如果减速按键按下
        	a1 -= 20;
        	analogWrite(motorPin, a1);
        	delay(1000);
      	}
      }
    }
    

    结果

    程序烧录到arduino板子上后,打开串口监视器,同时随机按下按键,观察风扇转动情况与串口监视器读数。
    结果展示1
    在这里插入图片描述
    总的来说,编程可以实现按键控制风扇转速增加/减小。

    • 但是由于代码本身没有按键去抖动的保护,按下按键后,作用到电机的结果有延迟,或者速度控制不是很稳定。后续可以进一步改进,提高系统稳定性。
    • analogRead()读取到的电机接口状态在0-1023之间,尽管初始化时已经通过analogWrite()将状态设为0,但是一开始读取到的接口状态并非0而是334左右,这意味着一开始作用到电机上的电压约为384/1024*5=1.631V,可能是ULN2003驱动板的作用,这个现象还可以继续深入探索。
    展开全文
  • 采用LabVIEW开发平台,在上位机用图形化编程语言编制PWM控制信号,并通过myDAQ的模拟输出口将PWM信号送给直流电机驱动控制电路实现电机的调速,同时上位机启动、停止、转向等控制信号也通过myDAQ数字输出口送给驱动...
  • PWM控制直流电机,比赛练习案例,仿真实例,现成调用封装使用,可运行的仿真电路图和调好的程序,开箱即用。适用于教学案例、毕业设计、电子设计比赛、出书项目实例,实际设计、个人DIY参考。 已调试好,proteus...
  • PWM控制直流电机,本程序输出PWM,可通过改变计数值改变占空比,实现速度控制,也可改变分频值改变频率实现改变速度
  • 基于H桥PWM控制直流电机正反转调速驱动控制电路、电子技术,开发板制作交流
  • PWM控制直流电机的正转、反转、加速和减速

    万次阅读 多人点赞 2021-01-22 10:00:59
    使用 PWM 电路来控制直流电机的正转、反转、加速和减速,并将转向和转速显示出来。 设置按键控制直流电机的启动/停止的开关 设置按键控制直流电机的加速、减速 设置按键控制直流电机的正转、反转 设置显示模块可以...
  • stm32入门——PWM控制直流电机变速

    万次阅读 多人点赞 2018-11-26 19:42:05
    stm32入门——PWM输出控制直流电机变速 最近刚做了智能小车的寻迹实验,实验中用了定时器PWM输出来改变直流电机的转速,我在这里就大致总结一下PWM相关的知识。 什么是PWM? PWM(Pulse Width Modulation)脉冲宽度...
  • 直流电机驱动资料包:仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)电子系统设计报告课题名称 直流电动机驱动专 业 电子信息工程技术目录第1章 设计题目与要求第2章 设计方案2.1 设计方案2.2 方案选择2.3 ...
  • #include <reg52.h> #define uchar unsigned char ...uchar pwm,num; void delay(uint ms) { uchar i; while(ms--) { for(i=0;i<120;i++); } } void bee() { fm=0; delay(100); fm=.
  • 本文主要为PWM直流电机调速电路图原理,下面一起来学习一下
  • Protues仿真实例-51单片机-PWM控制直流电机.rar
  • 本文主要讲述了以PWM控制直流电机为例建一个简单的51工程框架:1)功能概述2)引脚连接3)框架介绍4)模块说明5)复用规则。
  • PWM控制直流电机

    2014-12-14 21:47:35
    pwm控制直流电机的正反转、加减速及停止
  • 12V直流电机 L298N电机驱动器 220V转12V变压器 二、连线 树莓派与L298N需要共地 L298N驱动模块 树莓派接线 三、树莓派python库配置 安装GPIO库 sudo apt-get install python3-rpi.gpio 电机控制程序 ...
  • 基于单片机的PWM控制直流电机转速方法陆雯【摘要】摘要:脉宽调制(PWM)是利用微处理器的数字输出来对直流电机速度进行控制的一种非常有效的技术。本设计采用AT89S51作为主控芯片,选用L298作为直流电机的驱动器,利用...
  • 使用stc8a单片机pwm控制直流电机,可加减速,开始停止,按键控制
  • 利用STM32的占空比PWM控制直流电机
  • 直流电机转速、电流双闭环调速系统进行了研究,并对一种基于脉宽调制 (PWM)装置的双闭环调速系统进 行 了转速、电流调节器的工程设计,最后应用MATLAB/sIMuuNK仿真软件对系统的工程设计进行 了仿真, 给出仿真...
  • 单片机PWM控制直流电机技术.pdf
  • PWM直流电机.rar

    2021-06-11 09:30:47
    PWM直流电机.rar
  • 直流电机PWM控制原理

    2021-01-14 01:07:58
    直流电机PWM控制原理1.脉宽 调 制 (PWM)是利用数字输出对模拟电路进行控制的一种有效技术,尤其是在对电机的转速控制方面,可大大节省能量。PWM 具有很强的抗噪性,且有节约空间、比较经济等特点。模拟控制电路有...
  • 单片机PWM控制直流电机技术分析.pdf
  • pwm控制直流电机.7z

    2020-07-11 10:59:29
    pwm控制直流电机的正反转以及加减速同时使用lcd1602来显示转速,pwm波的加减速是通过改变pwm的占空比等改变,

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,746
精华内容 2,298
关键字:

pwm控制直流电机

友情链接: 边缘检测.rar