找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4576|回复: 0
打印 上一主题 下一主题
收起左侧

MAPS-K64驱动SG90舵机源程序与调试

[复制链接]
跳转到指定楼层
楼主
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.死区设定:5微秒 7.工作电压:3.5V~6V  8.附件:三种功能舵角、固定螺钉,线长 25CM
舵机如图

这个舵机是模拟舵机,而非数字舵机,这两者的区别是这样,数字舵机只要给一个PWM信号即可,这个信号是目的地的位置,舵机会自动旋转到这个位置,而 模拟舵机需要一直给予目的地的PWM信号。由于舵机需要的PWM信号实际就是一个方波,所以模拟舵机就是需要不断的重复发一样的方波,直到舵机旋转到指定 的位置,并且如果需要锁定在这个位置,那么还需继续给予这个方波。

下面是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. }
复制代码

依次对舵机进行设置参数
  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],       //  内部舵机
  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],         // 连接关节
  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. }
复制代码

注释解释的也挺清楚的
最近在做一个六足蜘蛛机器人的项目用的就是这种舵机,说实话真的挺难调的

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表