在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用Arduino Servo庫(kù)驅(qū)動(dòng)伺服電機(jī)

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-27 11:24 ? 次閱讀

概述

如何使用Arduino Servo庫(kù)驅(qū)動(dòng)伺服電機(jī)

使用Arduino Servo庫(kù)驅(qū)動(dòng)伺服電機(jī)非常簡(jiǎn)單,但是每個(gè)驅(qū)動(dòng)器消耗一個(gè)寶貴的引腳-更不用說(shuō)一些Arduino處理能力了。 Adafruit 16通道12位PWM/伺服驅(qū)動(dòng)器僅需2個(gè)引腳即可在I2C上驅(qū)動(dòng)多達(dá)16個(gè)伺服器。板載PWM控制器將同時(shí)驅(qū)動(dòng)所有16個(gè)通道,而無(wú)需額外的Arduino處理開(kāi)銷。此外,您最多可以鏈接多達(dá)62個(gè),其中的多達(dá)62個(gè)可以使用相同的2個(gè)引腳進(jìn)行控制。

Adafruit PWM/Servo驅(qū)動(dòng)程序是需要大量伺服的任何項(xiàng)目的完美解決方案。

插腳

在兩側(cè)有兩組控制輸入引腳。 銷釘?shù)膬蓚?cè)相同!使用任意一側(cè),也可以通過(guò)將兩個(gè)并排連接起來(lái)輕松地進(jìn)行鏈接

電源引腳

GND -這是電源和信號(hào)接地引腳,必須連接

VCC -這是邏輯電源引腳,請(qǐng)將其連接到要使用的邏輯電平對(duì)于PCA9685輸出,最大應(yīng)為3-5V!它也用于SCL/SDA上的10K上拉,因此,除非您有自己的上拉,否則它也要與微控制器的邏輯電平相匹配!

V + -這是一個(gè)可選的電源引腳,它將為伺服器提供分布式電源。如果您不使用伺服系統(tǒng),則可以斷開(kāi)連接。芯片完全不使用它。您也可以從板頂部的2針端子排注入電源。如果使用伺服器,則應(yīng)提供5-6VDC。如果必須的話,可以升高到12VDC,但是如果搞砸了,將VCC連接到V +,則可能會(huì)損壞電路板!

控制引腳

SCL -I2C時(shí)鐘引腳,連接到您的微控制器I2C時(shí)鐘線。可以使用3V或5V邏輯,并且對(duì) VCC

SDA -I2C數(shù)據(jù)引腳具有弱上拉,連接到您的微控制器I2C數(shù)據(jù)線。可以使用3V或5V邏輯,并且對(duì) VCC

OE 具有弱上拉-輸出使能。可用于快速禁用所有輸出。當(dāng)此引腳為低時(shí),所有引腳均啟用 。當(dāng)引腳為高時(shí),輸出禁用。默認(rèn)情況下拉低,因此它是可選的引腳!

輸出端口

有16個(gè)輸出端口。每個(gè)端口都有3個(gè)引腳:V +,GND和PWM輸出。每個(gè)PWM都完全獨(dú)立地運(yùn)行,但它們必須具有相同的PWM頻率。也就是說(shuō),對(duì)于LED,您可能需要1.0 KHz,但伺服器需要60 Hz-因此,您不能將一半用于1.0 KHz的LED和一半用于60 Hz的LED。

它們已設(shè)置為用于伺服器,但您可以使用它們用于LED!每個(gè)引腳的最大電流為25mA。

所有PWM引腳均串聯(lián)有220歐姆電阻,并且輸出邏輯與 VCC 相同,因此在使用LED時(shí)要記住這一點(diǎn)。

程序集

《表類=“ build-table”》

安裝伺服接頭連接器,將4個(gè)3x4針插頭連接器安裝在板邊緣上標(biāo)記的位置。

焊接所有圖釘它們很多!

添加控制標(biāo)頭其中包含一個(gè)男性標(biāo)頭。您想在何處安裝標(biāo)頭以及從哪方面看都取決于使用情況:

對(duì)于 面包板 使用,將接頭連接器安裝在電路板的底部。

要與 跳線 配合使用,將接頭連接器安裝在

要與我們的 6-pin電纜 配合使用,將插頭安裝在頂部

如果要鏈接多個(gè)驅(qū)動(dòng)器板,則需要在兩端都安裝接頭。

安裝電源端子如果要鏈接多個(gè)驅(qū)動(dòng)器板,則只需要在電源端子上第一個(gè)。

連接

Arduino PWM/伺服驅(qū)動(dòng)器使用I2C,因此只需4條線即可連接到Arduino:

“經(jīng)典” Arduino接線:

+ 5v-》 VCC(這僅是用于突圍的電源,不是伺服電源!)

GND-》 GND

模擬4-》 SDA

模擬5-》 SCL

大型Mega接線:

+ 5v-》 VCC(這僅是用于BREAKOUT的電源,而不是伺服電源!)

GND-》 GND

數(shù)字20-》 SDA

Digital 21-》 SCL

R3和更高版本的Arduino接線(Uno,Mega和Leonardo):

(這些開(kāi)發(fā)板上的專用SDA和SCL引腳

+ 5v-》 VCC(這是僅用于BREAKOUT的電源,不是伺服電源!)

GND-》 GND

SDA-》 SDA

SCL-》 SCL

VCC引腳只是芯片本身的電源。如果要連接使用V +引腳的伺服或LED,則也必須連接V +引腳。即使VCC為3.3V(芯片為5V安全),V +引腳也可以高達(dá)6V。我們建議通過(guò)藍(lán)色接線端子連接電源,因?yàn)樗艿綐O性保護(hù)。

Servos的電源

大多數(shù)伺服器設(shè)計(jì)為在5v或6v左右的電壓下運(yùn)行。請(qǐng)記住,許多同時(shí)運(yùn)動(dòng)的伺服器(尤其是大功率的伺服器)將需要大量電流。甚至微型伺服器在移動(dòng)時(shí)也會(huì)消耗幾百毫安。某些高轉(zhuǎn)矩伺服器在負(fù)載下每個(gè)都會(huì)消耗超過(guò)1A的電流。

好的電源選擇是:

5v 2A開(kāi)關(guān)電源

5v 10A開(kāi)關(guān)電源

4xAA電池座-6v,帶有堿性電池。帶有NiMH可充電電池的4.8v。

來(lái)自業(yè)余商店的4.8或6v可充電RC電池組。

使用Arduino 5v引腳為伺服器供電不是一個(gè)好主意。多余電流消耗會(huì)產(chǎn)生電氣噪聲和“掉電”現(xiàn)象,從而導(dǎo)致您的Arduino行為異常,復(fù)位和/或過(guò)熱。

在通孔電容器插槽中添加電容器我們?cè)?a target="_blank">PCB上有一個(gè)用于焊接電解電容器的點(diǎn)。根據(jù)您的使用情況,您可能需要電容器,也可能不需要電容器。如果您使用大量的電源驅(qū)動(dòng)伺服器,而伺服器在移動(dòng)時(shí)會(huì)下降很多,那么 n * 100uF 其中 n 是伺服器的數(shù)量是一個(gè)不錯(cuò)的選擇開(kāi)始-例如 470uF 或更高(用于5個(gè)伺服器)。由于它非常依賴于伺服電流消耗,每個(gè)電動(dòng)機(jī)上的轉(zhuǎn)矩以及所用的電源,因此沒(méi)有“一個(gè)神奇的電容器值”,我們可以建議這就是為什么我們?cè)谔准胁话娙萜鞯脑颉?/p>

連接伺服器大多數(shù)伺服器帶有標(biāo)準(zhǔn)的3針凹型連接器,可直接插入伺服驅(qū)動(dòng)器的插頭中。請(qǐng)確保插頭與底部排的接地線(通常為黑色或棕色)和信號(hào)線(通常為黃色或白色)在頂部對(duì)齊。

添加更多伺服系統(tǒng)一個(gè)板上最多可以連接16個(gè)伺服器。如果您需要控制16個(gè)以上的伺服器,則可以按下一頁(yè)所述鏈接其他板。

連鎖驅(qū)動(dòng)程序

可以鏈接多個(gè)驅(qū)動(dòng)程序(最多62個(gè))以控制更多伺服器。在板的兩端都有插頭,接線非常簡(jiǎn)單,就像將一根6針并行電纜從一塊板連接到另一塊板一樣。

尋址木板必須為鏈中的每個(gè)木板分配一個(gè)唯一的地址。這是通過(guò)板右上邊緣的地址跳線完成的。每塊板的I2C基址為0x40。使用地址跳線編程的二進(jìn)制地址已添加到基本I2C地址中。

要編程地址偏移量,請(qǐng)使用一滴焊料橋接地址中每個(gè)二進(jìn)制“ 1”的對(duì)應(yīng)地址跳線。

委員會(huì)0:地址= 0x40偏移量=二進(jìn)制00000(無(wú)需跳線)

板1:地址= 0x41偏移量=二進(jìn)制00001(如上圖所示為橋A0)

板2:地址= 0x42偏移量=二進(jìn)制00010(橋A1)

Board 3:地址= 0x43偏移=二進(jìn)制00011(橋A0和A1)

Board 4:地址= 0x44偏移=二進(jìn)制00100(橋A2)

等。

在您的草圖中,您需要為每個(gè)板聲明一個(gè)單獨(dú)的pobject。在每個(gè)對(duì)象上調(diào)用begin,并通過(guò)其附加的對(duì)象控制每個(gè)舵機(jī)。例如:

下載:文件

復(fù)制代碼

#include

#include

Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x40);

Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x41);

void setup() {

Serial.begin(9600);

Serial.println(“16 channel PWM test!”);

pwm1.begin();

pwm1.setPWMFreq(1600); // This is the maximum PWM frequency

pwm2.begin();

pwm2.setPWMFreq(1600); // This is the maximum PWM frequency

}

#include

#include

Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x40);

Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x41);

void setup() {

Serial.begin(9600);

Serial.println(“16 channel PWM test!”);

pwm1.begin();

pwm1.setPWMFreq(1600); // This is the maximum PWM frequency

pwm2.begin();

pwm2.setPWMFreq(1600); // This is the maximum PWM frequency

}

使用Adafruit庫(kù)

由于PWM伺服驅(qū)動(dòng)器是通過(guò)I2C控制的,因此它非常易于在任何微控制器或微計(jì)算機(jī)上使用。在本演示中,我們將展示如何將其與Arduino IDE一起使用,但是C ++代碼可以輕松移植

安裝Adafruit PCA9685庫(kù)

要開(kāi)始讀取傳感器數(shù)據(jù),您將需要安裝Adafruit_PWMServo庫(kù)(我們的github存儲(chǔ)庫(kù)中的代碼)。可以從Arduino庫(kù)管理器中獲得它,因此我們建議使用它。

從IDE中打開(kāi)庫(kù)管理器。..

,然后輸入 adafruit pwm 來(lái)查找?guī)臁|c(diǎn)擊安裝

我們還提供了有關(guān)Arduino庫(kù)安裝的出色教程,網(wǎng)址為:

http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use

使用示例代碼進(jìn)行測(cè)試:

首先確保關(guān)閉了Arduino IDE的所有副本。

接下來(lái)打開(kāi)Arduino IDE,然后選擇文件-》示例-》 Adafruit_PWMServoDriver-》 Servo 。這將在IDE窗口中打開(kāi)示例文件。

如果使用Breakout:

按上一頁(yè)所示連接驅(qū)動(dòng)器板和伺服器。不要忘記為 Vin (3-5V邏輯電平)和 V + (5V伺服電源)提供電源。 檢查綠色LED點(diǎn)亮!

如果使用屏蔽:

將屏蔽插入Arduino。別忘了,您還必須為V +接線盒提供5V。 紅色和綠色的LED都必須點(diǎn)亮。

如果使用FeatherWing,請(qǐng)執(zhí)行以下操作:

將FeatherWing插入羽毛中。別忘了,您還必須向V +接線端子提供5V。檢查綠色LED點(diǎn)亮!

連接伺服器

單個(gè)伺服器應(yīng)插入 PWM#0 端口(第一個(gè)端口)。您應(yīng)該會(huì)在大約180度的范圍內(nèi)看到伺服器來(lái)回掃描。

校準(zhǔn)Servos

Servo Pulsetiming在不同品牌和型號(hào)之間有所不同。由于它是模擬控制電路,因此同一品牌和型號(hào)的樣本之間通常會(huì)有一些差異。為了進(jìn)行精確的位置控制,您需要在代碼中校準(zhǔn)最小和最大脈沖寬度,以匹配伺服器的已知位置。

查找最小值:

使用示例代碼,編輯SERVOMIN,直到掃描的低點(diǎn)到達(dá)最小行程范圍。最好逐步解決此問(wèn)題,并在達(dá)到行程的物理限制之前停止。

找到最大值:

再次使用示例代碼,編輯SERVOMAX直到掃描的最高點(diǎn)達(dá)到最大旅行范圍。同樣,最好逐漸解決此問(wèn)題,并在達(dá)到行程的物理限制之前停止。

調(diào)整SERVOMIN和SERVOMAX時(shí)要小心。達(dá)到行進(jìn)的物理極限會(huì)剝奪齒輪并永久損壞您的伺服器。

從度數(shù)轉(zhuǎn)換為脈沖長(zhǎng)度 Arduino的“ map()”功能是在旋轉(zhuǎn)度與校準(zhǔn)的SERVOMIN和SERVOMAXpulse長(zhǎng)度之間進(jìn)行轉(zhuǎn)換的簡(jiǎn)便方法。假設(shè)一個(gè)典型的伺服器可以旋轉(zhuǎn)180度;將SERVOMIN校準(zhǔn)到0度位置并將SERVOMAX校準(zhǔn)到180度位置后,您可以使用以下代碼行將0到180度之間的任意角度轉(zhuǎn)換為相應(yīng)的脈沖長(zhǎng)度:

下載:文件

復(fù)制代碼

pulselength = map(degrees, 0, 180, SERVOMIN, SERVOMAX); pulselength = map(degrees, 0, 180, SERVOMIN, SERVOMAX);

庫(kù)參考

setPWMFreq(freq)

說(shuō)明

此功能可用于調(diào)整PWM頻率,該頻率確定IC每秒產(chǎn)生多少個(gè)完整“脈沖”。換句話說(shuō),頻率決定了每個(gè)脈沖從開(kāi)始到結(jié)束的持續(xù)時(shí)間有多長(zhǎng),同時(shí)考慮了脈沖的高低段。

頻率在PWM中很重要,因?yàn)閷㈩l率設(shè)置得太高,很小的占空比可能會(huì)引起問(wèn)題,因?yàn)樾盘?hào)的“上升時(shí)間”(從0V變?yōu)閂CC所需的時(shí)間)可能比信號(hào)有效的時(shí)間更長(zhǎng),并且PWM輸出將變得平滑并可能甚至沒(méi)有達(dá)到VCC,可能會(huì)導(dǎo)致許多問(wèn)題。

參數(shù)

頻率:一個(gè)數(shù)字,表示以Hz為單位的頻率,介于40和1600

示例

以下代碼將PWM頻率設(shè)置為1000Hz:

下載:文件

復(fù)制代碼

pwm.setPWMFreq(1000) pwm.setPWMFreq(1000)

setPWM(通道,打開(kāi),關(guān)閉) 說(shuō)明

此功能on設(shè)置特定通道上PWM脈沖的高電平段的開(kāi)始(開(kāi))和結(jié)束(關(guān))。您可以在信號(hào)開(kāi)啟和關(guān)閉之間的0..4095之間指定“刻度”值。通道指示應(yīng)使用新值更新16個(gè)PWM輸出中的哪個(gè)。

參數(shù)

通道:應(yīng)使用以下值更新的通道新值(0..15)

on :當(dāng)信號(hào)應(yīng)從低電平過(guò)渡到高電平時(shí)的滴答聲(介于0..4095之間)

關(guān)閉:信號(hào)從高電平轉(zhuǎn)換為低電平時(shí)的滴答聲(介于0..4095之間)

示例

下面的示例將使通道15開(kāi)始變低,在脈沖中變高25%左右(在4096中打勾1024),在脈沖中變低至75%變低(壁虱3072),并在脈沖的最后25%保持低電平:/p》

下載:文件

復(fù)制代碼

pwm.setPWM(15, 1024, 3072) pwm.setPWM(15, 1024, 3072)

使用GPIO

還有一些用于完全打開(kāi)或完全關(guān)閉插針的特殊設(shè)置

您可以將插針設(shè)置為完全打開(kāi)或關(guān)閉n與

pwm.setPWM(pin, 4096, 0);

一起使用

pwm.setPWM(pin, 0, 4096);

可以將引腳設(shè)置為完全斷開(kāi)》

Python和CircuitPython

將PCA9685傳感器與Python或CircuitPython以及Adafruit CircuitPython PCA9685模塊一起使用很容易。此模塊可讓您輕松編寫(xiě)可通過(guò)此突破口控制伺服器和PWM的Python代碼。

借助CircuitPython的Adafruit_Blinka,您可以將此傳感器與任何CircuitPython微控制器板或具有GPIO和Python的計(jì)算機(jī)一起使用-for-Python兼容性庫(kù)。

CircuitPython微控制器接線

首先,將PCA9685與Arduino的前幾頁(yè)完全一樣地連接到板上。以下是使用I2C將Feather M0連接到傳感器的示例:

板3V 至傳感器VCC

板GND 到傳感器GND

板SCL 到傳感器SCL

板SDA 到傳感器SDA

Python計(jì)算機(jī)接線

由于有數(shù)十種Linux計(jì)算機(jī)/主板,您可以使用我們將顯示Raspberry Pi的接線。對(duì)于其他平臺(tái),請(qǐng)?jiān)L問(wèn)Linux上的CircuitPython指南,以了解您的平臺(tái)是否受支持。

以下是與I2C相連的Raspberry Pi:

Pi 3V3 至傳感器VCC

Pi GND 到傳感器GND

Pi SCL 到傳感器SCL

Pi SDA 到傳感器SDA

請(qǐng)勿嘗試使用RasPi或Linux主板的5V電源為伺服器供電,您很容易導(dǎo)致電源斷電并弄亂您的Pi!使用單獨(dú)的5v 2A或4A適配器

5V 2A(2000mA)開(kāi)關(guān)電源-UL認(rèn)證

產(chǎn)品ID:276

這是FCC/CE認(rèn)證和UL認(rèn)證的電源。需要大量5V電源嗎?該開(kāi)關(guān)電源可提供高達(dá)2000mA的干凈穩(wěn)壓5V輸出。 110或240輸入,因此可以在。..

$ 7.95

進(jìn)貨

添加到購(gòu)物車

5V 4A(4000mA)開(kāi)關(guān)電源-UL認(rèn)證

產(chǎn)品ID:1466

需要大量5V電源嗎?該開(kāi)關(guān)電源可提供高達(dá)4A(4000mA)的干凈穩(wěn)定的5V輸出。 110或240輸入,因此可在任何國(guó)家/地區(qū)使用。插頭為“ US 。..

$ 14.95

進(jìn)貨

添加到購(gòu)物車

CircuitPython安裝PCA9685和ServoKit庫(kù)

您需要在CircuitPython板上安裝Adafruit CircuitPython PCA9685庫(kù)。

首先請(qǐng)確保您正在為板運(yùn)行最新版本的Adafruit CircuitPython。

p》

接下來(lái),您需要安裝必要的庫(kù)以使用硬件-仔細(xì)按照以下步驟從Adafruit的CircuitPython庫(kù)捆綁包中查找和安裝這些庫(kù)。我們的CircuitPython入門(mén)指南上有一個(gè)很棒的頁(yè)面,介紹如何安裝庫(kù)捆綁包

對(duì)于諸如Trinket M0或Gemma M0之類的非表達(dá)板,您需要從捆綁包中手動(dòng)安裝必要的庫(kù):

adafruit_pca9685。 mpy

adafruit_bus_device

adafruit_register

adafruit_motor

adafruit_servokit

在繼續(xù)之前,請(qǐng)確保您董事會(huì)的lib文件夾或根文件系統(tǒng)具有 adafruit_pca9685.mpy,adafruit_register,adafruit_servokit,adafruit_motor 和 adafruit_bus_device 文件和文件夾 已復(fù)制。

下一步連接到開(kāi)發(fā)板的串行REPL,這樣您就可以在CircuitPython上出現(xiàn)》》》 提示。

PCA9685和ServoKit庫(kù)的Python安裝

您需要安裝Adafruit_Blinka庫(kù),該庫(kù)在Python中提供了CircuitPython支持。這可能還需要在您的平臺(tái)上啟用I2C并驗(yàn)證您正在運(yùn)行Python3。由于每個(gè)平臺(tái)都略有不同,并且Linux經(jīng)常更改,請(qǐng)?jiān)L問(wèn)Linux上的CircuitPython指南以準(zhǔn)備好您的計(jì)算機(jī)!

完成后,從您的命令行運(yùn)行以下命令:

sudo pip3 install adafruit-circuitpython-pca9685

sudo pip3 install adafruit-circuitpython-servokit

如果您的默認(rèn)Python是版本3,則可能需要運(yùn)行‘pip’。只要確保您不嘗試在Python 2.x上使用CircuitPython,就不支持它!

CircuitPython和Python用法

以下部分將展示如何從開(kāi)發(fā)板的Python提示符/REPL中控制PCA9685。您將通過(guò)輸入以下代碼來(lái)學(xué)習(xí)如何交互式控制伺服器和調(diào)暗LED。

調(diào)光LED

運(yùn)行以下代碼以導(dǎo)入必要的模塊并初始化與傳感器的I2C連接:

下載:文件

復(fù)制代碼

import board

import busio

import adafruit_pca9685

i2c = busio.I2C(board.SCL, board.SDA)

pca = adafruit_pca9685.PCA9685(i2c) import board

import busio

import adafruit_pca9685

i2c = busio.I2C(board.SCL, board.SDA)

pca = adafruit_pca9685.PCA9685(i2c)

每個(gè)頻道PCA9685可用于控制LED的亮度。 PCA9685生成高速PWM信號(hào),該信號(hào)可以非常快速地打開(kāi)和關(guān)閉LED。如果LED的開(kāi)啟時(shí)間比關(guān)閉的時(shí)間長(zhǎng),則您的眼睛會(huì)顯得更亮。

首先按照以下步驟將LED連線到板上。請(qǐng)注意,您不需要使用電阻來(lái)限制流經(jīng)LED的電流,因?yàn)镻CA9685會(huì)將電流限制在10mA左右:

LED陰極/短支腳到 PCA9685通道GND/接地。

LED陽(yáng)極/更長(zhǎng)的腳到 PCA9685通道PWM 。

PCA9685類可控制PWM頻率和每個(gè)通道的占空比。請(qǐng)查閱PCA9685類文檔的形式詳細(xì)信息。

對(duì)于調(diào)光LED,通常不需要使用快速的PWM信號(hào)頻率,并且可以通過(guò)設(shè)置頻率來(lái)將板的PWM頻率設(shè)置為60hz。屬性:

下載:文件

復(fù)制代碼

pca.frequency = 60 pca.frequency = 60

PCA9685支持16個(gè)獨(dú)立的通道,這些通道共享一個(gè)頻率,但可以具有獨(dú)立的占空比。這樣,您可以分別使16個(gè)LED變暗!

PCA9685對(duì)象具有 channels 屬性,該屬性為每個(gè)可以控制占空比的通道提供一個(gè)對(duì)象。要獲取單個(gè)頻道,請(qǐng)使用[]索引到頻道。

下載:文件

復(fù)制代碼

led_channel = pca.channels[0] led_channel = pca.channels[0]

現(xiàn)在通過(guò)控制LED的占空比來(lái)控制LED亮度。通道連接到LED。占空比值應(yīng)為16位值,即0到0xffff,它表示信號(hào)打開(kāi)與關(guān)閉的時(shí)間百分比。值0xffff是100%亮度,0是0%亮度,中間值是從0%到100%亮度。

例如,以0xffff的占空比完全打開(kāi)LED:

下載:文件

復(fù)制代碼

led_channel.duty_cycle = 0xffff led_channel.duty_cycle = 0xffff

運(yùn)行上面的命令后,您應(yīng)該會(huì)看到LED以全亮度點(diǎn)亮!

現(xiàn)在,以的占空比關(guān)閉LED。 0:

下載:文件

復(fù)制代碼

led_channel.duty_cycle = 0 led_channel.duty_cycle = 0

嘗試介于1000之間的值:

下載:文件

復(fù)制代碼

led_channel.duty_cycle = 1000 led_channel.duty_cycle = 1000

您應(yīng)該看到LED昏暗。嘗試嘗試其他占空比值以查看LED如何改變亮度!

例如,通過(guò)在循環(huán)中設(shè)置 duty_cycle ,使LED發(fā)光和熄滅:

下載:文件

復(fù)制代碼

# Increase brightness:

for i in range(0xffff):

led_channel.duty_cycle = i

# Decrease brightness:

for i in range(0xffff, 0, -1):

led_channel.duty_cycle = i # Increase brightness:

for i in range(0xffff):

led_channel.duty_cycle = i

# Decrease brightness:

for i in range(0xffff, 0, -1):

led_channel.duty_cycle = i

這些for循環(huán)需要一段時(shí)間,因?yàn)?6位是很多數(shù)字。 CTRL-C 可停止循環(huán)運(yùn)行并返回到REPL。

完整示例代碼

下載:Project Zip 或pca9685_simpletest.py | 在Github上查看

復(fù)制代碼

# This simple test outputs a 50% duty cycle PWM single on the 0th channel. Connect an LED and

# resistor in series to the pin to visualize duty cycle changes and its impact on brightness.

from board import SCL, SDA

import busio

# Import the PCA9685 module.

from adafruit_pca9685 import PCA9685

# Create the I2C bus interface.

i2c_bus = busio.I2C(SCL, SDA)

# Create a simple PCA9685 class instance.

pca = PCA9685(i2c_bus)

# Set the PWM frequency to 60hz.

pca.frequency = 60

# Set the PWM duty cycle for channel zero to 50%. duty_cycle is 16 bits to match other PWM objects

# but the PCA9685 will only actually give 12 bits of resolution.

pca.channels[0].duty_cycle = 0x7fff

# This simple test outputs a 50% duty cycle PWM single on the 0th channel. Connect an LED and

# resistor in series to the pin to visualize duty cycle changes and its impact on brightness.

from board import SCL, SDA

import busio

# Import the PCA9685 module.

from adafruit_pca9685 import PCA9685

# Create the I2C bus interface.

i2c_bus = busio.I2C(SCL, SDA)

# Create a simple PCA9685 class instance.

pca = PCA9685(i2c_bus)

# Set the PWM frequency to 60hz.

pca.frequency = 60

# Set the PWM duty cycle for channel zero to 50%. duty_cycle is 16 bits to match other PWM objects

# but the PCA9685 will only actually give 12 bits of resolution.

pca.channels[0].duty_cycle = 0x7fff

Contro 收費(fèi)Servos

我們?yōu)榉Q為Adafruit CircuitPython ServoKit的各種PWM/Servo套件編寫(xiě)了一個(gè)方便的CircuitPython庫(kù),該庫(kù)可為您處理所有復(fù)雜的設(shè)置。您需要做的就是從庫(kù)中導(dǎo)入適當(dāng)?shù)念悾缓罂梢允褂迷擃惖乃泄δ堋N覀儗⑾蚰故救绾螌?dǎo)入ServoKit類,并使用它來(lái)通過(guò)Adafruit 16通道分支控制伺服電動(dòng)機(jī)。

如果您對(duì)伺服器不熟悉,請(qǐng)確保首先閱讀此伺服器簡(jiǎn)介頁(yè)面和此深入的伺服器指南頁(yè)面。

首先將伺服器連接到PCA9685上的通道0。下面是連接到通道0的伺服器的示例:

伺服橙線到通道0上的突破PWM

伺服紅色導(dǎo)線到通道0上的分支V +

伺服棕色導(dǎo)線到通道0上的分支Gnd

檢查您的伺服數(shù)據(jù)表以驗(yàn)證其連接方式!

請(qǐng)確保您也已打開(kāi)或插入PCA9685板的外部5V電源!

首先,您需要導(dǎo)入并初始化ServoKit類。您必須指定板上可用的通道數(shù)。該分組討論有16個(gè)通道,因此在創(chuàng)建類對(duì)象時(shí),您將指定16。

下載:文件

復(fù)制代碼

from adafruit_servokit import ServoKit

kit = ServoKit(channels=16) from adafruit_servokit import ServoKit

kit = ServoKit(channels=16)

現(xiàn)在您可以同時(shí)控制標(biāo)準(zhǔn)和連續(xù)旋轉(zhuǎn)伺服器。

標(biāo)準(zhǔn)伺服系統(tǒng)

要控制標(biāo)準(zhǔn)伺服系統(tǒng),您需要指定與伺服系統(tǒng)連接的通道。然后可以通過(guò)將angle設(shè)置為度數(shù)來(lái)控制運(yùn)動(dòng)。

例如,將連接到通道0的伺服器移至180度:

下載:文件

復(fù)制代碼

pca.frequency = 50 pca.frequency = 50

現(xiàn)在,將PCA9685設(shè)置為用于伺服,就可以制作一個(gè)Servo對(duì)象,以便我們可以根據(jù)角度而不是 duty_cycle 。

默認(rèn)情況下,Servo類將使用適用于大多數(shù)伺服器的致動(dòng)范圍,最小脈沖寬度和最大脈沖寬度值。但是,請(qǐng)查閱Servo類文檔以獲取有關(guān)附加參數(shù)的更多詳細(xì)信息,以自定義為您的伺服器生成的信號(hào)。

下載:文件

復(fù)制代碼

import adafruit_motor.servo

servo = adafruit_motor.servo.Servo(servo_channel) import adafruit_motor.servo

servo = adafruit_motor.servo.Servo(servo_channel)

使用Servo,您可以將位置指定為角度。角度將始終在0和創(chuàng)建伺服時(shí)給定的驅(qū)動(dòng)范圍之間。默認(rèn)值為180度,但您的伺服器掃角可能較小-通過(guò)在上面的Servo類初始化程序中指定 actuation_angle 參數(shù)來(lái)更改總角度。

現(xiàn)在將角度設(shè)置為180,是范圍的一個(gè)極端:

下載:文件

復(fù)制代碼

kit.servo[0].angle = 180

kit.servo[0].angle = 180

要將伺服器恢復(fù)到0度:

下載:文件

復(fù)制代碼

kit.servo[0].angle = 0 kit.servo[0].angle = 0

對(duì)于標(biāo)準(zhǔn)伺服,將位置指定為角度。角度將始終在0和致動(dòng)范圍之間。默認(rèn)值為180度,但您的伺服器的掃描范圍可能較小。您可以通過(guò)設(shè)置actuation_range來(lái)更改總角度。

例如,將驅(qū)動(dòng)范圍設(shè)置為160度:

下載:文件

復(fù)制代碼

servokit.servo[0].actuation_range = 160 servokit.servo[0].actuation_range = 160

通常單個(gè)伺服器識(shí)別的范圍與其他伺服器有所不同。如果伺服器未掃描整個(gè)預(yù)期范圍,請(qǐng)嘗試使用set_pulse_width_range(min_pulse, max_pulse)調(diào)整最小和最大脈沖寬度。

要將脈沖寬度范圍設(shè)置為最小值1000和最大值2000:

下載:文件

復(fù)制代碼

kit.servo[0].set_pulse_width_range(1000, 2000) kit.servo[0].set_pulse_width_range(1000, 2000)

使用PCA9685分支,Python和ServoKit來(lái)控制標(biāo)準(zhǔn)伺服器就是全部!

連續(xù)旋轉(zhuǎn)伺服器

要控制連續(xù)旋轉(zhuǎn)伺服,您可以必須指定伺服打開(kāi)的通道。然后,您可以使用throttle來(lái)控制運(yùn)動(dòng)。

例如,要啟動(dòng)連接到通道1的連續(xù)旋轉(zhuǎn)伺服以使油門(mén)完全前進(jìn):

下載:文件

復(fù)制代碼

kit.continuous_servo[1].throttle = 1 kit.continuous_servo[1].throttle = 1

要啟動(dòng)連接到通道1的連續(xù)旋轉(zhuǎn)伺服以完全反向節(jié)流,請(qǐng)執(zhí)行以下操作:

下載:文件

復(fù)制代碼

kit.continuous_servo[1].throttle = -1 kit.continuous_servo[1].throttle = -1

要設(shè)置半節(jié)流閥,請(qǐng)使用十進(jìn)制:

下載:文件

復(fù)制代碼

kit.continuous_servo[1].throttle = 0.5 kit.continuous_servo[1].throttle = 0.5

然后,要停止連續(xù)旋轉(zhuǎn)伺服運(yùn)動(dòng),請(qǐng)將throttle設(shè)置為0:

下載:文件

復(fù)制代碼

kit.continuous_servo[1].throttle = 0 kit.continuous_servo[1].throttle = 0

使用PCA9685 16通道Breakout,Python和ServoKit來(lái)控制連續(xù)旋轉(zhuǎn)伺服器就是全部了!

完整示例代碼

下載:Project Zip 或 servokit_simpletest.py | i》在Github上查看

復(fù)制代碼

“”“Simple test for a standard servo on channel 0 and a continuous rotation servo on channel 1.”“”

import time

from adafruit_servokit import ServoKit

# Set channels to the number of servo channels on your kit.

# 8 for FeatherWing, 16 for Shield/HAT/Bonnet.

kit = ServoKit(channels=8)

kit.servo[0].angle = 180

kit.continuous_servo[1].throttle = 1

time.sleep(1)

kit.continuous_servo[1].throttle = -1

time.sleep(1)

kit.servo[0].angle = 0

kit.continuous_servo[1].throttle = 0

“”“Simple test for a standard servo on channel 0 and a continuous rotation servo on channel 1.”“”

import time

from adafruit_servokit import ServoKit

# Set channels to the number of servo channels on your kit.

# 8 for FeatherWing, 16 for Shield/HAT/Bonnet.

kit = ServoKit(channels=8)

kit.servo[0].angle = 180

kit.continuous_servo[1].throttle = 1

time.sleep(1)

kit.continuous_servo[1].throttle = -1

time.sleep(1)

kit.servo[0].angle = 0

kit.continuous_servo[1].throttle = 0

下載

文件

PCA9685數(shù)據(jù)表

Arduino驅(qū)動(dòng)程序庫(kù)

GitHub上的EagleCAD PCB文件

Adafruit Fritzing庫(kù)中的Fritzing對(duì)象

示意圖和構(gòu)造打印

孔的直徑為2.5mm

常見(jiàn)問(wèn)題解答

該板可以用于LED還是僅用于伺服器?

它可用于LED以及任何其他可使用PWM的設(shè)備!

當(dāng)將此屏蔽罩與Adafruit LED矩陣結(jié)合使用時(shí),我遇到了奇怪的問(wèn)題/7Seg背包

PCA9865芯片的“全部通話”地址為0x70 。這是已配置地址的補(bǔ)充。將背包的地址設(shè)置為0x71或默認(rèn)0x70以外的其他值,以消除問(wèn)題。

在使用LED的情況下,我為何無(wú)法打開(kāi)LED

如果要完全關(guān)閉LED,請(qǐng)使用 setPWM(針,4096,0); not setPWM(pin,4095,0);
責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 伺服電機(jī)
    +關(guān)注

    關(guān)注

    87

    文章

    2105

    瀏覽量

    59215
  • Arduino
    +關(guān)注

    關(guān)注

    189

    文章

    6493

    瀏覽量

    190191
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    單片機(jī)和伺服有什么區(qū)別

    : 1. 定義與功能 特性 單片機(jī)(Microcontroller) 伺服系統(tǒng)(Servo System) 定義 一種集成CPU、內(nèi)存、I/O接口的微型計(jì)算機(jī)芯片,用于控制設(shè)備。 一種由伺服
    的頭像 發(fā)表于 05-26 09:18 ?113次閱讀

    TMC9660智能伺服電機(jī)驅(qū)動(dòng)控制芯片中文手冊(cè)

    TMC9660是一款智能伺服電機(jī)驅(qū)動(dòng)控制芯片,集成智能柵極驅(qū)動(dòng)+硬件伺服控制FOC+速度環(huán)位置環(huán)+加減速軌跡曲線。TMC9660可以用來(lái)開(kāi)發(fā)
    發(fā)表于 12-03 11:46 ?41次下載

    伺服驅(qū)動(dòng)器故障及維修處理 怎樣維護(hù)保養(yǎng)伺服電機(jī)驅(qū)動(dòng)

    伺服驅(qū)動(dòng)器,又稱伺服電機(jī)驅(qū)動(dòng)器,是伺服系統(tǒng)的一部分,在使用過(guò)程中,難免會(huì)出現(xiàn)一些故障,如
    的頭像 發(fā)表于 11-20 15:20 ?2487次閱讀

    arduino 6軸同步電機(jī)驅(qū)動(dòng)程序

    arduino 6軸同步電機(jī)驅(qū)動(dòng)程序。含加加減速。
    發(fā)表于 11-09 14:09 ?0次下載

    伺服驅(qū)動(dòng)器與傳統(tǒng)電機(jī)的區(qū)別

    在現(xiàn)代工業(yè)自動(dòng)化領(lǐng)域,電機(jī)作為動(dòng)力輸出的核心部件,其性能直接影響到整個(gè)系統(tǒng)的穩(wěn)定性和效率。隨著技術(shù)的發(fā)展,伺服驅(qū)動(dòng)器逐漸取代了傳統(tǒng)的電機(jī),成為了許多精密控制場(chǎng)合的首選。 1. 定義與工
    的頭像 發(fā)表于 11-04 15:22 ?903次閱讀

    伺服驅(qū)動(dòng)器與步進(jìn)電機(jī)的比較

    在現(xiàn)代工業(yè)自動(dòng)化和精密控制領(lǐng)域,電機(jī)控制系統(tǒng)的選擇至關(guān)重要。伺服驅(qū)動(dòng)器和步進(jìn)電機(jī)是兩種常見(jiàn)的電機(jī)控制解決方案,它們各自具有獨(dú)特的優(yōu)勢(shì)和局限性
    的頭像 發(fā)表于 11-04 15:02 ?1093次閱讀

    如何調(diào)試伺服驅(qū)動(dòng)

    伺服驅(qū)動(dòng)器的重要性:在自動(dòng)化和精密控制領(lǐng)域,伺服驅(qū)動(dòng)器是實(shí)現(xiàn)精確運(yùn)動(dòng)控制的關(guān)鍵組件。 調(diào)試的目的:確保伺服
    的頭像 發(fā)表于 11-04 15:00 ?1241次閱讀

    其利天下技術(shù)·伺服電機(jī)編碼器的作用及工作原理·低壓伺服電機(jī)驅(qū)動(dòng)方案開(kāi)發(fā)

    電機(jī)系統(tǒng)中起著至關(guān)重要的作用,是實(shí)現(xiàn)高效、穩(wěn)定和精確控制的核心組件。編碼器的作用是什么呢?它的工作原理又是怎樣的?其利天下·伺服電機(jī)驅(qū)動(dòng)方案編碼器的作用位置反饋:
    的頭像 發(fā)表于 11-02 10:38 ?906次閱讀
    其利天下技術(shù)·<b class='flag-5'>伺服</b><b class='flag-5'>電機(jī)</b>編碼器的作用及工作原理·低壓<b class='flag-5'>伺服</b><b class='flag-5'>電機(jī)</b><b class='flag-5'>驅(qū)動(dòng)</b>方案開(kāi)發(fā)

    伺服電機(jī)原理及控制應(yīng)用

    伺服電機(jī)Servo Motor)是一種高精度、高性能的電動(dòng)機(jī)系統(tǒng),廣泛應(yīng)用于需要精確控制位置、速度和加速度的場(chǎng)合。 一、伺服電機(jī)的工作原理
    的頭像 發(fā)表于 10-22 16:58 ?2418次閱讀

    伺服電機(jī)有什么用,伺服電機(jī)可以當(dāng)普通電機(jī)用嗎

    一、伺服電機(jī)的作用與特點(diǎn) 伺服電機(jī)Servo motor),作為伺服系統(tǒng)中的關(guān)鍵組件,扮演著控
    的頭像 發(fā)表于 10-22 16:16 ?1400次閱讀

    什么是伺服電機(jī)伺服電機(jī)的工作原理是什么?

    、控制方式和反饋機(jī)制。 伺服電機(jī)的構(gòu)造 伺服電機(jī)主要由轉(zhuǎn)子、定子、編碼器、驅(qū)動(dòng)器和控制器組成。轉(zhuǎn)子是電機(jī)
    的頭像 發(fā)表于 10-22 10:58 ?1899次閱讀

    伺服驅(qū)動(dòng)器和伺服電機(jī)介紹

    在工業(yè)自動(dòng)化和精密控制領(lǐng)域,伺服系統(tǒng)扮演著至關(guān)重要的角色。與傳統(tǒng)的變頻技術(shù)相比,伺服系統(tǒng)具備更精確的控制能力和更高的性能水平。 一、驅(qū)動(dòng)伺服驅(qū)動(dòng)
    的頭像 發(fā)表于 10-04 11:00 ?972次閱讀

    伺服驅(qū)動(dòng)器需要設(shè)置哪些參數(shù)

    伺服驅(qū)動(dòng)器是一種用于控制伺服電機(jī)的設(shè)備,它可以接收來(lái)自控制器的指令,并將指令轉(zhuǎn)換為電機(jī)的轉(zhuǎn)速、位置和扭矩等參數(shù)。為了使
    的頭像 發(fā)表于 07-13 09:52 ?5999次閱讀

    直流伺服電機(jī)和交流伺服電機(jī)的差異

    直流伺服電機(jī)和交流伺服電機(jī)在多個(gè)方面存在顯著的差異。以下是它們之間區(qū)別的詳細(xì)闡述。
    的頭像 發(fā)表于 06-19 18:24 ?1588次閱讀

    伺服驅(qū)動(dòng)器對(duì)伺服電機(jī)的控制要求

    伺服驅(qū)動(dòng)器對(duì)伺服電機(jī)的控制要求是一個(gè)復(fù)雜而深入的話題。以下是關(guān)于伺服驅(qū)動(dòng)器對(duì)
    的頭像 發(fā)表于 06-14 15:24 ?1265次閱讀
    主站蜘蛛池模板: 在线视频久久 | 免费在线观看大片影视大全 | 一级特黄高清完整大片 | 美女教师一级毛片 | 性做久久久久久久免费观看 | 色多网站免费视频 | 操香蕉| 亚洲 欧美 动漫 | 精品福利 | 六月丁香色婷婷 | 日日噜噜噜夜夜爽爽狠狠 | 欧美成人看片一区二区三区 | 人人爱人人插 | 一级片在线免费观看 | 日本人xxxxxxxx6969 | 天天干天天爽天天射 | 热久久久久 | 亚洲 欧美 自拍 卡通 综合 | 久久草在线视频国产一 | 加勒比一本一道在线 | 天天干天天射天天舔 | 亚洲国产精品婷婷久久 | 五月婷六月丁香 | 你懂的在线免费观看 | 国产精品久久久久久一级毛片 | 国产精品久久久久久久久久妇女 | 四虎成人影院网址 | 亚洲一区二区三区免费在线观看 | 美女下面小内内的沟 | 天天曰天天干天天操 | 免费人成网555www | 夜夜操综合| 欧美亚洲一区二区三区在线 | 亚洲va中文va欧美va爽爽 | 二区三区在线 | 久久精品国产清自在天天线 | xxxx日| 免费特黄 | www淫 | 5566精品资源在线播放 | 美女涩涩网站 |