目录
概述
1 认识PWM
1.1 PWM原理
1.2 PWM的应用
1.3 在Arduino中使用PWM
2.硬件
2.1 硬件结构
2.2 线路连接
3 软件
3.1 编译和下载代码
3.2 详细代码
4 测试
4.1 灯的变化测试
4.2 使用逻辑分析仪看波形
概述
本文通过一个简单的案例,介绍Arduino中PWM的应用方法。搭建一个控制LED的电路,然后使用PWM来控制LED的暗亮程度,以加强对PWM功能的理解。还详细介绍PWM相关知识,便于更加详尽的理解PWM在工程实践中的应用。
1 认识PWM
1.1 PWM原理
PWM( Pluse Width Modulation )是方波控制信号。其通过控制高电平在一个周期内的宽度,可以控制输出信号的变化。PWM信号应用中有一个非常重要的概念: 占空比(Duty Cycle)。那么什么是占空比呢?
占空比 f = t/T
t: 高电平持续时间
T: 周期
1.2 PWM的应用
1) 实现模拟信号输出。其实现方法是: 使输出的PWM通过一个滤波电路,将PWM转变成连续的模拟信号
2) 实现直流电机调速,控制步进电机步长,舵机旋转角度等
3)控制LED或者蜂鸣器的引脚电平,使其按照一定的规律工作
1.3 在Arduino中使用PWM
在Arduino板卡中,只有部分引脚可以输出PWM,这些引脚在扩展插槽上有标识符(~)。一个使用PWM功能的案例:
Step - 1: 配置引脚为输出模式
pinMode( pin,OUTPUT);
Step - 2: 改变占空比参数,控制输出信号的高电平时长
analogWrite( pin, para);
上述伪代码中,para为占空比参数,其范围为(0 ~ 255 ),数值越大,占空比越大。在Arduino UNO 板卡中,一个PWM的周期为: 2ms左右
2.硬件
2.1 硬件结构
1) Arduino UNO主控板,实现PWM波功能,用于控制灯的状态
2)led灯珠, 指示灯
3)一个500欧姆电阻,限流作用
4)面包板,方便导线连接
5)杜邦线若干,用于连接元器件
2.2 线路连接
建议LED的线路连接方式
LED控制引脚与Arduino主板的线路对应关系
Arduino IO | LED trigger IO | 注释 |
PIN-3 | LED负端口 |
3 软件
3.1 编译和下载代码
3.2 详细代码
/*
Copyright 2024-2029. All rights reserved.
文件名 : breath_led
作者 : tangmingfei2013@126.com
版本 : V1.0
描述 : 呼吸灯
其他 : 无
日志 : 初版V1.0 2024/2/18
文档路径 :
*/
#include <MsTimer2.h>#define LEDPIN 3void setup ()
{pinMode(LEDPIN,OUTPUT);
}void loop()
{//循环语句,控制PWM亮度的增加for (int a=0; a<=255;a++){analogWrite(LEDPIN,a);delay(5); //当前亮度级别维持的时间,单位毫秒}//循环语句,控制PWM亮度减小 for (int a=255; a>=0;a--){analogWrite(LEDPIN,a);delay(5); //当前亮度的维持的时间,单位毫秒 }delay(100);//完成一个循环后等待的时间,单位毫秒
}
4 测试
4.1 灯的变化测试
编译代码后,下载到板卡中,可以看到led由暗到亮,由亮到暗的变化特征
4.2 使用逻辑分析仪看波形
1)亮度大的波形
2)亮度中等波形
3)亮度暗时波形