0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用操纵杆和Arduino控制伺服电机

科技观察员 来源:homemade-circuits 作者:homemade-circuits 2023-07-27 11:47 次阅读

在这篇文章中,我们将学习如何使用操纵杆Arduino控制伺服电机。我们将看到有关操纵杆,其销,其结构和工作的概述。我们将从操纵杆中提取有用的数据,这些数据将成为控制伺服电机的基础。

现在让我们看一下操纵杆。

操纵杆是一种输入设备,由杠杆组成,杠杆可以在 X 轴和 Y 轴上沿多个方向移动。杠杆的运动用于控制电机或任何外围电子设备。

从遥控玩具到Boing飞机,操纵杆都用于执行类似的功能。此外,游戏和较小的操纵杆在Z轴上有一个按钮,可以对其进行编程以执行许多有用的操作。

操纵杆通常是电子设备,因此我们需要施加电源。杠杆的移动会在输出引脚上产生电压差。电压电平由微控制器处理,以控制电机等输出设备。

图示的操纵杆与此类似,可以在PlayStation和Xbox控制器中找到。您无需破坏这些控制器即可挽救一个。这些模块在当地电子商店和电子商务网站上随时可用。

现在让我们看看这个操纵杆的构造。

它有两个 10 千欧姆电位器,位于带有弹簧的 X 轴和 Y 轴上,因此当用户从杠杆释放力时,它会返回到其原始位置。它在 Z 轴上有一个按下 ON
按钮。

它具有 5 个引脚、5 伏 Vcc、GND、可变 X、可变 Y 和 SW(Z 轴开关)。当我们施加电压并将操纵杆留在其原始杠杆位置时。X 和 Y
引脚将产生施加电压的一半。

当我们移动杠杆时,X 和 Y 输出引脚的电压会发生变化。现在让我们实际将操纵杆连接到Arduino。

示意图:

使用操纵杆的 Arduino 伺服电机控制

引脚连接详细信息在电路旁边给出。连接完成的硬件设置并上传代码。

程序:

//---------------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:

两个伺服电机由一个操纵杆控制;当您沿 X 轴移动操纵杆时,连接在引脚 #7 处的伺服器会根据操纵杆位置顺时针和逆时针移动。

如果将操纵杆水平保持在特定位置,也可以将伺服执行器保持在某个位置。

与在引脚 #6 处连接的伺服电机类似,您可以沿 Y 轴移动杠杆。

当您沿 Z 轴按下杠杆时,两个电机将执行 180 度扫描。

您可以将 arduino 连接到 9v 电池或计算机。如果将Arduino连接到计算机,则可以打开串行监视器并查看伺服执行器的角度和电压电平。

伺服电机控制程序:

//---------------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(“------------------------------------------”);

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 伺服电机
    +关注

    关注

    82

    文章

    1838

    浏览量

    56291
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184846
  • 操纵杆
    +关注

    关注

    0

    文章

    67

    浏览量

    8459
收藏 人收藏

    评论

    相关推荐

    labview操纵杆

    用labview自带的初始化操纵杆,输入设备信息,获取操纵杆的坐标轴,会占很大的内存!!!!还有其他方法吗!!
    发表于 04-13 01:06

    小白求教,怎么实现操纵杆控制电机的旋转角度

    小白求教,怎么实现操纵杆控制电机的旋转角度。想要实现,电机保持慢转速,操纵杆前推控制向前转,后推
    发表于 02-05 14:27

    Digilent Pmod NAV和操纵杆

    允许通过按下两个按钮中的任何一个来调整强度。对于较小(尺寸)的应用,也可以使用Arduino Pro Mini 3.3V版本。免责声明:确保使用3.3V而不是5V,因为操纵杆的额定电压仅为3.3V。有
    发表于 11-01 15:52

    编码操纵杆问题

    Y值总是2.5V,因为操纵杆以Y方向为中心,X轴极值中的螺旋桨功率很小。螺旋桨的动力设置为5个前进挡和3个RE。诗齿轮。因此,我的控制循环读取操纵杆x/y值,然后通过9个I/IF I/OR语句来决定我
    发表于 12-21 15:47

    怎么使用力反馈操纵杆来驱动伺服系统?

    有没有人使用力反馈操纵杆来驱动伺服系统?我正在与一个小脑32 MX4和力反馈操纵杆。我们尝试加载“USB HOST-HID-MOSE-C32”,但没有成功。如有任何帮助,我们将不胜感激。
    发表于 10-11 11:13

    如何使用Arduino UNO、操纵杆模块和NRF24L01模块控制伺服电机

    文章目录参考资料:如何使用Arduino UNO、操纵杆模块和NRF24L01模块控制伺服电机1. 必需的组件2.
    发表于 06-28 09:49

    基于arduino的超级无尾卡丁车操纵杆

    描述超级无尾卡丁车操纵杆这是我为在 2021 年的 arduino 日玩 Super Tux Kart 而创建的 arduino 操纵杆的演变。您可以在下面看到第一个版本,它是精美的纸
    发表于 06-24 06:52

    MAME旋转操纵杆转USB的资料分享

    描述MAME 旋转操纵杆转 USB要使用像 SNK 的 LS30 这样的街机旋转操纵杆或像 MAME 中的 Happ Controls 旋转这样的克隆,需要将 12 个旋转位置开关转换为顺时针或
    发表于 07-22 06:12

    同时使用1个操纵杆玩2台使用Atari DB-9风格操纵杆端口的电脑

    描述Perifractic 和 Lorin Millsap 的 DoubleJoy - 使用 2 台计算机和 1 个操纵杆这个疯狂的科学实验让您可以玩 2 台使用 Atari DB-9 风格操纵杆端口的电脑,同时使用 1 个操纵杆
    发表于 08-12 07:11

    怎样用Arduino操纵杆控制伺服电机

    这个项目的硬件部分非常容易制作。首先,将操纵杆模块与Arduino连接。操纵杆模块和Arduino的连接如下:
    的头像 发表于 08-01 14:24 5481次阅读

    如何使用操纵杆通过FPGA控制步进电机

    要启用伺服翻转开关,请打开1和0。现在,您可以移动操纵杆控制步进电机的运动。   
    的头像 发表于 09-29 17:43 5546次阅读
    如何使用<b class='flag-5'>操纵杆</b>通过FPGA<b class='flag-5'>控制</b>步进<b class='flag-5'>电机</b>

    用拇指操纵杆控制伺服电机

    电子发烧友网站提供《用拇指操纵杆控制伺服电机.zip》资料免费下载
    发表于 10-26 11:17 0次下载
    用拇指<b class='flag-5'>操纵杆</b><b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>

    如何用操纵杆控制伺服

    电子发烧友网站提供《如何用操纵杆控制伺服.zip》资料免费下载
    发表于 11-16 10:10 0次下载
    如何用<b class='flag-5'>操纵杆</b><b class='flag-5'>控制</b><b class='flag-5'>伺服</b>

    如何使用Arduino操纵杆控制BLDC电机

    电子发烧友网站提供《如何使用Arduino操纵杆控制BLDC电机.zip》资料免费下载
    发表于 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'>电机</b>

    一个使用操纵杆控制控制伺服电机的电路

    操纵杆,谁不喜欢它!我们想将操纵杆的乐趣融入到电子设备中,并设计了一个使用操纵杆控制控制伺服
    发表于 06-16 17:31 442次阅读
    一个使用<b class='flag-5'>操纵杆</b><b class='flag-5'>控制</b>器<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的电路