舵机是由pwm信号控制
舵机由三根接线两根电源接线一根pwm信号线我们控制舵机只需要一根pwm控制线就行电源线可以接外接电源
我们所用的舵机一般都是180°舵机,需要一个20ms的时基脉冲及50hz的脉冲
高电平在一个时基脉冲中占用的时间对应舵机转动的角度:
- 0.5ms —— 0° (最小的时间段)
- 1.0ms —— 45°
- 1.5ms —— 90°
- 2.0ms —— 135°
- 2.5ms —— 180°(最高的时间段)
RPi.gpio控制舵机采用的是占空比的方式。及将高电平在时基脉冲中占用的时间转化为百分比的形式,
角度转化为占空比的计算公式如下
1 2
| def Ang(ang): return 2.5 + ang/180.0*10
|
接下来是简单的舵机控制代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import RPi.GPIO as GPIO Eng = 10 def Ang(ang): return 2.5 + ang/180.0*10 GPIO.setwarning(False) GPIO.setmode(GPIO.BCM) GPIO.setup(Eng,GPIO.OUT,initial = 0) p = GPIO.PWM(Eng, 50) p.start(Ang(0)) last = 0; log = 1; p.ChangeDutyCycle(0) while True: angle = int(input('旋转角度:')) if(angle>last): log = 1; else: log = -1; for i in range(last,angle,log): p.ChangeDutyCycle(Ang(i)) time.sleep(0.1) last = angle p.ChangeDutyCycle(0)
|