stm32f103c8t6最小系统板制作的循迹避障小车
时间: 2025-06-17 14:48:06 浏览: 17
### 制作基于STM32F103C8T6最小系统板的循迹避障小车的相关资料和教程
#### 1. 硬件设计
根据课题的设计要求,确定如下设计方案:设计两块电路板——智能小车控制板和智能小车底板。智能小车控制板采用STM32F103C8T6单片机作为控制核心[^1]。该单片机具有高性能、低功耗的特点,适用于小型嵌入式系统开发。智能小车底板包含以下模块:
- **电机驱动电路**:用于控制直流电机的正转、反转以及速度调节。
- **红外循迹电路**:实现对地面黑线或白线的追踪功能。
- **红外避障电路**:检测前方障碍物的存在与否。
- **电源电路**:为整个系统提供稳定的电压支持。
#### 2. 软件开发
在软件开发方面,需要完成以下几个任务:
- **编写程序**:使用Keil MDK或其他集成开发环境(IDE)编写控制逻辑代码。
- **烧录程序**:通过ST-Link调试工具将编写的程序下载到STM32F103C8T6芯片中[^2]。
以下是一个简单的程序框架,用于实现循迹和避障功能:
```c
#include "stm32f10x.h"
void Motor_Init(void);
void Infrared_Tracking(void);
void Ultrasonic_Avoidance(void);
int main(void) {
// 初始化电机控制
Motor_Init();
while (1) {
// 循迹功能
Infrared_Tracking();
// 避障功能
Ultrasonic_Avoidance();
}
}
void Motor_Init(void) {
// 初始化电机驱动GPIO和PWM
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
TIM_TimeBaseStructure.TIM_Period = 999;
TIM_TimeBaseStructure.TIM_Prescaler = 71;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 500;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM2, &TIM_OCInitStructure);
TIM_OC2Init(TIM2, &TIM_OCInitStructure);
TIM_Cmd(TIM2, ENABLE);
}
void Infrared_Tracking(void) {
// 实现循迹功能
if (/* 左侧传感器检测到黑线 */) {
/* 控制小车左转 */
} else if (/* 右侧传感器检测到黑线 */) {
/* 控制小车右转 */
} else {
/* 控制小车直行 */
}
}
void Ultrasonic_Avoidance(void) {
// 实现避障功能
if (/* 前方距离小于设定值 */) {
/* 控制小车停止并转向 */
} else {
/* 控制小车继续前进 */
}
}
```
#### 3. 功能实现
根据提供的逻辑代码,以下是避障功能的具体实现[^4]:
```c
if(Mode == 3) {
TIM_SetCompare1(TIM3,80); // 舵机向前,使超声波朝前方
delay_ms(200);
if(TCRC5000_Dist() > 25) { // 前方无障碍物
Forward();
delay_ms(500);
}
if(TCRC5000_Dist() < 25) { // 向前有障碍物
TIM_SetCompare1(TIM3,50); // 舵机向右边转大约30度
delay_ms(200);
if(TCRC5000_Dist() > 25) { // 右侧无障碍物判断
Rightward();
delay_ms(700);
} else { // 右边有障碍物
TIM_SetCompare1(TIM3,100); // 舵机向左边转大约30度
delay_ms(200);
if(TCRC5000_Dist() > 25) { // 左侧无障碍物
Leftward();
delay_ms(700);
} else {
Backward(); // 后退
delay_ms(700);
Rightward(); // 右转
delay_ms(700);
}
}
}
}
```
#### 4. 后续改进
后期可以考虑加入PID控制以提高小车的稳定性和响应速度,同时还可以加入WiFi通信模块,实现远程监控和控制功能[^3]。
阅读全文
相关推荐

















