先做静态控制,所以小车底盘啊,轮子啥的先不要。
1 BOM清单
1.友善之臂 Nanopi2
作为上位机,安装ROS机器人操作系统
2.msp430
作为下位机,实现对舵机等硬件设备的控制
具体控制方案见下文
3.电源(5v)
为下位机供电,因为5v-3.3v的电源模块并不能驱动起来
4.舵机驱动板
16路模块 PWM/ 舵机驱动板
5.机械臂
六自由度机械臂
2 软件平台
msp430 LaunchPad 的Arduino开发平台
下载自官网
初步使用可参考:http://bbs.eeworld.com.cn/thread-370559-1-1.html
3 机械臂的驱动
1)舵机与控制原理
舵机主要是由外 壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由控制器发出PWM(脉冲宽度调制)信号给舵机,经电路板上的IC处理后计算出转动方向, 再驱动无核心马达转动,透过减速齿轮将动力传至摆臂,同时由位置检测器(电位器)返回位置信号,判断是否已经到达设定位置,一
般舵机只能旋转180度。
舵机有3根线,棕色为地,红色为电源正,橙色为信号线,但不同牌子的舵机,线的颜色可能不同,请大家注意。
2)servo类介绍
servo类下有以下成员函数
attach()//连接舵机
write()//角度控制
writeMicroseconds()//
read()//读上一次舵机转动角度
attached()//
detach()//断开舵机连接
3)普通舵机有3根线:GND(黑)、VCC(红)、Signal(黄),一般情况下,我们建议为舵机单独供电,此处实验为了图方便,用msp430为舵机供电。
4) 下载以下例程(程序可以在IDE>File>Examples>Servo>Sweep中找到
// Sweep
// by BARRAGAN <http://barraganstudio.com>
// This example code is in the public domain.
#include <Servo.h>
//创建一个舵机控制对象
//使用Servo类最多可以控制8个舵机
Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
//该变量用于存储舵机角度位置
int pos = 0; // variable to store the servo position
void setup()
{
//该舵机由单片机第九脚控制
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
//从0~180度运动
for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees
{
// in steps of 1 degree 每次进步一度
myservo.write(pos); // tell servo to go to position in variable 'pos' 指定舵机转向的角度
delay(15); // waits 15ms for the servo to reach the position 等待15秒让舵机到达指定位置
}
for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos' 指定舵机转向的角度
delay(15); // waits 15ms for the servo to reach the position 等待15秒让舵机到达指定位置
}
}
先驱动了一路舵机,六路待续…..