电机控制方案
直播中

小镇故事多

12年用户 439经验值
擅长:模拟技术
私信 关注
[问答]

直流电作原机的工作原理及功能程序是什么?

直流电机的工作原理是什么?
直流电机的功能程序有哪些?

回帖(1)

周菊

2021-6-29 11:23:01
  一、直流电机工作原理
  1、直流电机正反转
  ——通过高低电平反转实现
  2、电机调速通过PWM波实现
  ——PWM通过51单片机定时器输出,实现占空比调整。
  二、功能程序
  端口定义
  #include《reg51.h》***it PWM1=P2^0; //电机输入1***it PWM2=P2^1; //电机输入2***it tiaosu=P2^2; //调速按键***it stop=P2^3; //停止按键***it left=P2^4; //逆时针按键***it 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延时函数
  void delay(uchar z){ uint x,y; for(x=z;x》0;x--) for(y=110;y》0;y--);} 定时器和中断函数
  void time_init(){ TMOD=0X01; //定时器0 方式1 TH0=(65535-a)/256; TL0=(65535-a)%256; //装载初值 ET0=1; //开启定时器中断使能 EA=1; //开启总中断 TR0=0;}void timer0()interrupt 1 using 0{ if(flag) { flag=0; PWM1=PWM2=1; a=t0; TH0=(65535-a)/256; TL0=(65535-a)%256; //重新装载初值 } else { flag=1; if(dflag==0) { PWM1=0;PWM2=1;; } else { PWM1=1;PWM2=0; } a=t1; TH0=(65535-a)/256; TL0=(65535-a)%256; //重新装载初值 }} 按键扫描函数
  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(tiaosu==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(); //按键扫描 }}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分