
单片机控制电机.ppt
41页单片机驱动单片机驱动电动机电动机单片机驱动电动机n共发射极三极管开关电路n电动机驱动原理n电动机驱动电路及程序设计n步进电机驱动原理n步进电机驱动电路及程序设计NPN共发射极电路直流耦合不需要偏置, R2保证没有输入时基极接地限制输入电流NPN: 一、从共发射极电路到开关电路的演变PNP: PNP共发射极电路直流耦合不需要偏置, R1保证没有输入时基极接高电平限制输入电流采用发射极开路的开关三极管电路,作电流驱动:负载负载NPNPNP二、电动机驱动原理电动机是电流驱动的元件,需要大电流通过;电动机的电气特性相当于线圈,因此电动机内阻很小因为电动机的电气特性相当于线圈,因此可以向电动机输入脉冲信号,相当于向电动机输入等于脉冲信号平均值的直流信号n电动机驱动电路及程序设计驱动电动机单向转动:驱动电动机双向转动:ACBDA B C D作用0 1 0 1正向旋转1 0 1 0反向旋转1 1 0 0刹车二极管可以防止方向电动势损坏三极管加上74LS06反向缓冲器,可以提高IO口对电动机的驱动能力AB在这个电路图中,当A=1、B=0,电动机正向转动;当A=0、B=1,电动机逆向转动,当A=0、B=0,电动机停转。
include #define uchar unsigned char#define uint unsigned intsbit 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为低电平;ABCIAIBIC 定子内圆周均匀分布着六个磁极,磁极上有励磁绕组,每两个相对的绕组组成一相。
采用Y连接,转子有四个齿定子转子 三相步进电机的组成三、步进电机的驱动 步进电机工作原理: 由于磁力线总是要通过磁阻最小的路径闭合,因此会在磁力线扭曲时产生切向力,而形成磁阻转矩,使转子转动BCIAIBIC1.1.三相单三拍三相单三拍CABBCA3412 A相绕组通电,B、C相不通电气隙产生以A-A为轴线的磁场,而磁力线总是力图从磁阻最小的路径通过,故电动机转子受到一个反应转矩,在此转矩的作用下,转子必然转到左图所示位置:1、3齿与A、A极对齐 “三相三相” ”指三相步进电机;指三相步进电机;“ “单单” ”指每次只能一相绕组指每次只能一相绕组通电;通电;“ “三拍三拍” ”指通电三次完成一个通电循环指通电三次完成一个通电循环CABBCA3412 同理,B相通电时,转子会转过30角,2、4齿和B、B 磁极轴线对齐;当C相通电时,转子再转过30角,1、3齿和C、C磁极轴线对齐1C342CABBA 这种工作方式下,三个绕组依次通电一次为一个循环周期,一个循环周期包括三个工作脉冲,所以称为三相单三拍工作方式 按AB C A 的顺序给三相绕组轮流通电,转子便一步一步转动起来每一拍转过30(步距角),每个通电循环周期(3拍)磁场在空间旋转了360而转子转过90(一个齿距角)。
2. 2. 三相六拍三相六拍 按AAB B BC C CA的顺序给三相绕组轮流通电这种方式可以获得更精确的控制特性CABBCA3412CABBCA3412 A相通电,转子1、3齿与A、A 对齐 A、B相同时通电,A、A 磁极拉住1、3齿,B、B 磁极拉住2、4齿,转子转过15,到达左图所示位置CABBCA3412 B 相通电,转子2、4齿与B、B 对齐,又转过153412CABBCA B、C相同时通电,C 、C 磁极拉住1、3齿,B、B 磁极拉住2、4齿,转子再转过15 三相反应式步进电动机的一个通电循环周期如下:AAB B BC C CA,每个循环周期分为六拍每拍转子转过15(步距角),一个通电循环周期(6拍)转子转过90 (齿距角) 与单三拍相比,六拍驱动方式的步进角更小,更适用于需要精确定位的控制系统中3. 3. 三相双三拍三相双三拍 按AB BC CA的顺序给三相绕组轮流通电每拍有两相绕组同时通电AB通电CABBCA3412BC通电3412CABBCACA通电CABBCA3412 与单三拍方式相似,双三拍驱动时每个通电循环周期也分为三拍每拍转子转过30 (步距角),一个通电循环周期(3拍)转子转过90(齿距角)。
从以上对步进电机三种驱动方式的分析可得步距角计算公式: 步距角Zr 转子齿数m 每个通电循环周期的拍数n步进电机的驱动四线两相电机:nL298电机驱动芯片L298是一款单片集成的高电压、高电流、双路全桥式电机驱动,设计用于连接标准TTL逻辑电平,驱动电感负载(诸如继电器、线圈、DC和步进电机)L298提供两个使能输入端,可以在不依赖于输入信号的情况下,使能或禁用L298器件 管脚管脚号作用ENA6芯片使能端ENB11芯片使能端GND8接地VCC9数字电源VS4驱动电源管脚管脚号 作用IN15OUT1输出控制37OUT2输出控制IN310OUT3输出控制IN412OUT4输出控制OUT12电机驱动端OUT23电机驱动端OUT313电机驱动端OUT414电机驱动端SENSEA1感应电流输入SENSEB15感应电流输入n程序设计#include#define uchar unsigned char#define uint unsigned intbit 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。












