マイコン設計によるインテリジェントファン(赤外線無線制御スイッチ速度調整タイミング)

1. プロジェクト紹介

暑い夏、室内生活に欠かせない電気製品となった扇風機。しかし、従来のファン制御方法には、スイッチを手動で操作する必要がある、遠隔から制御や速度調整ができない、タイミング機能がないなど、いくつかの不便がありました。これらの問題を解決するために、マイクロコントローラーをベースにしたスマートファンが設計されており、赤外線ワイヤレス制御スイッチ、速度調整、タイミング機能を使用して、ユーザーがファンをより便利かつ快適に使用できるようにします。

メイン制御チップには、十分な演算能力と制御能力を備えた強力で安定したマイクロコントローラーである STC89C52 が使用されています。赤外線NECプロト​​コルをサポートすることにより、マイクロコントローラーはリモコンから送信された制御命令を受信し、命令に従ってファンの切り替え、速度調整、タイミング切り替えを完了できます。

ファン制御を実現するために、L298N ドライブモジュールを使用して小型 DC モーターを駆動し、実際のファンの動作原理をシミュレートします。 L298N ドライブ モジュールは高電流および高電圧の特性を備えており、モーターの速度と方向を効果的に制御できます。マイコンのIOポートをL298Nドライブモジュールに接続することで、モーターの速度を精密に制御でき、正転、逆転、停止などの動作をサポートします。

このスマートファンプロジェクトには便利な機能がたくさんあります。赤外線リモコンを使用すると、スイッチに触れることなく、いつでもどこでもファンのオン/オフを切り替えることができ、利便性が向上します。速度調整機能により、ユーザーは必要に応じてファンの速度を調整し、理想的な風速効果を得て快適性を向上させることができます。また、タイミング機能も搭載しており、ファンをオフにする時間を設定することで、長時間稼働による無駄なエネルギー消費を避けることができ、より多くの省エネオプションを提供します。

さらに、マイクロコントローラー設計に基づいたスマート ファンには、特定のインテリジェンス機能の可能性もあります。さらなる開発と改善により、温度および湿度センサーを導入して、風速を自動的に調整する機能を実現し、周囲の温度と湿度に応じてファンの速度を自動的に調整し、ユーザーによりインテリジェントでパーソナライズされたエクスペリエンスを提供できます。

スマートファンの設計背景は、人々の日常ニーズとスマートホームの追求に由来しています。マイコン制御と赤外線無線制御技術を活用し、ドライブモジュールの応用と組み合わせることで、パワフルで操作が簡単なスマートファンの実現に成功し、暑い夏でもより快適でインテリジェントな生活体験を楽しむことができます。

画像-20230913160038322

2. プロジェクト全体の設計アイデア

2.1 ハードウェア設計のアイデア

(1) メイン制御チップの選択: メイン制御チップとして STC89C52 を選択しました。 STC89C52 は、十分な演算能力と制御能力を備えた強力で安定したマイクロコントローラーであり、ファン制御に適しています。

(2) 赤外線受信モジュールの選定:赤外線無線制御機能をサポートするため、NECプロト​​コルに適した赤外線受信モジュールを選定しました。このモジュールは、リモコンから送信された赤外線信号を受信し、メイン制御チップで処理するために電気信号に変換できます。

(3) ドライブモジュールの選択: 小型 DC モーターを駆動するには、L298N ドライブモジュールを使用します。 L298N ドライブ モジュールは高電流および高電圧の特性を備えており、モーターの速度と方向を効果的に制御できます。

(4) その他のデバイスの選択:上記のキーデバイスに加えて、必要に応じて適切なセンサー、キースイッチ、表示画面などのコンポーネントを選択し、組み合わせて接続する必要があります。

2.2 ソフトウェア設計のアイデア

(1) 赤外線プロトコルのデコード: まず、赤外線受信モジュールで受信した赤外線信号をデコードし、NEC プロトコルの制御命令を識別するプログラムを作成する必要があります。これらの命令には、スイッチング、速度調整、タイミング制御などの機能が含まれます。

(2) 制御ロジックの設計: 受信した制御命令に従って、対応するファン制御ロジックを実装するプログラムを作成します。例えば、受信したスイッチコマンドに従ってモーターの起動と停止を制御し、速度調整コマンドに従ってモーターの速度変更を制御し、タイミングコマンドに従ってファンの時限停止を設定します。

(3) L298N ドライバモジュールとの通信:メイン制御チップの IO ポートを L298N ドライバモジュールに接続し、L298N ドライバモジュールと通信するプログラムを書き込みます。対応する端子の状態を設定することで、モーターの正転、逆転、停止を制御できます。

(4) ユーザー インターフェイスの設計: 表示画面が必要な場合は、現在のファンの状態、速度、タイミング設定などの情報を表示し、ユーザー操作のフィードバックと表示を提供するシンプルなユーザー インターフェイスを設計できます。

(5) その他の機能強化:温湿度センサーへのアクセスによりインテリジェントに風速を調整する機能を実現するなど、ニーズに応じてさらに機能を追加することができます。

3. ハードウェア接続手順

次の表は、スマート ファン モジュールとマイクロコントローラー間の接続関係を示しています。

モジュール ピンはマイクロコントローラーの IO ポートに接続されます
赤外線受信モジュール P1.0
L298Nドライバーモジュール
これです P2.0
ENB P2.1
1で P2.2
IN2 P2.3
小型DCモーター
フォワード P2.4
逆行する P2.5
停止 P2.6

4. プロジェクトコードの設計

#include <reg51.h>

sbit IN1 = P2^2;
sbit IN2 = P2^3;
sbit ENA = P2^0;
sbit ENB = P2^1;
sbit IR_IN = P1^0;

void delay(unsigned int t) {
    
    
    unsigned int i, j;
    for (i = 0; i < t; i++)
        for (j = 0; j < 1000; j++);
}

void motorControl(int speed, int direction) {
    
    
    switch (direction) {
    
    
        case 1:  // 正转
            IN1 = 1;
            IN2 = 0;
            break;
        case -1:  // 反转
            IN1 = 0;
            IN2 = 1;
            break;
        case 0:  // 停止
            IN1 = 0;
            IN2 = 0;
            break;
    }
    
    // 调整PWM占空比控制速度
    if (speed < 0) speed = 0;
    if (speed > 255) speed = 255;
    ENA = 1;
    ENB = 1;
    delay(speed);
    ENA = 0;
    ENB = 0;
}

sbit IR_IN = P1^0;

void delay(unsigned int t) {
    
    
    unsigned int i, j;
    for (i = 0; i < t; i++)
        for (j = 0; j < 1000; j++);
}

void irInit() {
    
    
    IT0 = 1;  // 设置外部中断0下降沿触发
    EX0 = 1;  // 使能外部中断0
    EA = 1;  // 允许中断
}

void irINT0() interrupt 0 {
    
    
    unsigned int i;
    unsigned char repeatFlag = 0;
    unsigned long codeValue = 0;
    
    delay(16);  // 等待16ms,进入起始位
    
    if (IR_IN == 0) {
    
    
        delay(8);  // 等待8ms,确认起始位
        
        if (IR_IN == 1) {
    
    
            for (i = 0; i < 32; i++) {
    
    
                while (IR_IN == 1);  // 等待低电平的结束位
                delay(3);  // 等待3ms,读取数据位
                
                if (IR_IN == 0) {
    
    
                    codeValue <<= 1;
                } else {
    
    
                    codeValue = (codeValue << 1) | 0x0001;
                }
                
                while (IR_IN == 0);  // 等待高电平的开始位或重复码标志
            }
            
            repeatFlag = codeValue & 0xFF;
            codeValue >>= 8;
            
            // 在这里根据codeValue的值进行控制操作
            // 比如判断codeValue的值对应的指令是开启风扇,则执行相应代码
            
        }
    }
    
    EX0 = 1;  // 再次使能外部中断0
}

void main() {
    
    
    int speed = 0;  // 初始速度为0
    int direction = 0;  // 初始方向为停止
     irInit();
    
    while (1) {
    
    
        if (IR_IN == 0) {
    
    
            // 接收到红外信号
            // 解析红外信号,根据NEC协议得到控制指令
            
            if (控制指令为开启风扇) {
    
    
                direction = 1;  // 设置为正转
            } else if (控制指令为关闭风扇) {
    
    
                direction = 0;  // 设置为停止
            } else if (控制指令为调整风速) {
    
    
                speed = 风速值;  // 设置风速值
            } else if (控制指令为定时切换) {
    
    
                // 执行定时操作,你可以使用定时器/计数器来实现
            }
            
            // 执行风扇控制
            motorControl(speed, direction);
        }
    }
}

5. まとめ

STC89C52 メイン制御チップと L298N ドライバー モジュールを使用することで、インテリジェント ファン システムの設計に成功しました。このシステムは、リモコンから送信された制御命令を受信する赤外線 NEC プロトコルをサポートし、ファンの切り替え、速度調整、タイミング切り替え機能を実現します。

プロジェクトの実装中に、受信した命令を対応する制御操作に変換するための赤外線信号デコード関数が作成されました。 L298Nドライブモジュールの入力端子を制御することで、ファンモーターの正転、逆転、停止などの制御動作を実現します。 PWM技術を使用してデューティサイクルを調整し、ファン速度調整機能を実現します。さらに、タイマー/カウンターによるファンのタイミング切り替え機能が実装されており、ユーザーのニーズに応じてファンを自動的にオンまたはオフにすることができます。

おすすめ

転載: blog.csdn.net/xiaolong1126626497/article/details/134987770