ArduinoUNO实战-第七章-PWM调光

目录
概述
通过电位器控制LED的亮度。
脉宽调制(PWM)基本原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等但宽度不一致的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。
学习目标
学会PWM的使用:PuleWidth Modulation脉冲宽度调制,简称脉宽调制。是利用微处理器的数字输出来模拟电路进行控制的一种非常有效的技术,广泛应用在从测量,通信到功率控制与变换的许多领域中。
脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法,由于计算机不能输出模拟电压,而只能输出0V或5V的数字电压值,(0V为0,5V为1)所以通过高分辨率计数器,利用方波的占空比被调制的方法对一个具体模拟信号的电平进行编码。单PWM信号仍然是数字的,因为在给定的任意时刻,只留供电要么是5V(数字值为1),要么是0V(数字值是0)。电压或电流源以一种通(ON)、断(OFF)的重复脉冲序列加到模拟负载上,只要带宽足够,任何模拟值都可以使用PWM进行白拿。
输出的电压值是通过通和断的时间进行计算的,计算公式为:
输出电压=(接通时间/脉冲时间)* 最大电压值
PWM的三个基本参数:
- 脉冲宽度变化幅度(最小值/最大值)
- 脉冲周期(1秒内脉冲频率个数的倒数)
- 电压宽度(例如:0V-5V)
Arduino UNO控制器上有6个PWM的接口分别是数字接口3、5、6、9、10、11
Arduino中的设置PWM的语句:
analogWrite(pin, value);
// pin:用于输入数值的引脚
// value:占空比:0(完全关闭)到255(完全打开)之间
led
Mind+开始
IDE
/*
测试PWM控制LED
*/
// 定义一个LED
#define LED 3
// 定义电位器引脚
#define POT A0
// 定义接收电位器的值
int PotBuffer = 0;
// the setup function runs once when you press reset or power the board
void setup() {
// 打开串口
Serial.begin(9600);
// LED设置为输出
pinMode(LED, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
// 电位器控制led灯亮度
PwmLed();
}
void PwmLed()
{
// 读取电位器的值
PotBuffer = analogRead(POT);
PotBuffer = map(PotBuffer, 0 ,1023 , 0, 255);
analogWrite(LED, PotBuffer);
}
此时转到电位器,发现led的亮度会变化。