基于 STM32 的智能洗衣机控制系统设计与实现
引言
随着智能家居的普及,传统洗衣机正逐步向 “智能化、自动化、节能化” 升级。STM32 系列微控制器凭借其高性能、低功耗、丰富外设(ADC、PWM、GPIO 等)的优势,成为智能家电控制的核心选择。本文以STM32F103C8T6为控制核心,设计一套集 “自动进水、水位检测、温度控制、智能洗涤 / 脱水、状态显示、故障报警” 于一体的智能洗衣机控制系统,详细阐述硬件选型、接线设计、软件流程及代码实现。
一、硬件系统设计
硬件设计是系统运行的基础,需围绕 “功能需求 - 模块选型 - 引脚接线” 逻辑展开,确保各模块与 STM32 稳定通信,满足洗衣机核心功能。
1.1 核心芯片选型:STM32F103C8T6
选择 STM32F103C8T6 作为主控芯片,理由如下:
- 性能充足:基于 ARM Cortex-M3 内核,最高主频 72MHz,支持 12 位 ADC(水位 / 温度检测)、多通道 PWM(电机转速控制)、I2C/SPI(显示模块通信),满足洗衣机多任务控制需求;
- 资源匹配:64KB Flash(存储程序)、20KB RAM(运行数据),无需扩展存储;
- 性价比高:LQFP48 封装(48 引脚),引脚资源丰富且成本低,适合家电量产场景;
- 开发便捷:支持 Keil MDK、STM32CubeIDE 等开发环境,配套标准库 / HAL 库,资料丰富。
1.2 功能模块选型
根据智能洗衣机的核心功能(进水、洗涤、脱水、检测、显示、交互),选型如下表:
功能需求 | 模块型号 | 选型理由 |
---|---|---|
进水控制 | 12V 直流电磁阀 | 通断控制自来水进水,响应速度快(<0.5s),适配家庭 220V 转 12V 电源 |
排水控制 | 12V 直流排水泵 | 强制排水,避免积水,与电磁阀共用 12V 电源,控制逻辑简单(高低电平触发) |
洗涤 / 脱水电机 | 12V 直流电机 + L298N | L298N 为双 H 桥驱动芯片,支持电机正反转(洗涤正反转)、PWM 调速(脱水转速),兼容 3.3V 控制信号 |
水位检测 | HW-03 水位传感器 | 模拟量输出(0-5V),通过 ADC 采集水位高度,检测范围 0-10cm(适配洗衣机内桶),成本低 |
温度检测 | DS18B20 | 单总线数字传感器,测量范围 - 55℃~125℃,精度 ±0.5℃,无需 ADC,直接与 GPIO 通信 |
状态显示 | OLED12864(I2C) | 128*64 分辨率,支持显示水位、温度、洗涤模式、剩余时间,I2C 通信仅需 2 根线,节省引脚 |
人机交互 | 4 路独立按键 | 实现 “电源 / 启动、模式选择(标准 / 快速 / 轻柔)、水位设定、温度设定” 功能 |
故障报警 | 有源蜂鸣器 | 3.3V 驱动,高低电平触发,用于进水超时、温度过高、电机故障等异常提醒 |
1.3 硬件接线设计
需注意 STM32 为 3.3V 电平,部分模块(如 HW-03 水位传感器输出 0-5V)需分压处理,避免损坏芯片。接线采用 “功能模块 - STM32 引脚 - 备注” 表格清晰呈现,供电部分:STM32 用 5V USB 供电(经板载 LDO 转 3.3V),电机 / 电磁阀 / 排水泵用 12V 独立电源供电。
功能模块 | 模块引脚 | STM32 引脚 | 备注(电平 / 功能) |
---|---|---|---|
水位传感器(HW-03) | VCC | 5V | 模块供电 |
GND | GND | 共地 | |
AO(模拟输出) | PA0 | 需串联 2 个 10KΩ 电阻分压(5V→2.5V) | |
温度传感器(DS18B20) | VCC | 3.3V | 模块供电 |
GND | GND | 共地 | |
DQ(数据) | PB0 | 需串联 4.7KΩ 上拉电阻 | |
电机驱动(L298N) | ENA(使能) | PB1 | PWM 输出(控制电机转速) |
IN1(方向 1) | PB2 | GPIO 输出(高 / 低电平控制转向) | |
IN2(方向 2) | PB3 | GPIO 输出(高 / 低电平控制转向) | |
GND | GND | 与 STM32 共地,与 12V 电源共地 | |
电磁阀 | 控制端 | PB4 | GPIO 输出(高电平打开,低电平关闭) |
排水泵 | 控制端 | PB5 | GPIO 输出(高电平启动,低电平停止) |
OLED12864(I2C) | SDA(数据) | PB6 | I2C_SDA,需串联 1KΩ 上拉电阻 |
SCL(时钟) | PB7 | I2C_SCL,需串联 1KΩ 上拉电阻 | |
VCC | 3.3V | 模块供电 | |
GND | GND | 共地 | |
独立按键(4 路) | 按键 1(电源 / 启动) | PC0 | 下拉输入(按下为高电平) |
按键 2(模式选择) | PC1 | 下拉输入(按下为高电平) | |
按键 3(水位设定) | PC2 | 下拉输入(按下为高电平) | |
按键 4(温度设定) | PC3 | 下拉输入(按下为高电平) | |
蜂鸣器 |