樹莓派控制SG90舵機

輝盛SG90 <wbr>9G舵機接線與驅動


SG90一共三根線,紅線接5V電源,棕線GND。黃線爲數據控制線,該線接到GPIO上,這裏我們是BCM模式的pin 21.

 

SG90 脈衝週期爲20毫秒(millisecond) 不是20微秒(Microsecond),兩者差1000倍呢!也就是說最多1秒鐘內可以轉動50次,但是考慮到每次轉動還要耗時,所以實際達不到50次。PWM控制信號週期20ms,脈寬0.5ms-2.5ms對應的角度-90到+90度,範圍180度(3度左右偏差),當脈寬1.5ms時舵機在中立點(0度),我們直接用python的GPIO提供的PWM控制。脈寬0.5ms-2.5ms 對應的佔空比爲2.5% - 12.5% .  理論上,10%的空間可以提供180度的線性分割。


下面的代碼可以看到舵機不停的從0度轉到180度,再轉回來到0度。


#!/usr/bin/env python  


import RPi.GPIO as GPIO
import time
import signal
import atexit

atexit.register(GPIO.cleanup)  

servopin = 21
GPIO.setmode(GPIO.BCM)
GPIO.setup(servopin, GPIO.OUT, initial=False)
p = GPIO.PWM(servopin,50) #50HZ
p.start(0)
time.sleep(2)

while(True):
  for i in range(0,181,10):
    p.ChangeDutyCycle(2.5 + 10 * i / 180) #設置轉動角度
    time.sleep(0.02)                      #等該20ms週期結束
    p.ChangeDutyCycle(0)                  #歸零信號
    time.sleep(0.2)
  
  for i in range(181,0,-10):
    p.ChangeDutyCycle(2.5 + 10 * i / 180)
    time.sleep(0.02)
    p.ChangeDutyCycle(0)
    time.sleep(0.2)


發佈了36 篇原創文章 · 獲贊 88 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章