舵机控制的机械爪

 

■ 背景


先驱威锋白超发送过来机械爪购买样品连接 机械爪子汇总机器人机械手臂配件大扭力舵机控制驱动板diy夹持器 。利用其中一种完成 双轴机械臂前端抓持机械结构。

▲ 由舵机控制的各种机械爪

▲ 由舵机控制的各种机械爪

手边有一个从白超订购过来的平行机械爪,其中舵机来自于 海灵智电 提供的20公斤-厘米的舵机。

▲ 平行机械爪控制平行机械爪的舵机

▲ 平行机械爪控制平行机械爪的舵机

下面对于这款机械爪的安装和控制进行初步测试。

 

01舵机控制信号模块


实验电路使用在 使用STC8H1K的高级PWM的正交编码器计数方式 中的基于STC8H1K28单片机的电路板。

1.控制电路板1

▲ 实验电路原理图

▲ 实验电路原理图

序号符号功能
1+5V工作电压
2GND电源地线
3CHAP2.0 PWM1P 2 PWM5
4CHBP2.2 SS 2 PWM2P 2 PWM7
5INT0P3.2 INT0 SCLK 4 I2CSCL 4

使用其中的INT0来输出控制舵机运动的PWM信号。

2.单片机软件2

  • 单片机基础配置: Fosc=35MHz,UARB:460800 bps

(1) 配置周期

对于脉冲输出的HZ50_PERIOD的常数为:

#define HZ50_PERIOD             3760

对于nPulseCount = 280对应输出 1500us;所以对应nPulse从 200-400大约对应1000-2000us的脉冲输出。

Delay(10);

//----------------------------------------------------------------------
while(++n50HzCount >= HZ50_PERIOD) {
    n50HzCount = 0;
}

if(n50HzCount > nPulseCount) OFF(PWM_PIN);
else ON(PWM_PIN);

(2) 输出Servo控制脉冲

▲ 输出PWM波形

▲ 输出PWM波形

 

02舵机控制


1.舵机控制参数范围

舵机的脉宽控制参数 nPulseCount通过串行命令PWM来设置。通过试凑可以找到改参数的最大和最小值范围。

  • MIN: 80 顺时针最大;
  • MAX:475 逆时针最大
  • MIDDLE:278
if(strcmp("hello",                (char *)STD_ARG[0]) == 0)
    printf("%s is ready !\r\n", VERSION_STRING);
else IFARG0("pwm") {
    sscanf(SDA(1), "%d", &nPulseCount);
}

▲ 机械爪在舵机控制下运动

▲ 机械爪在舵机控制下运动

 

※ 结论


关于机械爪之间的距离与舵机角度之间的关系可以参见下面的博文:


  1. 实验电路的AD工程文件:AD\Test\2020\STCTest\STC8H1K28Encode.SchDoc\ ↩︎

  2. C51工程文件:C51\STC\Test\2020\CLAWSTC8HSERVO\ClawSTC8HServo.uvproj ↩︎

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页