资源描述
*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单片机驱动电动机,单片机驱动电动机,共发射极三极管开关电路,电动机驱动原理,电动机驱动电路及程序设计,步进电机驱动原理,步进电机驱动电路及程序设计,NPN,共发射极电路,直流耦合,不需要偏置,R,2,保证没有输入时基极接地,限制输入电流,NPN,:,一、从共发射极电路到开关电路的演变,PNP,:,PNP,共发射极电路,直流耦合,不需要偏置,R,1,保证没有输入时基极接高电平,限制输入电流,采用发射极开路的开关三极管电路,作电流驱动:,负载,负载,NPN,PNP,二、电动机驱动原理,电动机是电流驱动的元件,需要大电流通过;,电动机的电气特性相当于线圈,因此电动机内阻很小。,因为电动机的电气特性相当于线圈,因此可以向电动机输入脉冲信号,相当于向电动机输入等于脉冲信号平均值的直流信号。,电动机驱动电路及程序设计,驱动电动机单向转动:,驱动电动机双向转动:,A,C,B,D,A B C D,作用,0 1 0 1,正向旋转,1 0 1 0,反向旋转,1 1 0 0,刹车,二极管可以防止方向电动势损坏三极管。加上,74LS06,反向缓冲器,可以提高,IO,口对电动机的驱动能力。,A,B,在这个电路图中,当,A=1,、,B=0,,电动机正向转动;当,A=0,、,B=1,,电动机逆向转动,当,A=0,、,B=0,,电动机停转。,#include,#define,uchar,unsigned char,#define,uint,unsigned,int,sbit,MA=P20;,sbit,MB=P21;,sbit,ka=P10;,sbit,kb=P11;,sbit,kc,=P12;,bit output,Turn;,uint,WIDTH,HPWM,PWM,Timerka,Timerkb,Timerkc,;,程序设计:,/,方向控制按钮,/,加速按钮,/,减速按钮,/WIDTH,为脉冲周期,,HPWM,为高电平长度,,PWM,为脉冲计时,/,控制电机,A,端,/,控制电机,B,端,/output,为脉冲输出,,Turn,为改变方向标志位,/,Timerka,Timerkb,Timerkc,为,按钮,ka,kb,kc,的计时器,void,PWM_init,(),TMOD=0 x21;,EA=1;,ET0=1;,TR0=1;,TH0=-(1000/256);,TL0=-(1000%256);,CLK=1;,TimerCLK,=20;,/,使用工作在模式,1,的,16,位定时器,0,/,允许中断,允许定时器,0,中断,启动定时器,0,/,定时器,0,的时长为,1ms,/,定义脉冲电平和脉宽的初值,输出周期脉冲信号初始化程序:,void,PWM_init,(),TMOD=0 x22;,EA=1;,ET0=1;,TR0=1;,TH0=256-50;,TL0=256-50;,WIDTH=1000;,PWM=WIDTH;,HPWM=500;,/,定时器,0,为,8,位自动填充的定时器,/,定时器,0,定时值为,50us,/,定时器,0,定时值为,50us,输出周期脉冲信号初始化程序:,/,高电平的初值,void,keyscan,(),ka=1;,if(ka,=0),Timerka,+;,if(Timerka,=200),Timerka,=0;,Turn=!Turn;,/,当按键按下时,ka,为,0,/,延时消抖,每,1msTimeKa,加,1,/,当,TimeKa,为,200,时说明已经经过,10ms,/,把时钟,Timerka,归零,同时改变电动机转变方向,键盘扫描程序:,kb=1;,if(kb,=0),Timerkb,+;,if(Timerkb,=200),Timerkb,=0;,if(HPWM,=1000),HPWM=1000;,else,HPWM=HPWM+50;,/,当按键按下时,kb,为,0,/,延时消抖,每,1msTimekb,加,1,/,当,Timekb,为,200,时说明已经经过,10ms,/,把时钟,Timerkb,归零,高电平时长增加,kc,=1;,if(kc,=0),Timerkc,+;,if(Timerkc,=500),Timerkc,=0;,if(HPWM,=0),HPWM=0;,else,HPWM=HPWM-50;,/,当按键按下时,kc,为,0,/,延时消抖,每,1msTimekc,加,1,/,当,Timekc,为,200,时说明已经经过,10ms,/,把时钟,Timerkc,归零,高电平时长减少,main(),PWM_init,();,while(1),if(Turn,),MA=output;,MB=0;,else,MB=output;,MA=0;,/,对脉冲信号进行初始化,/,判断标志位,Turn,/,如果,Turn,为,1,则把脉冲信号送入,MA,端,,MB,为低电平;,/,如果,Turn,为,0,则把脉冲信号送入,MB,端,,MA,为低电平;,A,B,C,I,A,I,B,I,C,定子内圆周,均匀分布着六个,磁极,磁极上有,励磁绕组,每两,个相对的绕组组,成一相。采用,Y,连接,转子有四个齿。,定子,转子,三相步进电机的组成,三、步进电机的驱动,步进电机工作原理:,由于磁力线总是要通过磁阻最小的路径闭合,因此会在磁力线扭曲时产生切向力,而形成磁阻转矩,使转子转动。,B,C,I,A,I,B,I,C,1.,三相单三拍,C,A,B,B,C,A,3,4,1,2,A,相绕组通电,,B,、,C,相,不通电。气隙产生以,A-A,为轴线的磁场,而磁力线总是力图从磁阻最小的路径通过,故电动机转子受到一个反应转矩,在此转矩的作用下,转子必然转到左图所示位置:,1,、,3,齿与,A,、,A,极对齐。,“,三相,”,指三相步进电机;,“,单,”,指每次只能一相绕组通电;,“,三拍,”,指通电三次完成一个通电循环。,C,A,B,B,C,A,3,4,1,2,同理,,B,相通电时,转子会转过,30,角,,2,、,4,齿和,B,、,B,磁极轴线对齐;当,C,相通电时,转子,再转过,30,角,,1,、,3,齿和,C,、,C,磁极轴线对齐。,1,C,3,4,2,C,A,B,B,A,这种工作方式下,三个绕组依次通电一次为一个循环周期,一个循环周期包括三个工作脉冲,所以称为三相单三拍工作方式。,按,A,B C A,的顺序给三相绕组轮流通电,转子便一步一步转动起来。每一拍转过,30,(,步距角,),,每个通电循环周期,(,3,拍,),磁场在空间旋转了,360,而转子,转过,90,(,一个齿距角,),。,2.,三相六拍,按,A,AB B BC C,CA,的顺序给三相绕组轮流通电。,这种方式可以获得更精确的控制特性。,C,A,B,B,C,A,3,4,1,2,C,A,B,B,C,A,3,4,1,2,A,相通电,,转子,1,、,3,齿与,A,、,A,对齐。,A,、,B,相同时通电,,A,、,A,磁极拉住,1,、,3,齿,,B,、,B,磁极拉住,2,、,4,齿,转子转,过,15,,,到达左图所示位置。,C,A,B,B,C,A,3,4,1,2,B,相通电,,转子,2,、,4,齿与,B,、,B,对齐,又转,过,15,。,3,4,1,2,C,A,B,B,C,A,B,、,C,相同时通电,,C,、,C,磁极拉住,1,、,3,齿,,B,、,B,磁极拉住,2,、,4,齿,转子再转,过,15,。,三相反应式步进电动机的一个通电循环周,期如下:,A,AB B BC C,CA,,,每个循,环周期分为六拍。每拍转子转过,15,(步距角),,一,个通电循环周期,(,6,拍,),转子转过,90,(,齿距角,),。,与单三拍相比,六拍驱动方式的步进角更,小,更适用于需要精确定位的控制系统中。,3.,三相双三拍,按,AB,BC,CA,的顺序给三相绕组轮流通,电。每拍有两相绕组同时通电,。,AB,通电,C,A,B,B,C,A,3,4,1,2,BC,通电,3,4,1,2,C,A,B,B,C,A,CA,通电,C,A,B,B,C,A,3,4,1,2,与单三拍方式相似,双三拍驱动时每个通电,循,环周期也分为三拍。每拍转子转过,30,(,步距角,),,,一,个通电循环周期,(,3,拍,),转子转过,90,(,齿距角,),。,从以上对步进电机三种驱动方式的分析可,得步距角计算公式:,步距角,Z,r,转子齿数,m,每个通电循环周期的拍数,步进电机的驱动,四线两相电机:,L298,电机驱动芯片,L298,是一款单片集成的高电压、高电流、双路全桥式电机驱动,,设计用于连接标准,TTL,逻辑电平,驱动电感负载(诸如继电器、线圈、,DC,和步进电机)。,L298,提供两个使能输入端,可以在不依赖于输入信号的情况下,使能或禁用,L298,器件。,管脚,管脚号,作用,ENA,6,芯片使能端,ENB,11,芯片使能端,GND,8,接地,VCC,9,数字电源,VS,4,驱动电源,管脚,管脚号,作用,IN1,5,OUT1,输出控制,3,7,OUT2,输出控制,IN3,10,OUT3,输出控制,IN4,12,OUT4,输出控制,OUT1,2,电机驱动端,OUT2,3,电机驱动端,OUT3,13,电机驱动端,OUT4,14,电机驱动端,SENSEA,1,感应电流输入,SENSEB,15,感应电流输入,程序设计,#include,#define,uchar,unsigned char,#define,uint,unsigned,int,bit turn;,uchar,phase;,/,角度转换标志,/,角度转变序号,void main(),IT0=1;,EX0=1;,EA=1;,P2=1;,/,外部中断下降沿有效,/,外部中断,0,有效,/,使能全局中断,/,使能全局中断,while(1),if(turn,=1),turn=0;,if(+phase,=8),phase=0;,switch(phase,),case 0:P2=0 x01;break;,case 1:P2=0 x03;break;,case 2:P2=0 x02;break;,case 3:P2=0 x06;break;,case 4:P2=0 x04;break;,case 5:P2=0 x0c;break;,case 6:P2=0 x08;break;,case 7:P2=0 x09;break;,default:break;,/,若,turn=1,改变电机转动角度,并使,turn=0,/,根据,phase,的值改变电机角度,/,电机转到,/,电机转到,/,电机转到,/,电机转到,/,电机转到,/,电机转到,/,电机转到,/,电机转到,void int0(void)interrupt 0,turn=1;,key=key;,/,外部中断,0,处理程序,/,设置转动标志,turn,
展开阅读全文