在本文中,我们将详细介绍使用CW32F030C8T6芯片完成的全国电子竞赛H题智能小车项目。该项目旨在通过智能控制技术完成项目功能,以下是项目的完整代码和功能说明。
文章底部 可获取:例程开源链接
1.硬件平台与功能特性
我们选择了CW32F030C8T6芯片作为项目的核心控制单元。该芯片具备强大的处理能力和丰富的外设支持,非常适合于电子竞赛的应用场景。以下是项目中使用到的主要硬件和功能特性:
芯片选择与驱动:CW32F030C8T6芯片,使用标准库驱动。
电机控制:PWM控制两路带编码器的电机,实现精确的速度控制。
循迹模块:五路循迹模块,通过BTIM1定时器实时读取传感器信号,实现精准的路径跟踪。
角度传感器:通过串口3接收角度传感器数据,实时计算当前角度。
2.软件架构与主要功能
项目的软件部分采用了结构化的编程方式,主要包括底层驱动、外设控制和主程序逻辑。
软件工程图如下:
- 主程序概述
主程序从上至下依次定义了变量并实现了各项功能模块。以下是主程序的关键点:
任务定义:使用任务1至任务4定义不同的操作流程,以应对竞赛中的各项挑战。
主程序的大循环中,执行任务代码如下:
硬件初始化:初始化各种外设如PWM控制、编码器读取、循迹模块和角度传感器。
任务执行:根据任务要求执行相应的动作,如直线行驶、路径跟踪、角度调整等、PID速度控制、速度计算等。
以下代码为速度计算代码:
更多代码请参考源工程文件。
模式切换:使用按键控制不同模式下的任务执行,确保灵活应对各种竞赛场景。
- PWM控制与编码器读取
PWM设置:使用高级定时器2B和3B控制两路电机的PWM输出,实现精确的速度调节。
编码器计数:通过GTIM1和GTIM2定时器分别读取两路电机带编码器的脉冲信号,计算速度和行程。
循迹模块实现
循迹控制:使用五路循迹模块检测地面黑线,根据信号判断小车是否偏离路径,并进行实时调整。
以下代码为循迹执行子函数。
- 角度传感器数据处理
串口通讯:配置串口3接收角度传感器数据,通过中断实时更新当前角度信息,并根据需要进行角度调整。角度主要是使用Z轴信息,实时获时Z轴方向的绝对角度。以下代码为角度获取实现代码。其中RealAngl变量为角度变量,有效范围为0-65535,代表-180度至180度。
例程开源链接
链接:https://pan.baidu.com/s/1PpacwWdcqvmT4xJEspaojw?pwd=6edb
提取码:6edb