当前位置:文档之家› 基于单片机对直流电机的控制

基于单片机对直流电机的控制

基于单片机对直流电机的控制第十五组姓名:吴代露20131325010张鹏飞20131325012金静丽20131325014周敏20131325015胡会华20131325017顾蓉20131325018专业:2013级信息工程(系统工程方向)指导老师:周旺平2014.12.22基于单片机对直流电机的控制内容摘要电动机作为最主要的动力源,在生产和生活中占有重要地位。

电动机的调速控制过去多用模拟法,随着计算机的产生和发展以及新型电力电子功率器件的不断涌现,电动机的控制也发生了深刻的变化。

关键字:电动机飞思卡尔 PWM控制一、引言(一)直流电机的定义直流电机(direct current machine):是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。

它是能实现直流电能和机械能互相转换的电机。

当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。

(二)直流电机的基本结构由直流电动机和发电机工作原理示意图可以看到,直流电机的结构应由定子和转子两大部分组成。

直流电机运行时静止不动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极换向极、端盖、轴承和电刷装置等组成。

运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽,所以通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器和风扇等组成。

(三)直流电机工作原理直流电机里边固定有环状永磁体,电流通过转子上的线圈产生安培力,当转子上的线圈与磁场平行时,再继续转受到的磁场方向将改变,因此此时转子末端的电刷跟转换片交替接触,从而线圈上的电流方向也改变,产生的洛伦兹力方向不变,所以电机能保持一个方向转动。

直流发电机的工作原理就是把电枢线圈中感应的交变电动势,靠换向器配合电刷的换向作用,使之从电刷端引出时变为直流电动势的原理。

感应电动势的方向按右手定则确定(磁感线指向手心,大拇指指向导体运动方向,其他四指的指向就是导体中感应电动势的方向)。

导体受力的方向用左手定则确定。

这一对电磁力形成了作用于电枢一个力矩,这个力矩在旋转电机里称为电磁转矩,转矩的方向是逆时针方向,企图使电枢逆时针方向转动。

如果此电磁转矩能够克服电枢上的阻转矩(例如由摩擦引起的阻转矩以及其它负载转矩),电枢就能按逆时针方向旋转起来。

(四)直流电机的分类直流电动机按结构及工作原理可划分:无刷直流电动机和有刷直流电动机。

(1)无刷直流电动机:无刷直流电动机是将普通直流电动机的定子与转子进行了互换。

其转子为永久磁铁产生气隙磁通:定子为电枢,由多相绕组组成。

在结构上,它与永磁同步电动机类似。

无刷直流电动机定子的结构与普通的同步电动机或感应电动机相同.在铁芯中嵌入多相绕组(三相、四相、五相不等).绕组可接成星形或三角形,并分别与逆变器的各功率管相连,以便进行合理换相。

由于电动机本体为永磁电机,所以习惯上把无刷直流电动机也叫做永磁无刷直流电动机。

(2)有刷直流电动机:又可分为永磁直流电动机和电磁直流电动机。

永磁直流电动机划分:稀土永磁直流电动机、铁氧体永磁直流电动机和铝镍钴永磁直流电动机。

稀土永磁直流电动机:体积小且性能更好,但价格昂贵,主要用于航天、计算机、井下仪器等;铁氧体永磁直流电动机:由铁氧体材料制成的磁极体,廉价,且性能良好,广泛用于家用电器、汽车、玩具、电动工具等领域;铝镍钴永磁直流电动机:需要消耗大量的贵重金属、价格较高,但对高温的适应性好,用于环境温度较高或对电动机的温度稳定性要求较高的场合。

电磁直流电动机划分:串励直流电动机、并励直流电动机、他励直流电动机和复励直流电动机。

(1)串励直流电动机:电流串联,分流,励磁绕组是和电枢串联的,直流串励电动机通常用较粗的导线绕成,他的匝数较少。

(2)并励直流电动机:并励直流电机的励磁绕组与电枢绕组相并联。

(3)他励直流电动机:励磁绕组与电枢没有电的联系,励磁电路是由另外流电源供给的。

因此励磁电流不受电枢端电压或电枢电流的影响。

(4)复励直流电动机:复励直流电机有并励和串励两个励磁绕组,若串励绕组产生的磁通势与并励绕组产生的磁通势方向相同称为积复励。

若两个磁通势方向相反,则称为差复励。

二、基础知识(一)PWM寄存器相关基础脉冲宽度调制(Pulse Width Modulation 简称PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。

这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟实验进行控制的一种非常有效的技术。

PWM控制技术以其控制简单,灵活和动态响应好的优点而成为电子电力技术最广泛应用的控制方式,也是人们研究的热点。

由于当今科学技术的发展已经没有了学科之间的界限,结合现代控制理论思想或实现无谐振波开关技术将会成为PWM控制技术发展的主要方向之一。

PWM就是脉冲脉宽调制,输出的波形就是一些不同占空比的方波,波形周期和占空比你都可以设定。

占空比(Duty Ratio)在一串理想的脉冲周期序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。

看下图,T是周期,高电平时间t除以周期T就叫占空比。

(1)PWM使能寄存器PWME。

PWME[7:0]=1;相应的PWM模块使能,否则禁止。

(2)PWM极性寄存器PWMPOL。

PPOL[7:0]=1,PWM通道输出在开始的时候为高电平,为0说明开始时为低电平。

(3)PWM时钟选择寄存器PWMCLK。

PCLK*=1,使用时钟SA或SB作为时钟源,PCLK*=0,使用时钟A或B作为时钟源。

(4)PWM预分频时钟选择寄存器PWMPRCLK:(5)SA寄存器PWMSCLA,用来设置SA时钟源频率SA的时钟频率 fSA=fA/(2*PWMSCLA),如果PWMSCLA=0x00,fSA=fA/512.(6)PWM中间对齐使能寄存器PWMCAE:CAE[7:0]=1,采用中间对齐模式;CAE[7:0]=0,采用左对齐模式。

(7)PWM通道周期寄存器(PWMPERX)具体按如下公式计算,左对齐时:PWM周期=通道时钟周期*PWMPERX;中间对齐时:PWM周期=通道时钟周期*2*PWMPERX;(8)PWM占空比寄存器PWMDTYX:PWM的占空比按如下公式计算:PWM占空比计算和极性寄存器PWMPOL有关,当PPOLx=0时,占空比=(周期寄存器值减去占空比寄存器值)除以周期寄存器值;当PPOLx=1时,占空比=占空比寄存器值除以周期寄存器值。

(二) L298NL298N是ST公司生产的一种高电压、大电流电机驱动芯片。

该芯片采用15脚封装。

主要特点是:工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。

内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。

使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。

L298N 是一种双H桥电机驱动芯片,其中每个H桥可以提供2A的电流,功率部分的供电电压范围是2.5-48v,逻辑部分5v供电,接受5vTTL电平。

一般情况下,功率部分的电压应大于6V否则芯片可能不能正常工作。

管脚图如下:应用框图如下:L298N驱动特点:1)具有信号指示2)转速可调3)抗干扰能力强4)具有过电压和过电流保护5)可单独控制两台直流电机6)可单独控制一台步进电机7)PWM脉冲平滑调速8)可实现正反转9)采用光电隔离三系统设计(一)系统设计框图(二)软件设计流程图一般按键在按下的时候有抖动的问题,即键的簧片在按下时会有轻微的弹跳,需经过一个短暂的时间才会可靠地接触。

若在簧片抖动时进行扫描就可能得出不正确的结果。

因此,在程序中要考虑防抖动的问题。

程序#include <hidef.h> /*与普通的宏定义*/#include "derivative.h" /*导数定义*/int read_porta,key,cntl=0;int encoder_cnt;/*************************************************************//* 初始化锁相环*//*************************************************************/void PLL_32M(void) //总线时钟= 32MHz,PLL时钟= D/A{CLKSEL &= 0x7f; //集oscclk作为系统时钟PLLCTL &= 0x8F; //禁用PLL电路CRGINT &= 0xDF;SYNR = 0x43;REFDV = 0x81; //锁相环频率= 2×oscclk×(同步读+ 1)/(refdv + 1)=D/A PLLCTL = PLLCTL | 0x70; //使锁相环电路asm NOP;asm NOP; //汇编指令nop,空操作,其执行时间是一个时钟周期while(!(CRGFLG&0x08)); //锁相环频率锁定CLKSEL |= 0x80; //设置锁相环频率作为系统时钟}void gpio_inits(void) //通用输入输出接口{DDRA=0x00; //A端口的方向寄存器}/*************************************************************//* PWM初始化*//*************************************************************/void PWM_inits(void){PWME_PWME0=0; // PWM使能关闭PWMPRCLK=0x05; // 预分频时钟寄存器PWMCLK_PCLK0=0; //时钟选择寄存器PWMSCLA=0x7D; //SA寄存器PWMPOL_PPOL0=1; // 极性设置——开始输出高电平PWMCAE_CAE0=0; //对齐方式——左对齐PWMCTL=0x00; // 控制寄存器设置------------无级联PWMDTY0=0; // 占空比PWMPER0=0x64; // 周期100PWMCNT0=0x00; //延时计数PWME_PWME0=1; // Enable PWM 使能}void delay(unsigned int i) //演示函数未测试具体时间仅用来测试系统是否运行{unsigned int k,j;for(j=0;j<i;j++){for(k=0;k<125;k++){;}}}void main(void){PLL_inits();gpio_inits();PWM_inits();EnableInterrupts;for(;;){_FEED_COP(); // feeds the dog read_porta=PORTA;if(read_porta&0x01){delay(5); //延迟消抖if(read_porta&0x01){key=1;}}if(read_porta&0x02){delay(5);if(read_porta&0x02){key=2;}}if(read_porta&0x04){delay(5);if(read_porta&0x04){key=3;}}if(read_porta&0x08){delay(5);if(read_porta&0x08){key=4;}}switch(key){case 1:PWMDTY0=10;break; //开始转动case 2:cntl=cntl+1;if(cntl>99) cntl=99;PWMDTY0=cntl;break; //加速case 3:cntl=cntl-1;if(cntl<0) cntl=0;PWMDTY0=cntl;break; //减速case 4:PWMDTY0=0;break; //停止转动}}}。

相关主题