首页 > 编程知识 正文

直流电机电路原理图,直流电机应用

时间:2023-05-06 00:20:53 阅读:30533 作者:3573

一、直流电机工作原理1、直流电机正反向旋转

——通过高低电平反转来实现

2、电机调速采用PWM波实现

——PWM通过51单片机的定时器输出,实现占空比调整。

二.功能程序端口定义

#includereg51.hsbit PWM1=P2^0; //电机输入1sbit PWM2=P2^1; //电机输入2sbit tiaosu=P2^2; //速度按钮sbit stop=P2^3; //停止按钮sbit left=P2^4; //逆时针旋转sbit right=P2^5; //顺时针按下键变量定义

typedef unsigned int uint; typedef unsigned char uchar; uint t0=25000,t1=25000; //初始占空比为1/2 t0低电平,t1高电平uint a=25000; //设置计时器加载初始值uchar flag=1; //选择不同的装载初始值uchar dflag; //左右旋转标志位uchar sudu; //速度ms延迟函数

voidDelay(ucharz ) {uint x,y; for(x=z; x0; x-- ) for(y=110; y0; y----; {计时器和中断函数}

void time_init () {TMOD=0X01; //计时器0方式1th0=(65535-a )/256; TL0=(65535-a ) %6; //加载初始值ET0=1; //导通定时器中断使能EA=1; //接通总中断TR0=0; } void timer0(中断1 using0) if (标志) {flag=0; PWM1=PWM2=1; a=t0; th0=(65535-a )/256; TL0=(65535-a ) %6; //初始值重载}else{flag=1; if(dflag==0) {PWM1=0; PWM2=1; }else{PWM1=1; PWM2=0; }a=t1; th0=(65535-a )/256; TL0=(65535-a ) %6; //重新装入初始值}}键扫描函数

void keyscan () if ) stop==0) {TR0=0; PWM1=PWM2=1; //关闭计时器后,可以停止电机(if ) left==0) {TR0=1; dflag=1; (if ) right==0) {TR0=1; dflag=0; (if ) Tiaosu==0) (Delay ) ) 5; //消颤if(Tiaosu==0) ) while (tiao su==0) sudu; if(sudu==1) {t0=20000; t1=30000; //占空比3/5 ) if(sudu==2) {t0=15000; t1=35000; //占空比7/10 ) if(sudu==3) {t0=10000; t1=40000; //占空比4/5}if(sudu==4) {t0=5000; t1=45000; //占空比9/10 ) if(sudu==5) {sudu=0; } }主函数

void main () {time_init; //计时器初始化while(1) {keyscan ); //键扫描}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。