基于51单片机的红外传感竞速智能小车程序

基于51单片机的红外传感竞速智能小车程序,第1张

我做过一个寻一条黑线的智能小车,按照你的问题一个个给你些建议吧。

我个人认为寻一条黑线和寻两条黑线在原理上应该是没有差别的,都是用对管来检测黑线和小车的偏差,从而知道小车当前的位置,不过常见的都是寻一个道路中间的黑线。至于程序控制上可以参考网上成熟的方案,都是根据传感器检测到黑线后来判断当前小车偏离黑线的位置,从而控制左右电机产生速度差(或者直接用舵机转向)来修正小车姿态。

PID是一个很高深也很简单的玩意,原理很简单,能够用好却不容易。小车上主要是为了稳定小车的速度,这对电机的响应速度,码盘的精度,单片机的处理速度都有一定的要求,网上有很多成熟的PID算法,加上一些前辈们做过的寻线小车PID案例,剩下的就是PID的参数问题了。

L298N是作为电机的控制器件(PID的输出量),舵机可以控制小车转向,红外对管是为了检测黑线的位置,测速码盘检测当前电机转速(PID控制的输入量)。

整体可以分为两个程序部分:

(1)主程序部分:对管检测黑线的位置-》单片机判断小车姿态-》舵机转向调整小车姿态-》回到起始部分循环。

(2)PID部分:码盘检测电机转速-》单片机进行PID运算-》输出速度控制量给L298N-》控制电机转动-》回到起始部分循环。

几个驱动轮的?可以用笨一点的方法 如果你是四轮车 你可以控制它直线高速四轮全动 低速动两个

转弯的话 高速可以正转一边反转 低速一边正转 另一边锁死 或者转一个 我比较笨 到现在都没学会pwm 所以只有这本办法了~

智能小车 串口指令格式与分析

指令格式:7E NN CC D1 D2 Dn,(NN = n+1,n = [0,12],CC = [0,255])

其中CC及指令代号,最多256条指令;串口指令分析程序如下:

u8 COM1_ZT = 0; // 串口1分析状态

uint32_t Time_Out_1 = 0; // 用于串口1分析超时计时

u8 Order_Size; // 指令数据长度

u8 Order_Sum; // 接收到的指令数据数量

u8 Order_Buff[COM1_Buff_Size]; // 接收到的指令缓冲区

void COM1_Analysis(void)

{

u8 ch;

if(USART1_RX_ANA != USART1_RX_STA)

{

ch = USART1_RX_BUF[USART1_RX_ANA++];

if (USART1_RX_ANA >= USART1_REC_LEN)

{ // 调整缓冲区尾指针

USART1_RX_ANA = 0;

}

switch(COM1_ZT)

{

case 0: // 判断指令头'7E'

if(ch == 0x7E){

COM1_ZT = 1;

Time_Out_1 = OSTimeGet(); // 超时复位

}

break;

case 1: // 接收指令数据长度

Order_Size = ch;

COM1_ZT = 2;

Time_Out_1 = OSTimeGet(); // 超时复位

Order_Sum = 0; // 接收数量置0

break;

case 2: // 接收指令数据

Order_Buff[Order_Sum++] = ch;

if(Order_Sum == Order_Size){

// 指令接收完毕,执行指令发送到邮箱

OSMboxPost(msg_order,(void)Order_Buff); //发送消息

COM1_ZT = 0; // 状态复位

Time_Out_1 = OSTimeGet(); // 超时复位

}

break;

default: // 意外处理

printf("COM1状态异常: %d",COM1_ZT);

COM1_ZT = 0; // 状态复位

Time_Out_1 = OSTimeGet(); // 超时复位

break;

}

}

if(OSTimeGet()>=Time_Out_1+10 && COM1_ZT > 0){

// 超时100ms处理

printf("COM1超时: %d",OSTimeGet() - Time_Out_1);

COM1_ZT = 0; // 状态复位

Time_Out_1 = OSTimeGet(); // 超时复位

}

}

以上就是关于基于51单片机的红外传感竞速智能小车程序全部的内容,包括:基于51单片机的红外传感竞速智能小车程序、求一个智能小车实现电机调速(尽量使速度降低)、循迹避障功能的C程序。、DIY“间谍”智能小车之十等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10125500.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存