基于单片机用PWM控制直流电机_第1页
基于单片机用PWM控制直流电机_第2页
基于单片机用PWM控制直流电机_第3页
基于单片机用PWM控制直流电机_第4页
基于单片机用PWM控制直流电机_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

技术文件姓名学号专业班号指导教师日期实验成绩评阅人摘要本文研究以单片机AT89S52和L298控制的直流电机脉宽调制调速系统。利用AT89S52芯片进行低本钱直流电动机控制系统的设计,能够简化系统构成、降低系统本钱、增强系统性能、满足更多应用场合的需要。系统实现对电机的正传、反转、急停、加速、减速的控制,以及PWM的占空比在LED上的实时显示;通过调整PWM的占空比,控制电机的电枢电压,进而控制转速。关键词:L298n;脉宽调制;LED显示;占空比;目录摘要实验方案及论证二、单元电路分析与实现2.1按键扫描使电机正反转、加速减速、停止2.2L298控制直流电机2.374LS595控制数码管显示局部及595的使用三、实验仿真处理及结果分析四、实验仿真与程序五、总结附录实验方案及论证1通过硬件和软件两个局部。硬件分为单片机、数码管显示、按键、直流电机,软件设计为参数的初始化、按键扫描、键值处理、直流电机正反转及转速、数码管显示。2通过硬件和软件两局部,硬件分为单片液晶1602的显示、独立按键、L203模块、LS74HC164、直流电机,软件参数的初始化按键扫描键值处理直流电机的正反转减速加速的处理。由于液晶和164在本实验是相对数码管595比拟昂贵,且595比164有以下优点;1支持3态输出,当第13脚为高电平时,595无输出;

2.具有数据锁存功能,这样不会影响移位时的瞬时输出;

3.具有数据输出功能,可以更方便的进行595级联、二.单元电路分析与实现2.1按键扫描使电机正反转、加速减速、停止单片机小系统单片机小系统L298独立按键电机数码管显示74HC5952.2L298控制直流电机〔1〕L298简介L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路局部在低电压下工作;可以外接检测电阻,将变化量反应给控制电路。使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。简要说明:尺寸:80mmX45mm主要芯片:L298N、光电耦合器工作电压:控制信号直流5V;电机电压直流3V~46V〔建议使用36伏以下〕最大工作电流:2.5A额定功率:25W特点:1、具有信号指示。2、转速可调3、抗干扰能力强4、具有过电压和过电流保护5、可单独控制两台直流电机6、可单独控制一台步进电机7、PWM脉宽平滑调速8、可实现正反转9、采用光电隔离使用直流/步进两用驱动器可以驱动两台直流电机。分别为M1和M2。引脚A,B可用于输入PWM脉宽调制信号对电机进行调速控制。〔如果无须调速可将两引脚接5V,使电机工作在最高速状态,既将短接帽短接〕实现电机正反转就更容易了,输入信号端IN1接高电平输入端IN2接低电平,电机M1正转。〔如果信号端IN1接低电平,IN2接高电平,电机M1反转。〕控制另一台电机是同样的方式,输入信号端IN3接高电平,输入端IN4接低电平,电机M2正转。〔反之那么反转〕,PWM信号端A控制M1调速,PWM信号端B控制M2调速。可参考下列图表:电机旋转方式控制端IN1控制端IN2控制端IN3控制端IN4输入PWM信号改变脉宽可调速调速端A调速端BM1正转高低//高/反转低高//高/停止低低//高/M2正转//高低/高反转//低高/高停止低低///高〔2〕直流电机简介直流电机原理直流电机里边固定有环状永磁体,电流通过转子上的线圈产生洛伦磁力,当转子上的线圈与磁场平行时,再继续转受到的磁场方向将改变,因此此时转子末端的电刷跟转换片交替接触,从而线圈上的电流方向也改变,产生的洛伦磁力方向不变,所以电机能保持一个方向转动。2.3、实验仿真处理及结果分析1,电路中用到的单片机和电机驱动芯片L298N都用到5V电源,而电机使用的是12V电压,所以我用7805做稳压芯片,如图1。输入端和输出端的电容起到去耦作用。图1直流电机控制采用高性能单片机AT89S52输出可调占空比的PWM方波。电机驱动芯片为L298N。直流电机驱动就是利用PWM脉宽控制L298N电流输出大小。图中单片机使用12MHZ晶振,P1.1产生PWM信号,P1.0和P1.2分别产生上下电位控制电机旋转方向。电机驱动芯片L298N其实就是一个全桥驱动电路。如图3所示。它接收的是PWM方波,输出为跟PWM方波占空比相同的外接电压方波。图3接线中容易出错的事是L298的15脚和1脚没有接地,这样导致电流不能流向地,电机不转。芯片的第1、5、6、7引脚控制一个桥,5、7接入上下电平控制电机旋转方向,6号引脚为使能端它接收单片机传来的PWM信号,它们控制的电机由2、3号引脚输出。10、11、12、15和13、14引脚控制另外的一个桥。图4为L298N的内部电路。电机正反转程序 if(fanzhuan==0) //反转 { delay(10); if(fanzhuan==0) { IN1=1;IN2=0;m=5;num1=0;num=5; while(!fanzhuan); } }if(zhengzhuan==0) //正转 { delay(10); if(zhengzhuan==0) { IN1=0;IN2=1;m=5;num1=1;num=5;2.4HC595逻辑功能一.

它和74HC164的功能类似,都是串入并出的IO接口,将串行的数据,转为并行的输出,这样可以节约MCU的IO口资源。主要应用在多路LED指示或多位数码管驱动方面。但与74HC164比,595主要还有以下更优越的功能:

1.支持3态输出,当第13脚为高电平时,595无输出;

2.具有数据锁存功能,这样不会影响移位时的瞬时输出;

3.具有数据输出功能,可以更方便的进行595级联二、595引脚描述:

1.第1脚:数据输出端QB

2.第2脚:数据输出端QC

3.第3脚:数据输出端QD

4.第4脚:数据输出端QE

5.第5脚:数据输出端QF

6.第6脚:数据输出端QG

7.第7脚:数据输出端QH

8.第8脚:电源GND

9.第9脚:串行数据输入端SQH,时钟下降沿数据移出

10.第10脚:复位引脚RESET

11.第11脚:数据移位时钟输入端SCK

12.第12脚:数据锁存信号输入端RCK

13.第13脚:数据输出使能端/OE,低电平有效

14.第14脚:串行数据输入端A,时钟上升沿数据移入

15.第15脚:数据输出端QA

16.第16脚:电源VDD三、74HC595工作原理简述:

74HC595是一款具有8位移位存放器和一个存储器,三态输出功能的驱动芯片。移位存放器和存储器分别具有独立的时钟信号。数据在SHCP的上升沿输入,在STCP的上升沿进入到存储存放器中去。如果两个时钟连在一起,那么移位存放器总是比存储存放器早一个脉冲。移位存放器有一个串行移位输入〔DS〕,和一个串行输出〔Q7’〕,和一个异步的低电平复位〔MR〕,存储存放器有一个并行8位的,具备三态的总线输出,当使能OE时〔为低电平〕,存储存放器的数据输出到总线。

四、74HC595实现LED静、动态显示根本原理静态显示

每位LED显示器段选线和74HC595的并行输出端相连,每一位可以独立显示(见图1)。在同一时间里,每一位显示的字符可以各不相同(每一位由一个74HC595的并行输出口控制段选码)。

N位LED显示要求N个74HC595芯片及N+3条I/O口线,占用资源较多,而且本钱较高。这对于多位LED显示很不利。

动态显示

在多位LED显示时,为了简化电路,降低本钱,节省系统资源,将所有的N位段选码并联在一起,由一片74HC595控制(见图2)。由于所有LED的段选码皆由一个74HC595并行输出口控制,因此,在每一瞬间,N位LED会显示相同的字符。想要每位显示不同的字符,就必须采用扫描的方法,即在每一瞬间只使用一位显示字符。在此瞬间,74HC595并行输出口输出相应字符段选码,而位选那么控制I/O口在该显示位送入选通电平,以保证该位显示相应字符。如此轮流,使每位分时显示该位应显示字符。由于74HC595具有锁存功能,而且串行输入段选码需要一定时间,因此,不需要延时,即可形成视觉暂留效果。

N位LED显示时,只需要一片74HC595即可完成,本钱最低。但是,此种方法的最大弱点就是当LED的位数大于12位时,出现闪烁现象,这是所有动态LED显示方式共同的弱点。4,本实验显示图HC595的子程序 voidwrit_595(ucharx){ uchardat,y;dat=x;for(y=0;y<8;y++){ CLK=0; if((dat&0x80)==0x80)DS=1;//串行数据输出elseDS=0;CLK=1;//移位输入时钟,上升沿输入 dat<<=1;}RCK=0;//并行输出时钟RCK=1;}四、实验仿真与程序1PROTEUS仿真图2.程序流程图开始开始初始化停止按键数码管显示“00〞判断是否有按键按下正转按键反转按键数码管显示“00〞调节按键并送数码管显示占空比调节按键并送数码管显示占空比否是结束3程序#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint ucharnum,highv,lowv,n,m,num1;sbitzhengzhuan=P1^0; //按键正转sbitfanzhuan=P1^1; //按键反转sbittingzhi=P1^2; //按键停止sbitjiasu=P1^3; //按键加速sbitjiansu=P1^4; //按键减速sbitIN1=P0^0;sbitIN2=P0^1; sbitENA=P0^2;sbitRCK=P2^4;sbitDS=P2^5;sbitCLK=P2^6;ucharcodetable1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//ucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; voidwrit_595(ucharx){ uchardat,y;dat=x;for(y=0;y<8;y++){ CLK=0; if((dat&0x80)==0x80)DS=1;//串行数据输出elseDS=0;CLK=1;//移位输入时钟,上升沿输入 dat<<=1;}RCK=0;//并行输出时钟RCK=1;}voiddelay_us(uintz){for(;z>0;z--)_nop_();}voiddelay(uinti){ ucharx,j; for(j=0;j<i;j++) for(x=0;x<=110;x++); }voiddjbs(uchara,ucharb) //PWM控制{ENA=1;delay(a);ENA=0;delay(b);}voidtiaosu() //电机调速{//ENA=1;switch(num){ case1: highv=1,lowv=9;break; case2: highv=2,lowv=8;break; case3: highv=3,lowv=7;break; case4: highv=4,lowv=6;break; case5: highv=5,lowv=5;break; case6: highv=6,lowv=4;break; case7: highv=7,lowv=3;break; case8: highv=8,lowv=2;break; case9:highv=9,lowv=1;break; }}voidxianshi(){}voidkeyscan() { if(zhengzhuan==0) //正转 { delay(10); if(zhengzhuan==0) { IN1=0;IN2=1;m=5;num1=1;num=5; switch(m) { case1: writ_595(0x3f), writ_595(0x06); break; case2: writ_595(0x3f), writ_595(0x5b);break; case3: writ_595(0x3f),writ_595(0x4f);break; case4: writ_595(0x3f),writ_595(0x66);break; case5: writ_595(0x3f),writ_595(0x6d);break; case6: writ_595(0x3f),writ_595(0x7d);break; case7: writ_595(0x3f),writ_595(0x07);break; case8: writ_595(0x3f),writ_595(0x7f);break; case9:writ_595(0x3f),writ_595(0x6f);break; } while(!zhengzhuan); } } if(fanzhuan==0) //反转 { delay(10); if(fanzhuan==0) { IN1=1;IN2=0;m=5;num1=0;num=5; while(!fanzhuan); } } if(jiasu==0) //加速 { delay(10); if(jiasu==0) {num++; m++; //if(num==10) //{num=0; //m=0; } switch(m) { case1: writ_595(0x3f), writ_595(0x06); break; case2: writ_595(0x3f), writ_595(0x5b);break; case3: writ_595(0x3f),writ_595(0x4f);break; case4: writ_595(0x3f),writ_595(0x66);break; case5: writ_595(0x3f),writ_595(0x6d);break; case6: writ_595(0x3f),writ_595(0x7d);break; case7: writ_595(0x3f),writ_595(0x07);break; case8: writ_595(0x3f),writ_595(0x7f);break; case9:writ_595(0x3f),writ_595(0x6f);break; } while(!jiasu); } } if(jiansu==0) //减速 {delay(10); if(jiansu==1) { if(num!=0) {num--; m--; } else {num=0; m=0 ;} while(!jiansu); switch(m) { case1: writ_595(0x3f), writ_595(0x06); break; case2: writ_595(0x3f), writ_595(0x5b);break; case3: writ_595(0x3f),writ_595(0x4f);break; case4: writ_595(0x3f),writ_595(0x66);break; case5: writ_595(0x3f),writ_595(0x6d);break; case6: writ_595(0x3f),writ_595(0x7d);break; case7: writ_595(0x3f),writ_595(0x07);break; case8: writ_595(0x3f),writ_595(0x7f);break; case9:writ_595(0x3f),writ_595(0x6f);break; } } } if(tingzhi==0) //停止 { delay(10); if(tingzhi==0) { IN1=1;IN2=1; writ_595(0x3f);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论