Difference between revisions of "BakeBit - Servo/zh"

From FriendlyELEC WiKi
Jump to: navigation, search
(代码说明)
(相关资料)
Line 112: Line 112:
 
==相关资料==
 
==相关资料==
 
*[Specification]([http://wiki.friendlyarm.com/wiki/images/6/6c/Guo_Hua_Servo_GH-SN90D_Specification.pdf BakeBit - Servo Specification.pdf])
 
*[Specification]([http://wiki.friendlyarm.com/wiki/images/6/6c/Guo_Hua_Servo_GH-SN90D_Specification.pdf BakeBit - Servo Specification.pdf])
 +
*[BakeBit Github项目](https://github.com/friendlyarm/BakeBit)
 +
*[BakeBit Starter Kit手册](http://wiki.friendlyarm.com/bakebit/bakebit_starter_kit_manual_cn.pdf)

Revision as of 09:51, 28 November 2016

English

1 介绍

Servo
  • BakeBit - Servo是一个舵机模块,内部包含一个直流电机和齿轮传动反馈系统。用去机器人等机械结构的驱动和控制。
  • 舵机的转动和转角都是跟随着信号脉冲的宽度变化而变化的,控制信号为频率50Hz的PWM信号,该控制信号高电平部分范围为0.5ms—2.5ms,对应的舵机旋转角度为0-180°。
  • 给舵机一个PWM信号,舵机便会旋转到对应的角度。信号停止在一个脉冲宽度时舵机也就不转了,停在对应的角度上.

2 特性

  • 使用标准的2.0mm 4 Pin BakeBit接口

舵机规格尺寸如下:

BakeBit - Servo

  • 规格参数如下:

BakeBit - Servo detail

  • 引脚说明:
引脚 名称 描述
1 SIG 信号
2 NC
3 5V 电源5V
4 GND

3 示例程序:Servo and Rotary Angle Sensor

这个示例演示用BakeBit - Rotary Angle Sensor来控制舵机的转动, 随着你转动电位器,舵机将在0~180角范围里旋转。

3.1 硬件连接

简单的将 舵机 模块插入D5接口,将电位器模块插入A0接口,如下面这样:

Servo and Rotary Angle Sensor-1.jpg Servo and Rotary Angle Sensor-2.jpg

3.2 示例源代码

import time
import bakebit
import random
 
# Connect the servo to digital port D5
# SIG,NC,VCC,GND
servo = 5
 
# Connect the BakeBit Rotary Angle Sensor to analog port A0
# SIG,NC,VCC,GND
potentiometer = 0
 
# Reference voltage of ADC is 5v
adc_ref = 5
 
# Vcc of the bakebit interface is normally 5v
bakebit_vcc = 5
 
# Full value of the rotary angle is 180 degrees, as per it's specs (0 to 180)
full_angle = 180
old_degrees = -1
 
bakebit.pinMode(potentiometer,"INPUT")
bakebit.bakeBitServo_Attach(servo)
 
 
while True:
    try:
        # Read sensor value from potentiometer
        sensor_value = bakebit.analogRead(potentiometer)
 
        # Calculate voltage
        voltage = round((float)(sensor_value) * adc_ref / 1023, 2)
 
        # Calculate rotation in degrees (0 to 180)
        degrees = int((voltage * full_angle) / bakebit_vcc)
 
        if degrees != old_degrees:
            print("sensor_value = %d voltage = %.2f degrees = %d" % (sensor_value, voltage, degrees))
            bakebit.bakeBitServo_Write(servo, degrees)
 
        old_degrees = degrees
 
    except KeyboardInterrupt:
        bakebit.bakeBitServo_Detach(servo)
        break
    except IOError:
        print ("Error")

Github


3.3 运行示例

假设你已经参考bakebit教程安装了BakeBit源代码,
要运行示例程序,可以在开发板上进入 BakeBit/Software/Python目录,运行bakebit_prj_Servo_And_RotaryAngleSensor.py:

cd ~/BakeBit/Software/Python
sudo python bakebit_prj_Servo_And_RotaryAngleSensor.py

3.4 运行结果

随着你转动电位器,舵机将在0~180角范围里旋转。

4 相关资料