问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Arduino R3笔记7:使用PWM实现电机调速

创作时间:
作者:
@小白创作中心

Arduino R3笔记7:使用PWM实现电机调速

引用
CSDN
1.
https://blog.csdn.net/FKL1054934525/article/details/142575877

**PWM(脉冲宽度调制)是一种常用的数字信号处理技术,广泛应用于电机控制、LED调光等领域。本文将详细介绍Arduino如何使用PWM实现电机调速,并通过具体实验代码帮助读者掌握这一技术。

1. 什么是PWM?

PWM(Pulse Width Modulation)是一种数字信号处理技术,它通过改变脉冲信号的宽度来控制模拟电路。具体来说,PWM信号的周期是固定的,而脉冲的宽度(占空比)可以根据需要进行调整。

占空比是指在一个周期内,高电平持续的时间与整个周期的比例。通过改变占空比,可以控制输出信号的幅度,从而实现对模拟电路的精确控制。

PWM技术广泛应用于各种领域,包括电机控制、LED调光、电源变换等。例如,在电机控制中,通过改变PWM信号的占空比,可以控制电机的速度;在LED调光中,通过改变PWM信号的占空比,可以控制LED的亮度。

2. Arduino的PWM怎么产生?

Arduino UNO R3 控制器有6个PWM引脚,它们标记为数字3、5、6、9、10和11。这些引脚支持使用 analogWrite() 函数来生成PWM波,从而控制支持PWM功能的设备,如电机、LED灯等。PWM引脚输出的电压为5V,而占空比的不同会导致输出电压电平的变化。

3. Arduino的PWM具体使用方法?

首先,设置PWM引脚:在 void setup() 里面使用 pinMode() 函数将PWM引脚设置为输出模式。

其次,生成PWM信号:使用 analogWrite() 函数在PWM引脚上生成PWM信号。过程中可以使用 analogWrite(pin, duty) 函数调整PWM引脚上输出PWM的占空比,因为Arduino UNO R3 的板子支持的PWM是8位精度,也就是说duty的取值在0~255。

注意:生成的PWM信号的频率约为490Hz。

4. 实验电路原理及说明

5. 完整代码

#define moto_pwm_pin 3  //给引脚3取个名字,叫做moto_pwm_pin,后面可直接写moto_pwm_pin代替3
int moto_speed=0;       //定义一个占空比的值,实际占空比值为(moto_speed/255)×100%

void setup()    
{
  pinMode(moto_pwm_pin, OUTPUT); //设置3号引脚为输出模式
}

void loop()
{
  analogWrite(moto_pwm_pin, moto_speed);   //给3号引脚一个PWM信号
  moto_speed++;                           //加大moto_speed值
  if(moto_speed > 255) moto_speed = 0;     //有效检查,moto_speed值大于255时,无意义了,赋为0
  delay(50);                              //这个是控制loop循环速度,每循环一次moto_speed值被加大,电机速度加快
}

6. 写在最后

如果没有电机驱动板,可以按如下办法验证此代码:

● 按如下接线

待程序上传上去就会发现随着占空比增加,灯(板载标识符为“L”)越来越亮,最后熄灭,一直循环此过程。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号