在之前的教程中,我们已经了解了串口通信的概念,以及如何使用一些预定义的功能在Arduino UNO和计算机之间传输数据。在本教程中,我们将讨论一个名为PWM的新概念,以及如何使用这个概念来控制不同的设备,如led,电机等。
出于本教程的目的,我们需要构建一个小电路。这个电路所需的元件列在下面。
- Arduino UNO [在这里买]
- 领导
- 1 KΩ电阻器
- 100 KΩ电位计
- 案板(原型)
- 连接电线
在这个项目中,我们将利用PWM技术来控制连接到Arduino UNO板上的LED的亮度。项目实施所需的原理图如下图所示。
在这个电路中,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信号。下图是不同占空比及其对应的电压等级的比较。
从图中可以清楚地看出,当占空比增加时,输出电压(或输出功率)也会增加。占空比为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亮度控制电路的实际框图。最终的草图如下图所示。
从上面的示意图中,我们可以很容易地理解analogRead函数返回的值存储在临时变量中。这个值将被用来控制PWM信号的占空比使用类比write函数。
但analogWrite函数接受的值的范围在0到255之间。因此,我们需要执行一些数学计算,以便在analogWrite函数中放入合适的值。
最后,将计算值与PWM引脚一起放入模拟write函数中,产生PWM信号。
当电路搭建好后,将草图上传到Arduino上,我们可以看到通过改变电位器的位置,LED的亮度也会发生变化。
2反应
我有10k的电位器。
那么,我应该使用哪个电阻与led?
代码有什么变化吗
请提及所有…
提前谢谢。
非常感谢“非常容易理解,真的帮助我开始”
(我使用了一个10k电位器,LED和PIN 11之间的10k电阻。)