# chest_model1 **Repository Path**: dsbj_1/chest_model1 ## Basic Information - **Project Name**: chest_model1 - **Description**: 胸腔控制板模块1 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-11 - **Last Updated**: 2026-04-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 模块一:胸腔控制模块 基于Arduino Nano的胸腔控制模块实现代码。 ## 功能列表 1. **双风扇闭环控制** - 两个24V 4线风扇的共用PWM控制和独立电源使能,转速监测 2. **WS2812 RGB LED灯带控制** - 急停时显示白色/红色 3. **急停检测** - 隔离电压检测(单路ADC),50%阈值,250ms延时触发 4. **GPIO预留** - 多个GPIO引脚预留 5. **隔离UART转RS422接口预留** - 使用RE#和DE控制 ## 硬件要求 - **主控**: Arduino Nano - **温度传感器**: 使用ADC输入的温度传感器(2个,ADC_TEMP1和ADC_TEMP2) - 注意:如果使用K型热电偶,硬件上应该有转换电路输出模拟电压 - **风扇**: 24V 4线风扇(2个) - 共用PWM控制信号 - 独立的电源使能控制(FAN1_PWR_EN, FAN2_PWR_EN) - 独立的转速反馈(MCU_FAN1_FG, MCU_FAN2_FG) - **显示屏**: I2C LCD1602(16列x2行) - **LED**: WS2812 RGB LED灯带(数据引脚DIN) - **急停信号**: 12-24V隔离输入,使用ADC_VOLT单路检测 ## 引脚定义(根据硬件引脚图) ⚠️ **重要**: 以下引脚定义基于硬件接头的信号名称,**实际使用时需要根据PCB原理图确认具体的Arduino Nano引脚对应关系**。详见 `引脚映射说明.md`。 ### 温度传感器 (ADC输入) - 温度传感器1: ADC_TEMP1(代码中使用A0,需确认) - 温度传感器2: ADC_TEMP2(代码中使用A1,需确认) ### 风扇控制 - 共用PWM: MCU_FAN_PWM(代码中使用引脚8,需确认) - 风扇1转速反馈: MCU_FAN1_FG(代码中使用引脚5,需确认,中断引脚) - 风扇2转速反馈: MCU_FAN2_FG(代码中使用引脚6,需确认,中断引脚) - 风扇1电源使能: FAN1_PWR_EN(代码中使用引脚12,需确认) - 风扇2电源使能: FAN2_PWR_EN(代码中使用引脚14/A0,需确认) ### WS2812 LED灯带 - 数据线: DIN(代码中使用引脚6/D6,U4 Pin 9) ### 急停检测 - 电压检测: ADC_VOLT(代码中使用A6,需确认,单路ADC输入) ### I2C LCD - SDA: A4(Arduino Nano标准I2C) - SCL: A5(Arduino Nano标准I2C) - 地址: 0x27(可调整,常见为0x27或0x3F) ### RS422接口控制 - RE#: 接收使能(低有效,代码中使用引脚10,需确认) - DE: 驱动使能(代码中使用引脚11,需确认) - RX/TX: 需要根据实际硬件连接确认 ### 预留GPIO - D4: 代码中使用引脚4 - A3: 代码中使用A3 - A7: 代码中使用A7 ## 风扇控制逻辑 基于两个温度传感器的最大值进行PWM控制: | 温度范围 | PWM输出 | 说明 | |---------|---------|------| | < 25°C | 0% (0) | 风扇不工作(电源使能关闭) | | 25-30°C | 10% (25) | 低速运行 | | 30-40°C | 20% (51) | 中低速运行 | | 40-55°C | 50% (127) | 中速运行 | | ≥ 55°C | 100% (255) | 全速运行 | **控制方式**: - 使用共用的PWM信号控制两个风扇的速度 - 通过FAN1_PWR_EN和FAN2_PWR_EN独立控制每个风扇的电源使能 - 当PWM > 0时,使能风扇电源;PWM = 0时,关闭风扇电源 **注意**: 当风扇PWM引脚悬空时,风扇会以全功率运行(保护机制)。MCU上电时可能会有电压跌落,请确保24V-5V模块能够承受这个冲击。 ## 急停检测逻辑 - **输入电压**: 12-24V(当前使用24V) - **检测方式**: 单路ADC电压检测(ADC_VOLT) - **触发阈值**: 目标电压的50%(24V时为12V) - **触发延时**: 电压低于阈值持续超过250ms - **隔离方式**: 需要使用光耦或隔离运放进行隔离,然后通过分压电路连接到ADC输入 ## WS2812 LED控制 - **正常状态**: 所有LED关闭(黑色) - **急停触发**: 所有LED显示白色(RGB全亮),如果效果不理想则显示红色 - **LED数量**: 14个灯珠(在代码中通过`NUM_LEDS`宏定义) - **数据引脚**: D6(U4 Pin 9,DIN信号) ## 所需库 在Arduino IDE中安装以下库: 1. **LiquidCrystal_I2C** - I2C LCD库 - 安装方法: 工具 -> 管理库 -> 搜索 "LiquidCrystal_I2C" - 或使用GitHub: https://github.com/johnrickman/LiquidCrystal_I2C 2. **FastLED** - WS2812 LED灯带库 - 安装方法: 工具 -> 管理库 -> 搜索 "FastLED" - 或使用GitHub: https://github.com/FastLED/FastLED - 作者: FastLED Team ## 硬件连接注意事项 ### 风扇连接 - 两个风扇共用PWM控制信号(MCU_FAN_PWM) - 每个风扇有独立的电源使能控制(FAN1_PWR_EN, FAN2_PWR_EN) - 每个风扇有独立的转速反馈线(MCU_FAN1_FG, MCU_FAN2_FG) - 转速反馈线通常是开漏输出,需要上拉电阻(Arduino内部上拉已启用) - **重要**: 风扇电源(24V)必须与Arduino逻辑电源(5V)隔离 ### 温度传感器连接 - 温度传感器使用ADC输入(ADC_TEMP1, ADC_TEMP2) - 如果使用K型热电偶,硬件上应该有转换电路(如MAX6675或MAX31855)输出模拟电压 - 或者使用其他类型的温度传感器(如LM35、热敏电阻等) - **重要**: 代码中的温度转换公式需要根据实际使用的传感器类型调整 ### WS2812 LED连接 - WS2812灯带数据线连接到DIN引脚(D6,U4 Pin 9) - 需要5V电源供电(灯带电源,通常需要外部电源,电流较大) - 数据线通常不需要上拉电阻(WS2812内部已有) - 如果灯带较长或距离较远,建议在数据线靠近Arduino处添加220-470Ω串联电阻 - 灯带数量:14个灯珠 - 使用FastLED库控制 ### 急停信号连接 - 需要使用光耦(如PC817)或隔离运放进行隔离 - 信号经过隔离后通过分压电阻连接到ADC_VOLT输入 - 分压比例需要根据实际电压调整代码中的换算系数 - 代码中假设分压比为5:1(24V输入对应5V ADC输入),需要根据实际电路调整 ### LCD1602连接 - LCD1602通过I2C转接板连接(16列x2行) - 使用标准I2C接口:SDA (A4), SCL (A5) - 默认I2C地址为0x27,如果屏幕不显示,尝试0x3F(在代码中修改LCD_ADDRESS) - 需要5V供电和GND连接 ### RS422连接 - RS422接口使用RE#(接收使能,低有效)和DE(驱动使能)控制收发方向 - 接收模式: RE# = LOW, DE = LOW - 发送模式: RE# = HIGH, DE = HIGH - RX/TX引脚需要根据实际硬件连接确认 ## 编译和上传 1. 打开Arduino IDE 2. 选择开发板: 工具 -> 开发板 -> Arduino Nano 3. 选择处理器: 工具 -> 处理器 -> ATmega328P (Old Bootloader) 或 ATmega328P,根据你的Nano版本选择 4. 选择端口: 工具 -> 端口 -> 选择对应的COM端口 5. 安装所需的库(见上方"所需库"部分) 6. **重要**: 根据实际PCB原理图调整代码中的引脚定义(见 `引脚映射说明.md`) 7. 打开 `chest_control_module.ino` 8. 根据实际使用的温度传感器类型,调整温度转换公式 9. 根据实际分压电路,调整急停电压检测的换算系数 10. 根据实际LED数量,调整`NUM_LEDS`宏定义 11. 点击"验证/编译"检查代码 12. 点击"上传"将代码上传到Arduino Nano ## 调试 - 打开串口监视器(波特率9600)查看调试信息 - LCD屏幕会显示当前温度和风扇转速 - 如果温度显示异常,检查ADC连接和温度转换公式 - 如果风扇不转或转速异常,检查PWM和电源使能信号 - 如果风扇转速为0,检查转速反馈线连接和中断设置 - 如果LED不亮,检查数据线连接和电源 - 如果急停不响应,检查隔离电路和分压电阻,调整代码中的阈值和换算系数 ## 重要提示 ⚠️ **引脚映射需要确认**: 代码中的引脚定义是基于硬件接头信号名称的推测,**必须根据实际PCB原理图确认所有引脚的实际对应关系**。 ⚠️ **温度转换公式**: 代码中提供了基本的ADC读取框架,但温度转换公式需要根据实际使用的传感器类型调整。如果使用K型热电偶,需要查表或使用多项式近似。 ⚠️ **急停电压检测**: 代码中假设了分压比为5:1,需要根据实际分压电路调整换算系数。 详见 `引脚映射说明.md` 获取详细的引脚映射信息和注意事项。 ## 版本历史 - v2.0 (当前版本) - 根据实际硬件引脚图重新设计 - 温度传感器改为ADC输入 - LED改为WS2812灯带 - 风扇控制改为共用PWM + 独立电源使能 - RS422使用RE#和DE控制 - v1.0 - 初始版本(基于假设的引脚定义) - MAX6675 SPI温度传感器 - 独立PWM控制 - 24V RGB LED ## 许可证 本项目仅供内部使用。