资讯详情

L298N——驱动AB相编码器电机并测速

一、基础知识和原则

【STM32小案例 04 】STM32简单使用L298N电机驱动模块 控制直流电机的正反转

二、连线图

连线图

三、解决问题的办法

L298N——真正的玄学驱动板

四、程序源码

附主函数:

#include "sys.h" #include "delay.h" #include "usart.h" #include "led.h" #include "pwm.h" #include "timer.h" #include "stm32f4xx_rcc.h"  RCC_ClocksTypeDef get_rcc_clock;    ////获取系统时钟状态  int main(void) { 
           RCC_GetClocksFreq(&get_rcc_clock);   int encoder;  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);///设置系统中断优先级分组2  LED_Init();  delay_init(168);  //初始化延迟函数  uart_init(115200);///初始串口波特率为115200   TIM14_PWM_Init(500-1,84-1); //84M/84=1Mhz计数频率,重装载值500,所以PWM频率为 1M/500=2Khz.    encoder_tim3_init();      while(1) //实现比较值从0-300递增到300后从300-0递减  { 
           GPIO_SetBits(GPIOF,GPIO_Pin_0); //正转    GPIO_ResetBits(GPIOF,GPIO_Pin_1); 	
		TIM_SetCompare1(TIM14,0);	//修改比较值,修改占空比
		delay_ms(1000);
		encoder = read_encoder();
    printf("t:%d\r\n",encoder);
		
		TIM_SetCompare1(TIM14,400);	//修改比较值,修改占空比
		delay_ms(1000);
		encoder = read_encoder();
    printf("t:%d\r\n",encoder);

	  GPIO_ResetBits(GPIOF,GPIO_Pin_0); //停止
		GPIO_ResetBits(GPIOF,GPIO_Pin_1);
		delay_ms(1000);
		encoder = read_encoder();
    printf("t:%d\r\n",encoder);
		
	  GPIO_ResetBits(GPIOF,GPIO_Pin_0); //反转
		GPIO_SetBits(GPIOF,GPIO_Pin_1);
		
		TIM_SetCompare1(TIM14,0);	//修改比较值,修改占空比
		delay_ms(1000);
		encoder = read_encoder();
    printf("t:%d\r\n",encoder);
		
		TIM_SetCompare1(TIM14,400);	//修改比较值,修改占空比
		delay_ms(1000);
		encoder = read_encoder();
    printf("t:%d\r\n",encoder);
	}
}

标签: l型连接器连接

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台