做智能车时一点驱动的知识——BTS7970

作者: asdddsd
上传时间为: 2014-11-10 11:03 PM
2014-11-10
阅读:

当时的一些备注:

第一次审核不过,我觉得有这些知识的一看就懂啊。下面是BTS7970电机驱动程序,桥式驱动(不用解释吧,正转反转,停止都可以)。程序后面都有注释了,而且是汉语,应该能看懂的哈。下面简单说下原理:

PWM是反逻辑,因为在单片机与电机驱动间加了反向驱动隔离,保护单片机。所以占空比越小,方向后是越大,速度越快。

注意:PWM频率最大25KHZ,用在智能车上1KHZ就足够了。(就这么多,智能车上电机驱动模块程序!)

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
/************************************************/
/*锁相环倍频*/
/************************************************/
void pll_xs(void)
{
    SYNR=0x44;
    REFDV=0x81;//总线频率40M
        while(!CRGFLG_LOCK);
    while(CLKSEL_PLLSEL!=1)
        CLKSEL_PLLSEL=1;
}
/***********************************************/
/*PWM初始化!*/
/************************************************/
void PWM_int(void)
 {
	PWMPOL|=0xaa;//PWM Polarity开始输出高电平,1、3、5、7 positive.
	PWMCLK|=0xaa;//Clock Select, Sn,B:7632.A:0145
	PWMPRCLK=0x22;//CLOCKA和CLOCKB是4分频是10M
	PWMCTL=0xf0;
	PWMSCLA=5;//1M
	PWMSCLB=5;//1M
	PWMCAE=0x00;
	PWMDTY01=900;
	PWMPER01=1000;
	PWME=0xaa; //PWM Enable,1、3、5、7 enable.
}
/************************************************/
void main(void) {
  pll_xs();//倍频
  DDRB=0xff;
  PORTB|=0xff;
   PORTB&=0xfe;//PB0和PB1用来控制电机转向的
	EnableInterrupts;
	PWM_int();
  for(;;) {
           _FEED_COP(); /* feeds the dog */
          } /* loop forever */
  /* please make sure that you never leave main */
}
作者其它经验
全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示