Arduino-物联网 UNO 开发板的 PWM 信号原理以及应用实战

414 阅读2分钟

实验:基于Arduino Uno 开发板在 PC 端展示 PWM 信号脉冲

一、硬件清单

   1.Arduino Uno 开发板一块+配套串口线一根
   2.150欧姆色环电阻一个
   3.面包板一块
   4.杜邦线若干根
   5.LED 灯一颗
   6.PCB 集成板一块

二、脉冲信号的定义

脉冲信号是一种离散信号,最常用的 是 方波信号,例如给一个引脚周期性输出高电平1秒,在输出低电平1秒。得到的脉冲方波信号如下图所示: image.png

2.1 PWM 调亮度/调速的原理

PWM 是没重宽度调制的简称,其实这里所谓的调制,就是调节一个周期内方波信号中高电平所占的比例,这个比例称为占空比。如下图所示: image.png PWM 调速的原理简单理解为:一个周期内,高电平所占比例越高,LED 灯的亮度就越亮,点击的转速也就越快。

三、使用 PWM 信号制作 LED 呼吸灯

3.1 如何产生 PWM 信号?

使用 Arduino 中的 analogWrite() 函数可以很方便地输出不同空占比的 PWM 信号,参数范围为0-255,值越大,空占比越大,LED 灯越亮。

3.2 呼吸灯实现原理

使用 analogWrite() 函数输出空占比逐渐变大的 PWM 信号,到达最大值后,在输出空占比逐渐变小的 PWM 信号,循环往复,即可实现 LED 呼吸灯的效果。

3.3 电脑连接原理图分析

3.3.1 查看 LED 灯的参数,主要是电流和电压 image.png 思考:使用下面这个电路图可以实现吗?

image.png

为了降压限流,还需要在电路中串联一个电阻: image.png

3.3.2 计算机串联电阻阻值: image.png 3.3.3 方式一:确定接线线路(面包板): image.png 方式二:PCB 集成板: ed228ef3eb13f3d536a0e4051cf6817a.jpeg

四、代码结构:

定义管脚号
初始化管脚以及模式
信号循环

完整代码:

// PWM 脉冲信号:是一种离散信号,占空比是50%。在一个周期内所占用的空比值越大,则 LED 灯的亮度越亮
#define LED 9 // 定义管脚号

void setup() {
  // 设置管脚为输出模式
  pinMode(LED, OUTPUT);
}

void loop() {
  /* 
  analogWrite 函数可以产生脉冲信号,参数范围为0-255
  for 循环进行调整 PWM 值的大小
  */
  // 不断增大亮度值
  for (int i=0;i<=255;i++) {
    analogWrite(LED, i);
    delay(5);
  }
  // 不断减小亮度值
  for (int i=265;i>=0;i--) {
    analogWrite(LED, i);
    delay(5);
  }
}

本人是一名物联网应用技术专业的学生,制作不易,给大家分享嵌入式开发教程,觉得还不错可以关注我,后面会持续更新实战教程。