小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 7344|回复: 17

关于小车失控的解决办法,以及修改方案,求助

[复制链接]
发表于 2014-7-4 12:15:20 | 显示全部楼层 |阅读模式
本帖最后由 zncs520 于 2014-7-4 12:45 编辑

STC89C52  串口通信
监控串口数据时间间隔
if小于500ms 则执行stop

用信号的时间间隔 防止失控


自己制作的上位机  改成连续发送数据包 小车才行动


不会修改单片机程序 希望老大帮助:


源程序:
wifi小车整合舵机语音无干扰.rar (36.33 KB, 下载次数: 18)
回复

使用道具 举报

发表于 2014-7-4 12:48:04 | 显示全部楼层
在main函数最开始加上for()循环延时即可。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-4 13:00:22 | 显示全部楼层
liuviking 发表于 2014-7-4 12:48
在main函数最开始加上for()循环延时即可。
  1. *********************************************************************************/

  2. void main()
  3. {   
  4.   
  5.     MainLight=1;
  6.     Delay_1ms(200);
  7.     Com_Init();//串口初始化
  8.     Timer0Init();//舵机PWM中断初始化   
  9.   while(1)
  10.   {
  11.   
  12.    if(CommandDatatable[0]==0XFF && CommandDatatable[4]==0XFF)
  13.       {
  14.            switch (CommandDatatable[1])      //根据键值不同,执行不同的内容
  15.              {
  16.               case 0X00:  //类型位0X00,表明是控制数据包,进入控制数据case
  17.                   switch(CommandDatatable[2])  //根据数据位的值来进行选择执行不同的动作
  18.                            {
  19.                              case 0X00:Moto_Stop();break;
  20.                              case 0X01:Moto_Forward();break;
  21.                              case 0X02:Moto_Backward();break;
  22.                              case 0X03:Moto_TurnLeft();break;
  23.                              case 0X04:Moto_TurnRight();break;
  24.                                                          default :  break;
  25.                            }
  26.                          break;
  27.               case 0X01:    //类型位0X01,表明是舵机数据包,进入舵机case  
  28.                   switch(CommandDatatable[2])
  29.                  {         
  30.                         case 0x01:SetSteeringGear(0,CommandDatatable[3]);break;
  31.                             case 0x02:SetSteeringGear(1,CommandDatatable[3]);break;
  32.                             case 0x03:SetSteeringGear(2,CommandDatatable[3]);break;
  33.                             case 0x04:SetSteeringGear(3,CommandDatatable[3]);break;
  34.                             case 0x05:SetSteeringGear(4,CommandDatatable[3]);break;
  35.                             case 0x06:SetSteeringGear(5,CommandDatatable[3]);break;
  36.                                         case 0x07:SetSteeringGear(6,CommandDatatable[3]);break;
  37.                             case 0x08:SetSteeringGear(7,CommandDatatable[3]);break;
  38.                                          default :  break;
  39.                       }
  40.                      break;
  41.               case 0X04:  //类型位0X04,表明是大灯数据包,进入大灯case
  42.                   switch(CommandDatatable[2])
  43.                            {
  44.                              case 0X10:MainLight=1;break;
  45.                              case 0X20:MainLight=0;break;
  46.                                                          default :  break;
  47.                            }
  48.                   break;
  49.               default :  break;
  50.             }
  51.        }
  52.   }
  53. }
复制代码
老大终于出来解决了,这个怎么写哟?    失控的车子真危险啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-4 13:02:58 | 显示全部楼层
附带大车照片一张~~大动力 全金属 易失控 危险~~~
111.jpg
回复 支持 反对

使用道具 举报

发表于 2014-7-4 13:41:15 | 显示全部楼层
延时200毫秒可能不够,路由启动最少要20秒,所以要延时20000毫秒。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-4 13:56:45 | 显示全部楼层
liuviking 发表于 2014-7-4 13:41
延时200毫秒可能不够,路由启动最少要20秒,所以要延时20000毫秒。

老大 我说的不是启动时的干扰导致失控。。

将的是控制过程中 若链接不稳定 会导致 ff000000ff 指令 未接受到 导致小车 不知道停止而失控
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-4 14:08:12 | 显示全部楼层
本帖最后由 zncs520 于 2014-7-4 14:30 编辑

加一个定时器延时中断

在串口接收中断里对延时参数清零即可

定时器中断延时到500ms时STOP



这样就能防止小车失控 不知道停止


但是程序不会写  伤脑筋
回复 支持 反对

使用道具 举报

发表于 2014-7-5 14:37:13 | 显示全部楼层
你这样不合理吧?打个比方,我按住了前进按键不放开,此时机器人一直向前走,过了5秒没有收到停止指令,这个时候怎么判断呢?到底是失控了还是人为没有让它停止呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-7-7 12:32:12 | 显示全部楼层
liuviking 发表于 2014-7-5 14:37
你这样不合理吧?打个比方,我按住了前进按键不放开,此时机器人一直向前走,过了5秒没有收到停止指令,这个 ...

这个上位机我修改过了

    上位机会每500MS发送个“心跳数据”到单片机

单片机要做到的就是  如果500ms内没有接受到这个数据  就停止移动
回复 支持 反对

使用道具 举报

发表于 2014-7-9 22:31:20 | 显示全部楼层
这个很重要,把这问题解决了是机器人的一个里程碑,在3G应用,,一般l延迟是3到6秒,在延迟3到6秒里时间里,,小车是接到指命断断续续的,小车就失控了,断断续续的失控
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-3-29 16:20 , Processed in 1.145027 second(s), 22 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表