TB6612驱动电机

一、连线

PWMA---连接程序中的端口                                      VM------连接高电平

AIN2-----连接高电平(1)                                        VCC-----连接VCC

AIN1-----连接低电平(0)                                        GND-----接地

STBY----连接VCC                                                     A01-----连接电机1

BIN1---  连接低电平(0)                                         A02-----连接电机1

BIN2---- 连接高电平(1)                                         B2------连接电机2

PWMB---连接程序中的端口                                      B1------连接电机2

GND-----接地                                                           GND----接地

 

二、TB6612芯片引脚图

三、TB6612原理

  STBY口接单片机的IO口清零电机全部停止,置1通过AIN1,AIN2,BIN1,BIN2控制电机的正反转

VM(4.5~15 V)和VCC(2.7~5.5 V)

四、PWM简介

  脉冲宽度调制 (PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用
微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。
 
  
 

    假定定时器工作在向上计数PWM模式,且当CNT<CCRx时,输出为0,当CCRx>=CCRx时,输出为1.

    所以可以得到如上的IO逻辑示意图:当CNT值小于CCRx的时候,IO输出低电平(0),当CNT>=CCRx的时候,IO输出高电平(1),当CNT达到ARR值的时候,重新归零,然后重新向上计数,依次循环。

    

 

五、直流电机的驱动

  关于直流电机的驱动,代码如下:


void TIM1_PWM_Init(u16 arr,u16 psc)
{		 					 
	RCC->APB1ENR|=1<<2; 	//TIM4时钟使能    
	
	RCC->APB2ENR|=1<<3;
	GPIOB->CRL&=0X00FFFF00;	//PB0 1 6 7清除之前的设置
	GPIOB->CRL|=0X3B000033;	//复用功能输出 
	                                                                  
	GPIOB->CRH&=0XFFFFFFF0;	//PB8清除之前的设置
	GPIOB->CRH|=0X00000003;	//复用功能输出 
	
	TIM4->ARR=arr;			//设定计数器自动重装值 
	TIM4->PSC=psc;			//预分频器设置
	
	TIM4->CCMR1|=6<<4;  	//CH1 PWM1模式		
	TIM4->CCMR1|=1<<3; 		//CH1预装载使能	 
 	TIM4->CCER|=1<<0;   	//OC1 输出使能	   
	//TIM4->BDTR|=1<<15;   	//MOE 主输出使能	   
	TIM4->CR1=0x0080;   	//ARPE使能 
	TIM4->CR1|=0x01;    	//使能定时器1 	

//TIM1
	RCC->APB2ENR|=1<<11; 	//TIM1时钟使能
	
	RCC->APB2ENR|=1<<2;
	GPIOA->CRH&=0XFFFFFFF0;	//PA8清除之前的设置
	GPIOA->CRH|=0X0000000B;	//复用功能输出 
	
	TIM1->ARR=arr;			//设定计数器自动重装值 
	TIM1->PSC=psc;			//预分频器设置
  
	TIM1->CCMR1|=6<<4;  	//CH1 PWM1模式		 
	TIM1->CCMR1|=1<<3; 		//CH1预装载使能	 
 	TIM1->CCER|=1<<0;   	//OC1 输出使能	   
	TIM1->BDTR|=1<<15;   	//MOE 主输出使能	   

	TIM1->CR1=0x0080;   	//ARPE使能 
	TIM1->CR1|=0x01;    	//使能定时器1 		
}  

void Go_Straight(int left,int right)
{	 
	LEFT_PWM_VAL=left;   //250
	RIGHT_PWM_VAL=right;  //270
	
  GPIOB->ODR|=1<<0;      //PB0 1									  
  GPIOB->ODR&=~(1<<1);   //PB1 0
	  	
	GPIOB->ODR|=1<<7;      //PB7 1									  
  GPIOB->ODR&=~(1<<8); //PB8 0
	
}

void Stop(void)
{
		GPIOB->ODR&=0<<0;
		GPIOB->ODR&=0<<1;
		
		GPIOB->ODR&=0<<7;      //PB7 0										  
		GPIOB->ODR&=0<<8; //PB8 0

}


 

 

 

 

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值