標題: MAPS-K64驅(qū)動SG90舵機源程序與調(diào)試 [打印本頁]

作者: guchengnuanfeng    時間: 2018-1-11 14:21
標題: MAPS-K64驅(qū)動SG90舵機源程序與調(diào)試
OWERPRO SG90
9G舵機,25CM棕紅橙線  1.重量:9g  2.尺寸:23x12.2x29mm  3.無負載操作速度:0.12秒/60度(4.8V);0.10秒/60度(6.0V) 4.扭矩:1.6kg·cm(4.8V) 5.使用溫度:-30~+60攝氏度 6.死區(qū)設定:5微秒 7.工作電壓:3.5V~6V  8.附件:三種功能舵角、固定螺釘,線長 25CM
舵機如圖

這個舵機是模擬舵機,而非數(shù)字舵機,這兩者的區(qū)別是這樣,數(shù)字舵機只要給一個PWM信號即可,這個信號是目的地的位置,舵機會自動旋轉(zhuǎn)到這個位置,而 模擬舵機需要一直給予目的地的PWM信號。由于舵機需要的PWM信號實際就是一個方波,所以模擬舵機就是需要不斷的重復發(fā)一樣的方波,直到舵機旋轉(zhuǎn)到指定 的位置,并且如果需要鎖定在這個位置,那么還需繼續(xù)給予這個方波。

下面是MAPS-K64引腳定義與源程序
  1. ROOT bool ON_HW_INIT(void)                          
  2. {
  3.     /*! you can put your code here */
  4.     IO_CFG(
  5.         {PC1,   IO_WORKS_AS_FUNC4},
  6.         {PC2,   IO_WORKS_AS_FUNC4},
  7.         {PC3,   IO_WORKS_AS_FUNC4},
  8.         {PC4,   IO_WORKS_AS_FUNC4},

  9.         {PC8,   IO_WORKS_AS_FUNC3},
  10.         {PC9,   IO_WORKS_AS_FUNC3},
  11.         {PC10,  IO_WORKS_AS_FUNC3},
  12.         {PC11,  IO_WORKS_AS_FUNC3},

  13.         {PD0,   IO_WORKS_AS_FUNC4},
  14.         {PD1,   IO_WORKS_AS_FUNC4},
  15.         {PD2,   IO_WORKS_AS_FUNC4},
  16.         {PD3,   IO_WORKS_AS_FUNC4},
  17.         {PD4,   IO_WORKS_AS_FUNC4},
  18.         {PD5,   IO_WORKS_AS_FUNC4},

  19.         {PB18,  IO_WORKS_AS_FUNC3},
  20.         {PB19,  IO_WORKS_AS_FUNC3},

  21.         {PA1,   IO_WORKS_AS_FUNC3},
  22.         {PA2,   IO_WORKS_AS_FUNC3},

  23.     );

  24.     return true;
  25. }
復制代碼

依次對舵機進行設置參數(shù)
  1. static void joints_calibration(joint_t *ptJoints)
  2. {
  3.     if (NULL == ptJoints) {
  4.         return ;
  5.     }

  6.       JOINT_CFG(
  7.         ptJoints[LEFT_BACK_LEG_2],       //  內(nèi)部舵機
  8.         LEFT_BACK_LEG_2,
  9.         335,                    //!< offset
  10.         42,                     //!< start angle
  11.         140,                    //!< end angle
  12.         9,                    //!< Max Angular Speed
  13.         90,                     //!< Reset Position
  14.         980,                    //!< K
  15.     );

  16.     JOINT_CFG(
  17.         ptJoints[LEFT_MIDDLE_LEG_2],
  18.         LEFT_MIDDLE_LEG_2,
  19.         310,                    //!< offset
  20.         42,                     //!< start angle
  21.         140,                    //!< end angle
  22.         9,                    //!< Max Angular Speed
  23.         90,                     //!< Reset Position
  24.         1060,                   //!< K
  25.     );

  26.     JOINT_CFG(
  27.         ptJoints[LEFT_FRONT_LEG_2],
  28.         LEFT_FRONT_LEG_2,
  29.         353,                    //!< offset
  30.         42,                     //!< start angle
  31.         140,                    //!< end angle
  32.         9,                    //!< Max Angular Speed
  33.         90,                     //!< Reset Position
  34.         980,                   //!< K
  35.     );


  36.     JOINT_CFG(                         //
  37.         ptJoints[RIGHT_BACK_LEG_2],
  38.         RIGHT_BACK_LEG_2,
  39.         305,                    //!< offset
  40.         50,                     //!< start angle
  41.         150,                    //!< end angle
  42.         9,                    //!< Max Angular Speed
  43.         90,                     //!< Reset Position
  44.         880,                    //!< K
  45.     );

  46.     JOINT_CFG(
  47.         ptJoints[RIGHT_MIDDLE_LEG_2],
  48.         RIGHT_MIDDLE_LEG_2,
  49.         304,                      //!< offset
  50.         40,                     //!< start angle
  51.         160,                    //!< end angle
  52.         9,                    //!< Max Angular Speed
  53.         90,                     //!< Reset Position
  54.         860,                    //!< K
  55.     );

  56.     JOINT_CFG(
  57.         ptJoints[RIGHT_FRONT_LEG_2],
  58.         RIGHT_FRONT_LEG_2,
  59.         334,                    //!< offset
  60.         51,                     //!< start angle
  61.         160,                    //!< end angle
  62.         9,                    //!< Max Angular Speed
  63.         90,                     //!< Reset Position
  64.         840,                    //!< K
  65.     );

  66.     JOINT_CFG(
  67.         ptJoints[RIGHT_BACK_LEG_1],         // 連接關節(jié)
  68.         RIGHT_BACK_LEG_1,
  69.         350,                    //!< offset
  70.         90,                     //!< start angle
  71.         180,                    //!< end angle
  72.         9,                    //!< Max Angular Speed
  73.         90,                    //!< Reset Position
  74.         900,                   //!< K
  75.     );

  76.     JOINT_CFG(                            // GG
  77.         ptJoints[RIGHT_MIDDLE_LEG_1],
  78.         RIGHT_MIDDLE_LEG_1,
  79.         350,                    //!< offset
  80.         90,                     //!< start angle
  81.         180,                    //!< end angle
  82.         9,                    //!< Max Angular Speed
  83.         90,                    //!< Reset Position
  84.         950,                   //!< K
  85.     );

  86.     JOINT_CFG(
  87.         ptJoints[RIGHT_FRONT_LEG_1],
  88.         RIGHT_FRONT_LEG_1,
  89.         355,                    //!< offset
  90.         90,                      //!< start angle
  91.         180,                    //!< end angle
  92.         9,                    //!< Max Angular Speed
  93.         90,                      //!< Reset Position
  94.         950,                   //!< K
  95.     );



  96.     JOINT_CFG(
  97.         ptJoints[RIGHT_BACK_LEG_0],
  98.         RIGHT_BACK_LEG_0,
  99.         350,                    //!< offset
  100.         30,                     //!< start angle
  101.         140,                    //!< end angle
  102.         9,                    //!< Max Angular Speed
  103.         90,                      //!< Reset Position
  104.         950,                   //!< K
  105.     );

  106.     JOINT_CFG(
  107.         ptJoints[RIGHT_MIDDLE_LEG_0],
  108.         RIGHT_MIDDLE_LEG_0,
  109.         350,                    //!< offset
  110.         55,                     //!< start angle
  111.         145,                    //!< end angle
  112.         9,                    //!< Max Angular Speed
  113.         90,                      //!< Reset Position
  114.         850,                    //!< K
  115.     );


  116.     JOINT_CFG(
  117.         ptJoints[RIGHT_FRONT_LEG_0],
  118.         RIGHT_FRONT_LEG_0,
  119.         355,                    //!< offset
  120.         50,                     //!< start angle
  121.         140,                    //!< end angle
  122.         9,                    //!< Max Angular Speed
  123.         90,                      //!< Reset Position
  124.         810,                   //!< K
  125.     );


  126.     JOINT_CFG(                   //外腳
  127.         ptJoints[LEFT_FRONT_LEG_0],
  128.         LEFT_FRONT_LEG_0,
  129.         368,                     //!< offset
  130.         40,                     //!< start angle
  131.         140,                    //!< end angle
  132.         9,                    //!< Max Angular Speed
  133.         90,                    //!< Reset Position
  134.         890,                    //!< K
  135.     );


  136.     JOINT_CFG(
  137.         ptJoints[LEFT_MIDDLE_LEG_0],
  138.         LEFT_MIDDLE_LEG_0,
  139.         350,                     //!< offset
  140.         55,                     //!< start angle
  141.         140,                    //!< end angle
  142.         9,                    //!< Max Angular Speed
  143.         90,                    //!< Reset Position
  144.         920,                   //!< K
  145.     );

  146.     JOINT_CFG(
  147.         ptJoints[LEFT_BACK_LEG_0],
  148.         LEFT_BACK_LEG_0,
  149.         352,                    //!< offset
  150.         50,                      //!< start angle
  151.         148,                    //!< end angle
  152.         9,                    //!< Max Angular Speed
  153.         90,                    //!< Reset Position
  154.         1130,                   //!< K
  155.     );

  156.     JOINT_CFG(
  157.         ptJoints[LEFT_BACK_LEG_1],
  158.         LEFT_BACK_LEG_1,
  159.         80,                     //!< offset
  160.         5,                     //!< start angle
  161.         130,                    //!< end angle
  162.         9,                    //!< Max Angular Speed
  163.         90,                    //!< Reset Position
  164.         900,                   //!< K
  165.     );

  166.     JOINT_CFG(
  167.         ptJoints[LEFT_MIDDLE_LEG_1],
  168.         LEFT_MIDDLE_LEG_1,
  169.         50,                     //!< offset
  170.         2,                     //!< start angle
  171.         115,                    //!< end angle
  172.         9,                    //!< Max Angular Speed
  173.         90,                    //!< Reset Position
  174.         1000,                   //!< K
  175.     );

  176.     JOINT_CFG(
  177.         ptJoints[LEFT_FRONT_LEG_1],
  178.         LEFT_FRONT_LEG_1,
  179.         80,                     //!< offset
  180.         5,                     //!< start angle
  181.         135,                    //!< end angle
  182.         9,                    //!< Max Angular Speed
  183.         90,                    //!< Reset Position
  184.         850,                   //!< K
  185.     );
  186. }
復制代碼

注釋解釋的也挺清楚的
最近在做一個六足蜘蛛機器人的項目用的就是這種舵機,說實話真的挺難調(diào)的






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