PWM里的控制

系列文章目录


本文章旨在总结备份、方便以后自己查看。图片来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。


前言


一、PWM简介

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

二、应用领域

1.调节电机转动,调节变频器。
2.可以用来控制LED灯的亮暗变化。
3.控制无源蜂鸣器发出简单的声音
4.以及实现功率继电器的线圈节能。

三、频率,周期,占空比

1.频率

pwm的频率是指每秒钟信号从高电平到低电平再回到高电平的次数。
例如:
50HZ 1秒中高电平到低电平再回到高电平的次数为50次。
100HZ 1秒中高电平到低电平再回到高电平的次数为100次。

2.周期

一次从高电平到低电平再回到高电平的所需要的时间。
周期=1s/频率
例如:1s/50HZ=20ms

在这里插入图片描述
周期:T=1000ms

3.占空比

一个脉冲周期内,高电平的时间除以整个周期时间

在这里插入图片描述
占空比:200/1000=20%
在这里插入图片描述
占空比:500/1000=50%

四、PWM的控制原理

控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。

PWM信号就是根据需求调节占空比的大小以实现负载端电压的线性变化。

五、PWM的控制呼吸灯

视觉残留:
当频率高时,代表1s内闪烁的次数越多,次数越多就会感觉一直亮着。
当频率低时,代表1s内闪烁的次数越少,次数越少就会明显看到闪烁。
固定在一定频率,周期也就固定了。然后可以改变占空比。
占空比越大,亮的时间就越长,视觉上也就越亮。
在这里插入图片描述

六、PWM控制电机转速

原理犹如控制呼吸灯。
PWM不管是高电平还是低电平时电机都是转动的,电机的转速取决于平均电压。
占空比越大,提供给电机的平均电压越大,电机转速就高。
占空比越小。提供给电机的平均电压越小,电机转速就低。
当然要注意不要频率过高,会损坏电机。

如何控制正反转呢?
在这里插入图片描述

红色正转:VCC→Q1→电机→Q4→GND
蓝色反转:VCC→Q3→电机→Q2→GND

七、PWM控制舵机角度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
舵机图片来自于百度。如有侵权,请联系谢谢!

八、PWM控制电机代码

/************************
函数名称:MotorTim_Config
函数作用:直流电机定时器初始化
函数入口:
	psc	预分频
	arr	重装载值
引脚说明:
	IA PB8 TIM4_CH3
	IB PB9 TIM4_CH4
************************/
void MotorTim_Config(uint16_t psc,uint16_t arr)
{
	GPIO_InitTypeDef GPIO_InitStructure = {0};//GPIO结构体
	TIM_TimeBaseInitTypeDef TIM_BaseInitStructure = {0};
	TIM_OCInitTypeDef TIM_OCInitStructure = {0};
	//时钟使能
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);
	//GPIO配置
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&GPIO_InitStructure);
	//基本定时配置
	TIM_BaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;		//分频因子
	TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;	//向上计数
	TIM_BaseInitStructure.TIM_Period = arr-1;	//重装载值
	TIM_BaseInitStructure.TIM_Prescaler = psc-1;//预分频器
	TIM_TimeBaseInit(TIM4,&TIM_BaseInitStructure);
	TIM_ARRPreloadConfig(TIM4,ENABLE);	//ARR影子寄存器
	//输出比较配置
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;	//PWM1
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//高电平有效
	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//输出到对应引脚
	TIM_OCInitStructure.TIM_Pulse = 0;
	TIM_OC3Init(TIM4,&TIM_OCInitStructure);
	TIM_OC4Init(TIM4,&TIM_OCInitStructure);
	TIM_OC3PreloadConfig(TIM4,ENABLE);//CCR3影子寄存器
	TIM_OC4PreloadConfig(TIM4,ENABLE);//CCR4影子寄存器
	//定时器使能
	TIM_Cmd(TIM4,ENABLE);
}

总结

纯属个人笔记,大家看看理解就好!
  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值