在这篇文章中,我们详细地研究了如何制作一个基于Arduino的PWM信号发生器电路,它可以通过一个电位器或一个锅来设置或调整到任何首选的占空比。
通过Ankit Negi
脉宽调制是什么?
PWM或脉冲宽度调制,顾名思义,是对脉冲宽度的调制,即在给定的时间段内脉冲的高或低的长度。这改变了脉冲的占空比,最终决定了脉冲的平均值,因为占空比是在时间上除以总的时间段。
而频率在pwm中起着非常重要的作用,频率必须足够高才能产生稳定的输出
Pwm可以用于多种目的,比如驱动工作在低电压下的设备,或者用于SMPS中的开关目的。
利用arduino uno实现PWM
Pwm也是使arduino成为一个最简单的开发板的因素之一,因为Pwm可以通过在程序中添加一行代码来完成。请注意,arduino UNO上有独立的数字引脚可用的pwm,这意味着这些引脚可以给出pwm输出。
在arduino UNO上共有6个pwm引脚,分别为3、5、6、9、10和11个14个数字引脚。注意,pwm引脚的数量从一种类型的arduino板到另一种不同。
现在有两种方式,pwm可以在arduino执行:
1.通过直接给pwm引脚分配0到255之间的模拟值。
由于arduino中的数字引脚可以提供最高5v,这意味着0模拟值等于0伏特,255等于5伏特。
要执行这个操作,你需要将以下代码添加到你的程序中:
analogWrite(PWM引脚没有,值在0到255之间);
例如:analogWrite(10,64);//将64个模拟值写入pwm引脚10。
现在这意味着:(5/255)*64伏特= 1.25伏特即25%的占空比。
2.通过arduino模拟引脚的输入来赋值。
输入可以从像红外传感器或电位计这样的组件中获取。
注意,arduino接收0到1023之间值的模拟输入,这相当于0到5伏特。因此,为了在一个引脚上执行pwm,你必须将这个输入值等效为0到255之间的数字,这在arduino的语言中称为映射。
这里有一个简单的代码:
Y = map(x,0,1023:0,255);//其中x是输入变量
在这之后,你可以执行pwm在一个引脚使用:
//写接收到的映射值到引脚10
PWM的例子:
在这个例子中,我们将学习这两种技术。为此,你需要:
1.一个电位计
2.两个发光二极管
3.两个100欧姆的电阻
按电路图接线:
线路图:
代码:
//初始化变量
int y;
无效的设置(){
pinMode(10,OUTPUT);//初始化pin10为输出
pinMode(9,OUTPUT);//将pin9初始化为OUTPUT
//初始化引脚A0作为pot的输入。
//把你的设置代码放在这里,运行一次:
}
无效循环(){
//直接赋值给引脚9,即case1
x=analogRead(A0);//从电位器读取电压值
Y = map(x,0,1023,0,255);//将这些值从0映射到255 //把你的主代码放在这里,以重复运行:
//根据输入值赋值,即case 2
}
它是如何工作的
本文所提出的Arduino PWM信号发生器项目的基本工作可以从下面的段落中进行研究
引脚9可以分配任意pwm值,而引脚不。10根据电位器相对于地的位置给出PWM值。继续改变引脚9的这个任意值,以及旋转电位器,以看到两个引脚上不同的pwm输出。