標題: 關(guān)于循跡小車的若干疑問 [打印本頁]

作者: Afan的單片機    時間: 2017-12-17 14:45
標題: 關(guān)于循跡小車的若干疑問
   本人在制作循跡小車,目前已經(jīng)到代碼階段。對于小車轉(zhuǎn)彎有不理解,一開始是左右輪給高低電平來實現(xiàn)轉(zhuǎn)彎現(xiàn)在想用pwm來實現(xiàn),只是自己水平不高所以請教一下大家,謝謝!

我將圖中的pwm下載到單片機當中,照樣是一個輪子動一個不動,然而我認為應(yīng)該是左右輪轉(zhuǎn)速不一樣從而實現(xiàn)轉(zhuǎn)彎的?請指教

1.png (10.98 KB, 下載次數(shù): 51)

pwm

pwm

作者: Afan的單片機    時間: 2017-12-17 14:46
請問是T設(shè)置時間不夠嗎?或者用定時器中斷?
作者: Afan的單片機    時間: 2017-12-17 19:18
請問誰可以幫我看看嗎
作者: fx283    時間: 2017-12-17 21:02
你這寫的不是pwm的程序,使用pwm至少得給個定時器吧,還要有中斷服務(wù)函數(shù)。
給個例子:
這是初始化pwm的程序

  1. /**************************************************************
  2. /*函數(shù)作用:啟動定時器T0,100us
  3. /**************************************************************/
  4. void Time0init()
  5. {
  6.         TMOD = 0x02;
  7.     TH0 = TL0 = 0x9C;
  8.     EA = 1;
  9.     ET0 = 1;
  10.     TR0 = 1;
  11. }
  12. /**************************************************************
  13. /*函數(shù)作用:定時器中斷
  14. /**************************************************************/
  15. void Timer0Interrupt(void) interrupt 1
  16. {
  17.         pwm++;
  18.         if(pwm>=100) pwm=0;
  19. }
復(fù)制代碼

可以在你的函數(shù)里這樣使用:   
  1. void Turn_Left(u8 sudu)
  2. {
  3.         Right_Motor=1;
  4.         if(pwm<=sudu)
  5.                 Left_Motor=1;
  6.         else
  7.                 Left_Motor=0;
  8. }
復(fù)制代碼
這樣,小車要左轉(zhuǎn),就讓它的左輪慢,就給左輪pwm調(diào)速調(diào)慢它,右輪一直是最大速度,這樣就有差速了,實現(xiàn)轉(zhuǎn)彎。

你的pwm不是那樣產(chǎn)生的,論壇上有許多關(guān)于pwm的講解,隨便一搜就搜得到。




作者: Afan的單片機    時間: 2017-12-18 12:09
fx283 發(fā)表于 2017-12-17 21:02
你這寫的不是pwm的程序,使用pwm至少得給個定時器吧,還要有中斷服務(wù)函數(shù)。
給個例子:
這是初始化pwm的 ...

我是按照占空比來的啊沒錯吧
作者: 可可分享    時間: 2017-12-18 16:52
好難的這個  我是新手
作者: Afan的單片機    時間: 2017-12-18 19:05
可可分享 發(fā)表于 2017-12-18 16:52
好難的這個  我是新手

really




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1