PWM控制LED点灯

                                              

一、基础概念
 

(1)定时器:

 

1.定时器类型:

 a.基本定时器(Basic Timer):
基本定时器通常较为简单,比如STM32中的TIM6和TIM7。

它们主要用于生成定时中断,适用于需要定时计数或驱动DAC等简单应用。

基本定时器没有输入捕获、输出比较等复杂功能,通常只有一个16位的自动装载寄存器。

b.通用定时器(General Purpose Timer):
包括TIM1到TIM4, TIM9到TIM14(具体数量依据不同系列的STM32型号而异)。

提供更多功能,如输入捕获、输出比较(可用于PWM生成)、单脉冲模式(One Pulse Mode)、编码器接口等。

可用于测量输入信号的脉冲宽度、生成精确的输出波形等复杂任务。

支持多种时钟源,包括内部时钟、外部时钟、ETR引脚时钟等。

c.高级定时器(Advanced Timer):
通常指TIM1和TIM8(在某些高端系列中可能更多),具有更高级的功能。

集成了基本定时器和通用定时器的所有特性,还增加了死区控制、紧急刹车功能等,特别适合于电机控制中的PWM生成。

高级定时器还可以与其他定时器同步工作,支持更复杂的控制策略。

2.定时器特性:
时钟源多样性:可选择内部时钟(如HCLK经预分频后的时钟)、外部时钟(通过特定引脚输入)、或者其他定时器的触发信号作为时钟源。

计数模式:包括向上计数、向下计数和中央对齐模式。

预分频器:通过预分频器可以灵活调整定时器的时钟频率,从而实现更宽范围的计时周期。

中断和DMA:定时器可以配置为在特定事件(如计数溢出、比较匹配等)时产生中断或触发DMA传输。

主/从模式:定时器可以工作在主模式下,通过TRGO引脚输出触发信号给其他外设(如ADC)或另一个定时器;或者作为从模式,其计数受其他定时器或外设的触发信号控制。

(2)PWM:

 1.PWM的定义:


脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

2.PWM的占空比:

 是一个脉冲周期内,高电平的时间与整个周期时间的比例

3.PWM的原理:

以单片机为例,我们知道,单片机的IO口输出的是数字信号,IO口只能输出高电平和低电平

假设高电平为5V 低电平则为0V 那么我们要输出不同的模拟电压,就要用到PWM,通过改变IO口输出的方波的占空比从而获得使用数字信号模拟成的模拟电压信号

我们知道,电压是以一种连接1或断开0的重复脉冲序列被夹到模拟负载上去的(例如LED灯,直流电机等),连接即是直流供电输出,断开即是直流供电断开。通过对连接和断开时间的控制,理论上来讲,可以输出任意不大于最大电压值(即0~5V之间任意大小)的模拟电压

比方说 占空比为50% 那就是高电平时间一半,低电平时间一半,在一定的频率下,就可以得到模拟的2.5V输出电压 那么75%的占空比 得到的电压就是3.75V

pwm的调节作用来源于对“占周期”的宽度控制,“占周期”变宽,输出的能量就会提高,通过阻容变换电路所得到的平均电压值也会上升,“占周期”变窄,输出的电压信号的电压平均值就会降低,通过阻容变换电路所得到的平均电压值也会下降

也就是,在一定的频率下,通过不同的占空比 即可得到不同的输出模拟电压

pwm就是通过这种原理实现D/A转换的。

PWM就是在合适的信号频率下,通过一个周期里改变占空比的方式来改变输出的有效电压

二、实验:

(1)实验一:

使用STM32F103的 Tim2~Tim5其一定时器的某一个通道pin(与GPIOx管脚复用,见下图),连接一个LED,用定时器计数方式,控制LED以2s的频率周期性地亮-灭。

1.STM32CubeMx创建项目,生成keil项目:

2.keil中修改代码:

HAL_TIM_Base_Start_IT(&htim2);
/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim->Instance==htim2.Instance)
		{
			HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
		}
}
/* USER CODE END 4 */

3.实验结果:

 

 

(2)实验二:

接上,采用定时器PWM模式,让 LED 以呼吸灯方式渐亮渐灭,周期为1~2秒,自己调整占空比变化到一个满意效果;使用Keil虚拟示波器,观察 PWM输出波形。

1.STM32CubeMx创建项目,生成keil项目:

2.keil中修改代码:

  /* USER CODE BEGIN 1 */
	
	uint16_t pwmVal=0;   //PWM占空比  
    uint8_t dir=1;  
 
  /* USER CODE END 1 */
 
  /* USER CODE BEGIN 2 */
 
  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
 
  /* USER CODE END 2 */
 
while (1)
  {
    /* USER CODE END WHILE */
 
    /* USER CODE BEGIN 3 */
	  while (pwmVal< 500)
	  {
		  pwmVal++;
		  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwmVal);    //修改比较值,修改占空比
//		  TIM3->CCR1 = pwmVal;    与上方相同
		  HAL_Delay(1);
	  }
	  while (pwmVal)
	  {
		  pwmVal--;
		  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwmVal);    //修改比较值,修改占空比
//		  TIM3->CCR1 = pwmVal;     与上方相同
		  HAL_Delay(1);
	  }
	  HAL_Delay(200);
 
  }
  /* USER CODE END 3 */
 

3.实验结果

 

 

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LED显示屏驱动电路是一种用于控制和驱动LED显示屏的电路。它的主要功能是将输入的电信号转换为适合驱动LED显示屏的电流和电压,并控制LED的亮度和显示效果。 首先,LED显示屏驱动电路需要一个电源电路,将交流电源转换为适合驱动LED的直流电源。常见的电源电路有变压器、整流桥和滤波电路等。这些电路可以将输入电压稳定在所需的范围内,以供给LED显示屏使用。 其次,驱动电路中还需要一个发光二极管驱动器,用于将电信号转换为满足LED显示屏电流电压要求的信号。发光二极管驱动器通常具有多个通道,每个通道可以控制多个LED灯颗粒。通过调整驱动器的电流、电压和PWM信号等参数,可以实现对LED显示屏的亮度、颜色和显示效果的控制。 此外,驱动电路还需要一个控制电路来控制不同LED灯颗粒的点亮和熄灭。控制电路通常由一个微控制器或单片机实现,通过软件编程来控制LED的显示内容和播放方式。通过编程,可以实现文字、数字、图形和动画等多种显示效果。 在设计LED显示屏驱动电路时,需要考虑电源电路的稳定性和高效性,发光二极管驱动器的精确性和可调性,以及控制电路的灵活性和可靠性。此外,还需要考虑电路的热管理和保护功能,以确保电路稳定工作并延长LED显示屏的使用寿命。 总之,LED显示屏驱动电路是一种功能复杂的电路,能够将输入的电信号转换为适合驱动LED显示屏的电流和电压,同时控制LED的亮度和显示效果。它是LED显示屏正常工作的关键组成部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值