例程开源链接:https://pan.baidu.com/s/1PpacwWdcqvmT4xJEspaojw?pwd=6edb 提取码:6edb
初始设定与启动
首先,我们启动小车并观察其运行情况。小车通过测量左右轮的路程差来进行方向调节。一旦找到寻迹的黑色线,即开始寻迹操作。我们使用了5个寻迹感应管来实现精确的寻迹功能。
寻迹过程
在第一圈中,我们可以看到小车迅速定位并开始寻迹。每一圈结束后,小车进行角度调整,通过调整左右轮的路程差来实现方向调节。寻迹过程中,小车沿着预设的角度前行,一旦再次检测到黑色线,即刻重新开始寻迹操作。
控制策略概述
总体而言,我们的控制策略相对简单明了:在空白区域通过左右轮的路程差进行实时方向调节,并在寻迹模块检测到线时立即切换到寻迹模式。在达到ABCD点后,我们先进行方向调整,将车辆转向设定方向,然后执行路程差控制。
其中路程差进行方向调节实现代码如下:
void task0(void) { IR_Check(); if(FLAG_ONir==1&&timecount>=300) //有传感器了,声光提示,停下 { StartFlag=0; setspeedr=0;setspeedl=0; // 停车 R_Pid_Ctrl(0,SPEED_RIGHT); L_Pid_Ctrl(0,SPEED_LEFT); beeponflag=1; } else { setrightroad=5000; setleftroad=5000; if(Flag_PID>=1) { if(rightroad>leftroad+10) {Flag_PID=0; Car_turnright(80,40);} else if(leftroad>rightroad+10) {Flag_PID=0; Car_turnright(40,80);} else {Flag_PID=0; Car_turnright(80,80);} R_Pid_Ctrl(setspeedr,SPEED_RIGHT); L_Pid_Ctrl(setspeedl,SPEED_LEFT); } } }
车辆转角实现代码如下:(以下代码为左轮速不动,右轮转动调角度)
void ToangleR(unsigned int targetangl, unsigned int picha) { do { if(Flag_PID>=1) { Flag_PID=0; R_Pid_Ctrl(15,SPEED_RIGHT); } if(Flag_Encode == 1) //标志位检测执行 10ms 实时速度显示 { Encode_Speed();Flag_Encode=0; } }while(targetangl+picha< RealAngl||RealAngl+picha< targetangl) ; }
此外,左右轮速度的控制也至关重要。我们采用闭环电机速度控制,确保在寻迹过程中左右轮速度能够精确控制,以提高运动稳定性和直线行驶效果。
PID速度闭环实现代码如下:(以下代码为左轮速度闭环控制代码。)
void L_Pid_Ctrl(unsigned int Target,unsigned int Real) //PID速度控制函数 { int Error=0; //本次差值,上次差值 float j=0.0,i; if(Target==0) { LastError=0; dError=0; SumError=0; outpwml=0; ATIM_SetCompare2B(outpwml); return; } Error =(Target-Real); //本次偏差 if(SumError*L_Ki>1600) //计算积分项 { SumError=1600; SumError=SumError/L_Ki; } // 输出到最大值后,不再累计偏差,抗积分饱各 else SumError +=Error; dError=Error-LastError; //微分项,偏差的变化 LastError=Error; //记录本次偏差,用于下次计算 i=L_Kp; j=Errori; i=L_Ki; * j=j+SumError*i; i=L_Kd; j=j+dError*i; if(j>1600)outpwml=1600+1; else if(j< 1)outpwml=1; else outpwml=j; ATIM_SetCompare2B(outpwml); }
调试过程中的挑战
在实际调试过程中,我们遇到了几个挑战。首先是PID参数调节,这直接影响到小车的稳定性和精确性。其次是寻迹过程中的速度调整和转向角度的精确控制,这些都需要仔细调整以保证最佳性能。
综上所述,项目中涉及到多个参数,它们的合理调整直接影响小车的最终运行效果。我设定的是跑6圈,但实际上小车可以持续运行更多圈数,每一轮的积累反而会减小误差,从而提高稳定性和准确性。
软硬件视频讲解:
授人以渔,24电赛H题完赛资料开源,思想开源-(1)硬件讲解21 播放 · 0 赞同视频
授人以渔,24电赛H题完赛资料开源,思想开源-(2)软件讲解65 播放 · 0 赞同视频
授人以渔,24电赛H题完赛资料开源,思想开源-(3)控制思想讲解29 播放 · 0 赞同视频
审核编辑 黄宇