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

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

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

如何分別對(duì)機(jī)器人上的多個(gè)伺服進(jìn)行獨(dú)立操控

jf_AHleW45b ? 來源:機(jī)器人網(wǎng) ? 作者:機(jī)器人網(wǎng) ? 2022-10-27 15:43 ? 次閱讀

我們已經(jīng)探索了如何構(gòu)建機(jī)械臂并使用超聲波傳感器對(duì)其進(jìn)行控制。如果您想要實(shí)現(xiàn)更多的控制功能(以及了解撥盤和旋鈕的工作原理),您可以在項(xiàng)目中添加一個(gè)電位計(jì)。這些輸入設(shè)備使您可以使用可調(diào)撥盤來對(duì)您的項(xiàng)目進(jìn)行控制。在本指南中,我們將向您展示如何分別對(duì)機(jī)器人上的多個(gè)伺服進(jìn)行獨(dú)立操控,其中每個(gè)伺服對(duì)應(yīng)一個(gè)撥盤。

電位計(jì)的工作原理

大多數(shù)撥盤和旋鈕下面是一個(gè)稱為電位計(jì)的設(shè)備。這種類型的電阻可以調(diào)整通過它的電壓,然后將其轉(zhuǎn)換為可變值。這對(duì)于音量調(diào)控、亮度調(diào)控,或者我們?cè)诮裉斓闹改现袑⒁榻B的伺服位置調(diào)控都很有用。

電位計(jì)的形式可以是撥盤、旋鈕或者滑塊,選擇哪種取決于您的應(yīng)用需求。在本指南中,我們將使用撥盤來控制機(jī)械臂上的多個(gè)伺服。這種類型的電位計(jì)通常有三個(gè)引腳:兩個(gè)引腳在外面,連接電源和接地。

中間的引腳是信號(hào)引腳,可以連接到Arduino板上的模擬引腳,以測(cè)量電位計(jì)信號(hào)引腳輸出的值與全5V電壓接近的程度。在極端情況下,兩端電壓為0V,開發(fā)板讀取的電壓值為0。另一個(gè)極端情況下,通過的電壓為全5V,開發(fā)板讀取值為1023。也就是說這可以提供1024個(gè)可以測(cè)量的阻力級(jí)別,所以可以有1024個(gè)值傳遞到您的腳本中。

所需組件

該項(xiàng)目所需材料與我們之前的使用超聲波傳感器控制機(jī)械臂指南中所需材料大致相似。但是,我們將使用一個(gè)簡(jiǎn)單的撥盤來代替超聲波傳感器?;?a target="_blank">電子套件通常帶有這些撥盤,您也可以單獨(dú)進(jìn)行購(gòu)買。

Arduino Uno

7d6f390e-55c3-11ed-a3b6-dac502259ad0.png

電位計(jì) &撥盤

7d898eee-55c3-11ed-a3b6-dac502259ad0.png

Arduino IDE

7d99a112-55c3-11ed-a3b6-dac502259ad0.png

機(jī)器人套件

我們?cè)谥暗臋C(jī)器人指南中使用了the meArm套件,在本指南中將使用相同的套件。該套件的某些版本不帶有伺服,因此請(qǐng)查找您所需要的版本。

7db09188-55c3-11ed-a3b6-dac502259ad0.png

您還需要一個(gè)簡(jiǎn)單的揚(yáng)聲器模塊和一根USB數(shù)據(jù)線,我使用的是一個(gè)簡(jiǎn)單的單聲道揚(yáng)聲器。

本指南是基于所使用的meArm套件中的TG9z伺服編寫的。根據(jù)您所使用的特定伺服系統(tǒng),可能會(huì)有一些變化,因此請(qǐng)務(wù)必閱讀材料的相關(guān)文檔。

代碼

我們之前的指南更詳細(xì)地介紹了伺服的工作原理,因此我們?cè)诖颂帉⒅攸c(diǎn)介紹電位計(jì),但是還是之介紹一些有關(guān)基礎(chǔ)知識(shí)。如果您想將代碼上傳到Arduino并直接跳到接線部分,那么所有代碼如下所示。

#include


Servo myservo1; // create servo object to control a servo
Servo myservo2; // create servo object to control a servo


int potpinA0 = 0; // Assign analog pin to potentiometer
int potpinA1 = 1; // Assign analog pin to potentiometer
int val0 = 0; // Variable to read value from potentiometer, starts at 0
int val1 = 0; // Variable to read value from potentiometer, starts at 0


void setup() {
myservo1.attach(9); // attaches the servo on pin 9 to the servo object
myservo2.attach(10); // attaches the servo on pin 10 to the servo object
Serial.begin(9600); // This will allow you to read how far away your sensor is later


}
void loop() {
val0 = analogRead(potpinA0); // Reads potentiometer value (between 0 and 1023)
val0 = map(val0, 0, 1023, 110, 150); // Scale value to volume (value between 0 and 50)
val1 = analogRead(potpinA1); // Reads potentiometer value (between 0 and 1023)
val1 = map(val1, 0, 1023, 50, 170); // Scale value to volume (value between 0 and 50)
Serial.print(“Pin 1: “);
Serial.print(val0); // Print dial/volume position
Serial.print(“, Pin 2: “);
Serial.print(val1); // Print dial/volume position
Serial.println();


myservo1.write(val0); // Sets servo 1 according to the scaled value
delay(15); // Waits for the servo to get there


myservo2.write(val1); // Sets servo 2 according to the scaled value
delay(15); // Waits for the servo to get there


}


First, let’s take a look at the variables.


int potpinA0 = 0; // Assign analog pin to potentiometer
int val0 = 0; // Variable to read value from potentiometer, starts at 0

這些是在setup()函數(shù)之前定義的(確保您已經(jīng)創(chuàng)建了伺服對(duì)象,并在此處包含了Servo.h庫(kù)),第一個(gè)變量potpinA0將電位計(jì)的信號(hào)引腳分配給Arduino上的引腳A0。

第二個(gè)變量val0將用于存儲(chǔ)從該引腳接收到的值。

val0 = analogRead(potpinA0); // Reads potentiometer value (between 0 and 1023)
val0 = map(val0, 0, 1023, 110, 150); // Scale value to volume (value between 0 and 50)


這里的第一行讀取電位計(jì)連接到的模擬引腳值并將其分配給val0。默認(rèn)情況下,該值將介于0和1023之間。然而,這個(gè)范圍對(duì)我們的伺服來說太大了,它最多只能旋轉(zhuǎn)180度(實(shí)際上甚至更小,我們一會(huì)兒將會(huì)看到)。所以,第二行用于將從電位計(jì)接收到的值轉(zhuǎn)換到更易于管理的值。

map() 函數(shù)對(duì)于該工作很有用,但是對(duì)于要輸入的值可能需要反復(fù)試驗(yàn)。雖然您的伺服系統(tǒng)最多可以旋轉(zhuǎn)180度,但是它們所連接部件的運(yùn)動(dòng)可能會(huì)有更多限制。試驗(yàn)出它們的運(yùn)動(dòng)范圍,以找出這些伺服可以達(dá)到的最小值和最大值。就本項(xiàng)目來說,我發(fā)現(xiàn)我的第一個(gè)伺服在110度到150度之間運(yùn)動(dòng)。

考慮到這些信息, map()函數(shù)可以把0到1023的范圍重新映射到110到150。現(xiàn)在,如果我將撥盤調(diào)到最低點(diǎn),它將返回110。如果我將它旋轉(zhuǎn)到最高點(diǎn),將返回150。中間的度數(shù)將按比例映射到這兩個(gè)值之間。

Serial.print(“Pin 1: “);
Serial.print(val0); // Print dial/volume position
Serial.print(“, Pin 2: “);
Serial.print(val1); // Print dial/volume position
Serial.println();

此部分將返回串行監(jiān)視器中電位計(jì)的值(重新映射之后)。這對(duì)于在連接伺服之前對(duì)值進(jìn)行測(cè)試很有用。

myservo1.write(val0); // Sets servo 1 according to the scaled value
delay(15); // Waits for the servo to get there

最后,這個(gè)命令會(huì)告訴伺服在重新映射電位計(jì)信號(hào)后旋轉(zhuǎn)到指定位置。延遲命令會(huì)給程序一點(diǎn)時(shí)間來完成旋轉(zhuǎn)動(dòng)作。

完整代碼包括上述的兩組各種命令,其中為多個(gè)伺服分配了變量,每個(gè)伺服都可以進(jìn)行獨(dú)立操作。您可以添加盡可能多的伺服,只要您的開發(fā)板能夠處理。請(qǐng)記住,每個(gè)伺服都需要在map()函數(shù)中指定自己特定的運(yùn)動(dòng)范圍。

接線

與所有的伺服項(xiàng)目一樣,在連接伺服系統(tǒng)之前,最好進(jìn)行盡可能多的編碼工作和測(cè)試。準(zhǔn)備好后,將代碼上傳到您的Arduino,然后按照如下方式連接線路(您可能需要為本項(xiàng)目使用一個(gè)面包板):

● 將每個(gè)電位計(jì)上的第一個(gè)引腳連接到GND。
● 將每個(gè)電位計(jì)上的第三個(gè)引腳連接到5V。
● 將第一個(gè)電位計(jì)上的最后一個(gè)引腳連接到Arduino上的引腳A0。如果您使用第二個(gè)電位計(jì)和伺服組合(像完整代碼里的那樣),請(qǐng)將其連接到引腳A1。對(duì)于您所添加的每個(gè)電位計(jì)都以此類推。
● 將伺服上的電源線連接到5V,將地線連接到GND。
● 將伺服上的黃色信號(hào)線連接到引腳9。如果您使用第二個(gè)伺服,將其信號(hào)線連接到引腳10。

7dd68eb0-55c3-11ed-a3b6-dac502259ad0.png

當(dāng)完成了所有連接,并上傳代碼后,您應(yīng)該能夠旋轉(zhuǎn)撥盤并且從伺服看到相應(yīng)的運(yùn)動(dòng)。每個(gè)伺服將通過自己的電位計(jì)獨(dú)立進(jìn)行操作。但是,我們也有可能可以通過一個(gè)撥盤控制多個(gè)伺服,甚至可以編寫一個(gè)使其沿預(yù)設(shè)路徑自動(dòng)移動(dòng)的草圖。嘗試在項(xiàng)目中添加更多伺服,并嘗試使用其他方法來對(duì)伺服進(jìn)行控制。

審核編輯 :李倩


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

    關(guān)注

    211

    文章

    28552

    瀏覽量

    207650
  • 電位計(jì)
    +關(guān)注

    關(guān)注

    0

    文章

    253

    瀏覽量

    16986
  • 機(jī)械臂
    +關(guān)注

    關(guān)注

    12

    文章

    515

    瀏覽量

    24644

原文標(biāo)題:機(jī)械臂上多個(gè)伺服獨(dú)立操控的實(shí)現(xiàn)

文章出處:【微信號(hào):旺材伺服與運(yùn)動(dòng)控制,微信公眾號(hào):旺材伺服與運(yùn)動(dòng)控制】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【「具身智能機(jī)器人系統(tǒng)」閱讀體驗(yàn)】2.具身智能機(jī)器人的基礎(chǔ)模塊

    非常重要的地位。 先說這個(gè)自主機(jī)器人的計(jì)算系統(tǒng)。計(jì)算系統(tǒng)是自主機(jī)器人的關(guān)鍵部件。自主機(jī)器人通過智能計(jì)算系統(tǒng)與物理世界交互,自主地完成任務(wù)。通常會(huì)包括幾個(gè)關(guān)鍵的模塊,分別是傳感模塊,感知
    發(fā)表于 01-04 19:22

    開源項(xiàng)目!能夠精確地行走、跳舞和執(zhí)行復(fù)雜動(dòng)作的機(jī)器人—Tillu

    學(xué)習(xí)者和愛好者的理想伙伴。 創(chuàng)新設(shè)計(jì) Tillu的設(shè)計(jì)靈感來自廣受歡迎的Otto DIY機(jī)器人,其設(shè)計(jì)過程包括在Fusion 360中進(jìn)行CAD建模和精確的3D打印,以實(shí)現(xiàn)從堅(jiān)固的伺服驅(qū)動(dòng)腿部到模塊化
    發(fā)表于 01-02 17:24

    【「具身智能機(jī)器人系統(tǒng)」閱讀體驗(yàn)】2.具身智能機(jī)器人大模型

    近年來,人工智能領(lǐng)域的大模型技術(shù)在多個(gè)方向上取得了突破性的進(jìn)展,特別是在機(jī)器人控制領(lǐng)域展現(xiàn)出了巨大的潛力。在“具身智能機(jī)器人大模型”部分,作者研究并探討了大模型如何提升機(jī)器人的能力,大
    發(fā)表于 12-29 23:04

    伺服系統(tǒng)在機(jī)器人中的作用 伺服系統(tǒng)與傳統(tǒng)電機(jī)對(duì)比

    伺服系統(tǒng)在機(jī)器人中的作用 機(jī)器人技術(shù)是現(xiàn)代工業(yè)自動(dòng)化的重要組成部分,它涉及到機(jī)械、電子、計(jì)算機(jī)科學(xué)、控制理論等多個(gè)學(xué)科。在這些技術(shù)中,伺服
    的頭像 發(fā)表于 12-10 10:18 ?511次閱讀

    鴻蒙機(jī)器人與鴻蒙開發(fā)板聯(lián)動(dòng)演示

    鴻蒙機(jī)器人與鴻蒙開發(fā)板聯(lián)動(dòng)演示,機(jī)器人的角色為迎賓機(jī)器人,開發(fā)板負(fù)責(zé)人賓客出現(xiàn)監(jiān)聽
    發(fā)表于 12-02 14:55

    馬斯克旗下xAI計(jì)劃推出Grok聊天機(jī)器人獨(dú)立應(yīng)用

    近日,據(jù)最新報(bào)道,埃隆·馬斯克旗下的xAI公司計(jì)劃最早于12月推出一款獨(dú)立的聊天機(jī)器人應(yīng)用程序,這款應(yīng)用將圍繞其旗下的Grok聊天機(jī)器人進(jìn)行打造。此舉被視為xAI在聊天
    的頭像 發(fā)表于 11-29 13:38 ?196次閱讀

    焊接機(jī)器人六個(gè)軸分別是什么作用

    任務(wù)。那么,焊接機(jī)器人六個(gè)軸分別是什么作用?本文將詳細(xì)介紹。 一軸:機(jī)器人基座旋轉(zhuǎn)軸 一軸是機(jī)器人與地面連接的軸,其主要作用是實(shí)現(xiàn)機(jī)器人的基
    的頭像 發(fā)表于 11-21 17:45 ?277次閱讀
    焊接<b class='flag-5'>機(jī)器人</b>六個(gè)軸<b class='flag-5'>分別</b>是什么作用

    伺服電機(jī)在機(jī)器人中的應(yīng)用有哪些

    伺服電機(jī)作為現(xiàn)代工業(yè)自動(dòng)化領(lǐng)域的核心組件,其精確控制和高效性能在機(jī)器人技術(shù)中扮演著至關(guān)重要的角色。 伺服電機(jī)的工作原理 伺服電機(jī)是一種能夠?qū)㈦娔苻D(zhuǎn)換為機(jī)械能的裝置,它通過精確控制電機(jī)的
    的頭像 發(fā)表于 11-20 09:53 ?742次閱讀

    國(guó)產(chǎn)可編程硅振在機(jī)器人伺服系統(tǒng)中的應(yīng)用,替換SiTime

    國(guó)產(chǎn)可編程硅振在機(jī)器人伺服系統(tǒng)中的應(yīng)用,替換SiTime
    的頭像 發(fā)表于 09-26 10:09 ?274次閱讀
    國(guó)產(chǎn)可編程硅振在<b class='flag-5'>機(jī)器人</b><b class='flag-5'>伺服</b>系統(tǒng)中的應(yīng)用,替換SiTime

    伺服控制機(jī)器人的控制方式有哪些

    伺服控制機(jī)器人是一種高度精確的自動(dòng)化設(shè)備,它能夠執(zhí)行復(fù)雜的任務(wù),如精確定位、重復(fù)運(yùn)動(dòng)和力控制。伺服控制系統(tǒng)是機(jī)器人技術(shù)中的核心部分,它負(fù)責(zé)接收指令、處理信息并驅(qū)動(dòng)
    的頭像 發(fā)表于 09-04 09:16 ?532次閱讀

    開源項(xiàng)目!用ESP32做一個(gè)可愛的無用機(jī)器人

    巧妙設(shè)計(jì)的杠桿將開關(guān)推回“關(guān)”位置。這種玩具很常見,許多人已經(jīng)制作并上傳到Y(jié)ouTube。 作者每年都會(huì)挑戰(zhàn)自己制作一個(gè)技術(shù)產(chǎn)品,今年他決定制作這個(gè)復(fù)雜的項(xiàng)目——可愛無用機(jī)器人。這個(gè)機(jī)器人參考了日本
    發(fā)表于 09-03 09:34

    開源項(xiàng)目!用ESP32做一個(gè)可愛的無用機(jī)器人

    巧妙設(shè)計(jì)的杠桿將開關(guān)推回“關(guān)”位置。這種玩具很常見,許多人已經(jīng)制作并上傳到Y(jié)ouTube。 作者每年都會(huì)挑戰(zhàn)自己制作一個(gè)技術(shù)產(chǎn)品,今年他決定制作這個(gè)復(fù)雜的項(xiàng)目——可愛無用機(jī)器人。這個(gè)機(jī)器人參考了
    發(fā)表于 08-30 14:50

    Al大模型機(jī)器人

    理解能力強(qiáng)大: AI大模型機(jī)器人可以理解和生成自然語(yǔ)言,能夠進(jìn)行復(fù)雜的對(duì)話和語(yǔ)言任務(wù)。它們能夠識(shí)別語(yǔ)言中的語(yǔ)義、語(yǔ)境和情感,并據(jù)此作出適當(dāng)?shù)幕貞?yīng)。廣泛的知識(shí)儲(chǔ)備: 這些模型基于大規(guī)模的數(shù)據(jù)集進(jìn)行訓(xùn)練,擁有
    發(fā)表于 07-05 08:52

    AMD Kria? KR 260套件+ROS 2快速開發(fā)機(jī)器人解決方案

    伺服系統(tǒng),其中不僅包含電機(jī),還包含微控制器和網(wǎng)絡(luò)功能。雖然這使得機(jī)器人應(yīng)用所需的復(fù)雜電機(jī)驅(qū)動(dòng)成為可能,但這也意味著每個(gè)伺服系統(tǒng)都有幾個(gè)不同的驅(qū)動(dòng)和控制機(jī)制。通常,當(dāng)使用這種復(fù)雜的伺服
    的頭像 發(fā)表于 06-21 16:35 ?9216次閱讀
    AMD Kria? KR 260套件+ROS 2快速開發(fā)<b class='flag-5'>機(jī)器人</b>解決方案

    基于FPGA EtherCAT的六自由度機(jī)器人視覺伺服控制設(shè)計(jì)

    ,為工業(yè)自動(dòng)化提供了一套切實(shí)可行的方案。 本文針對(duì)基于機(jī)器視覺的工業(yè)機(jī)器人進(jìn)行研究,主要工作包括以下幾點(diǎn): (1)設(shè)計(jì)了基于 伊瑟特的六自由度機(jī)器人視覺
    發(fā)表于 05-29 16:17