STM32的小车控制 - 图文(5)

2019-08-30 23:16

图3.1 IAR EWARM主界面

3.2 程序设计思路及部分模块程序

3.2.1 程序设计思路

整个小车控制系统的程序设计采用模块化的编程思想,整个主程序的流程图如图3.2。

18

图3.2 主程序流程图

根据图3.2,程序主要包括程序初始化、按键扫描子程序、自由行走模式子程序、循迹模式子程序、LCD显示子程序。

程序初始化,包括对STM32F103系统模块、液晶显示模块、PWM波输出模块、电机驱动模块的初始化,然后编写各子模块的实现程序。 3.2.2 按键子程序

系统初始化完成后,进入键盘扫描子程序,其程序流程图如图3.3。

19

开 始 是否自由行走模式 N0 转换为循迹模式 YES 自由行走模式 N0 是否开始执行 YES 设置执行标志 PWM波占空比YES 是否加速 N0 增10/300 YES 是否减速 PWM波占空比减10/300 N0 占空比是否超出范围 YES N0 PWM波输出调节 维持原始PWM波输出 退出 图3.3 键盘扫描子程序流程图

20

由上章键盘扩展电路设计可知,启动/停止由1键控制切换,在程序中通过判断标志变量值来切换;自由行走模式和循迹模式单独按键控制;按小车加速和减速键,对小车速度进行相应调节。

本设计中小车运动方向转变时,速度未做单独处理,因此要求小车的运动速度不宜过快,否则方向不易控制。通过对PWM波占空比范围的控制限定小车的速度范围,占空比一般在150/300以下,因此本次设计中占空比范围设定为40/300-160/300。通过对定时器配置,产生时钟频率为10KHZ,周期为2.99ms的PWM波,由加速/减速键步进调节占空比参数TIM4_CCRx值,实现对小车运行速度的控制。具体定时器配置[10]以TIM3通道3为例程序如下:

void PWM_Channel _ configuration(u16 CCR_Val) {

u16 CCR3_Val=CCR_Val;

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //PWM模式 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //输出使能 TIM_OCInitStructure.TIM_Pulse = CCR3_Val; //设置占空比=CCR_Val/(TIM_Period +1) TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //比较输出极性 TIM_OC3Init(TIM3, &TIM_OCInitStructure); //配置通道3

TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能 TIM3在 CCR3上的预装载寄存器

TIM_ARRPreloadConfig(TIM3, ENABLE); //使能TIM3在 ARR 上的预装载寄存器 TIM_Cmd(TIM3, ENABLE); }

3.2.3 循迹子程序

循迹模式键按下,小车进入循迹模式,其流程图如图3.4。

21

图3.4 循迹子流程图

将小车置于黑迹上,进入循迹模式,主控芯片控制红外探测器使能,此时左右红外探测器均未检测到出界,小车开始向前行走,此后根据左右探测器的检测信号对小车的运动状态进行相应调整,使小车按设定的轨迹行走,实现简单的循迹功能。

3.2.4 自由行走子程序

自由行走模式键按下,小车进入自由行走模式,其子程序流程图如图3.5。

22


STM32的小车控制 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011财行[2011]180号-党政机关执法执勤用车配备使用管理办法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: