首页

Arduino脉宽调制

在之前的教程中,我们已经了解了串口通信的概念,以及如何使用一些预定义的功能在Arduino UNO和计算机之间传输数据。在本教程中,我们将讨论一个名为PWM的新概念,以及如何使用这个概念来控制不同的设备,如led,电机等。

出于本教程的目的,我们需要构建一个小电路。这个电路所需的元件列在下面。

  • Arduino UNO [在这里买
  • 领导
  • 1 KΩ电阻器
  • 100 KΩ电位计
  • 案板(原型)
  • 连接电线

在这个项目中,我们将利用PWM技术来控制连接到Arduino UNO板上的LED的亮度。项目实施所需的原理图如下图所示。

arduino pwm

在Electronicshub中选择你想要学习的下一组Arduino项目 Arduino项目»

在这个电路中,LED的阳极必须连接到Arduino UNO的任何PWM引脚。因此,它通过一个1KΩ限流电阻连接到Arduino的引脚11。LED的阴极在面包板上接地。

Arduino UNO的5V电源和地连接到面包板的正负轨上。

电位器的两端分别连接到电路板上的5V和接地端子。电位器的雨刷端必须连接到Arduino UNO的任一模拟输入引脚上。

通过在任意方向(顺时针或逆时针)调整电位器,Arduino模拟输入管脚将得到一个介于0到5V之间的可变电压。的模拟到数字Arduino UNO的转换功能用于将这些电压转换为0到1023的数字范围(因为Arduino有一个10位ADC)。借助这个转换值,我们可以控制LED的亮度。

既然我们已经成功地设计了电路,下一步就是为电路编写一个合适的程序。在开始编程之前,我们需要了解PWM信号是什么。

脉冲宽度调制

脉宽调制或简单的PWM是一种数字技术,使用它可以改变发送到设备的功率。它提供了一种用数字信号提供模拟结果的方法。

在PWM技术中,方波在通断状态之间被切换。通过改变信号在“开”状态上花费的时间与信号在“关”状态上花费的时间,我们可以模拟0V和5V之间的电压范围。当这个开关之间的通断状态是非常快的,那么结果就好像输出信号是一个稳定的电压水平之间的0V和5V。

在处理PWM时,我们需要讨论的一个重要术语是占空比。它被定义为信号处于高状态(准时)的时间与信号的总时间段(准时+关机)的时间之比。

在Arduino中,有6个脚可以产生这样的PWM信号。下图是不同占空比及其对应的电压等级的比较。

arduino pwm

从图中可以清楚地看出,当占空比增加时,输出电压(或输出功率)也会增加。占空比为100%时,可用电压为5V,占空比为50%时,可用电压为2.5V。

在我们的教程中,为了生成PWM信号,我们需要学习Arduino库中的两个函数:analogRead和analogWrite。

analogRead是一个函数,用于从Arduino的模拟引脚读取模拟值。Arduino UNO板有6通道,10位模数转换器(ADC)。这意味着Arduino UNO中的ADC将0 - 5V in之间的输入电压映射为0 - 1023之间的整数。

因此,analogRead函数将返回0到1023之间的任何值。analogRead函数的语法为analogRead(模拟引脚编号);

由于我们正在从A0引脚的电位器读取模拟电压,我们需要写入analogRead (A0);在草图。当它返回整数值时,将使用它创建一个整型数据类型的临时变量。

下一个函数是类比函数write。它是一个函数,用于设置任何给定的PWM引脚的PWM信号的占空比。

analogWrite函数的语法为analogWrite (PWM引脚编号,值);

该值表示占空比,必须介于0 (0V)和255 (5V)之间。

最后给出了LED亮度控制电路的实际框图。最终的草图如下图所示。

arduino pwm

从上面的示意图中,我们可以很容易地理解analogRead函数返回的值存储在临时变量中。这个值将被用来控制PWM信号的占空比使用类比write函数。

但analogWrite函数接受的值的范围在0到255之间。因此,我们需要执行一些数学计算,以便在analogWrite函数中放入合适的值。

最后,将计算值与PWM引脚一起放入模拟write函数中,产生PWM信号。

当电路搭建好后,将草图上传到Arduino上,我们可以看到通过改变电位器的位置,LED的亮度也会发生变化。

2反应

  1. 我有10k的电位器。
    那么,我应该使用哪个电阻与led?
    代码有什么变化吗
    请提及所有…
    提前谢谢。

  2. 非常感谢“非常容易理解,真的帮助我开始”
    (我使用了一个10k电位器,LED和PIN 11之间的10k电阻。)

留下一个回复

您的电子邮件地址将不会被公布。必填字段已标记

Electronicshub图标
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu