使用樹莓派控制16路舵機驅動板(pca9685)

2021-01-11 三蟲君

使用樹莓派控制16路舵機驅動板(pca9685)

在樹莓派上,可以通過RPI.GPIO方便地輸出PWM進行舵機控制。

使用RPI.GPIO

創建一個 PWM 實例:

1

p =GPIO.PWM(channel, frequency)

啟用 PWM:

1

p.start(dc)

更改頻率:

1

p.ChangeFrequency(freq)

更改佔空比:

1

p.ChangeDutyCycle(dc)

停止 PWM:

1

p.stop()

但當你同時使用多個舵機時,PWM輸出就變得困難了。這時可以藉助舵機控制板來進行多路PWM控制。

這是某寶常見的舵機控制板,這個板子也比較便宜,十幾塊錢一個。使用晶片PCA9685,I2C通信,只需要幾根i2c線就可以控制16路pwm,周期和佔空比都可控。

驅動板與樹莓派連接

GND -> RPi GND(9腳)SCL -> RPi SCL1(5腳)SDA -> RPi SDA1(3腳)VCC -> RPi 3.3V (1腳)V+ -> RPi 5V(或通過電源接線柱外接電源供電)

需要注意的是,vcc引腳僅為晶片供電,為舵機供電可以選擇通過樹莓派5v引腳為v+引腳供電或另接電源到驅動板的電源接線柱上。

樹莓派開啟I2C

樹莓派默認關閉I2C,開啟I2C步驟:

輸入

sudo raspi-config

便可以看到配置界面,

找到第5項:Interfacing Options中有I2C等,點擊進入,點擊Yes即可

安裝adafruit_python_pca9685

sudo pip install adafruit-pca9685在GitHub上可以查看其例程。

adafruit_pca9685

引入adafruit_pca9685模塊:

1

import Adafruit_PCA968

創建一個 PWM 實例:

1

pwm = Adafruit_PCA9685.PCA9685()

設置頻率:

1

pwm.set_pwm_freq(50)

更改佔空比:

1

pwm.set_pwm(channel,on,off)

示例代碼

# Simple demo of of the PCA9685 PWM servo/LED controller library.

# This will move channel 0 from min to max position repeatedly.

# Author: Tony DiCola

# License: Public Domain

from __future__ import division

import time

# Import the PCA9685 module.

import Adafruit_PCA9685

# Uncomment to enable debug output.

#import logging

#logging.basicConfig(level=logging.DEBUG)

# Initialise the PCA9685 using the default address (0x40).

pwm = Adafruit_PCA9685.PCA9685()

# Alternatively specify a different address and/or bus:

#pwm = Adafruit_PCA9685.PCA9685(address=0x41, busnum=2)

# Configure min and max servo pulse lengths

servo_min = 150 # Min pulse length out of 4096

servo_max = 600 # Max pulse length out of 4096

# Helper function to make setting a servo pulse width simpler.

def set_servo_pulse(channel, pulse):

pulse_length = 1000000 # 1,000,000 us per second

pulse_length //= 60 # 60 Hz

print('{0}us per period'.format(pulse_length))

pulse_length //= 4096 # 12 bits of resolution

print('{0}us per bit'.format(pulse_length))

pulse *= 1000

pulse //= pulse_length

pwm.set_pwm(channel, 0, pulse)

# Set frequency to 60hz, good for servos.

pwm.set_pwm_freq(60)

print('Moving servo on channel 0, press Ctrl-C to quit...')

while True:

# Move servo on channel O between extremes.

pwm.set_pwm(0, 0, servo_min)

time.sleep(1)

pwm.set_pwm(0, 0, servo_max)

time.sleep(1)

相關焦點

  • PCA9685--16路 PWM模塊舵機驅動板--STM32 IIC接口模塊
    開關調光,16路12位PWM信號發生器,可用於控制舵機、led、電機等設備,i2c通信,節省主機資源。就是想控制好幾臺舵機,但太佔用引腳資源就想到了這個神器。一、概述和硬體1、概述網上上面比較便宜。i2c通信,只需要2根i2c線就可以控制16路pwm,周期和佔空比都可控。可以多個模塊級聯。箭頭部分可以更改設備id。可以控制16路輸出端的開、關、pwm以及佔空比。
  • 小小舵機,大大玄機!
    內部結構②:電位器:可以測量輸出軸的位置量,屬於整個伺服機構的反饋部分;③:內部控制器:處理來自外部控制的信號,驅動電機以及處理反饋的位置信號,是整個伺服機構的核心;④:電機:作為執行機構,輸出多少轉速,轉矩,位置;⑤:傳動機構/舵機系統
  • 基於IPM模塊的舵機控制電路設計
    該電路將舵機控制信號與舵機位置反饋信號比較獲得的直流偏置電壓信號作為脈寬調製晶片UC1637的輸入信號。UC1637根據輸入直流偏置電壓信號的變化輸出不同佔空比的PWM信號驅動IPM模塊內部不同IGBT的通斷,從而實現舵機的控制。
  • 利用單片機PWM信號進行舵機控制[圖]
    脈衝計數可以利用51單片機的內部計數器來實現,但是從軟體系統的穩定性和程序結構的合理性看,宜使用外部的計數器,還可以提高CPU的工作效率。實驗後從精度上考慮,對於FUTABA系列的接收機,當採用1MHz的外部晶振時,其控制電壓幅值的變化為0.6mV,而且不會出現誤差積累,可以滿足控制舵機的要求。
  • AT89C2051多路舵機控制電路詳解
    該輸出送人電機驅動集成電路BA6686,以驅動電機正反轉。當電機轉速一定時,通過級聯減速齒輪帶動電位器R。,旋轉,直到電壓差為O,電機停止轉動。舵機的控制信號是PWM信號,利用佔空比的變化改變舵機的位置。
  • STM32F103VET6驅動舵機SG90
    SG90舵機1.sg902.PWM3.資原始碼4. 成果演示5. 工程獲取1.sg90舵機 在機器人機電控制系統中,舵機控制效果是性能的重要影響因素。舵機可以在微機電系統和航模中作為基本的輸出執行機構,其簡單的控制和輸出使得單片機系統非常容易與之接口。
  • 淺談香蕉派與樹莓派的不同
    打開APP 淺談香蕉派與樹莓派的不同 工程師之餘 發表於 2018-10-30 16:09:50 目前有許多人在學習嵌入式開發,
  • 《Arduino》基礎:舵機控制
    舵機是什麼?舵機是電機的一種,又加伺服電機,它和步進電機有異曲同工之妙,步進電機是可以設定轉過多少角度,而舵機是可以設定轉到的位置,可以說是指哪打哪,Arduino智能小車的前輪轉彎系統便是用的這種原理,在工業上機器人上,舵機的應用更是不勝枚舉。
  • 多路舵機控制PWM發生器的設計與Proteus仿真
    摘要:PWM脈寬信號調製是現代電子行業中使用較為廣泛的一種脈衝信號,其典型應用就是舵機控制。2 舵機及其工作原理2.1 舵機簡介 舵機英文稱Servo,也稱伺服機,其特點是結構緊湊、易於安裝調試、控制簡單、大扭力、成本較低等。舵機是一種位置伺服的驅動器,主要用於各種飛行器的執行機構。其工作原理是:控制信號由接收機的通道進入信號調試晶片,從而獲得直流偏置電壓。
  • 51單片機分時控制8路舵機程序
    本程序中用到的頭文件 12c5a.H下載:http://www.51hei.com/f/12c5a.rar//分時控制舵機,採用的單片機是STC12c5a 51增強型單片機,晶振11.0592MHZ
  • arm開發板與樹莓派有什麼區別
    它使用ARM處理器晶片,和linux作業系統或windows作業系統,是一個很小體積的桌面電腦。   樹莓派由註冊於英國的慈善組織「Raspberry Pi 基金會」開發,Eben·Upton/埃·厄普頓為項目帶頭人。
  • 減速電機可以降低直流電機的轉速,舵機也可以,兩者的區別有哪些
    微型電機在一些產品應用中,如需要低轉速、大扭力的參數就會需要用到齒輪減速機,齒輪減速機有行星減速機等結構,舵機也可以實現減速效果,那麼微型減速電機和舵機都是減速傳動設備,為何不只用減速電機就可以了呢?下面天孚微電機來為大家講解,微型減速電機與舵機之間的區別。
  • 對180度360度sg90舵機的使用經驗+單片機程序
    大部資料都是在網上找到網友大神所共享的,我只是在理解他們的資料上加上了自己的一些註解,在網上找了幾種舵機的,剛接觸有點懵,之後找得多了就理解了,想要控制一個硬體就要先了解這個硬體。這裡有介紹180度舵機和360度舵機的具體使用,有網上大神的程序,這個更多的是一個網上對舵機使用的一個整合。
  • 舵機轉速與工作電壓之間有何關係?
    舵機的輸出力矩、轉動速度、命令更新頻率等標準了舵機的工作性能。在全國大學生智能車競賽中 ,大多數車模作品的方向控制都使用了舵機控制。所以控制舵機的脈衝波形與控制電機運行的 PWM 波形的作用是不同的。  舵機內部具有驅動電路板,保證輸出角度與脈衝指令的寬度之間呈現比例關係。
  • 香橙派和樹莓派對比
    打開APP 香橙派和樹莓派對比 工程師之餘 發表於 2018-10-30 14:37:18 嵌入式技術一直都是年輕的開發者比較感興趣的
  • 成都半金屬齒微型數碼舵機_國華遙控模型廠
    舵機的功率(速度X轉矩) 和舵機的尺寸比值可以理解為該舵機的功率密度,一般同樣品牌的舵機,功率密度大的價格高。塑料齒輪的舵機在超出極限負荷的條件下使用可能會崩齒,金屬齒輪的舵機則可能會電機過熱損毀或外殼變形。用戶一般都對金屬制的物品比較信賴,齒輪箱期望選擇全金屬的,舵盤期望選擇金屬舵盤。
  • 繪圖寫字機器人製作教程,含模型文件及控制源程序
    必須使用此版本的GRBL,其他GRBL版本沒有Z軸舵機的控制代碼。http://www.mfcad.com/tuzhi/1246/419075.html所需材料:2x直線光軸直徑8 x 450mm,X軸2x直線光軸直徑8 x 350mm,Y軸2x直線光軸直徑3 x 75mm,Z軸(您可以在當地市場或某寶上購買)1x M8x470mm螺杆8x LM8UU直線軸承1x舵機sg90 2x GT2同步輪16齒5x軸承624zz 1x