EAGLE 9.6.2 #Encoding UTF-8 $SCHEMATIC Name "Cleaning_Robot_Path_Planning" Date "2025-07-07" Revision "1.1" Description "清洁机器人清扫路径规划系统完整原理图" $END_SCHEMATIC $LIBRARY Library "cleaning_robot_lib" # 主控模块STM32F103ZET6 $PACKAGE "STM32F103ZET6" (0 0) rectangle (120 100) 0.25 0 (10 10) smd 1.5 1.5 0.25 0 "VCC_3.3V" 1 (10 20) smd 1.5 1.5 0.25 0 "GND" 1 (30 10) smd 1.5 1.5 0.25 0 "PA0" 1 # 超声波传感器1 Trig (30 20) smd 1.5 1.5 0.25 0 "PA1" 1 # 超声波传感器1 Echo (30 30) smd 1.5 1.5 0.25 0 "PA2" 1 # 超声波传感器2 Trig (30 40) smd 1.5 1.5 0.25 0 "PA3" 1 # 超声波传感器2 Echo (40 10) smd 1.5 1.5 0.25 0 "PB0" 1 # 红外传感器1 (40 20) smd 1.5 1.5 0.25 0 "PB1" 1 # 红外传感器2 (40 30) smd 1.5 1.5 0.25 0 "PB2" 1 # 红外传感器3 (40 40) smd 1.5 1.5 0.25 0 "PB3" 1 # 红外传感器4 (50 10) smd 1.5 1.5 0.25 0 "SPI1_MOSI" 1 # NRF24L01 (50 20) smd 1.5 1.5 0.25 0 "SPI1_MISO" 1 (50 30) smd 1.5 1.5 0.25 0 "SPI1_SCK" 1 (50 40) smd 1.5 1.5 0.25 0 "SPI1_NSS" 1 (60 10) smd 1.5 1.5 0.25 0 "TIM1_CH1" 1 # 左电机PWM (60 20) smd 1.5 1.5 0.25 0 "TIM1_CH2" 1 # 右电机PWM (60 30) smd 1.5 1.5 0.25 0 "TIM2_CH1" 1 # 滚刷PWM (70 10) smd 1.5 1.5 0.25 0 "I2C1_SDA" 1 # MPU6050 (70 20) smd 1.5 1.5 0.25 0 "I2C1_SCL" 1 (70 30) smd 1.5 1.5 0.25 0 "USART1_TX" 1 # 调试串口 (70 40) smd 1.5 1.5 0.25 0 "USART1_RX" 1 $END_PACKAGE # 超声波传感器HC-SR04 $PACKAGE "HC_SR04" (0 0) rectangle (50 30) 0.25 0 (10 10) smd 1.5 1.5 0.25 0 "VCC" 1 (20 10) smd 1.5 1.5 0.25 0 "GND" 1 (30 10) smd 1.5 1.5 0.25 0 "Trig" 1 (40 10) smd 1.5 1.5 0.25 0 "Echo" 1 $END_PACKAGE # 红外传感器模块 $PACKAGE "IR_SENSOR" (0 0) rectangle (30 20) 0.25 0 (10 10) smd 1.5 1.5 0.25 0 "VCC" 1 (20 10) smd 1.5 1.5 0.25 0 "GND" 1 (15 5) smd 1.5 1.5 0.25 0 "OUT" 1 $END_PACKAGE # 双电机驱动模块TB6612FNG $PACKAGE "TB6612FNG" (0 0) rectangle (80 60) 0.25 0 (10 10) smd 1.5 1.5 0.25 0 "VM" 1 # 电机电源(12V) (10 20) smd 1.5 1.5 0.25 0 "VCC" 1 # 逻辑电源(3.3V) (10 30) smd 1.5 1.5 0.25 0 "GND" 1 (25 10) smd 1.5 1.5 0.25 0 "AIN1" 1 # 左电机方向1 (25 20) smd 1.5 1.5 0.25 0 "AIN2" 1 # 左电机方向2 (25 30) smd 1.5 1.5 0.25 0 "BIN1" 1 # 右电机方向1 (25 40) smd 1.5 1.5 0.25 0 "BIN2" 1 # 右电机方向2 (40 10) smd 1.5 1.5 0.25 0 "PWMA" 1 # 左电机PWM (40 20) smd 1.5 1.5 0.25 0 "PWMB" 1 # 右电机PWM (40 30) smd 1.5 1.5 0.25 0 "STBY" 1 # 待机控制 (60 10) smd 2 2 0.25 0 "AO1" 1 # 左电机输出1 (60 20) smd 2 2 0.25 0 "AO2" 1 # 左电机输出2 (60 30) smd 2 2 0.25 0 "BO1" 1 # 右电机输出1 (60 40) smd 2 2 0.25 0 "BO2" 1 # 右电机输出2 $END_PACKAGE # 滚刷电机驱动DRV8833 $PACKAGE "DRV8833" (0 0) rectangle (60 40) 0.25 0 (10 10) smd 1.5 1.5 0.25 0 "VM" 1 # 电机电源(12V) (10 20) smd 1.5 1.5 0.25 0 "VCC" 1 # 逻辑电源(3.3V) (10 30) smd 1.5 1.5 0.25 0 "GND" 1 (25 10) smd 1.5 1.5 0.25 0 "IN1" 1 # 滚刷方向1 (25 20) smd 1.5 1.5 0.25 0 "IN2" 1 # 滚刷方向2 (25 30) smd 1.5 1.5 0.25 0 "ENA" 1 # 滚刷PWM (45 10) smd 2 2 0.25 0 "OUT1" 1 # 滚刷输出1 (45 20) smd 2 2 0.25 0 "OUT2" 1 # 滚刷输出2 $END_PACKAGE # 惯性测量单元MPU6050 $PACKAGE "MPU6050" (0 0) rectangle (40 30) 0.25 0 (10 10) smd 1.5 1.5 0.25 0 "VCC" 1 (20 10) smd 1.5 1.5 0.25 0 "GND" 1 (10 15) smd 1.5 1.5 0.25 0 "SDA" 1 (20 15) smd 1.5 1.5 0.25 0 "SCL" 1 (10 20) smd 1.5 1.5 0.25 0 "INT" 1 # 中断输出 $END_PACKAGE # 无线通信模块NRF24L01 $PACKAGE "NRF24L01" (0 0) rectangle (50 30) 0.25 0 (10 10) smd 1.5 1.5 0.25 0 "VCC" 1 (20 10) smd 1.5 1.5 0.25 0 "GND" 1 (10 15) smd 1.5 1.5 0.25 0 "CE" 1 # 芯片使能 (20 15) smd 1.5 1.5 0.25 0 "CSN" 1 # SPI片选 (30 15) smd 1.5 1.5 0.25 0 "SCK" 1 # SPI时钟 (40 15) smd 1.5 1.5 0.25 0 "MOSI" 1 # SPI主出从入 (10 20) smd 1.5 1.5 0.25 0 "MISO" 1 # SPI主入从出 (20 20) smd 1.5 1.5 0.25 0 "IRQ" 1 # 中断输出 $END_PACKAGE # 电源管理模块 $PACKAGE "POWER_MANAGER" (0 0) rectangle (60 50) 0.25 0 (10 10) smd 2 2 0.25 0 "VBAT" 1 # 电池输入(18650锂电池组) (10 20) smd 1.5 1.5 0.25 0 "GND" 1 (10 30) smd 1.5 1.5 0.25 0 "5V_OUT" 1 # 5V输出 (10 40) smd 1.5 1.5 0.25 0 "3V3_OUT" 1 # 3.3V输出 (30 10) smd 1.5 1.5 0.25 0 "CHG" 1 # 充电指示 (30 20) smd 1.5 1.5 0.25 0 "PWR_EN" 1 # 电源使能 $END_PACKAGE # 电池保护电路 $PACKAGE "BATTERY_PROTECTION" (0 0) rectangle (40 30) 0.25 0 (10 10) smd 2 2 0.25 0 "BATT+" 1 # 电池正极 (10 20) smd 2 2 0.25 0 "BATT-" 1 # 电池负极 (30 10) smd 2 2 0.25 0 "OUT+" 1 # 输出正极 (30 20) smd 2 2 0.25 0 "OUT-" 1 # 输出负极 $END_PACKAGE $END_LIBRARY $DESIGN $NET "3V3" (STM32F103ZET6 VCC_3.3V) (MPU6050 VCC) (NRF24L01 VCC) (TB6612FNG VCC) (DRV8833 VCC) (POWER_MANAGER 3V3_OUT) $END_NET $NET "GND" (STM32F103ZET6 GND) (HC_SR04 GND) (IR_SENSOR GND) (TB6612FNG GND) (DRV8833 GND) (MPU6050 GND) (NRF24L01 GND) (POWER_MANAGER GND) (BATTERY_PROTECTION OUT-) $END_NET $NET "5V" (HC_SR04 VCC) (IR_SENSOR VCC) (POWER_MANAGER 5V_OUT) $END_NET $NET "VBAT" (BATTERY_PROTECTION BATT+) (POWER_MANAGER VBAT) $END_NET $NET "USART1_TX" (STM32F103ZET6 USART1_TX) $END_NET $NET "USART1_RX" (STM32F103ZET6 USART1_RX) $END_NET $NET "ULTRASONIC1_TRIG" (STM32F103ZET6 PA0) (HC_SR04 Trig) $END_NET $NET "ULTRASONIC1_ECHO" (STM32F103ZET6 PA1) (HC_SR04 Echo) $END_NET $NET "ULTRASONIC2_TRIG" (STM32F103ZET6 PA2) (HC_SR04 Trig) $END_NET $NET "ULTRASONIC2_ECHO" (STM32F103ZET6 PA3) (HC_SR04 Echo) $END_NET $NET "IR_SENSOR1" (STM32F103ZET6 PB0) (IR_SENSOR OUT) $END_NET $NET "IR_SENSOR2" (STM32F103ZET6 PB1) (IR_SENSOR OUT) $END_NET $NET "IR_SENSOR3" (STM32F103ZET6 PB2) (IR_SENSOR OUT) $END_NET $NET "IR_SENSOR4" (STM32F103ZET6 PB3) (IR_SENSOR OUT) $END_NET $NET "LEFT_MOTOR_PWM" (STM32F103ZET6 TIM1_CH1) (TB6612FNG PWMA) $END_NET $NET "RIGHT_MOTOR_PWM" (STM32F103ZET6 TIM1_CH2) (TB6612FNG PWMB) $END_NET $NET "LEFT_MOTOR_DIR1" (STM32F103ZET6 PA4) (TB6612FNG AIN1) $END_NET $NET "LEFT_MOTOR_DIR2" (STM32F103ZET6 PA5) (TB6612FNG AIN2) $END_NET $NET "RIGHT_MOTOR_DIR1" (STM32F103ZET6 PA6) (TB6612FNG BIN1) $END_NET $NET "RIGHT_MOTOR_DIR2" (STM32F103ZET6 PA7) (TB6612FNG BIN2) $END_NET $NET "BRUSH_MOTOR_PWM" (STM32F103ZET6 TIM2_CH1) (DRV8833 ENA) $END_NET $NET "BRUSH_MOTOR_DIR1" (STM32F103ZET6 PB4) (DRV8833 IN1) $END_NET $NET "BRUSH_MOTOR_DIR2" (STM32F103ZET6 PB5) (DRV8833 IN2) $END_NET $NET "I2C1_SDA" (STM32F103ZET6 I2C1_SDA) (MPU6050 SDA) $END_NET $NET "I2C1_SCL" (STM32F103ZET6 I2C1_SCL) (MPU6050 SCL) $END_NET $NET "NRF_CE" (STM32F103ZET6 PB6) (NRF24L01 CE) $END_NET $NET "NRF_CSN" (STM32F103ZET6 SPI1_NSS) (NRF24L01 CSN) $END_NET $NET "SPI1_SCK" (STM32F103ZET6 SPI1_SCK) (NRF24L01 SCK) $END_NET $NET "SPI1_MOSI" (STM32F103ZET6 SPI1_MOSI) (NRF24L01 MOSI) $END_NET $NET "SPI1_MISO" (STM32F103ZET6 SPI1_MISO) (NRF24L01 MISO) $END_NET $NET "MOTOR_POWER" (POWER_MANAGER VBAT) (TB6612FNG VM) (DRV8833 VM) $END_NET $NET "POWER_ENABLE" (STM32F103ZET6 PC13) (POWER_MANAGER PWR_EN) $END_NET $END_DESIGN $INSTANCE (STM32F103ZET6 "U1" (100 100) 0) (HC_SR04 "S1" (200 80) 0) # 前方超声波 (HC_SR04 "S2" (200 120) 0) # 侧方超声波 (IR_SENSOR "IR1" (250 70) 0) # 前左红外 (IR_SENSOR "IR2" (250 90) 0) # 前右红外 (IR_SENSOR "IR3" (250 110) 0) # 后左红外 (IR_SENSOR "IR4" (250 130) 0) # 后右红外 (TB6612FNG "U2" (300 100) 0) # 驱动电机控制 (DRV8833 "U3" (300 150) 0) # 滚刷电机控制 (MPU6050 "U4" (350 100) 0) # 姿态传感器 (NRF24L01 "U5" (350 150) 0) # 无线通信 (POWER_MANAGER "U6" (150 50) 0) # 电源管理 (BATTERY_PROTECTION "U7" (100 50) 0) # 电池保护 $END_INSTANCE
时间: 2025-07-24 09:36:56 浏览: 20
<think>我们正在设计一个基于STM32F103ZET6的清洁机器人路径规划系统的硬件。根据用户需求,需要包括以下模块:
1. 主控模块:STM32F103ZET6
2. 传感器:超声波传感器(测距)、红外传感器(障碍检测)、MPU6050(姿态感知)
3. 无线模块:NRF24L01(无线通信)
4. 电机驱动:TB6612或DRV8833(驱动电机)
5. 电源管理:为整个系统提供稳定电源
接下来,我们将逐一设计各模块的电路连接。
### 1. 主控模块:STM32F103ZET6
STM32F103ZET6是主控制器,负责处理传感器数据、执行路径规划算法并控制电机。该芯片具有丰富的外设资源,包括多个ADC、定时器、USART、SPI、I2C等。
### 2. 传感器模块
#### a) 超声波传感器(例如HC-SR04)
- 工作原理:通过Trig引脚触发测距,Echo引脚返回高电平脉冲,脉冲宽度与距离成正比。
- 连接方式:
- Trig引脚 -> 连接到STM32的任意GPIO(输出模式)
- Echo引脚 -> 连接到STM32的任意GPIO(输入模式,可配置为外部中断或输入捕获)
- 注意:多个超声波传感器时,需要多个GPIO,或者使用多路复用器。
#### b) 红外传感器(例如红外避障模块)
- 通常输出数字信号(检测到障碍时输出低电平或高电平)。
- 连接方式:输出引脚 -> 连接到STM32的GPIO(输入模式)。
#### c) MPU6050(六轴加速度计和陀螺仪)
- 通信接口:I2C
- 连接方式:
- SCL -> STM32的I2C1_SCL (PB6) 或 I2C2_SCL (PB10)
- SDA -> STM32的I2C1_SDA (PB7) 或 I2C2_SDA (PB11)
- 另外需要连接VCC和GND,以及AD0引脚(用于设置I2C地址,通常接地或接VCC)。
### 3. 无线模块:NRF24L01
- 通信接口:SPI
- 连接方式:
- SCK -> STM32的SPI1_SCK (PA5) 或 SPI2_SCK (PB13) 等
- MISO -> STM32的SPI1_MISO (PA6) 或 SPI2_MISO (PB14)
- MOSI -> STM32的SPI1_MOSI (PA7) 或 SPI2_MOSI (PB15)
- CSN -> 任意GPIO(片选,输出模式)
- CE -> 任意GPIO(使能,输出模式)
- IRQ -> 任意GPIO(可配置为外部中断,可选)
- 注意:NRF24L01工作电压为3.3V,与STM32直接兼容。
### 4. 电机驱动模块
#### 方案一:TB6612
- 可驱动两个直流电机。
- 连接方式:
- STM32的PWM引脚(如TIM1_CH1, TIM1_CH2等) -> TB6612的PWMA和PWMB(控制电机速度)
- STM32的GPIO -> TB6612的AIN1/AIN2和BIN1/BIN2(控制电机方向)
- VM接电机电源(如7.2V锂电池),VCC接逻辑电源(3.3V或5V)。
- AO1/AO2和BO1/BO2分别接两个电机。
#### 方案二:DRV8833
- 同样可驱动两个直流电机。
- 连接方式类似:
- 输入引脚(xIN1, xIN2)接STM32的GPIO(可配合PWM使用)。
- 输出引脚接电机。
- VM接电机电源,VCC接逻辑电源。
### 5. 电源管理模块
- 整个系统需要多种电压:STM32需要3.3V,传感器和无线模块一般3.3V或5V,电机驱动需要电池电压(如7.2V)和逻辑电压(3.3V或5V)。
- 设计建议:
- 使用锂电池供电(如7.4V两节串联)。
- 通过降压稳压模块:
- 先将电池电压降到5V(如使用LM2596等),为部分传感器和电机驱动的逻辑部分供电。
- 再由5V降压到3.3V(如AMS1117-3.3),为STM32和NRF24L01等供电。
- 注意:电机驱动部分的电源(VM)直接接电池,以避免电机工作时对控制电路的干扰。
### 原理图设计要点
1. **STM32最小系统**:包括晶振(8MHz主晶振和32.768kHz RTC晶振)、复位电路、启动模式选择(BOOT0和BOOT1)、调试接口(SWD或JTAG)和电源滤波电容。
2. **传感器接口**:为每个传感器设计接口电路,注意上拉/下拉电阻(如I2C的SCL和SDA需要上拉电阻)。
3. **电机驱动接口**:注意隔离,可以在控制信号线上加入光耦或使用电平转换,但TB6612和DRV8833可以直接由3.3V控制。
4. **无线模块**:NRF24L01的电源引脚要加去耦电容(通常0.1uF),天线部分注意匹配电路。
5. **电源部分**:注意滤波和防止干扰,电机电源和控制电源分开,必要时使用磁珠隔离。
### 示例连接图(部分)
由于文本限制,这里给出关键部分的连接示例:
#### STM32与MPU6050(I2C1)
- MPU6050的SCL -> PB6
- MPU6050的SDA -> PB7
- MPU6050的VCC -> 3.3V
- MPU6050的GND -> GND
- MPU6050的AD0 -> GND(地址为0x68)
#### STM32与NRF24L01(SPI1)
- NRF24L01的SCK -> PA5
- NRF24L01的MISO -> PA6
- NRF24L01的MOSI -> PA7
- NRF24L01的CSN -> PA4 (GPIO)
- NRF24L01的CE -> PA3 (GPIO)
- NRF24L01的IRQ -> PA2 (GPIO,外部中断)
#### STM32与TB6612(电机驱动)
- 电机1:PWMA -> TIM1_CH1 (PA8), AIN1 -> PB0, AIN2 -> PB1
- 电机2:PWMB -> TIM1_CH2 (PA9), BIN1 -> PB2, BIN2 -> PB3
#### 超声波传感器(以两个为例)
- 传感器1:Trig -> PC0, Echo -> PC1
- 传感器2:Trig -> PC2, Echo -> PC3
### 总结
以上是基于STM32F103ZET6的清洁机器人路径规划系统硬件设计的主要部分。实际设计中还需要考虑PCB布局、走线、抗干扰等。软件部分需要编写相应的驱动程序和控制算法。
§§相关问题§§
1. 如何优化超声波传感器在清洁机器人中的布局以避免干扰?
2. 在STM32中如何实现多路超声波传感器的同时测距?
3. 清洁机器人路径规划算法有哪些,如何与硬件结合?
4. 如何设计电源管理模块以延长清洁机器人的工作时间?
5. 如何通过NRF24L01实现清洁机器人与远程控制端的通信协议?</think>### 基于STM32F103ZET6的清洁机器人硬件设计
#### 一、系统架构设计
清洁机器人硬件系统由主控模块、传感器阵列、电机驱动、无线通信和电源管理五大模块组成,架构图如下:
```
[锂电池] → [电源管理] → 3.3V/5V/12V
↓
[STM32F103ZET6主控] ←→ [传感器阵列]
↓ ↓
[电机驱动] → [直流电机]
↑
[NRF24L01无线模块] ←→ 遥控端
```
#### 二、核心模块电路设计
1. **主控模块 (STM32F103ZET6)**
- 最小系统电路:
- 8MHz晶振 + 32.768kHz RTC晶振
- BOOT0/BOOT1模式选择电路
- SWD调试接口(PA13/PA14)
- 扩展资源:
```c
// 引脚分配示例:
USART1(PA9/PA10) // 调试串口
SPI1(PA5/PA6/PA7) // NRF24L01
I2C1(PB6/PB7) // MPU6050
ADC1(PC0-PC3) // 红外传感器
TIM1/TIM2(PWM) // 电机控制
```
2. **传感器模块连接**
- **超声波传感器 (HC-SR04)**
- Trig: PC4 (GPIO输出)
- Echo: PC5 (外部中断/TIM输入捕获)
- 电源: 5V (需LDO降压)
> 建议并联100nF电容消除信号抖动[^2]
- **红外传感器 (TCRT5000)**
- 输出端 → PC0-PC3 (ADC采集)
- 配置比较器电路:
```
Vcc ──┬───[10kΩ]───┐
│ │
传感器 比较器(LM393)
│ │
GND ──┴───────────┘
```
- **MPU6050 (姿态检测)**
```plaintext
SCL ── PB6 (I2C1)
SDA ── PB7 (I2C1)
INT ── PB5 (外部中断)
VCC ── 3.3V (需0.1μF去耦电容)
```
3. **电机驱动电路**
- **TB6612方案** (双路驱动):
```plaintext
PWMA ── PA8 (TIM1_CH1)
AIN1 ── PB12
AIN2 ── PB13
STBY ── 3.3V (常使能)
VM ── 12V (锂电池直接供电)
```
> 需在VM端加1000μF电解电容缓冲[^4]
- **DRV8833方案** (低功耗):
```plaintext
xIN1 ── PA0 (PWM)
xIN2 ── PA1 (PWM)
nSLEEP ── PB14 (使能控制)
```
4. **NRF24L01无线模块**
- SPI接口配置:
```plaintext
MOSI ─ PA7(SPI1_MOSI)
MISO ─ PA6(SPI1_MISO)
SCK ─ PA5(SPI1_SCK)
CSN ─ PA4(GPIO)
CE ─ PA3(GPIO)
IRQ ─ PA2(外部中断)
```
> 电源端需加10μF+0.1μF电容组滤波[^1]
5. **电源管理设计**
- 三级降压架构:
```
12V锂电池 ┬─ LM2596 → 5V (传感器/电机逻辑)
└─ MP1584 → 3.3V (STM32/NRF)
```
- 关键保护电路:
- 输入反接保护:SS34二极管
- 瞬态抑制:TVS管 P6KE15A
- 过流保护:自恢复保险丝(500mA)
#### 三、PCB设计要点
1. 分区布局:
- 数字区(左):主控+无线模块
- 模拟区(右):传感器+ADC电路
- 功率区(后部):电机驱动+电源
2. 布线规范:
- 电机驱动线宽≥40mil
- SPI时钟线等长走线
- 模拟地/数字地单点连接
3. 抗干扰设计:
- 电机PWM信号加磁珠滤波
- ADC基准电压RC滤波(10Ω+10μF)
- 晶振包地处理
#### 四、测试建议
1. **上电顺序测试**
- 测量各节点电压:12V→5V→3.3V
2. **传感器校准**
- 超声波:30-200cm距离标定
- MPU6050:静止状态陀螺仪零偏校准
3. **驱动负载测试**
- 空载→50%负载→堵转电流测试
> 实际应用案例:某扫地机器人采用类似设计,续航提升30%[^2]
阅读全文
相关推荐















