【外设】拓机控制器-Arduino中文社区 - Powered by Discuz! Archiver

jiayouxiaoniu 发表于 2016-8-22 21:08

【外设】拓机控制器

一、电路3条线,1条是高电位,一条是地线,另外一条是PWM信号线。file:///C:/Users/YJBO/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png
二、拓机拓机转角是0-180度,周期是20ms,使用PWM(脉冲宽度调制)信号的占空比来实现,标准PWM是20ms(50HZ)宽度,理论上脉冲宽度在1ms-2ms之间,但是,事实上脉宽可由0.5ms到2.5ms 之间,脉宽和舵机的转角0°~180°相对应。有一点值得注意的地方,由于舵机牌子不同,对于同一信号,不同牌子的舵机旋转的角度也会有所不同。 file:///C:/Users/YJBO/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png
三、拓机原理:舵机是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由电路板上的IC判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。适用于那些需要角度不断变化并可以保持的控制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。一般舵机旋转的角度范围是0度到180 度。
四、编程原理:用Arduino控制舵机的方法有两种,一种是通过Arduino 的普通数字传感器接口产生占空比不同的方波,模拟产生PWM 信号进行舵机定位,第二种是直接利用Arduino自带的Servo 函数进行舵机的控制,这种控制方法的优点在于程序编写,缺点是只能控制2 路舵机,因为Arduino 自带函数只能利用数字9、10接口。Arduino 的驱动能力有限,所以当需要控制1 个以上的舵机时需要外接电源。



jiayouxiaoniu 发表于 2016-8-22 21:13

附上图片:
1、电路图:

2、原理图:

璃期 发表于 2016-8-22 21:23

怎么写的拓机

因你无忧 发表于 2016-8-23 04:07

用的是16路的舵机控制板,需要用I2C的方法控制,能请教下程序怎么写吗?谢谢

jiayouxiaoniu 发表于 2016-8-23 20:10

附上代码:
#define SERVO_PIN 2

void setAngle(int angle);

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(SERVO_PIN, OUTPUT);

return;
}

void loop() {
// put your main code here, to run repeatedly:
int val = Serial.read();
int angle = 0;
if((val < '0') || (val > '9'))
{
    return;
}

//transfer val to 0-180 angle
angle = (val-'0') * (180/9);

//set the angle of servo
setAngle(angle);

//output to the serial
Serial.print("value:");
Serial.print(angle, DEC);
Serial.println();

return;
}

void setAngle(int angle)
{
int pwm = angle * (2000/180) + 500;
digitalWrite(SERVO_PIN, HIGH);
delayMicroseconds(pwm);
digitalWrite(SERVO_PIN, LOW);
delay(20-pwm/1000);

return;
}
页: [1]
查看完整版本: 【外设】拓机控制器