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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8611|回復: 2
打印 上一主題 下一主題
收起左側

循跡小車制作資料-51單片機

  [復制鏈接]
跳轉到指定樓層
樓主
分享一下哈。
本尋跡小車主要由2部分組成:1.黑線的檢測。2電機控制

1、黑線的檢測方法:
    黑線的檢測主要利用的是不同顏色對光的反射率不同來實現檢測。同種物體,黑色對光的反射最差,這樣利用光敏電阻檢測反射
回來的光線強度就可以判斷反射區域的顏色是否為黑色。這里用的光敏電阻型號是5516,有光的時候光敏電阻的阻值為5-10K,
沒有檢測到反射光的時候,電阻的阻值為0.8M左右。黑線的檢測分左右2組,這里以其中一組來講解,另外一組的原理也是這樣的。
    電路中的R4為光敏電阻,LM393比較器的6腳的電壓為[R4/(R4+R2)]*VCC,VCC為電源電壓,這里是4.5V。檢測到有反射光的時候,也就是白色區域的時候,比較器6腳的電壓為:1.5V-2.25V。沒有反射光的時候,也就是黑色區域的時候,
比較器6腳的電壓為:[800K/(800K+10K)]*4.5V,約為4.4V。通過調節R1電位器,使得比較器5腳的電壓再2.3-3.5V范圍左右,這樣在有反射光和沒有反射光的時候,LM393比較器的7腳就可以輸出不同的電平。有反射光的時候,6腳的電壓小于5腳,芯片7腳輸出高電平。無反射光的時候,6腳的電壓大于5腳,7腳輸出低電平,單片機通過檢查7腳的電壓,就可以判斷所處區域為白色還是黑色。
2、電機控制
    電機有2個,分左右2側。單片機通過一個PNP三極管來控制電機。當單片機輸出的電平為低電平時,電機轉動。
    如果單片機輸出的電平為高電平,電機停止轉動。如果2個電機同時往前進的方向轉動,小車就前進。如果左邊的電機停止,右邊的電機前進,這樣小車就左轉;
    如果左邊的電機前進,右邊的電機停止,這樣小車就右轉。利用這個原理就可以控制小車的左右轉和前進。


    尋跡原理:小車前進的時候,如果檢測到左邊碰到黑線了,左邊的電機就稍微停止轉動一下,這樣小車就會左拐。如果檢測到右邊碰到黑線了,右邊的電機就停止轉動一下,讓小車右拐。停止運行的時候和車速有關系,這樣需要多次調試,來取得一個合適的延時。









元件名稱    數量
PCB板    1
100歐電阻    5
4.7K電阻    3
10K電阻    7
1N4007    5
100UF25V    3
10UF25V    1
104瓷片電容    6
8550三極管    3
40P IC座    1
8P IC座    1
5MM LED 紅發紅    3
8*8自鎖開關    1
103藍白電位器    2
7號3節電位器(貼好雙面膠)    1
電機(貼好雙面膠)    2
車輪+橡皮圈    2
M2.5*8螺絲    2
M5*30螺絲+普通螺母+帶帽螺母    1
5MM LED 白發紅    3
5516光敏電阻    2
LM393芯片    1
AT89S52(燒寫好程序)    1

單片機源程序如下:
  1. /*功能:尋跡小車
  2. 使用芯片:AT89S52 或者 STC89C52 或AT89S51 STC89C51
  3. 晶振:12MHZ
  4. 編譯環境:Keil
  5. 作者:zhengzhongxign39*/

  6. #include <reg52.h>            // 引用標準庫的頭文件
  7. #include <intrins.h>

  8. #define uchar unsigned char
  9. #define uint  unsigned int
  10. //=================電機驅動=====================
  11. sbit  dianji_r = P3^0;  //右邊電機控制口,低電平轉?
  12. sbit  dianji_l = P3^7;  //左邊電機控制口,低電平轉
  13. //=============循跡感應接口======================
  14. sbit  xjmk_r   = P3^2;  // 右邊尋跡模塊檢測口 INT0
  15. sbit  xjmk_l   = P3^3;  // 左邊尋跡模塊檢測口 INT1


  16. void  check_righet();   //右邊檢測到黑線時候測試程序
  17. void  check_left();     //左邊檢測到黑線時候測試程序

  18. void delay_50us(uint t);
  19. void delayms(uint Ms);


  20. uchar r_count;          //右邊傳感器檢測到的次數計數單元
  21. uchar l_count;
  22. uint time;
  23. //***********************主程序******************************
  24. main()   
  25. {   
  26.    time=50;

  27.    dianji_r=0;//上電時右側電機運行
  28.    dianji_l=0;//上電時左側電機運行

  29.    EA=1;
  30.    EX1=1;
  31.    EX0=1;
  32.    IT1=0;
  33.    IT0=0;
  34.    xjmk_r=1;//置IO為1,準備讀取數據
  35.    xjmk_l=1;
  36.    _nop_();
  37.    r_count=0;
  38.    l_count=0;
  39.     while(1)
  40.     {
  41.           _nop_();
  42.       //  check_righet();//調用右邊尋跡檢測傳感器
  43.       //   check_left();//
  44.        if(r_count>=1)
  45.         {
  46.               delayms(time);
  47.               dianji_r=0;
  48.               dianji_l=0;
  49.               r_count=0;
  50.             _nop_();   
  51.         }
  52.         if(l_count>=1)
  53.         {
  54.             
  55.               delayms(time);
  56.               dianji_r=0;
  57.               dianji_l=0;
  58.               l_count=0;
  59.               _nop_();
  60.          }
  61.     }
  62.    
  63. }
  64. void init0int() interrupt 2
  65. {
  66.     l_count=5;
  67.     dianji_l=1;
  68.     dianji_r=0;
  69.     if(r_count>0)
  70.     {   EX0=0;
  71.         delayms(20);
  72.         if(time>=20)
  73.                         time-=19;
  74.         EX0=0;
  75.     }
  76.     return;
  77. }

  78. void init1int() interrupt 0
  79. {
  80.     r_count=5;
  81.     dianji_r=1;
  82.     dianji_l=0;
  83.     if(l_count>0)
  84.     {
  85.                 EX1=0;
  86.                 delayms(20);
  87.                 if(time>=20)
  88.                         time-=19;
  89.                 EX1=1;
  90.         }
  91.     return;
  92. }

  93. //*******************************************************************************
  94. //函數名稱:
  95. //功能:左邊檢測到黑線時候測試程序
  96. void  check_left()
  97. {
  98.     if(xjmk_l==0)//檢測右邊的傳感器是否感應到黑線
  99.         {
  100.                 delay_50us(1);//延時,去除機械振動
  101.                _nop_();
  102.                if(xjmk_l==0)//再次檢測
  103.                {
  104.                  delay_50us(1);//延時,去除機械振動
  105.                  if(xjmk_l==0)
  106.                  {  
  107.                     l_count++;
  108.                     xjmk_l=1;
  109.                  }
  110.               }
  111.          }
  112. }
  113. //*******************************************************************************
  114. //函數名稱:
  115. //功能:右邊檢測到黑線時候測試程序
  116. void   check_righet()
  117. {
  118.     if(xjmk_r==0)//檢測右邊的傳感器是否感應到黑線
  119.     {
  120.           delay_50us(1);//延時,去除機械振動
  121.           if(xjmk_r==0)//再次檢測
  122.           {
  123.              delay_50us(1);//延時,去除機械振動
  124.              if(xjmk_r==0)
  125.              {  
  126.                 r_count++;
  127.                 xjmk_r=1;

  128.              }
  129.           }
  130.      }
  131. }

  132. //*******************************************************************************
  133. //函數名稱:void delay_50US(unsigned int t)
  134. //功能: 延時50*t(us)
  135. void delay_50us(uint t)
  136. {
  137.   uchar j;
  138.   for(;t>0;t--)
  139.   {

  140.     for(j=19;j>0;j--);
  141.   }
  142. }

  143. /*====================================================================
  144.   設定延時時間:x*1ms
  145. ====================================================================*/
  146. void delayms(uint Ms)
  147. {
  148.   uint i,TempCyc;
  149.   for(i=0;i<Ms;i++)
  150.   {
  151.     TempCyc =70;
  152.     while(TempCyc--);
  153.   }
  154. }
復制代碼

Keil代碼與制作說明元件清單3文件下載:
51單片機循跡小車資料.zip (863.5 KB, 下載次數: 107)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:648017 發表于 2019-11-25 16:35 | 只看該作者
很棒,很詳細
回復

使用道具 舉報

板凳
ID:1075026 發表于 2023-5-2 22:30 | 只看該作者
能繼續分享下原理圖和PCB源文件嗎
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲三级av| 九九久久在线看 | 9久久| 二区在线观看 | 欧美一区二区免费 | 成人免费看黄 | 91av在线不卡 | 欧美理论片在线 | 亚洲天堂中文字幕 | 国产一区精品 | 亚洲aⅴ一区二区 | 国产一区91精品张津瑜 | 天天躁日日躁狠狠躁白人 | 亚洲人成网亚洲欧洲无码 | 国产精久久久久久久妇剪断 | 国产精品国产三级国产aⅴ浪潮 | 精品二区| 国产91 在线播放 | 精品一二区 | www.4虎影院 国产999精品久久久影片官网 | 国产精品高清在线 | 亚洲免费在线观看 | 精品一二三区 | 国产成人精品久久二区二区91 | 亚洲毛片在线观看 | 国产一区| 99热视 | 日韩欧美亚洲 | 综合国产 | 北条麻妃av一区二区三区 | 亚洲一区二区视频在线观看 | 久久久久久久久中文字幕 | 国产在线观看一区 | 综合色播 | 免费观看的av | 在线观看视频亚洲 | 国产在线一级片 | 91精品国产色综合久久不卡蜜臀 | 在线播放中文字幕 | 午夜视频网 | 久久极品 |