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

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

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

如何使用操縱桿和Arduino控制伺服電機(jī)

科技觀察員 ? 來(lái)源:homemade-circuits ? 作者:homemade-circuits ? 2023-07-27 11:47 ? 次閱讀

在這篇文章中,我們將學(xué)習(xí)如何使用操縱桿Arduino控制伺服電機(jī)。我們將看到有關(guān)操縱桿,其銷,其結(jié)構(gòu)和工作的概述。我們將從操縱桿中提取有用的數(shù)據(jù),這些數(shù)據(jù)將成為控制伺服電機(jī)的基礎(chǔ)。

現(xiàn)在讓我們看一下操縱桿。

操縱桿是一種輸入設(shè)備,由杠桿組成,杠桿可以在 X 軸和 Y 軸上沿多個(gè)方向移動(dòng)。杠桿的運(yùn)動(dòng)用于控制電機(jī)或任何外圍電子設(shè)備。

從遙控玩具到Boing飛機(jī),操縱桿都用于執(zhí)行類似的功能。此外,游戲和較小的操縱桿在Z軸上有一個(gè)按鈕,可以對(duì)其進(jìn)行編程以執(zhí)行許多有用的操作。

操縱桿通常是電子設(shè)備,因此我們需要施加電源。杠桿的移動(dòng)會(huì)在輸出引腳上產(chǎn)生電壓差。電壓電平由微控制器處理,以控制電機(jī)等輸出設(shè)備。

圖示的操縱桿與此類似,可以在PlayStation和Xbox控制器中找到。您無(wú)需破壞這些控制器即可挽救一個(gè)。這些模塊在當(dāng)?shù)仉娮由痰旰碗娮由虅?wù)網(wǎng)站上隨時(shí)可用。

現(xiàn)在讓我們看看這個(gè)操縱桿的構(gòu)造。

它有兩個(gè) 10 千歐姆電位器,位于帶有彈簧的 X 軸和 Y 軸上,因此當(dāng)用戶從杠桿釋放力時(shí),它會(huì)返回到其原始位置。它在 Z 軸上有一個(gè)按下 ON
按鈕。

它具有 5 個(gè)引腳、5 伏 Vcc、GND、可變 X、可變 Y 和 SW(Z 軸開關(guān))。當(dāng)我們施加電壓并將操縱桿留在其原始杠桿位置時(shí)。X 和 Y
引腳將產(chǎn)生施加電壓的一半。

當(dāng)我們移動(dòng)杠桿時(shí),X 和 Y 輸出引腳的電壓會(huì)發(fā)生變化?,F(xiàn)在讓我們實(shí)際將操縱桿連接到Arduino。

示意圖:

使用操縱桿的 Arduino 伺服電機(jī)控制

引腳連接詳細(xì)信息在電路旁邊給出。連接完成的硬件設(shè)置并上傳代碼。

程序:

//---------------Program Developed by R.Girish--------------//

int X_axis = A0;

int Y_axis = A1;

int Z_axis = 2;

int x = 0;

int y = 0;

int z = 0;

void setup()

{

Serial.begin(9600);

pinMode(X_axis, INPUT);

pinMode(Y_axis, INPUT);

pinMode(Z_axis, INPUT);

digitalWrite(Z_axis, HIGH);

}

void loop()

{

x = analogRead(X_axis);

y = analogRead(Y_axis);

z = digitalRead(Z_axis);

Serial.print(“X axis = ”);

Serial.println(x);

Serial.print(“Y axis = ”);

Serial.println(y);

Serial.print(“Z axis = ”);

if(z == HIGH)

{

Serial.println(“Button not Pressed”);

}

else

{

Serial.println(“Button Pressed”);

}

Serial.println(“----------------------------”);

delay(500);

}

//---------------Program Developed by R.Girish--------------//

Open the Serial monitor you can see the voltage level at the X and Y axes
pins and the status of the Z axis i.e. push button as illustrated below.

These X, Y, Z axes values are used to interpret the position of the lever.
As you can see the values are from 0 to 1023.

That’s because Arduino has built in ADC converter which convert the voltage
0V - 5V to 0 to 1023 values.

You can witness from the serial monitor that when the lever is left
untouched the lever stays at mid position of both X and Y axes and shows half
value of 1023.

You can also see it is not exact half of the 1023 that’s because
manufacturing these joysticks never been perfect.

By now, you would have got some technical knowledge about joysticks.

Now let’s see how to control two servo motors using one joystick.

Circuit Diagram:

兩個(gè)伺服電機(jī)由一個(gè)操縱桿控制;當(dāng)您沿 X 軸移動(dòng)操縱桿時(shí),連接在引腳 #7 處的伺服器會(huì)根據(jù)操縱桿位置順時(shí)針和逆時(shí)針移動(dòng)。

如果將操縱桿水平保持在特定位置,也可以將伺服執(zhí)行器保持在某個(gè)位置。

與在引腳 #6 處連接的伺服電機(jī)類似,您可以沿 Y 軸移動(dòng)杠桿。

當(dāng)您沿 Z 軸按下杠桿時(shí),兩個(gè)電機(jī)將執(zhí)行 180 度掃描。

您可以將 arduino 連接到 9v 電池或計(jì)算機(jī)。如果將Arduino連接到計(jì)算機(jī),則可以打開串行監(jiān)視器并查看伺服執(zhí)行器的角度和電壓電平。

伺服電機(jī)控制程序:

//---------------Program Developed by R.Girish--------------//

#include《Servo.h》

Servo servo_X;

Servo servo_Y;

int X_angleValue = 0;

int Y_angleValue = 0;

int X_axis = A0;

int Y_axis = A1;

int Z_axis = 2;

int x = 0;

int y = 0;

int z = 0;

int pos = 0;

int check1 = 0;

int check2 = 0;

int threshold = 10;

void setup()

{

Serial.begin(9600);

servo_X.attach(7);

servo_Y.attach(6);

pinMode(X_axis, INPUT);

pinMode(Y_axis, INPUT);

pinMode(Z_axis, INPUT);

digitalWrite(Z_axis, HIGH);

}

void loop()

{

x = analogRead(X_axis);

y = analogRead(Y_axis);

z = digitalRead(Z_axis);

if(z == LOW)

{

Serial.print(“Z axis status = ”);

Serial.println(“Button Pressed”);

Serial.println(“Sweeping servo actuators”);

for (pos = 0; pos 《= 180; pos += 1)

{

servo_X.write(pos);

delay(10);

}

for (pos = 180; pos 》= 0; pos -= 1)

{

servo_X.write(pos);

delay(15);

}

for (pos = 0; pos 《= 180; pos += 1)

{

servo_Y.write(pos);

delay(10);

}

for (pos = 180; pos 》= 0; pos -= 1)

{

servo_Y.write(pos);

delay(15);

}

Serial.println(“Done?。。 保?

}

if(x 》 check1 + threshold || x 《 check1 - threshold)

{

X_angleValue = map(x, 0, 1023, 0, 180);

servo_X.write(X_angleValue);

check1 = x;

Serial.print(“X axis voltage level = ”);

Serial.println(x);

Serial.print(“X axis servo motor angle = ”);

Serial.print(X_angleValue);

Serial.println(“ degree”);

Serial.println(“------------------------------------------”);

}

if(y 》 check2 + threshold || y 《 check2 - threshold)

{

Y_angleValue = map(y, 0, 1023, 0, 180);

servo_Y.write(Y_angleValue);

check2 = y;

Serial.print(“Y axis voltage level = ”);

Serial.println(y);

Serial.print(“Y axis servo motor angle = ”);

Serial.print(Y_angleValue);

Serial.println(“ degree”);

Serial.println(“------------------------------------------”);

}

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)注

    85

    文章

    2048

    瀏覽量

    57875
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6469

    瀏覽量

    187106
  • 操縱桿
    +關(guān)注

    關(guān)注

    0

    文章

    69

    瀏覽量

    8545
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    小白求教,怎么實(shí)現(xiàn)操縱桿控制電機(jī)的旋轉(zhuǎn)角度

    小白求教,怎么實(shí)現(xiàn)操縱桿控制電機(jī)的旋轉(zhuǎn)角度。想要實(shí)現(xiàn),電機(jī)保持慢轉(zhuǎn)速,操縱桿前推控制向前轉(zhuǎn),后推
    發(fā)表于 02-05 14:27

    如何使用Arduino UNO、操縱桿模塊和NRF24L01模塊控制伺服電機(jī)?

    文章目錄參考資料:如何使用Arduino UNO、操縱桿模塊和NRF24L01模塊控制伺服電機(jī)1. 必需的組件2.
    發(fā)表于 06-28 09:49

    基于arduino的超級(jí)無(wú)尾卡丁車操縱桿

    描述超級(jí)無(wú)尾卡丁車操縱桿這是我為在 2021 年的 arduino 日玩 Super Tux Kart 而創(chuàng)建的 arduino 操縱桿的演變。您可以在下面看到第一個(gè)版本,它是精美的紙
    發(fā)表于 06-24 06:52

    怎樣用Arduino操縱桿控制伺服電機(jī)

    這個(gè)項(xiàng)目的硬件部分非常容易制作。首先,將操縱桿模塊與Arduino連接。操縱桿模塊和Arduino的連接如下:
    的頭像 發(fā)表于 08-01 14:24 ?5796次閱讀

    如何使用操縱桿通過(guò)FPGA控制步進(jìn)電機(jī)

    要啟用伺服翻轉(zhuǎn)開關(guān),請(qǐng)打開1和0?,F(xiàn)在,您可以移動(dòng)操縱桿來(lái)控制步進(jìn)電機(jī)的運(yùn)動(dòng)。   
    的頭像 發(fā)表于 09-29 17:43 ?5980次閱讀
    如何使用<b class='flag-5'>操縱桿</b>通過(guò)FPGA<b class='flag-5'>控制</b>步進(jìn)<b class='flag-5'>電機(jī)</b>

    用拇指操縱桿控制伺服電機(jī)

    電子發(fā)燒友網(wǎng)站提供《用拇指操縱桿控制伺服電機(jī).zip》資料免費(fèi)下載
    發(fā)表于 10-26 11:17 ?0次下載
    用拇指<b class='flag-5'>操縱桿</b><b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>電機(jī)</b>

    使用Arduino Uno制作操縱桿控制的PC鼠標(biāo)

    電子發(fā)燒友網(wǎng)站提供《使用Arduino Uno制作操縱桿控制的PC鼠標(biāo).zip》資料免費(fèi)下載
    發(fā)表于 11-04 14:46 ?2次下載
    使用<b class='flag-5'>Arduino</b> Uno制作<b class='flag-5'>操縱桿</b><b class='flag-5'>控制</b>的PC鼠標(biāo)

    如何用操縱桿控制伺服

    電子發(fā)燒友網(wǎng)站提供《如何用操縱桿控制伺服.zip》資料免費(fèi)下載
    發(fā)表于 11-16 10:10 ?0次下載
    如何用<b class='flag-5'>操縱桿</b><b class='flag-5'>控制</b><b class='flag-5'>伺服</b>

    如何使用Arduino操縱桿控制BLDC電機(jī)

    電子發(fā)燒友網(wǎng)站提供《如何使用Arduino操縱桿控制BLDC電機(jī).zip》資料免費(fèi)下載
    發(fā)表于 11-24 10:10 ?0次下載
    如何使用<b class='flag-5'>Arduino</b>和<b class='flag-5'>操縱桿</b><b class='flag-5'>控制</b>BLDC<b class='flag-5'>電機(jī)</b>

    如何使用Arduino創(chuàng)建操縱桿控制

    電子發(fā)燒友網(wǎng)站提供《如何使用Arduino創(chuàng)建操縱桿控制器.zip》資料免費(fèi)下載
    發(fā)表于 12-06 14:35 ?0次下載
    如何使用<b class='flag-5'>Arduino</b>創(chuàng)建<b class='flag-5'>操縱桿</b><b class='flag-5'>控制</b>器

    Arduino之使用PS2操縱桿控制LED

    電子發(fā)燒友網(wǎng)站提供《Arduino之使用PS2操縱桿控制LED.zip》資料免費(fèi)下載
    發(fā)表于 12-22 16:39 ?2次下載
    <b class='flag-5'>Arduino</b>之使用PS2<b class='flag-5'>操縱桿</b><b class='flag-5'>控制</b>LED

    基于Arduino Pro Mini的操縱桿手柄和DIY相機(jī)滑塊

    方案介紹操縱桿手柄控制器可以使用兩軸值(操縱桿旋鈕的移動(dòng)方向)來(lái)控制項(xiàng)目。此外,在這個(gè)項(xiàng)目中,我制作了一個(gè) DIY 相機(jī)滑塊,并使用 Arduino
    發(fā)表于 12-27 16:35 ?0次下載

    NRF24L01帶操縱桿的無(wú)線伺服電機(jī)控制

    電子發(fā)燒友網(wǎng)站提供《NRF24L01帶操縱桿的無(wú)線伺服電機(jī)控制.zip》資料免費(fèi)下載
    發(fā)表于 01-31 14:51 ?0次下載
    NRF24L01帶<b class='flag-5'>操縱桿</b>的無(wú)線<b class='flag-5'>伺服</b><b class='flag-5'>電機(jī)</b><b class='flag-5'>控制</b>

    Arduino基于網(wǎng)絡(luò)的操縱桿

    電子發(fā)燒友網(wǎng)站提供《Arduino基于網(wǎng)絡(luò)的操縱桿.zip》資料免費(fèi)下載
    發(fā)表于 02-01 10:06 ?0次下載
    <b class='flag-5'>Arduino</b>基于網(wǎng)絡(luò)的<b class='flag-5'>操縱桿</b>

    一個(gè)使用操縱桿控制控制伺服電機(jī)的電路

    操縱桿,誰(shuí)不喜歡它!我們想將操縱桿的樂(lè)趣融入到電子設(shè)備中,并設(shè)計(jì)了一個(gè)使用操縱桿控制控制伺服
    發(fā)表于 06-16 17:31 ?754次閱讀
    一個(gè)使用<b class='flag-5'>操縱桿</b><b class='flag-5'>控制</b>器<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>電機(jī)</b>的電路