目录
一、介绍
二、模块原理
1.尺寸介绍
2.模块原理图
3.引脚描述
三、程序设计
main.c文件
timer.h文件
timer.c文件
四、实验效果
五、资料获取
项目分享
一、介绍
大功率LED模块是一种照明设备,它将大功率高亮度发光二极管(LED)集成在铝基板上,形成一个高效的光源单元。这种模块通常包含散热片、驱动电路以及必要的封装技术,能够提供较高的光通量和亮度。可以使用PWM来调光。
以下是LED模块的参数:
型号 | 3W大功率LED灯模块 |
工作电压 | DC 5V |
额定电流 | 650mA |
功率 | 3W |
工作温度 | -20-60℃ |
存储温度 | 20-60℃ |
尺寸 | 30mm×23.5mm |
哔哩哔哩视频链接:
大功率LED模块(5V STM32)
(资料分享见文末)
二、模块原理
1.尺寸介绍
LED灯珠尺寸
LED模块尺寸
2.模块原理图
3.引脚描述
引脚名称 | 描述 |
G | 供电负极 |
+ | 供电正极 |
S | 控制信号端 |
S: 控制信号端,输入高电平灯亮,低电平灯不亮。或者使用PWM波来调光。
三、程序设计
使用STM32F103C8T6通过定时器PWM来控制大功率LED模块完成呼吸灯的操作。
LED | PB5 |
OLED_SCL | PB11 |
OLED_SDA | PB10 |
main.c文件
#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "oled.h"
#include "timer.h"
#include "key.h"
/*****************辰哥单片机设计******************
STM32
* 项目 : 大功率LED模块实验
* 版本 : V1.0
* 日期 : 2024.9.23
* MCU : STM32F103C8T6
* 接口 : 参看led_module.h
* BILIBILI : 辰哥单片机设计
* CSDN : 辰哥单片机设计
* 作者 : 辰哥
**********************BEGIN***********************/
int main(void)
{
u16 led0pwmval=0;
u8 dir=1;
SystemInit();//配置系统时钟为72M
delay_init(72);
LED_Init();
LED_On();
USART1_Config();//串口初始化
OLED_Init();
printf("Start \n");
delay_ms(1000);
TIM3_PWM_Init(100-1,0);
OLED_Clear();
//显示“LED状态:”
OLED_ShowString(0,0,"LED",16,1);
OLED_ShowChinese(24,0,2,16,1);
OLED_ShowChinese(40,0,3,16,1);
OLED_ShowChar(56,0,':',16,1);
while (1)
{
delay_ms(1);
if(dir)led0pwmval++;
else led0pwmval--;
if(led0pwmval>50)dir=0;
if(led0pwmval==0)dir=1;
TIM_SetCompare2(TIM3,led0pwmval);
OLED_ShowNum(40,30,led0pwmval,3,16,1);
}
}
timer.h文件
#ifndef __TIMER_H
#define __TIMER_H
#include "sys.h"
void TIM3_Int_Init(u16 arr,u16 psc);
void TIM3_PWM_Init(u16 arr,u16 psc);
#endif
timer.c文件
#include "timer.h"
#include "led.h"
#include "usart.h"
//TIM3 PWM部分初始化
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM3_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定时器3时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //使能GPIO外设和AFIO复用功能模块时钟
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射 TIM3_CH2->PB5
//设置该引脚为复用输出功能,输出TIM3 CH2的PWM脉冲波形 GPIOB.5
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //TIM_CH2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO
//初始化TIM3
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
//初始化TIM3 Channel2 PWM模式
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
TIM_OC2Init(TIM3, &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM3 OC2
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIM3在CCR2上的预装载寄存器
TIM_Cmd(TIM3, ENABLE); //使能TIM3
}