如何做网站接口,鲜花网站建设企划书,ckeditor wordpress 无法预览文章,在阿里云做视频网站需要什么条件目录
一、介绍
二、模块原理
1.原理图
2.电机驱动原理
三、程序设计
main.c文件
Motor.h文件
Motor.c文件
四、实验效果
五、资料获取
项目分享 一、介绍 TB6612FNG 是东芝半导体公司生产的一款直流电机驱动器件#xff0c;它具有大电流 MOSFET-H 桥结构#xff…目录
一、介绍
二、模块原理
1.原理图
2.电机驱动原理
三、程序设计
main.c文件
Motor.h文件
Motor.c文件
四、实验效果
五、资料获取
项目分享 一、介绍 TB6612FNG 是东芝半导体公司生产的一款直流电机驱动器件它具有大电流 MOSFET-H 桥结构双通道电路输出可同时驱动 2 个电机。它具有很高的集成度同时能提供足够的输出能力运行性能和能耗方面也具有优势因此在集成化、小型化的电机控制系统中它可以作为理想的电机驱动器件。 以下是TB6612电机驱动模块的参数 型号 TB6612FNG 驱动电压 VM输入(4.5-10V) 逻辑电平 VCC输入(2.7-5.5V) 工作电流 1.2A 峰值电流 3.2A
哔哩哔哩视频链接 TB6612电机驱动模块STM32 资料分享见文末
二、模块原理
1.原理图 2.电机驱动原理 三、程序设计
使用STM32F103C8T6通过TB6612控制电机完成开关、正反转转和调速的操作。 AIN1 PA0 AIN2 PA1 PWMA PA2 STBY 5V OLED_SCL PB11 OLED_SDA PB10
main.c文件
#include stm32f10x.h
#include led.h
#include usart.h
#include delay.h
#include oled.h
#include Motor.h
#include key.h/*****************辰哥单片机设计******************STM32* 项目 : TB6612FNG电机驱动实验 * 版本 : V1.0* 日期 : 2024.9.26* MCU : STM32F103C8T6* 接口 : 参看Motor.h * BILIBILI : 辰哥单片机设计* CSDN : 辰哥单片机设计* 作者 : 辰哥 **********************BEGIN***********************/int key 0;
int key_state 0;int main(void)
{ SystemInit();//配置系统时钟为72M delay_init(72);LED_Init();LED_On();MOTOR_Init();USART1_Config();//串口初始化Key_Init();OLED_Init();printf(Start \n);delay_ms(1000);OLED_Clear();//显示“电机转速:”OLED_ShowChinese(0,0,0,16,1);OLED_ShowChinese(16,0,1,16,1);OLED_ShowChinese(32,0,2,16,1);OLED_ShowChinese(48,0,3,16,1);OLED_ShowChar(64,0,:,16,1);while (1){key Key_GetData();if(key)key_state;if(key_state%41){Motor_SetSpeed(60);OLED_ShowNum(56,24,1,1,16,1); //1}if(key_state%42){Motor_SetSpeed(80);OLED_ShowNum(56,24,2,1,16,1); //2}if(key_state%43){Motor_SetSpeed(100);OLED_ShowNum(56,24,3,1,16,1); //3}if(key_state%40){Motor_SetSpeed(0);OLED_ShowNum(56,24,0,1,16,1); //0}}
}
Motor.h文件
#ifndef __MOTOR_H
#define __MOTOR_H
#include stm32f10x.h
#include delay.h
#include sys.h/*****************辰哥单片机设计******************STM32* 文件 : TB6612FNG电机驱动h文件 * 版本 : V1.0* 日期 : 2024.9.26* MCU : STM32F103C8T6* 接口 : 见代码 * BILIBILI : 辰哥单片机设计* CSDN : 辰哥单片机设计* 作者 : 辰哥**********************BEGIN***********************//***************根据自己需求更改****************/
// TB6612FNG电机驱动模块 GPIO宏定义#define MOTOR_CLK RCC_APB2Periph_GPIOA#define MOTOR_AIN1_GPIO_PIN GPIO_Pin_0
#define MOTOR_AIN2_GPIO_PIN GPIO_Pin_1
#define MOTOR_AIN1_GPIO_PORT GPIOA
#define MOTOR_AIN2_GPIO_PORT GPIOA#define MOTOR_PWMA_GPIO_PIN GPIO_Pin_2
#define MOTOR_PWMA_GPIO_PORT GPIOA/*********************END**********************/void MOTOR_Init(void);
void PWM_Init(void);
void Motor_SetSpeed(int8_t Speed);#endif
Motor.c文件
#include Motor.h/*****************辰哥单片机设计******************STM32* 文件 : TB6612FNG电机驱动模块c文件 * 版本 : V1.0* 日期 : 2024.9.26* MCU : STM32F103C8T6* 接口 : 见代码 * BILIBILI : 辰哥单片机设计* CSDN : 辰哥单片机设计* 作者 : 辰哥**********************BEGIN***********************/void MOTOR_Init(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(MOTOR_CLK, ENABLE ); //配置时钟GPIO_InitStructure.GPIO_Pin MOTOR_AIN1_GPIO_PIN;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;GPIO_Init(MOTOR_AIN1_GPIO_PORT,GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin MOTOR_AIN2_GPIO_PIN;GPIO_Init(MOTOR_AIN2_GPIO_PORT,GPIO_InitStructure);PWM_Init();}void PWM_Init(void)
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟/*GPIO初始化*/GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Pin MOTOR_PWMA_GPIO_PIN;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(MOTOR_PWMA_GPIO_PORT, GPIO_InitStructure); //将PA1和PA2引脚初始化为推挽输出TIM_InternalClockConfig(TIM2);//配置实际单元TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_ClockDivision TIM_CKD_DIV1; //时钟分频TIM_TimeBaseInitStructure.TIM_CounterMode TIM_CounterMode_Up; //计数模式TIM_TimeBaseInitStructure.TIM_Period 100 - 1; //自动重装ARR 分辨率TIM_TimeBaseInitStructure.TIM_Prescaler 36 - 1; //预分频PSC TIM_TimeBaseInitStructure.TIM_RepetitionCounter 0;TIM_TimeBaseInit(TIM2,TIM_TimeBaseInitStructure);TIM_OCInitTypeDef TIM_OCInitStructure;TIM_OCStructInit(TIM_OCInitStructure); //给结构体赋予初值 TIM_OCInitStructure.TIM_OCMode TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OCPolarity TIM_OCPolarity_High;TIM_OCInitStructure.TIM_OutputState TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse 0; //CCRTIM_OC3Init(TIM2,TIM_OCInitStructure);TIM_Cmd(TIM2,ENABLE);
} void PWM_SetCompare3(uint16_t compare)
{TIM_SetCompare3(TIM2,compare);
}void Motor_SetSpeed(int8_t Speed)
{if(Speed 0){GPIO_SetBits(MOTOR_AIN1_GPIO_PORT,MOTOR_AIN1_GPIO_PIN);GPIO_ResetBits(MOTOR_AIN2_GPIO_PORT,MOTOR_AIN2_GPIO_PIN);PWM_SetCompare3(Speed);}else{GPIO_ResetBits(MOTOR_AIN1_GPIO_PORT,MOTOR_AIN1_GPIO_PIN);GPIO_SetBits(MOTOR_AIN2_GPIO_PORT,MOTOR_AIN2_GPIO_PIN);PWM_SetCompare3(-Speed);}
}
四、实验效果 五、资料获取
项目分享