■ 背景
先驱威锋白超发送过来机械爪购买样品连接 机械爪子汇总机器人机械手臂配件大扭力舵机控制驱动板diy夹持器 。利用其中一种完成 双轴机械臂前端抓持机械结构。
▲ 由舵机控制的各种机械爪
手边有一个从白超订购过来的平行机械爪,其中舵机来自于 海灵智电 提供的20公斤-厘米的舵机。
▲ 平行机械爪控制平行机械爪的舵机
下面对于这款机械爪的安装和控制进行初步测试。
01舵机控制信号模块
实验电路使用在 使用STC8H1K的高级PWM的正交编码器计数方式 中的基于STC8H1K28单片机的电路板。
1.控制电路板1
▲ 实验电路原理图
序号 | 符号 | 功能 |
---|---|---|
1 | +5V | 工作电压 |
2 | GND | 电源地线 |
3 | CHA | P2.0 PWM1P 2 PWM5 |
4 | CHB | P2.2 SS 2 PWM2P 2 PWM7 |
5 | INT0 | P3.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波形
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);
}
▲ 机械爪在舵机控制下运动
※ 结论
关于机械爪之间的距离与舵机角度之间的关系可以参见下面的博文: