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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

避障循跡小車制作(有舵機)多圖

  [復制鏈接]
跳轉到指定樓層
樓主
ID:246103 發表于 2017-12-14 16:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
       很高興有這么個機會可以發帖子,這是我第一次在網絡上發帖子
這次的diy項目,是避障循跡小車。本人純屬個人愛好,沒有這方面的經驗。唯一占點優勢的是,我是從事軟件開發的。雖然沒接觸過c語言,但基本都懂。
       前年做過一個8*8*8的光立方,雖然也能點亮燈。但是整體過程都是參考網上,就是照葫蘆畫瓢,最后的效果也是非常不理想。感覺沒什么意思。
       做這個小車,也是蓄謀已久,終于狠下心開始弄。因為對這方面的不了解,包括買元件,買錯好幾次,所以此次成本控制的非常不理想。希望我這個帖子可以幫助到一些想做的朋友。

進入正題
此小車為四驅驅動 車底盤網上買的現成的
使用stc89c52rc芯片
l298n電機驅動模塊(網上買的現成的 當時想自己做 但是看說是有很多互相干擾的因素 沒敢嘗試)
四路紅外尋跡
超聲波避障

小車主要邏輯是檢測到黑線 按黑線行走 沒有黑線 轉到避障模式。

一、底盤
小車的底盤,我是在網上買的現成的。 比較坑爹的是,因為我的最小系統是自己焊接的。而且其他模塊也都是單獨購買,因為不是和底盤是一套的東西。所以看著底盤上的開孔什么的非常多。
但是都和我設計的不一樣 所以我自己又借的電轉自己轉的眼。建議想做的朋友,如果動手能力強就自己做個底盤,然后買幾個電機和輪子。



二、焊接最小系統
這一塊基本了解一些,所以基本還可以。比較順利。我的焊接水平有限,大家勿噴




三、測試電機驅動模塊
因為我都不是很懂 所以每個階段都需要反復測試
電機驅動,我使用的網上現成的L298n模塊。使用了兩個,一個模塊驅動兩個電機。控制方式是一個模塊控制前兩個輪子,另外一個控制后兩個輪子。這塊的連線應該還是比較容易的
網上搜索有一堆資料。這塊還是強調一下,要和單片機共地。 另外說一嘴,電機的導線接的長一點。我的驅動因為放在底層的底盤,所以弄的短了些。當時我手頭沒有104電容,所以電機也沒焊接
電容。但是還好,我沒遇到干擾的問題。建議焊接上,具體什么作用,我就不大了解了,說是濾波。





四、測試舵機
舵機這塊是我最撓頭的,調試時間最長。程序調了好久,電路也調整好幾次。我一開始連接到p0上了,怎么弄都不好用。后來查了一下,p0端口需要焊接上拉電阻(應該沒叫錯吧)。但是舵機各種神奇
的現象。要么一圈一圈的轉(正常180度),要么不動。最后懷疑是不是舵機壞掉了。一狠心在網上又買了兩個。回來測試還是這樣。 然后又拿出一開始的那個,還是原來的電路,還是原來的程序,居然可以了。
應該是我程序上控制了轉動時候 不是完全的90度 不到90度就停下來(控制方波長度)。正好在單位撿了一塊抽屜底下的小木板,就自己用壁紙刀切了一個舵機云臺。感覺還不錯。哈哈




五、避障模式
電機驅動、電機、舵機都拼到一塊。發現的電源根本帶不動,后來查了一下需要18650電池。原來查資料以為就是普通的五號電池。我這也不知道還有這種電池啊。就買了兩節。回來發現電機就是不動。然后用12v的變壓器
測試都是正常的。測試兩節電池串聯電壓大約在7.4v,感覺應該夠了。反正就還是不行。然后我就又買了兩節。用了三節電池都還是不行。然后就是拆開整個小車,分析各個電路,就都是發現不了問題。只要單片機供上電
電機就停止。當時晚上鼓搗的,不知怎么鬼使神差的居然把芯片燒掉了。然后換個芯片,又燒掉了。后來發現應該是有一個驅動模塊穩壓模塊壞了,輸出的電壓不是5v。直接變成高電壓了。最后的最后才發現,最終的
損失不止兩個芯片一個驅動模塊,居然連超聲波也燒壞了一個。沒辦法沒芯片了,又得等好幾天了。 然后后來發現 我電池還是得充電,未充滿。我tm也是醉了。 沒文化這可怕啊。最后的最后 實在是各種神經問題。
就采用單片機和驅動單獨供電。兩節電池供電機,一節電池供單片機。基本穩定下來了。程序就比較容易了。我懂了機制,程序問題不大。


六、循跡模式
我一開始沒控制電機驅動的通道使能。小車都是全速前進的。在循跡這塊發現不行了,跑的太快了。小車都沖出跑道。唉 真心覺得不能偷懶 又都都拆開,重新接上杜邦線。這塊也發現,因為我個人不算有潔癖,但還是希望
小車整體看起來利索點。所以驅動和紅外模塊都放在底層底盤了。這個其實不是特別方便。因為在調試的時候 看不到紅外模塊的指示燈。大家可以注意點。
調整程序 通過占空比 控制輪子轉速。這塊程序也比較順利 程序基本是一次性通過。


最終效果:



電路圖我沒有了 就是參考網上焊接的。程序放上來 可能不符合行業標準 大家別笑話。

這次瞎胡鬧,感覺結果還不錯,實現自己想要的功能了。滿滿的成就感。這里特別感謝一下網友,有個網友特別熱心,請教的問題都是知無不言。
帖子就到這里 大家有什么問題可以提出來 反正我也不一定會……哈哈

部分單片機源程序:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. /********常量聲明********/
  5. #define uint unsigned int

  6. /********方法聲明********/
  7. void Init();
  8. void Delay10us();                //@12.000MHz
  9. void Run();
  10. void ToLeft();
  11. void ToRight();
  12. void ToForward();
  13. void ToBack();
  14. void KeyScan();

  15. /********針腳聲明********/
  16. sbit Left_Lamp = P1^0;     //左轉向燈
  17. sbit Right_Lamp = P1^1;    //右轉向燈
  18. sbit Forward_Lamp = P1^2;  //前進 大燈
  19. sbit Back_Lamp = P1^3;     //后退 大燈

  20. sbit Left_Switch = P1^4;    //左轉向 按鍵 主要用于測試 控制左轉 左轉向燈變亮
  21. sbit Right_Switch = P1^5;   //右轉向 按鍵 主要用于測試 控制右轉 右轉向燈變亮
  22. sbit Forward_Switch = P1^6; //前進 按鍵 主要用于測試 控制前進 前進燈變亮
  23. sbit Back_Switch = P1^7;    //后退 按鍵 主要用于測試 控制后退 后退燈變亮

  24. /********電機驅動針腳********/
  25. sbit P2_0 = P2^0;
  26. sbit P2_1 = P2^1;
  27. sbit P2_2 = P2^2;
  28. sbit P2_3 = P2^3;
  29. sbit P2_4 = P2^4;
  30. sbit P2_5 = P2^5;
  31. sbit P2_6 = P2^6;
  32. sbit P2_7 = P2^7;

  33. /********電機動作定義********/
  34. #define Left_Moto_Go    {P2_0=1, P2_1=0, P2_2=1, P2_3=0;} //左邊兩個電機向前走
  35. #define Left_Moto_Back  {P2_0=0, P2_1=1, P2_2=0, P2_3=1;} //左邊兩個電機向后轉
  36. #define Left_Moto_Stop  {P2_0=0, P2_1=0, P2_2=0, P2_3=0;} //左邊兩個電機停轉
  37. #define Right_Moto_Go   {P2_4=1, P2_5=0, P2_6=1, P2_7=0;} //右邊兩個電機向前走
  38. #define Right_Moto_Back {P2_4=0, P2_5=1, P2_6=0, P2_7=1;} //右邊兩個電機向前走
  39. #define Right_Moto_Stop {P2_4=0, P2_5=0, P2_6=0, P2_7=0;} //右邊兩個電機停轉

  40. uint Left_Switch_Flag = 0;      //左轉向按下標志
  41. uint Right_Switch_Flag = 0;     //右轉向按下標志
  42. uint Forward_Switch_Flag = 0;   //前進按下標志
  43. uint Back_Switch_Flag = 0;      //后退按下標志

  44. /********主函數********/
  45. void main()
  46. {
  47.         Init();

  48.         while(1)
  49.         {
  50.                 Run();       
  51.         }
  52. }

  53. /********系統初始化********/
  54. void Init()
  55. {
  56.        
  57. }

  58. /********開始運行********/
  59. void Run()
  60. {
  61.     KeyScan();
  62.         if (Left_Switch_Flag)
  63.         {
  64.                 ToLeft();               
  65.         }else
  66.         {
  67.                 Left_Lamp = 1;
  68.         }       

  69.         if (Right_Switch_Flag)
  70.         {
  71.                 ToRight();               
  72.         }else
  73.         {
  74.                 Right_Lamp = 1;
  75.         }

  76.         if (Forward_Switch_Flag)
  77.         {
  78.                 ToForward();               
  79.         }else
  80.         {
  81.                 Forward_Lamp = 1;
  82.         }

  83.         if (Back_Switch_Flag)
  84.         {
  85.                 ToBack();               
  86.         }else
  87.         {
  88.                 Back_Lamp = 1;
  89.         }         
  90. }

  91. /********按鍵判斷函數********/
  92. void KeyScan()
  93. {
  94.         if (Left_Switch == 0)    //左轉向按下
  95.         {
  96.                 Delay10us();
  97.                 if (Left_Switch == 0)
  98.                 {
  99.                         while(Left_Switch==0);  //等待按鍵抬起
  100.                         Left_Switch_Flag = !Left_Switch_Flag;
  101.                         Right_Switch_Flag = 0;       
  102.                         Forward_Switch_Flag = 0;       
  103.                         Back_Switch_Flag = 0;                                       
  104.                 }
  105.         }
  106.        
  107.         if (Right_Switch == 0)    //右轉向按下
  108.         {
  109.                 Delay10us();
  110.                 if (Right_Switch == 0)
  111.                 {       
  112.                         while(Right_Switch==0);  //等待按鍵抬起       
  113.                         Left_Switch_Flag = 0;
  114.                         Right_Switch_Flag = !Right_Switch_Flag;
  115.                         Forward_Switch_Flag = 0;       
  116.                         Back_Switch_Flag = 0;
  117.                 }
  118.         }
  119.        
  120.         if (Forward_Switch == 0)    //前進按下
  121.         {
  122.                 Delay10us();
  123.                 if (Forward_Switch == 0)
  124.                 {
  125.                         while(Forward_Switch==0);  //等待按鍵抬起
  126.                         Forward_Switch_Flag = !Forward_Switch_Flag;
  127.                         Left_Switch_Flag = 0;
  128.                         Right_Switch_Flag = 0;
  129.                         Back_Switch_Flag = 0;       
  130.                 }
  131.         }
  132.        
  133.         if (Back_Switch == 0)    //后退向按下
  134.         {
  135.                 Delay10us();
  136.                 if (Back_Switch == 0)
  137.                 {
  138.                         while(Back_Switch==0);  //等待按鍵抬起
  139.                         Back_Switch_Flag = !Back_Switch_Flag;
  140.                         Forward_Switch_Flag = 0;
  141.                         Left_Switch_Flag = 0;
  142.                         Right_Switch_Flag = 0;       
  143.                 }
  144.         }       
  145. }

  146. /********小車向左 左轉向燈閃爍 右側電機正轉運行 左側電機停止 ********/
  147. void ToLeft()
  148. {
  149.     Right_Lamp = 1;    //右轉向燈
  150.     Forward_Lamp = 1;  //前進 大燈
  151.     Back_Lamp = 1;     //后退 大燈       
  152.    
  153.         Left_Moto_Stop;    //左側電機停止
  154.         Right_Moto_Go;           //右側電機前行

  155.         Delay10us();
  156.        
  157.         Left_Lamp = ~Left_Lamp;     //左轉向燈
  158. }

  159. /********小車向右 右轉向燈亮起 右側電機停止 左側電機正轉運行********/
  160. void ToRight()
  161. {
  162.         Left_Lamp = 1;           //左轉向燈
  163.     Forward_Lamp = 1;  //前進 大燈
  164.     Back_Lamp = 1;     //后退 大燈       

  165.         Left_Moto_Go;           //左側電機前行
  166.     Right_Moto_Stop;   //右側電機停止

  167.         Delay10us();
  168.         Right_Lamp = ~Right_Lamp;     //右轉向燈       
  169. }

  170. /********小車前行 前行燈亮起 右側電機正轉運行 左側電機正轉運行********/
  171. void ToForward()
  172. {
  173.     Left_Lamp = 1;           //左轉向燈
  174.         Right_Lamp = 1;    //右轉向燈
  175.     Forward_Lamp = 0;  //前進 大燈
  176.     Back_Lamp = 1;     //后退 大燈
  177.        
  178.         Left_Moto_Go;      //左側電機前行
  179.         Right_Moto_Go;           //右側電機前行       
  180. }

  181. /********小車后退 后退燈亮起 右側電機反轉運行 左側電機反轉運行********/
  182. void ToBack()
  183. {
  184.         Left_Lamp = 1;     //左轉向燈
  185.         Right_Lamp = 1;    //右轉向燈
  186.     Forward_Lamp = 1;  //前進 大燈
  187.     Back_Lamp = 0;     //后退 大燈

  188.         Left_Moto_Back;   //左側電機后退
  189.         Right_Moto_Back;  //右側電機后退
  190. }

  191. /********小車停止 燈全滅掉 右側電機停止 左側電機停止********/
  192. void Stop()
  193. {
  194.     Left_Lamp = 1;     //左轉向燈
  195.         Right_Lamp = 1;    //右轉向燈
  196.     Forward_Lamp = 1;  //前進 大燈
  197.     Back_Lamp = 0;     //后退 大燈
  198.     Left_Moto_Stop;           //左側電機停止
  199.         Right_Moto_Stop;   //右側電機停止
  200. }

  201. /********延時函數********/
  202. void Delay10us()                //@12.000MHz
  203. …………
  204. …………
  205. …………限于本文篇幅 余下代碼請從51黑下載附件…………

復制代碼


P71111-001550.jpg (3.87 MB, 下載次數: 220)

P71111-001550.jpg

P71111-151713.jpg (3.62 MB, 下載次數: 220)

P71111-151713.jpg

P71111-001553.jpg (3.89 MB, 下載次數: 203)

P71111-001553.jpg

P71111-151715.jpg (3.95 MB, 下載次數: 216)

P71111-151715.jpg

P71111-190518.jpg (3.15 MB, 下載次數: 214)

P71111-190518.jpg

P71111-190520.jpg (3.22 MB, 下載次數: 229)

P71111-190520.jpg

P71121-065727.jpg (3.64 MB, 下載次數: 203)

P71121-065727.jpg

P71121-065734.jpg (3.77 MB, 下載次數: 211)

P71121-065734.jpg

P71122-221509.jpg (4.23 MB, 下載次數: 184)

P71122-221509.jpg

P71123-210628.jpg (3.85 MB, 下載次數: 208)

P71123-210628.jpg

P71123-210630.jpg (3.9 MB, 下載次數: 206)

P71123-210630.jpg

P71123-210639.jpg (4.3 MB, 下載次數: 196)

P71123-210639.jpg

P71123-221451.jpg (3.92 MB, 下載次數: 215)

P71123-221451.jpg

P71123-221454.jpg (3.25 MB, 下載次數: 226)

P71123-221454.jpg

P71124-211824.jpg (4.06 MB, 下載次數: 199)

P71124-211824.jpg

P71124-221123.jpg (3.91 MB, 下載次數: 229)

P71124-221123.jpg

P71124-233811.jpg (3.01 MB, 下載次數: 213)

P71124-233811.jpg

P71124-233814.jpg (3.68 MB, 下載次數: 211)

P71124-233814.jpg

P71124-233827.jpg (4.39 MB, 下載次數: 188)

P71124-233827.jpg

P71124-233832.jpg (4.05 MB, 下載次數: 216)

P71124-233832.jpg

P71125-104107.jpg (3.41 MB, 下載次數: 217)

P71125-104107.jpg

P71128-190643.jpg (3.87 MB, 下載次數: 189)

P71128-190643.jpg

P71202-112731.jpg (4.31 MB, 下載次數: 227)

P71202-112731.jpg

P71202-112737.jpg (4.12 MB, 下載次數: 210)

P71202-112737.jpg

P71203-202109.jpg (3.69 MB, 下載次數: 202)

P71203-202109.jpg

P71210-181339.jpg (3.74 MB, 下載次數: 202)

P71210-181339.jpg

P71210-181347.jpg (4.19 MB, 下載次數: 206)

P71210-181347.jpg

P71210-181355.jpg (3.38 MB, 下載次數: 202)

P71210-181355.jpg

P71213-181808.jpg (2.95 MB, 下載次數: 190)

P71213-181808.jpg

P71213-181812.jpg (2.99 MB, 下載次數: 185)

P71213-181812.jpg

P71213-182110.jpg (4.04 MB, 下載次數: 184)

P71213-182110.jpg

0.jpg (24.68 KB, 下載次數: 189)

0.jpg

StubbornSmallTaurus.zip

53.26 KB, 下載次數: 111, 下載積分: 黑幣 -5

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

使用道具 舉報

沙發
ID:246103 發表于 2017-12-14 17:23 | 只看該作者
視頻地址
回復

使用道具 舉報

板凳
ID:246103 發表于 2017-12-15 08:20 | 只看該作者
回復

使用道具 舉報

地板
ID:246103 發表于 2017-12-15 08:22 | 只看該作者
回復

使用道具 舉報

5#
ID:243552 發表于 2017-12-20 09:19 來自手機 | 只看該作者
走了不少彎路,成功來之不易,學習
回復

使用道具 舉報

6#
ID:265916 發表于 2018-1-20 15:42 | 只看該作者
請問樓主能給個聯系方式嗎,我也在做這個,碰到問題話可以向您請教,麻煩啦!
回復

使用道具 舉報

7#
ID:246103 發表于 2018-1-24 15:51 | 只看該作者
2281070217 發表于 2018-1-20 15:42
請問樓主能給個聯系方式嗎,我也在做這個,碰到問題話可以向您請教,麻煩啦!

2969305900
回復

使用道具 舉報

8#
ID:290278 發表于 2018-3-11 09:28 來自手機 | 只看該作者
只能說成功來之不易,給你個贊,值得我學習
回復

使用道具 舉報

9#
ID:286457 發表于 2018-3-18 14:23 | 只看該作者
學習學習 和你一樣在娛樂中摸索
回復

使用道具 舉報

10#
ID:322147 發表于 2018-5-9 18:30 | 只看該作者
最近也在做這個  不會編程序正瘋狂找程序  謝謝樓主了
回復

使用道具 舉報

11#
ID:243501 發表于 2018-5-18 18:36 | 只看該作者
請問有原理圖嗎?
回復

使用道具 舉報

12#
ID:471352 發表于 2019-3-10 21:26 | 只看該作者
請問下這是用攝像頭做的循跡么?不是傳感器吧?能用傳感器做么?
回復

使用道具 舉報

13#
ID:246103 發表于 2019-4-19 16:36 | 只看該作者
狼狽的色鬼 發表于 2019-3-10 21:26
請問下這是用攝像頭做的循跡么?不是傳感器吧?能用傳感器做么?

不是攝像頭啊
回復

使用道具 舉報

14#
ID:471632 發表于 2019-4-25 09:25 | 只看該作者
元件清單能列一下嗎?想弄一個試試
回復

使用道具 舉報

15#
ID:431514 發表于 2019-5-1 13:52 | 只看該作者
想弄一個試試,謝謝樓主分享
回復

使用道具 舉報

16#
ID:526072 發表于 2019-5-2 18:33 | 只看該作者
大神可以加一下qq嗎,我最近也在弄一個同樣的項目,碰到問題想要請教一下你,我的qq號:3136230793
回復

使用道具 舉報

17#
ID:526072 發表于 2019-5-2 18:34 | 只看該作者
狼狽的色鬼 發表于 2019-3-10 21:26
請問下這是用攝像頭做的循跡么?不是傳感器吧?能用傳感器做么?

超聲波
回復

使用道具 舉報

18#
ID:431514 發表于 2019-5-7 17:09 | 只看該作者
樓主加個qq。
回復

使用道具 舉報

19#
ID:531049 發表于 2019-5-8 21:31 | 只看該作者
能看一下原理圖嘛
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产成人av好男人在线观看 | 国产综合久久 | 精品毛片在线观看 | 精品中文字幕一区二区 | 网址黄| 免费国产视频在线观看 | 久色激情| 久久久久久久久久一区 | 亚洲精品久久久久久久久久久久久 | 欧美一级片在线观看 | 午夜天堂精品久久久久 | 91免费高清 | 免费看黄色视屏 | 亚洲视频精品 | 日韩欧美中文字幕在线观看 | 国产精品久久久久久久久久久久久 | 麻豆一区二区三区精品视频 | 欧美日韩一区二区电影 | 天堂中文在线观看 | 午夜a v电影 | www.激情.com | 青青草精品 | 久热国产精品视频 | 亚洲色欧美另类 | 青青久久 | 欧美极品在线观看 | 国产精品免费看 | 男女深夜网站 | 国内精品99 | 不卡的av电影 | 亚洲久草视频 | 日韩精品中文字幕在线 | 成年网站在线观看 | 7777奇米影视 | 日韩在线免费视频 | 尤物视频在线免费观看 | 日韩一级黄色毛片 | 黄网站在线观看 | 久久久久99 | 成人免费视频观看 | 国产精品久久久久久一区二区三区 |