使用arduino做一个电脑风扇PWM调速器-Arduino中文社区 - Powered by Discuz! Archiver

element115mc 发表于 2021-8-24 11:59

使用arduino做一个电脑风扇PWM调速器

本帖最后由 element115mc 于 2021-8-25 11:03 编辑

不知道各位是否有这样的问题:电脑机箱风扇有时很吵,有时太慢,转速无法随心所欲随时调节,每次调节都要重启进入bios,但电脑上正在进行着主要任务(码word、打游戏中)无法重启。今天,我就和大家分享我的arduino pwm调速器方案,该方案非直流调压式调速,直接输出PWM信号给四线风扇调速,更加可靠。准备材料:Arduino UNO(并非必须要UNO,6脚能输出PWM就行)、B50K电位器(阻值随意,不一定要50K)、电脑4线风扇、12V直流电源、杜邦线若干(最好多点两端公头的)、USB线一条(刷写程序用)、有Arduino IDE的电脑一台。
制作过程
第一步:在IDE中写入以下代码
int pwmPin = 6;
int anaPin = A0;
int pwmspeed = 0;
void setup() {
pinMode(pwmPin,OUTPUT);
Serial.begin(9600);
}

void loop() {
int pwmspeed = int(analogRead(anaPin)/4);
analogWrite(pwmPin,pwmspeed);
Serial.println(pwmspeed);
delay(50);
}第二步,上传到开发板
第三步:按以下方式连接电路(红正黑负)

第四步:插上12V电源,开始运行
以上就是组装过程
运行效果展示(楼主亲自上传的视频):https://www.bilibili.com/video/BV1L44y1C7Bx/
特别说明:代码中和Serial有关的只是楼主上机用串口调试工具调试用的,可以选择删除
以上就是我的项目展示,感谢阅读本文,谢谢!

element115mc 发表于 2021-8-25 11:02

另外说明:为什么int pwmspeed = int(analogRead(anaPin)/4);当中,从anaPin中读出的数值得除4,还要化整型?这是因为analogRead()函数返回的值在0至1023当中,众所周知1020/4=255,analogWrite(引脚,数值)中数值只接受0至255,但1023/4超过255,不到256,用int化整型不至于溢出,保证了程序稳定性.。

XlinliY.Zhang 发表于 2021-8-24 13:59

本帖最后由 XlinliY.Zhang 于 2021-8-24 14:00 编辑

风扇PWM调速最起码PWM频率要设置为5KHz以上, Arduino默认的490Hz调速噪音不仅低不了多少,还会引入高频电流声

Zoologist 发表于 2021-8-24 15:49

风扇 spec 要求载波是 25K 唉~

element115mc 发表于 2021-8-25 10:49

XlinliY.Zhang 发表于 2021-8-24 13:59
风扇PWM调速最起码PWM频率要设置为5KHz以上, Arduino默认的490Hz调速噪音不仅低不了多少,还会引入高频电 ...

这个倒是不知道,反正我用时最低最高转速都十分安静:lol

yangchunlong 发表于 2021-8-25 13:38

element115mc 发表于 2021-8-25 10:49
这个倒是不知道,反正我用时最低最高转速都十分安静

arduino默认的PWM频率就是490Hz,想改频率也很简单。只需要配置一下就可以了。具体配置网上教程一大堆,我就不码字了

yangchunlong 发表于 2021-8-25 13:39

element115mc 发表于 2021-8-25 10:49
这个倒是不知道,反正我用时最低最高转速都十分安静

arduino默认的PWM频率就是490Hz,想改频率也很简单。只需要配置一下就可以了。具体配置网上教程一大堆,我就不码字了

yangchunlong 发表于 2021-8-25 13:42

element115mc 发表于 2021-8-25 10:49
这个倒是不知道,反正我用时最低最高转速都十分安静

arduino默认的PWM频率就是490Hz,想改频率也很简单。只需要配置一下就可以了。具体配置网上教程一大堆,我就不码字了
页: [1]
查看完整版本: 使用arduino做一个电脑风扇PWM调速器