• 方案介绍
  • 相关推荐
申请入驻 产业图谱

基于单片机的简易智能衣架控制系统设计

10/12 13:04
3192
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

基于单片机的简易智能衣架控制系统设计

点击链接下载资料:https://download.csdn.net/download/m0_51061483/92081523


1. 系统功能概述

本系统是一款基于单片机控制的智能衣架控制系统,主要实现对环境湿度和光照强度的自动监测,并根据环境条件控制电机驱动衣架自动伸缩。该系统具有自动与手动两种工作模式,在自动模式下系统可根据实时的湿度与光照强度自动判断是否需要将衣架伸出或收回,从而有效避免衣物因下雨或阴天受潮。在手动模式下,用户可以通过按键自由控制衣架伸出或收回,满足个性化需求。

系统主要功能如下:

  1. 环境监测功能:系统通过湿度传感器光照传感器实时测量环境湿度与光照强度。
  2. 自动控制功能:当湿度低于30%且光照强度大于50Lux时,系统自动控制电机将衣架伸出;当湿度高于30%或光照低于50Lux时,系统自动控制电机将衣架收回。
  3. 手动控制功能:在手动模式下,用户可通过按键操作控制电机正反转,手动调节衣架的伸出与收回。
  4. 显示与提示功能:系统通过LCD1602液晶显示屏显示当前模式(自动或手动)、湿度值、光照强度以及衣架状态(伸出或收回)。
  5. 安全保护:系统通过程序逻辑避免频繁切换伸缩状态,防止电机过度运行导致机械结构损坏。

本系统具有结构简单、控制精确、运行可靠、成本低廉等优点,可广泛应用于家庭智能晾衣系统、阳台自动化控制等场景。


2. 系统电路设计

本系统的硬件设计STC89C52单片机为核心,外接湿度传感器、光照传感器、LCD1602液晶显示模块、按键输入模块、电机驱动模块以及电源电路组成。整个系统通过单片机的ADC采样与I/O口控制实现智能衣架的自动化管理。以下将从各模块进行详细说明。

2.1 主控模块设计

主控模块采用 STC89C52 单片机 作为系统核心。STC89C52为兼容MCS-51系列的高性能单片机,具有8KB Flash程序存储器、256字节内部RAM、丰富的I/O端口资源、3个定时器/计数器以及多个中断源,能够很好地满足本系统的数据采集与控制要求。

单片机主要功能:

  • 接收来自湿度和光照传感器的模拟信号,并通过ADC模块进行数据转换;
  • 根据当前模式与传感器数据,判断是否需要控制电机驱动衣架伸缩;
  • 控制LCD1602显示实时数据与系统状态;
  • 接收按键输入信号,实现模式切换与手动控制功能。

2.2 湿度检测模块设计

湿度检测模块选用 HS1101 或 DHT11 湿度传感器
若采用DHT11,该模块可直接输出数字信号,单片机通过单总线协议采集湿度数据;若采用模拟湿度传感器(如HS1101+运放电路),则输出为与湿度成比例的模拟电压信号,需通过A/D转换模块(如PCF8591)采集。

在本系统中,为简化电路设计与程序编写,选择数字型传感器DHT11,其测量范围为20%RH~90%RH,测量精度±5%RH,能够满足普通家庭使用需求。单片机定时读取湿度值,并与设定阈值30%RH进行比较,判断是否触发衣架收回动作。

2.3 光照检测模块设计

光照检测模块采用 光敏电阻(LDR)与分压电路 组成。光敏电阻的阻值随光照强度的变化而变化,在强光下阻值变小,在弱光下阻值变大。通过与固定电阻串联构成分压电路,单片机通过ADC通道读取分压电压,从而计算出光照强度。

系统中设置光照阈值为50Lux,当检测值高于50Lux且湿度较低时,系统判断为晴朗天气,自动控制电机将衣架伸出。

2.4 电机驱动模块设计

电机驱动部分是系统的执行机构,负责衣架的伸缩控制。由于单片机I/O口无法直接驱动直流电机,因此需要通过 L298N 双路直流电机驱动模块 实现电流放大控制。

控制逻辑如下:

  • 当需伸出衣架时,单片机输出高低电平控制L298N输入端,使电机正转;
  • 当需收回衣架时,单片机反向输出控制信号,使电机反转;
  • 当衣架停止运行时,输出低电平关闭驱动信号。

此外,为防止电机频繁启停导致机械抖动,程序中加入了防抖延时与保护逻辑。

2.5 按键控制模块设计

按键模块主要用于模式切换与手动控制。系统设计三个按键:

  1. 模式切换键(AUTO/MANU);
  2. 手动伸出键(EXTEND);
  3. 手动收回键(RETRACT)。

当系统处于自动模式时,按键仅可切换模式;当处于手动模式时,用户可通过EXTEND和RETRACT按键实现对衣架伸缩的直接控制。

2.6 显示模块设计

显示部分采用 LCD1602液晶模块,用于实时显示系统工作状态、湿度值、光照强度值以及当前模式。LCD1602通过4位或8位数据总线与单片机相连,显示内容包括:

MODE: AUTO
H: 25%  L: 80Lux
STATUS: EXTENDING

2.7 电源模块设计

系统电源由5V直流电源供电,单片机与传感器模块均工作在5V电压下,电机通过L298N模块独立供电,电压范围为5V~12V,确保电机在不同负载下能稳定运行。


3. 程序设计

程序设计是本系统的核心部分,主要包括传感器数据采集、模式切换、自动控制逻辑、电机驱动与显示更新等。程序采用C语言在Keil环境下编写,并通过ISP下载器烧录至单片机。

3.1 主程序设计

主程序主要负责系统初始化与主循环逻辑控制,包括各模块初始化、模式判断、数据采集与执行控制。

#include <reg52.h>
#include "lcd1602.h"
#include "dht11.h"
#include "adc.h"
#include "motor.h"
#include "key.h"

unsigned char mode = 0; // 0: auto 1: manual
unsigned char humidity = 0;
unsigned int light = 0;

void main() {
    LCD_Init();
    DHT11_Init();
    ADC_Init();
    Motor_Stop();
    LCD_ShowString(0,0,"Smart Hanger");
    while(1) {
        Key_Scan();
        humidity = DHT11_Read();
        light = ADC_Read(0);
        LCD_Display(mode, humidity, light);
        if(mode == 0)
            Auto_Control(humidity, light);
        else
            Manual_Control();
    }
}

主程序通过不断循环采集湿度与光照数据,并根据当前模式调用不同控制函数。

3.2 自动控制程序设计

自动控制模块根据湿度与光照强度进行判断。当湿度低于30%且光照强度大于50Lux时,执行伸出动作;否则执行收回动作。

void Auto_Control(unsigned char hum, unsigned int light) {
    if(hum < 30 && light > 50)
        Motor_Forward();  // 伸出
    else
        Motor_Backward(); // 收回
}

为防止频繁切换状态,程序中可加入滞回控制或延时判断逻辑。

3.3 手动控制程序设计

手动控制模块根据按键输入控制电机运行。

void Manual_Control() {
    if(Key_EXTEND == 0)
        Motor_Forward();
    else if(Key_RETRACT == 0)
        Motor_Backward();
    else
        Motor_Stop();
}

3.4 电机控制程序设计

电机控制函数封装对L298N的操作:

sbit IN1 = P1^0;
sbit IN2 = P1^1;

void Motor_Forward() {
    IN1 = 1; IN2 = 0;
}
void Motor_Backward() {
    IN1 = 0; IN2 = 1;
}
void Motor_Stop() {
    IN1 = 0; IN2 = 0;
}

3.5 按键扫描程序设计

按键扫描模块用于检测用户输入并切换模式或控制手动操作。

void Key_Scan() {
    if(Key_MODE == 0) {
        delay_ms(10);
        if(Key_MODE == 0)
            mode = !mode;
        while(Key_MODE == 0);
    }
}

3.6 显示程序设计

LCD显示模块实时显示工作模式与环境数据。

void LCD_Display(unsigned char mode, unsigned char hum, unsigned int light) {
    LCD_SetCursor(0,0);
    if(mode == 0)
        LCD_ShowString(0,0,"MODE: AUTO");
    else
        LCD_ShowString(0,0,"MODE: MANU");
    LCD_SetCursor(1,0);
    LCD_ShowNum(1,0,hum,2);
    LCD_ShowString(1,3,"%  ");
    LCD_ShowNum(1,7,light,3);
    LCD_ShowString(1,10,"Lux");
}

4. 系统运行原理与调试结果

当系统上电后,LCD显示初始化信息,默认进入自动模式。湿度传感器与光照传感器开始工作,实时采集环境信息。

  • 当环境干燥且光照强时,系统判断为晴天,控制电机正转将衣架伸出;
  • 当检测到湿度上升或光照减弱,系统判断为阴雨天气,控制电机反转将衣架收回。
    用户可通过按键切换至手动模式,手动控制衣架的伸缩状态。

通过多次测试发现:系统响应灵敏、控制可靠,在不同湿度与光照条件下均能正确作出动作判断。程序中设置的滞回区有效避免了状态抖动问题。整体运行稳定,能够实现预期的智能控制效果。

相关推荐