Arduino驱动直流电机风扇

article/2025/8/16 22:34:25

  时隔多年,重拾Arduino,先拿直流电机风扇找一下手感。配套的东西如下图所示:直流电机、控制板、风扇、架子。
在这里插入图片描述
  装好之后的效果如下图所示。
在这里插入图片描述
  本文参照参考文献中的示例代码进行测试。参考文献中的代码主要通过按钮控制风扇的不同转速,本文中对代码进行了简化,为了测试程序的有效性,先在代码中写死转速,代码如下所示:


const int motorIn1=9;
const int motorIn2=10;#define rank 150void setup() {// put your setup code here, to run once:pinMode(motorIn1,OUTPUT);pinMode(motorIn2,OUTPUT);Serial.begin(9600);
}void loop() {// put your main code here, to run repeatedly:clockwise(rank);
}void clockwise(int Speed)
{analogWrite(motorIn1,0);analogWrite(motorIn2,Speed);
}

  程序效果如下所示,代码上传到到Arduino后,风扇即开始转动。
在这里插入图片描述
  为了能控制转速,对上述代码进行改造,可以通过串口与Arduino进行通信,设置电机的转速。详细的代码如下所示。需要注意的是,使用Arduino IDE中的串口监视器进行通信时,需要设置成没有结束符模式。
在这里插入图片描述

#define SPEED_COMMAND "SPD"
#define NUM_LENGTH 3
#define SPLIT_CHAR ';'#define RECEIVE_STAGE 0   // 接收命令阶段
#define EXECUTE_STAGE 1   // 执行命令阶段
#define OBSERVE_STAGE 2   // 观察阶段#define MAX_CHARS 49char buffer[MAX_CHARS + 1];
int charIndex = 0;int currentStage;
int curSpeed=0;const int motorIn1=9;
const int motorIn2=10;#define rank 150void setup() {// put your setup code here, to run once:pinMode(motorIn1,OUTPUT);pinMode(motorIn2,OUTPUT);Serial.begin(9600);currentStage = RECEIVE_STAGE;Serial.println("Ready");
}void loop() {// put your main code here, to run repeatedly:switch (currentStage){case RECEIVE_STAGE:ReceiveCommand();break;case EXECUTE_STAGE:      if (Serial.available() > 0){currentStage = RECEIVE_STAGE;}else if (strncmp(buffer, SPEED_COMMAND, NUM_LENGTH) == 0){char* pInt = &buffer[NUM_LENGTH + 1];curSpeed=atoi(pInt);currentStage = OBSERVE_STAGE;        }break;case OBSERVE_STAGE:      if (Serial.available() > 0){currentStage = RECEIVE_STAGE;}else{clockwise(curSpeed);}      break;}  
}void clockwise(int Speed)
{analogWrite(motorIn1,0);analogWrite(motorIn2,Speed);
}void ReceiveCommand()
{if (Serial.available() > 0){char ch = Serial.read();if ((charIndex < MAX_CHARS) && (ch != SPLIT_CHAR)){buffer[charIndex++] = ch;}else{buffer[charIndex] = 0;charIndex = 0;currentStage = EXECUTE_STAGE;Serial.print("received command is ");Serial.println(buffer);}}
}

  本文主要是初步介绍直流电机风扇的驱动方式,如果更深入的控制直流电机,可以在百度中自行搜索了解。

参考文献:
[1]《基于传感器开发套件玩转Arduino编程》


http://chatgpt.dhexx.cn/article/RtgWlBDP.shtml

相关文章

BLDC无刷直流电机驱动程序

1.先不考虑霍尔信号&#xff0c;先让BLDC动起来&#xff0c;如下图&#xff0c;主要驱动6个MOS管&#xff0c;有两种驱动方式。第一种方式&#xff0c;上下桥臂都给PWM信号&#xff1b;第二种方式&#xff0c;3个PWM信号3个电平信号。 2.霍尔信号接到定时器的输入捕获&#xf…

直流电机驱动实验

直流电机驱动实验 实验现象 本实验采用小型直流电机驱动L9110驱动一个小型直流电机 理论学习 按照上图接线完成后可以对连接在驱动板上的电机经行控制。 A1.A20.0 时为停转 A1.A21.0 时为正转 A1.A20.1 时为反转 PA 为 PWM 波输入 G 为共地引脚 其中PWM频率最高为 60KHZ&a…

大功率双路直流电机驱动板的设计源文件

大功率双路直流电机驱动板的设计源文件&#xff0c;包括原理图、PCB、原理图与PCB器件库、BOM清单、stm32测试源代码。 &#xff08;注意&#xff1a;出售的是设计资料&#xff0c;出售的是资料&#xff0c;不是实际的产品哈&#xff09;&#xff0c;另外可对该图的设计原理&am…

【2022项目复盘】无位置传感器的无刷直流电机驱动设计

目录 概述BLDC发展历史现状未来前景 工作原理BLDC结构六步法 启动方式转子预定位转子的同步加速切入转子正常旋转程序 反电动势检测法硬件设计控制模块最小系统三相逆变器电路及其驱动设计端电压检测电路设计电流采样电路设计 回顾 概述 无位置传感器的无刷直流电机驱动设计是…

STM32 GPIO的配置以及直流电机驱动的实现

GPIO的配置以及直流电机驱动的实现 一、GPIO概述 GPIO&#xff1a;General-purpose input/output 通用型输入输出的简称 功能类似8051的P0—P3&#xff0c;其接脚可以供使用者由程控自由使用&#xff0c;PIN脚依现实考量可作为通用输入&#xff08;GPI&#xff09;或通…

lm298驱动电机c语言程序,机器人教程3:直流电机驱动及L298N模块

这一节我们主要介绍H桥电路,后面的章节我们会专门介绍到PWM调速问题。 3、H桥电路 电机做好后后引出两个极,如图5所示,给两个极能电就能够实现其转动,而改变其电源极性刚可以实现换向。 图5减速电机及电路图 前面我们说过必须要解决驱动力不足和换向问题,设计一般会采用两…

直流电机驱动电路

一、 直流电机驱动电路的设计目标 在直流电机驱动电路的设计中&#xff0c;主要考虑一下几点&#xff1a; 功能&#xff1a;电机是单向还是双向转动&#xff1f;需不需要调速&#xff1f;对于单向的电机驱动&#xff0c;只要用一个大功率三极管或场效应管或继电器直接带动电机即…

直流电机驱动保护方案

直流电机&#xff08;direct current machine&#xff09;是指能将直流电能转换成机械能或将机械能转换成直流电能&#xff08;直流发电机&#xff09;的旋转电机. 1.起动和调速性能好,调速范围广平滑,过载能力较强,受电磁干扰影响小; 2.直流电机具有良好的启动特性和调速特性;…

51单片机——直流电机驱动PWM

目录 一、功能描述 二、主要模块介绍 2.1 直流电机 2.1.1 直流电机外部 2.2 PWM介绍 2.2.1 产生PWM的方法 三、测试文件test.c 四、效果演示 一、功能描述 利用定时器产生PWM&#xff0c;对直流电机进行调速。 二、主要模块介绍 2.1 直流电机 直流电机是一种将电能转换为…

贰拾:直流电机的驱动

直流电机 直流电机是电机的主要类型之一&#xff0c;由于它具有良好的调速性能&#xff0c;在许多调速性能要求较高的场合&#xff0c;得到广泛应用。在电子制作中也较多设计到直流电机的使用。 当负载一定时&#xff0c;流过直流电机的平均电流越大&#xff0c;产生的力矩就…

直流电机的原理及驱动

文章目录 直流电机的原理直流电机的种类有刷电机无刷电机空心杯 直流减速电机减速器减速电机驱动器 直流电机的原理 在了解直流电机工作原理之前&#xff0c;先复习一下高中几个物理知识 第一.左手定则 通电导线处于磁场中时&#xff0c;所受安培力 F (或运动)的方向、磁感应…

tar,zip压缩命令

压缩解压 tar tar这个命令并没有压缩的功能&#xff0c;它只是一个打包的命令&#xff0c;但是在tar命令中增加一个选项(-z)可以调用gzip实现了一个压缩的功能&#xff0c;实行一个先打包后压缩的过程。 文件压缩解压&#xff1a;bzip2 压缩用法&#xff1a;tar jcvf 压缩包包…

linux 压缩根目录文件,Linux操作系统下如何压缩文件? zip压缩命令使用

Linux zip命令用于压缩文件。 zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有”.zip”扩展名的压缩文件。 在linux操作系统中,使用zip命令进行文件压缩时,你可能会遇到下面的报错: zip I/O error: Permission denied zip error: Could not create output file (/…

linux命令zip如何使用,linux zip压缩命令如何使用

linux zip压缩命令的使用方法&#xff1a;1、使用zip打包文件夹&#xff0c;代码为【zip -r -q -o pack.zip mark/】&#xff1b;2、使用【-e】参数可以创建加密压缩包&#xff0c;代码为【zip -r -e o packencryption.zi】。 本教程操作环境&#xff1a;linux7.3系统、DELL G3…

Linux系统zip压缩命令

不管是在 Windows 系统还是 Linux 系统中&#xff0c;我们常常会有一些大文件&#xff0c;特别占磁盘空间&#xff0c;对于这种占用空间大的文件我们很多时候就要用到 ZIP&#xff08;压缩文件格式&#xff09;&#xff0c;ZIP 文件格式是一种数据压缩和文档储存的文件格式。除…

内部总线(双向数据总线)

由于计算机内部的主要工作过程是信息传送和加工的过程&#xff0c;因此在机器内部各部件之司的数据传送非常频繁。为了减少内部数据传送线并便于控制&#xff0c;通常将一些寄存器之间数据传送的通路加以归并&#xff0c;组成总线结构&#xff0c;使不同来源的信息在此传输线上…

企业服务总线相关理论和技术的研究

企业服务总线相关理论和技术的研究 摘 要 随着社会信息化进程的进一步加快和信息化技术的不断进步&#xff0c;很多企业发现在引进新的应用和系统的同时&#xff0c;如何保证公司旧有的应用和系统不被全部抛弃或替换是节省公司运作成本&#xff0c;有效利用公司资源的重要手段。…

业务集成中间件软件的新锐:企业服务总线

业务集成中间件软件的新锐&#xff1a;企业服务总线 2009-04-13 作者&#xff1a;董云卫 来源&#xff1a;amteam.org 企业应用集成&#xff08;EAI&#xff09;是近年来增长最快的软件市场之一&#xff0c;这是因为许多企业的应用系统不能互联&#xff0c;制约了企业信息系统的…

企业服务总线需求说明

&#xfeff;&#xfeff; 企业服务总线需求说明 Enterprzise Service Bus 1 ESB的主要作用 ESB主要解决多终端多系统的相互调用问题&#xff0c;减少系统间的耦合&#xff0c;添加可维护性。 2 ESB的核心需求 ESB的核心需求主要包含&#xff1a;服务调用与数据适配、服…

数据总线学习

为啥要数据总线 使用服务化方式发布&#xff0c;业务端和中间件完全解耦合。一处生产&#xff0c;处处消费设计理念。提供用户可定制的托管化通用消费方案&#xff08;如同步mysql到缓存&#xff0c;同步mysql到es&#xff0c;消费mysql到大数据等托管服务&#xff09; 特性 …