树莓派控制SG90舵机
树莓派控制SG90舵机
沉淀岁月 发表于9个月前
树莓派控制SG90舵机
  • 发表于 9个月前
  • 阅读 119
  • 收藏 0
  • 点赞 0
  • 评论 0

SG90一共三根线,红线接5V电源,棕线GND。黄线为数据控制线,该线接到GPIO上,这里我们是BCM模式的GPIO17

    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度。

 

[python] view plain copy

  1. #!/usr/bin/env python    
  2.   
  3.   
  4. import RPi.GPIO as GPIO  
  5. import time  
  6. import signal  
  7. import atexit  
  8.   
  9. atexit.register(GPIO.cleanup)    
  10.   
  11. GPIO.setmode(GPIO.BCM)  
  12. GPIO.setup(17, GPIO.OUT, initial=False)  
  13. p = GPIO.PWM(17,50) #50HZ  
  14. p.start(0)  
  15. time.sleep(2)  
  16.   
  17. while(True):  
  18.   for i in range(0,181,10):  
  19.     p.ChangeDutyCycle(2.5 + 10 * i / 180) #设置转动角度  
  20.     time.sleep(0.02)                      #等该20ms周期结束  
  21.     p.ChangeDutyCycle(0)                  #归零信号  
  22.     time.sleep(0.2)  
  23.     
  24.   for i in range(181,0,-10):  
  25.     p.ChangeDutyCycle(2.5 + 10 * i / 180)  
  26.     time.sleep(0.02)  
  27.     p.ChangeDutyCycle(0)  
  28.     time.sleep(0.2)  

共有 人打赏支持
粉丝 25
博文 228
码字总数 82285
评论 (0)
×
沉淀岁月
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: