完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一.题目
设计威廉希尔官方网站 ,使用定时器实现PWM对直流电机的转速控制,并且实现按键切换转动方向。并进行软件仿真,做出实物。 二.基本要求 1.设置按键控制直流电机的开关 2.设置按键控制直流电机的加速、减速。 3.设置按键控制直流电机的正反转。 4.设置显示模块可以直观的了解到直流电机的工作状态。 5.使用PROTUES软件进行威廉希尔官方网站 设计并仿真。 6.按照仿真设计实物。 目录
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 #define uchar unsigned char #define uint unsigned int #define value P0 #define wei P2 uchar sdkey; uchar ***key; uchar zkgkey; ***it motor_A_1=P3^5; ***it motor_A_2=P3^6; ***it zkg=P3^7; ***it k1=P1^0; // k1加速按键 ***it k2=P1^1; // K2减速按键 ***it k3=P1^2; // K3方向取反 ***it 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; Delay(100); } void display() { if(W>0) { displaysmg(0,W/20); } if(zkg==1) { displaysmg(3,1); } else { wei=0xff; } if(***key==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; ***key=~***key; } } } else if(k4==0) //总开关 { Delay(100); { if(k4==0) { zkg=~zkg; zkgkey=~zkgkey; } while(!k4); W=0; } } } void main(void) { zkg=0; ***key=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的供电用以完成实验。最后我们得到的实验结果和预期一致,可以通过按键用来控制电机的转速调节和电机的转向控制并通过数码管显示相关的信息。 |
|
|
|
只有小组成员才能发言,加入小组>>
2454 浏览 0 评论
9241 浏览 4 评论
36917 浏览 19 评论
5052 浏览 0 评论
24917 浏览 34 评论
1587浏览 2评论
1833浏览 1评论
2274浏览 1评论
1617浏览 0评论
592浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-8 02:48 , Processed in 1.386029 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号