基于Arduino的自动调速风扇

好久没有更新了,家里实在太乱,最近趁着618活动,买了一堆收纳抽屉和置物架,把家里彻底收拾了一下,然后客厅就成了这个奇葩样子,注孤生的节奏了。

在这里插入图片描述

话不多说,夏天到了,天气逐渐热起来,风扇成了必不可少的消暑利器。

本文主要介绍两种基于Arduino的风扇自动调速方案,使用的是5V的USB风扇,物美价廉还省电。

方案一是通过舵机控制旋钮变压器实现调速,方案二通过脉冲宽度调制(PWM)实现调速。

方案一:旋钮变压器

材料清单
名称 数量 淘宝单价
Arduino UNO 1 15
USB风扇调速器 1 6
DH11温湿度传感器 1 4
SG90S舵机 1 7.5
红外接收模块加遥控器 1 3.3

所用零件均可在淘宝买到,价格时有波动。

在这里插入图片描述

思路是通过DH11温湿度传感器测量温度,根据温度控制舵机的角度,舵机的转轴与USB风扇调速器的旋钮连接,带动旋钮转动,进而控制风扇的输入电压,实现转速控制。

此外,增加了红外控制,用于远程开关风扇,切换模式。

接线

在这里插入图片描述

代码

需要红外控制模块DH11温湿度传感器的库,代码及库的下载链接在文末。

3种红外信号分别对应全开、全关和自动模式。

自动模式会根据室温调节风扇的转速。

#include <dht.h>  //调用dh11温湿度传感器的库
#include <IRremote.h>  //调用红外控制的库
#include <Servo.h>  //调用舵机控制的库

dht DHT;
Servo servo;

#define RECV_PIN 9  //定义红外接收器针脚
IRrecv irrecv(RECV_PIN);
decode_results results;

#define dataPin 10  //定义温湿度传感器针脚
int servoPin = 7;   //定义舵机针脚
char value;  //红外接收器接收的数值
float t;  //温湿度传感器测量的温度数值
int a = 0;
int b = 0;  //a、b用于切换模式


void setup() {
   
  irrecv.enableIRIn();
  servo.attach(servoPin);
  servo.write(0);
  delay(1000);
  servo.detach();
  //Serial.begin(9600);
}

void loop() {
   
  if (irrecv.
  • 12
    点赞
  • 128
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值