查看: 1285|回复: 0
打印 上一主题 下一主题

基于MSP430单片机的电机PWM调速原理演示程序

[复制链接]
跳转到指定楼层
沙发
发表于 2015-9-29 23:55:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于MSP430单片机的电机PWM调速原理演示程序
/*

   程序说明:利用定时器TA产生固定周期的方波,控制方波高电平时间即可控

             制平均输出功率。这种控制方法称为PWM调制。

             MSP430单片机的定时器TA可以在无需CPU干预的情况下输出2

             路PWM调制波形。用其中一路(TA1)通过三极管驱动电动机。只要

             写CCR1寄存器即可随时改变占空比,从而改变电机功率。这种控

             制方法功率损失很小(控制元件导通/截至都不耗电),效率高。


*/

//

//

//               MSP430FE425

//            -----------------

//           |              XIN|-

//           |                 |   32kHz

//           |             XOUT|-

//           |                 |

//           |         P1.2/TA1|----->三极管驱动--->小马达  

//           |         (CCR1)  |     _    _    _    _

//           |                 |   _| |__| |__| |__| |_

//           |                 |       40%~100% PWM

//


#include <MSP430X42X.h>


void Sys_Init()

{

  WDTCTL=WDTPW+WDTHOLD;  //关闭看门狗

  FLL_CTL0|=XCAP18PF;          //配置晶振负载电容

  P1DIR |= BIT2;                            // P1.2  output

  P1SEL |= BIT2;                            // P1.2  TA1 otions
  TACTL = TASSEL_1 + MC_1;                  // ACLK, up mode

  CCR0 = 500;                               // PWM Period

  CCTL1 = OUTMOD_7;                         // CCR1 reset/set

  CCR1 = 200;                               // CCR1 PWM duty cycle

}

void main( void )

{  int i;

   char SpeedMode=0;

   Sys_Init();

   while(1)

   {

     for(i=0;i<4000;i++);  //延迟

     if(SpeedMode==0)      //加速模式下

      {

       CCR1++;             //占空比不断提高

       if(CCR1>=500) SpeedMode=1; //到达100%后转为减速模式

      }
     if(SpeedMode==1)      //减速模式下

      {

       CCR1--;             //占空比不断降低

       if(CCR1<=200) SpeedMode=0; //到达40%后转为加速模式

     }     

   }

}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表