当前位置:文档之家› 程序设计与软件开发--项目设计PA1基本控制功能

程序设计与软件开发--项目设计PA1基本控制功能

程序设计与软件开发--项目设计
PA1:基本控制功能
在这一部分,我们开始正式编程,并控制小车的行动。

本次实验主要任务是编写C 语言程序实现智能小车的前进、转弯、暂停等功能;测量并绘制小车速度与PWM (脉冲宽度调制)平均值之间的关系。

小车控制原理
首先我们了解如何控制小车的车轮。

在本实验平台中,我们采用脉冲宽度调制信号(PWM )来完成对电机的控制。

脉冲宽度调制信号(PWM )
微控制器产生PWM 信号给电机驱动芯片L298N 来控制电机的转速。

方波高电平时间跟周期的比例叫占空比,不同占空比的PWM 信号如下:
这些脉冲期间电压加到电机两端
图1 占空比为50%的方波
平均电压
图2 占空比为90%的方波
PWM信号的周期是固定的,脉冲宽度在0%~100%之间变化,加在电机两端的电压就是脉冲宽度的函数。

图2是占空比为90%的方波,加在电机两端的电压几乎在所有时间都存在,所以电机的转速几乎达到全速。

任务1:实现小车基本控制
硬件
智能小车全套组件,并按照文档1检查主要控制连线。

软件
●从网站上下载任务1的代码(c_ex.rar文件)
●解压c_ex.rar文件
●运行keil软件,点击工具栏工程-〉打开工程,选择c_ex.uvprojx文件
●编译,点击工程-〉build target。

Build output 信息框显示无错误,并成功
编译出hex文件。

●通过ST-Link2将程序烧写到小车中
●打开小车电源开关,检查小车能否完成下述操作
1.全速前进3秒
2.全速后退2秒
3.半速右转1秒
4.停止
●程序的功能都是在“main.c”文件中的main函数中执行的,请仔细阅读程序
及注释。

注意备份程序。

1连线参考文档《小车连线》中,请逐条确认
2STLINK的驱动需要提前安装,并保证与核心控制板连线正确,下载程序的具体步骤参见keil使用文档第10页
任务
●编辑“main”函数驱动小车全速前进4秒,暂停1秒,然后全速后退4秒
●测量起点和终点的误差(假设小车起点坐标为(0,0),行驶方向为0°)●编辑“main”函数使用“while”循环驱动小车前进3秒,暂停1秒,然后后退
3秒,10次
●测量起点和终点的误差(假设小车起点坐标为(0,0),行驶方向为0°)●小车能直线行驶吗?如果小车向前行驶很长时间,所走的路线会是什么形状
的?行驶路线是这种形状的原因是什么?程序修改什么可以使小车按直线行驶。

●让实验室的工作人员查看你的代码,演示小车的运行并回答上述问题。

任务2:测量PWM信号占空比值和小车速度之间的关系
修改程序,使小车能直线行驶。

控制小车以5种不同的速度直线行驶。

测量PWM信号占空比值和小车速度之间的关系,并绘出它们的函数关系图。

任务
●编写程序驱动小车全速前进4秒
●固定一支笔在小车左轮上
●运行程序
●测量小车上的笔在纸上所画线的长度
●计算小车车轮速度
●重复3次取平均值
●对小车右轮重复上述实验
为了节省时间,也可以使用两支笔固定在两个车轮上,同时画两条线
●记录实验结果
●测量其他4种不同占空比值下小车每个车轮速度
●将这些值绘制到坐标是脉冲宽度和速度的图上
图 1 PWM信号占空比和小车速度的测量示意图
1. 使用查表法,将车轮的速度与对应的脉冲宽度制成表。

可以通过小车车
轮速度与脉冲宽度的关系图计算出该表。

2. 将小车车轮速度与脉冲宽度的关系在图中拟合成直线,得出线性函数关
系:Power = k ×Speed + b ,并在程序中计算实现。

完成任务后,撰写实验报告,报告中包括以下内容: 1. PWM 原理和实现;
2.写出小车运动的方程,推导出小车直线运动或其他运动的模型。

在这些运动模型中进行速度测量,比较实际测量结果验证运动模型;
3. 实验中遇到的问题以及解决这些问题的方法。

0102030405060
70800%
20%
40%
60%80%
100%
120%
速度(m m /s )
脉冲宽度
小车车轮速度与脉冲宽度的关系。

相关主题