pwm控制电机正反转,PWM直流电机调速程序

pwm控制电机正反转,PWM直流电机调速程序,第1张

  PWM调速开关控制方式控制电机,广泛应用于玩具、小车、机器人等项目,通过串口预设正反转速度,可以灵活控制小车等电机正反转速度,用两个限位开关控制电机的正反转限位,控制方式简便、安全可靠,方便维护。

  开关控制方式适合于电位器/模拟信号控制方式下PWM调速方式和预设正反转速度方式(且触发方式配置为电平)。如果无需调速,正反转速度均为全速,可配置为电位器/模拟信号PWM调速方式;如果需要指定正反转速度(可为占空比、转矩或转速),应配置为预设正反转速度方式且触发方式配置为电平方式。

  如何配置调速方式表1,如何预设速度及配置触发方式见MODBUS-RTU(国标GB/T19582-2008)通讯协议。

  /*******************************************************************/

  /* 程序名:PWM直流电机调速 */

  /* 晶振:11.00592 MHz CPU型号:STC89C52 */

  /* 功能:直流电机的PWM波控制,可以通过按键控制正反转 */

  /*****************************************************************/ #include《reg52.h》

  #define uint unsigned int #define uchar unsigned char

  uchar TIme,count=50,flag=1;//低电平的占空比

  sbit PWM1=P2^0;//PWM 通道 1,反转脉冲 sbit PWM2=P2^1;//PWM 通道 2,正转脉冲 sbit key_turn=P3^7; //电机换向

  /************函数声明**************/ void delayxms(uint z); void Motor_turn(void); void TImer0_init(void);

  /*********主函数********************/ void main(void)

  {

  TImer0_init(); while(1)

  {

  Motor_turn();

  }

  }

  /****************延时处理**********************/ void delayxms(uint z)//延时xms程序

  {

  uint x,y; for(y=z;x》0;x--) for(y=110;y》0;y--);

  }

  /************电机正反向控制**************/ void Motor_turn(void)

  {

  f(key_turn==0)

  {

  delayxms(2);//此处时间不能太长,否者会的中断产生冲突 if(key_turn==0)

  {

  flag=~flag;

  }

  while(!key_turn);

  }

  }

  /***********定时器0初始化***********/ void TImer0_init(void)

  {

  TMOD=0x01; //定时器0工作于方式1 TH0=(65536-10)/256; TL0=(65536-10)%256; TR0=1; ET0=1; EA=1;

  }

  /**************定时0中断处理******************/ void timer0_int(void) interrupt 1

  {

  TR0=0;//设置定时器初值期间,关闭定时器 TH0=(65536-10)/256; TL0=(65536-10)%256; TR0=1; if(flag==1)//电机正转

  {

  PWM1=0; time++; if(time《count)

  {

  PWM2=1;

  }

  else PWM2=0;

  if(time》=100)

  {

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2599263.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-09
下一篇 2022-08-09

发表评论

登录后才能评论

评论列表(0条)

保存