当前位置: 首页 > article >正文

Arduino UNO R3自学笔记7 之 Arduino使用PWM电机调速

注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。
前言:本篇主要介绍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”)越来越亮,最后熄灭,一直循环次过程。

上一篇:Arduino UNO R3自学笔记6 之 Arduino引脚(IO)功能介绍

下一篇:Arduino UNO R3自学笔记8 之 Arduino如何测电压?


http://www.kler.cn/news/328526.html

相关文章:

  • 服务器数据恢复—存储映射到服务器上的卷无法挂载的数据恢复案例
  • DC00025【含论文】基于协同过滤推荐算法springboot视频推荐管理系统
  • 使用Yasboot安装YashanDB的疑惑和建议
  • 进阶数据库系列(十三):PostgreSQL 分区分表
  • SolidWorks机器转ROS2 URDF
  • Linux下send函数和recv函数
  • AWS Redshift把老用户权限赋予新用户
  • 201 Created
  • 如何在Windows、Mac和Linux系统上安装和更新Stable Diffusion WebUI
  • Spark SQL分析层优化
  • 中国电信解锁万亿参数大模型:TeleAI的创新与突破
  • Docker镜像命令和容器命令
  • 《征服数据结构》哈夫曼树(Huffman Tree)
  • Python 封装 socket 为 [TCP/UDP/MULTICAST] 服务端
  • 计算机毕业设计 服装生产信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Datawhale Leecode基础算法篇 task04:贪心算法
  • SpringBoot 使用自定义注解和枚举类对接口入参校验
  • 2024年寒假开学赛题解
  • Python空间地表联动贝叶斯地震风险计算模型
  • 【SpringCloud】优雅实现远程调⽤-OpenFeign
  • python 实现rayleigh quotient瑞利商算法
  • 数据结构-4.3.串的存储结构
  • 深入理解网络通信: 长连接、短连接与WebSocket
  • Spring系列 AOP实现过程
  • 【PostgreSQL】入门篇——PostgreSQL 的历史、特点和优势
  • 开卷可扩展自动驾驶(OpenDriveLab)
  • express,MySQL 实现登录接口,如果用户未注册直接注册
  • 【Python】Uvicorn:Python 异步 ASGI 服务器详解
  • vue3 环境配置vue-i8n国际化
  • Linux高级IO之poll与epoll