zoey不种土豆 发表于 2024-11-22 10:30:00

Arduino入门教程23--换挡风扇「DFR0100」

本帖最后由 zoey不种土豆 于 2024-11-22 08:43 编辑

在这个教程中,我们将学习如何使用Arduino和电位器来控制一个风扇的转速。电位器是一种可变电阻器,它可以输出一个模拟信号,这个信号的电压随着电位器旋钮的旋转而改变。
元件清单
硬件连接

图 1 换挡风扇连线图示例代码
样例代码://项目 - 换挡风扇
// 定义引脚编号
const int switchin = 0;
const int fanout = 3;   
int switchval = 0;      // 存储从电位器读取的模拟值
int outputValue = 0;      // 存储映射后的值,用于控制风扇转速

void setup() {
Serial.begin(9600);   // 初始化串行通信
}

void loop() {
switchval = analogRead(switchin);    // 读取电位器的模拟值
Serial.println(switchval);    // 通过串行监视器输出读取的值
   
outputValue = map(switchval, 0, 1023, 0, 255);   
// 将模拟值映射到0-255的范围内

analogWrite(fanout, outputValue);   // 使用PWM控制风扇转速
}代码上传成功后,转动电位器,感受小马达的转速的变化。
代码回顾使用电位器控制风扇转速是一个典型的输入-计算-输出的过程控制流程。输入:先从电位器连接的模拟引脚读取模拟值:analogRead(switchin)计算:将读取的模拟值(0-1023)映射到一个新的范围(0-255),这个范围适合analogWrite()函数使用。outputValue = map(switchval, 0, 1023, 0, 255)输出:通过PWM信号控制连接到fanout引脚的风扇的转速。outputValue决定了PWM信号的占空比,从而控制风扇的转速。analogWrite(fanout, outputValue)示例代码简明易懂,其他请结合注释自行理解。
硬件回顾在之前的项目中,我们学习过使用电位器控制舵机的转动以及蜂鸣器的音调,在项目【可控舵机】和【DJ调音台】中的硬件连接中,舵机和蜂鸣器的电路中并没有连入多余的电子元件。但在本项目中,小马达电路中还连入了NPN三极管和二极管(如下图)。为什么不能像蜂鸣器一样直接连入电路呢?接着会详细介绍NPN三极管和二极管在小马达电路中的作用。图 2 130小马达驱动方式NPN三极管的作用Arduino UNO R3的主控板中,其每路输入/输出引脚的直流电流最大约为20mA,而130小马达的空载电流最少需要100mA。因此Arduino若想控制直流电机,只能采取放大电路驱动的方式。于是我们采用NPN三极管来驱动它(NPN三极管相关知识见项目【指尖开关】)。续流二极管续流二极管,保护电路免受由电机等感性负载引起的电压尖峰和反向电压的影响。当电流突然被中断时,感性负载会产生感应电动势,这会导致反向电压的产生,这可能会损坏其他电路元件(比如三极管)。续流二极管并联连接在线圈(小马达)两端,当流过线圈中的电流突然中断时,线圈中产生的感应电动势会驱动电流通过二极管回流,从而防止电流冲击其他电路元件并消耗掉感应能量,以此防止潜在的损坏。起这种作用的二极管叫续流二极管。它本质上还是二极管,但在这里主要起续流作用。
在本项目的电路中,当130小马达电机断电时,线圈会产生感应电动势并产生反向电压,该电压可能造成电路中元件(如三极管)的损坏。为防止这一风险,需在电机两端并联二极管以吸收此反向电压,保护电路。如何区分电子元件的正负极呢?在本项目中,使用的二极管示意图如下,其中灰色环标注的一端为负极,另一端则为正极。图 3 二极管正负极
示例代码
下一课:
页: [1]
查看完整版本: Arduino入门教程23--换挡风扇「DFR0100」