久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11363|回復(fù): 19
收起左側(cè)

電磁循跡智能小車 轉(zhuǎn)彎時候識別能力特別差,很容易就直接沖出去了

  [復(fù)制鏈接]
回帖獎勵 100 黑幣 回復(fù)本帖可獲得 10 黑幣獎勵! 每人限 3 次
ID:353191 發(fā)表于 2018-10-28 22:43 | 顯示全部樓層 |閱讀模式
    我們課程設(shè)計要求制作一個基于電磁尋跡的智能小車系統(tǒng),我們使用的是STC12C5A60S2單片機(jī)。我們用下面的代碼,然后不知道為什么轉(zhuǎn)彎時候識別能力特別差,很容易就直接沖出去了。還有就是總是有一個輪子要延遲一會兒才轉(zhuǎn),甚至直接不轉(zhuǎn)了。傳到電腦的時候有一些亂碼,希望不會影響閱讀。

  1. /*Define ADC operation const for ADC_CONTR*/
  2. #include <C:\KEIL\C51\INC\STC\STC12C5A60S2.H>
  3. #include <math.h>
  4. #include <intrins.h>
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. typedef unsigned char BYTE;

  8. sbit en1=P0^0;  /* ???????P00 */
  9. sbit en2=P0^3;  /* ???????P03 */
  10. sbit s1=P0^1;  /* ??input1?P01 */
  11. sbit s2=P0^2;  /* L298Input 2 */
  12. sbit s3=P0^4;  /* L298Input 3 */
  13. sbit s4=P0^5;  /* L298Input 4 */
  14. sbit s10=P2^0;/[表情]?LED
  15. sbit s11=P2^1;/[表情]?LED

  16. unsigned int a=0,b=0;//result1???????AD????,2????,resutl??1?2???
  17. BYTE result3=0;

  18. void delay10()
  19. {
  20.     unsigned char a;
  21.     for(a=30;a>0;a--);
  22. }


  23. #define ADC_POWER   0x80            //ADC ?????
  24. #define ADC_FLAG    0x10            //ADC ???????
  25. #define ADC_START   0x08            //ADC ???????
  26. #define ADC_SPEEDLL 0x00            //420 ?????????
  27. #define ADC_SPEEDL  0x20            //280 ?????????
  28. #define ADC_SPEEDH  0x40            //140 ?????????
  29. #define ADC_SPEEDHH 0x60            //70 ?????????


  30. void delay1ms()                /[表情]?1ms
  31. {
  32.     unsigned char i, j;

  33.     _nop_();
  34.     i = 4;
  35.     j = 146;
  36.     do
  37.     {
  38.         while (--j);
  39.     } while (--i);
  40. }

  41. void InitADC()
  42. {
  43.     P1ASF = 0xff;                                    /[表情]?P1??????,??AD??
  44.     ADC_RES = 0;                                     //AD???????
  45.     ADC_CONTR = ADC_POWER | ADC_SPEEDHH;  /[表情]?AD??,????420
  46.     _nop_();                                               /[表情]???????
  47.     _nop_();                                                /[表情]???????
  48.     _nop_();                                                /[表情]???????
  49.     _nop_();                                                /[表情]???????
  50. }


  51. BYTE GetADCResult(BYTE ch)
  52. {
  53.     InitADC();                      //AD?????
  54.     ADC_CONTR = ADC_POWER | ADC_SPEEDHH | ch | ADC_START;/[表情]???
  55.     _nop_();                        /[表情]???????
  56.     _nop_();                                                /[表情]???????
  57.     _nop_();                                                /[表情]???????
  58.     _nop_();                                                /[表情]???????
  59.     while (!(ADC_CONTR & ADC_FLAG));/[表情]?????
  60.     ADC_CONTR &= ~ADC_FLAG;         /[表情]?AD??
  61.     return ADC_RES;                 /[表情]???
  62. }



  63. bit  fangx=0;//0??,1??
  64. uchar idata t=1;   /* ???? */
  65. uchar idata mk1=0;   /* ?????????? */
  66. uchar idata mk2=0;/* ??????*/
  67. uchar idata tmp1,tmp2;/[表情]??????

  68. void zhixian(char speed) /[表情]????
  69. {
  70.     fangx=0;
  71.     s1=1; s2=0;mk1=speed;
  72.     s3=1; s4=0;mk2=speed;
  73. }

  74. void left(char speed1,char speed2)/[表情]???
  75. {
  76.     fangx=0;
  77.     s1=1; s2=0;mk1=speed1;
  78.     s3=1; s4=0;mk2=speed2;
  79. }

  80. void right(char speed1,char speed2)/[表情]???
  81. {
  82.     fangx=0;
  83.     s1=1; s2=0;mk1=speed1;
  84.     s3=1; s4=0;mk2=speed2;
  85. }

  86. void Timer0Init(void)                //100US,22.1184MHz
  87. {
  88.     AUXR |= 0x80;                //1T
  89.     TMOD &= 0xF0;
  90.     TMOD |= 0x01;                //16?????1
  91.     TL0 = 0x5C;
  92.     TH0 = 0xF7;
  93.     TF0 = 0;
  94.     TR0 = 1;
  95.     EA=1;
  96.     ET0=1;
  97. }

  98. void pwm( ) //PWM???
  99. {
  100.     {
  101.         if(t==1) {tmp1=mk1;tmp2=mk2;}
  102.         if(t<tmp1)
  103.             en1=1;
  104.         else en1=0;
  105.         if(t<tmp2)
  106.             en2=1;
  107.         else en2=0;
  108.         Timer0Init();
  109.         t++;
  110.     }while(t>=10)
  111.         t=1;
  112.     TF0=0;
  113. }

  114. void main( )
  115. {
  116.     Timer0Init();
  117.     delay1ms();
  118.     while(1)
  119.     {
  120.         a=GetADCResult(0);
  121.         b=GetADCResult(1);
  122.         if(a>=b)
  123.         {
  124.             result3=a-b;
  125.             if(result3<10)
  126.                 zhixian(7);
  127.             else left(3,10);
  128.         }
  129.         else
  130.         {
  131.             result3=b-a;
  132.             if(result3<10)
  133.                 zhixian(7);
  134.             else right(10,3);
  135.         }
  136.         pwm( );
  137.     }
  138. }
復(fù)制代碼



回復(fù)

使用道具 舉報

ID:320306 發(fā)表于 2018-10-31 16:19 | 顯示全部樓層
速度快嗎?
回復(fù)

使用道具 舉報

ID:320306 發(fā)表于 2018-10-31 16:20 | 顯示全部樓層
還有就是轉(zhuǎn)彎的時候可以轉(zhuǎn)大角,是飛思卡爾吧,兄弟?
回復(fù)

使用道具 舉報

ID:418640 發(fā)表于 2018-10-31 17:26 | 顯示全部樓層
沖出去了說明響應(yīng)說明轉(zhuǎn)彎響應(yīng)太慢了,所以可以:(1)盡量提前檢測到轉(zhuǎn)彎; (2)在轉(zhuǎn)彎的地方減速; (3)提高轉(zhuǎn)彎系統(tǒng)的響應(yīng)速度。
回復(fù)

使用道具 舉報

ID:308437 發(fā)表于 2018-10-31 17:34 | 顯示全部樓層
想辦法提前減速,(減小PWM),如果建議用PID調(diào)節(jié),效果會好很多
回復(fù)

使用道具 舉報

ID:418691 發(fā)表于 2018-10-31 19:10 | 顯示全部樓層
建議再最前端加感應(yīng)器,越早知道轉(zhuǎn)彎的地方越早轉(zhuǎn)彎才能越完美的控制,轉(zhuǎn)彎減速再多些,基本就可以了。
回復(fù)

使用道具 舉報

ID:418714 發(fā)表于 2018-10-31 20:33 | 顯示全部樓層
轉(zhuǎn)軸的問題
回復(fù)

使用道具 舉報

ID:418714 發(fā)表于 2018-10-31 20:33 | 顯示全部樓層
轉(zhuǎn)軸的問題
回復(fù)

使用道具 舉報

ID:418762 發(fā)表于 2018-10-31 20:50 | 顯示全部樓層
關(guān)于一個輪子要延遲一會兒再轉(zhuǎn),建議先測試一下原因是硬件問題還是軟件問題,可以編寫一個簡單的測試雙輪轉(zhuǎn)動程序試一下
回復(fù)

使用道具 舉報

ID:418776 發(fā)表于 2018-10-31 21:12 | 顯示全部樓層
頂一個
回復(fù)

使用道具 舉報

ID:418813 發(fā)表于 2018-10-31 23:05 | 顯示全部樓層
控速嘗試一下
回復(fù)

使用道具 舉報

ID:402951 發(fā)表于 2018-10-31 23:12 | 顯示全部樓層
您是位高手,在這里我只是一位初學(xué)者,您的代碼我可能幫不了你,但是您的文字吸引了我,
原因有幾點(diǎn):1.您有車是四輪驅(qū)動的嗎?或是兩輪驅(qū)動(前驅(qū)還是后驅(qū))重點(diǎn).
                2.如果是兩輪驅(qū)動的話,那么就要加轉(zhuǎn)方向輪裝置.
                3.您的思路是智能小車,那么就是隨機(jī)轉(zhuǎn)彎.(因為現(xiàn)在馬頭貨柜智能車用的是GPS定位路線).
                4. 智能探頭回傳的圖片與內(nèi)核處理數(shù)據(jù)要快(車速與過彎距離代碼).
                5.人工智能代碼(識別與評詁的程序)這一段代碼在十年前就有人一直在做,一但有做出來就是機(jī)械 人時代.
          如果不做GPS定位路線,那么只有做智能識別循環(huán)代碼.暈..現(xiàn)在才發(fā)現(xiàn)有點(diǎn)跑題了.寫這么多文字不想刪除就當(dāng)是一種思路吧.
其實(shí)您可以在循跡過彎處加點(diǎn)識別裝置或車速放慢點(diǎn)(過彎調(diào)速),就能解決這問題.
回復(fù)

使用道具 舉報

ID:417020 發(fā)表于 2018-11-1 07:55 來自觸屏版 | 顯示全部樓層
應(yīng)該是車速問題
回復(fù)

使用道具 舉報

ID:418922 發(fā)表于 2018-11-1 09:30 | 顯示全部樓層
循跡靠的是對路況的識別,你看看是不是識別的過程沒編譯好
回復(fù)

使用道具 舉報

ID:418931 發(fā)表于 2018-11-1 09:33 | 顯示全部樓層
建議使用PID調(diào)節(jié)
回復(fù)

使用道具 舉報

ID:419676 發(fā)表于 2018-11-2 14:56 | 顯示全部樓層
這種情況應(yīng)該降低車速,并且加快轉(zhuǎn)彎檢測的響應(yīng)速率
回復(fù)

使用道具 舉報

ID:419886 發(fā)表于 2018-11-2 20:51 | 顯示全部樓層
硬件問題吧,還有就是減速拐彎
回復(fù)

使用道具 舉報

ID:385372 發(fā)表于 2018-11-2 21:24 | 顯示全部樓層
軌跡傳感器調(diào)節(jié)一下
回復(fù)

使用道具 舉報

ID:420028 發(fā)表于 2018-11-3 10:18 | 顯示全部樓層
建議使用PID調(diào)節(jié)
回復(fù)

使用道具 舉報

ID:473219 發(fā)表于 2019-8-23 14:46 | 顯示全部樓層
試著加長前沿
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美国产视频一区二区 | 国产精品久久国产愉拍 | 九九热精| 国产激情视频在线 | 午夜色婷婷| 午夜爽爽爽男女免费观看影院 | 91麻豆精品国产91久久久久久久久 | 精品综合久久久 | 日韩一区二区三区视频在线观看 | 亚洲成人自拍 | 国产www.| 国产欧美精品一区二区三区 | 2020天天操 | 日本不卡免费新一二三区 | 日本在线免费 | 在线观看亚洲专区 | 国产精品久久久久久久久久免费看 | 亚洲人在线 | 国产精品成人一区二区三区 | 久久久精品国产 | 日韩一区二区三区视频在线播放 | 欧美激情一区 | 毛片毛片毛片毛片 | 亚洲欧美日韩在线 | 黄色一级大片在线观看 | 7777奇米影视 | 在线中文视频 | 国产一区二区在线播放 | 欧美亚洲国产日韩 | 国产九九九 | 在线视频一区二区 | 粉嫩av在线 | 国产精品久久一区二区三区 | 成人精品一区二区三区 | 人人玩人人干 | 一区二区三区不卡视频 | 国产精品18久久久久久久 | 免费一级大片 | 日本精品视频在线 | 亚洲成人一区二区在线 | 国产午夜精品理论片a大结局 |