關於我自己

2012年2月25日 星期六

LEGO NXT Motor Bricx

 task main()
{
   ClearScreen( );    //要先清空螢幕
   int t1 = CurrentTick( );   //取時間點t1
   OnFwd(OUT_A, 100);
   Wait(60000);        //讓馬達轉1秒=1000
   Off(OUT_A);     //停止馬達
   int angle = MotorRotationCount(OUT_A); //讀取馬達角度
   int t2 = CurrentTick( );   //讀取時間點t2
   while(1){
         TextOut(0,LCD_LINE1,"angle="); //LCD第一行顯示文字「angle=」
         NumOut(50,LCD_LINE1,angle);    //LCD第一行中間顯示馬達轉角
         TextOut(0,LCD_LINE2,"time=");  //LCD第二行輸出文字
         NumOut(50,LCD_LINE2,t2-t1);    //LCD第二行中間顯示經過時間
     

  }
}

解說:
 OnFwd(OUT_A, 100);  以100%電力輸出
  Wait(60000);       60000等於1分鐘
 所呈現的結果 ~ 讓我有點小小的吃驚 ~ 因為代表還會有一些少許的誤差
 angle = -12009
 time = -5536
一分種轉12009度  12009/360=33.3583   一分鐘轉33圈
看看上面圖片第一行的 33 rpm 的數值
(PS:更正 發現到MotorRotationCount讀的數值 ~ 只能讀到12000多數值就掛了
為什麼會發現呢? 因為看實際去轉並沒有那麼慢 ~ 然後用一秒去測為816度
816/360= 2.2666圈 ~ 等於1秒至少會轉2圈 ~ 意味      60*2=120 一分鐘至少要120圈左右  真正2.666*60=136圈
所以實際等於一分鐘360圈 ~ 有可能跟電壓跟電源有關 ~ 要實際用三用電表去測才知道)

另外可以參考

轉動的數值比較不會那麼吃驚
吃驚是時間 竟然有5536 換算下來有5秒
究竟5秒是怎麼來的 ~ 是因為要停馬達A所以花了5秒嗎?  Off(OUT_A);     //停止馬達

著點要再看看為什麼原因導致誤差5秒 ~ 自己在看轉動的時候要到1分鐘的時候
馬達好像在前5秒就開始轉慢了 ~ 給我的感覺像下面圖片的01
我本來期待是02的圖式 ~可以瞬間停下來的說

6 則留言:

  1. 建議注意int的溢位問題,如果馬達長時間運轉,數值會超過int的範圍,改為long會比較正確。

    回覆刪除
  2. 非常感謝您的回覆 ~ 我在之前測式的時候有用long 還是一樣的情況

    照理說int的值 應該從-32768到+32767

    但是int到12000就掛掉了 ~ 讓我百思不解

    而且我在想是不是本身軟體就有問題 ~ 因為Bricx C++無法用float

    如果我有說錯 ~ 非常歡迎指正我 ~ 而且我也非常高興您的回覆

    順便問一下 ~ 你知道台灣哪邊有在單單賣一大包齒輪的說

    回覆刪除
  3. 你好:

    我用long測試你的程式是正確的。

    時間剛好是60000,int溢位後很符合你的-5xxx

    角度在52200左右,int溢位後很符合你的-12000

    若是需要我可以將程式寄給你測試。

    另外NXC已經支援float,請更新韌體及BricxCC新版本。

    如果要單買齒輪,請直接到露天拍賣找林老師詢問。

    探奇 邱信仁
    http://tw.myblog.yahoo.com/touch_classroom/
    touch_classroom@yahoo.com.tw

    回覆刪除
  4. 謝了  ~ 不過露天拍賣 ~ 我有找過沒有我想要的齒輪

    不好意思 ~ 我沒有比較詳細說我想要的齒輪圖 ~我的錯(K我的頭)

    我不知道台灣有沒有再賣 LEGO 10076
    http://www.toysperiod.com/lego-set-reference/bulk/technic/lego-10076-technic-gear-wheels/

    回覆刪除
  5. 你好:

    這一包應該已經絕版,

    不過除了41667及41666外,

    我想其他齒輪滑輪及蝸桿Turn Table都可以取得,

    9797裡面就有大多數的齒輪類零件。

    台南林老師那邊也都可以買得到,

    http://class.ruten.com.tw/user/index00.php?s=tslinb

    祝你順利取得零件

    探奇 邱信仁

    回覆刪除
  6. 恩 ~ 非常感謝您的回覆跟幫忙 ^.^

    回覆刪除