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

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

3天内不再提示

Xbox360控制器陀螺仪转向模块的制作

454398 来源:网络整理 作者:网络整理 2019-11-15 11:52 次阅读

步骤1:您将需要:

工具:

烙铁

焊料

焊料吸盘/编织物

剥线钳

一把螺丝起子,也许是梅花刀取决于控制器中的螺钉(我的是十字头)

胶水(最好不是超强胶水,以便以后可以拆开)

USB到串行适配器以对Arduino进行编程

材料:

Xbox 360控制器(duh!)

Arduino Pro Mini(或克隆)(最好为3.3V)。如果使用5V版本,则可能需要一个升压转换器

MPU-6050陀螺仪/加速度计

MCP4725 DAC(如果要控制两个轴,则为两个) )

一些细导线

一个面包板,因此您可以在焊接前进行所有测试(可选,但建议使用)

第2步:分开控制器

您必须卸下七颗螺钉。其中有六个很明显,但第七个在标签后面。我认为删除它会使您的保修失效,因此,后果自负。许多指南说您需要Torx螺丝刀,但是我的却是十字头,因此请检查您的控制器。

然后,小心地撬开后盖。如果撬开前面板,则按钮会溢出,可能会散布到整个房间。从底部将其提起。然后拔下两个振动电机。 (重量较小的一个应该在左侧,重量较大的一个应该在右侧)将PCB取出,并取下模拟摇杆上的橡胶盖。他们只是简单地拉开了。

下一步是移除左侧的模拟摇杆,以免干扰我们的输入,但是左侧的触发机制妨碍了这种操作。为了将其卸下,您必须从板子的前部拆下电位计的三个引脚,然后从PCB上拆下该机构的盖。

接下来,请拆下固定左模拟杆的14个引脚。然后拉开摇杆。

步骤3:将组件固定到位

您将请注意,PCB背面和外壳之间有很大的间隙。

我稍后才意识到,但是这是取消在Arduino上重置按钮的好时机。如果不这样做,则在重新组装时如果拧紧其中一个螺钉,它将压在盒体的背面并使项目停止工作。

我用胶水粘了一块薄卡粘贴到每个PCB的背面以使其绝缘,然后将其粘贴到控制器的PCB上。我不愿使用胶水,但想不出更好的方法。

图像中的位置是我能找到的最佳组合。 Arduino位于左侧,带有复位按钮的边缘与右侧触发机构的塑料片齐平,另一侧位于电线下方,并且拐角尽可能靠近白色连接器。外壳略微隆起,但找不到更好的放置位置。

加速度计在电线的右侧。它应该尽可能平坦和笔直,否则您可能需要稍后编写一些代码来补偿偏移量。请注意,在盒子的背面有一些突出的塑料块,请务必避免。我发现您可以在突出的塑料片上放一些像口红这样的粘性和彩色的东西,然后将后盖放在上面,看看它留下的痕迹。

DAC进入左下角。如果要控制两个轴,这里有足够的空间来堆叠两个DAC,一个堆叠在另一个之上。您无需将它们粘下来。他们将仅通过焊接连接就可以呆在原处。如果要在它们之间粘贴卡,请确保切开卡,以使SCL,SDA,VCC和GND可以访问,因为您将从两侧访问它们。

如果使用两个DAC,请不要忘记切换地址跳线并禁用其中之一的上拉电阻,如下所述:https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog-converter-hookup-指南

步骤4:焊接导线

现在您已经拥有连接一切。来自所有2/3设备的VCC,GND,SDA和SCL应分别连接到Arduino上的VCC,GND,A4和A5。 DAC是最棘手的部分。如果您有两个,则必须将它们连接在一起,而在某个地方可以将电源和线路连接到加速度计,同时保持OUT线分开。

DAC的OUT引脚应连接到控制器PCB上的引脚,该引脚曾经是模拟摇杆的中间水平电位器引脚。也就是说,在模拟摇杆所在的位置,顶部有三排针。将其连接到中间一个。如果您有另一个DAC,则以相同的方式将其连接到垂直电位计引脚(左侧的行)。更换扳机后,您将无法从背面触到引脚,因此必须将电线连接至电路板的正面。模拟摇杆区域周围有一个圆形的塑料“墙”,但是幸运的是其中有一个方便的间隙,您可以将电线穿过。确保电线不会挡住机箱前部的螺丝柱。

我最初的计划是通过连接到RAW引脚的USB电缆用5V电压为Arduino供电,但是当我尝试时,它没有用。 Arduino没有运行任何东西,几秒钟后Arduino和控制器都关闭了。但是,我发现板子正面靠近黑色外围设备插座的两个引脚有一个稳定的3.3V输出,大概是为外围设备供电。它适用于VCC和RAW,但我选择VCC是因为它已经是正确的电压,并且因为它允许我将其焊接到板底部附近的DAC的VCC线上并节省导线。

请注意,必须从外壳上伸出很多塑料零件,但是如果将电线粘在适当的位置,则只需担心一次。

所有其中很难用文字来描述,所以我提供了图片和粗略的图表。

第5步:对Arduino进行编程

现在您有了对Arduino进行编程。这需要移动控制器上的USB电缆,以便您可以访问Arduino上的串行引脚。我已经包含了我使用的代码。它需要Adafruit MCP4725库,可以在这里找到:https://github.com/adafruit/Adafruit_MCP4725

按原样,该代码使您可以遍历模拟摇杆的整个运动范围通过将控制器向左90度均匀移动,向右90度均匀移动,并通过将其保持平坦状态将其保持在中间。

它通过计算X的反切线来获得控制器的角度轴g力除以Z轴g力。这意味着它可以在控制器垂直,平坦或两者之间有任何角度时使用。 (更多信息,请访问:https://www.digikey.com/en/articles/techzone/2011/may/using-an-accelerometer-for-inclination-sensing)

在我的控制器上有效,但是其他控制器可能需要不同的电压,使其无法对齐。我认为找到电压范围的最佳方法是反复试验。许多游戏都会为您显示模拟摇杆运动的滑块,但是我发现确定运动的最准确方法是在Linux上使用jstest。 (https://wiki.archlinux.org/index.php/Gamepad#Joystick_API)它为您提供-32,767到32,767之间的数字,而不是图形,因此您可以确切地知道操纵杆的位置。将控制器和Arduino USB插入串行适配器,加载jstest并尝试不同的DAC值,直到达到范围的顶部和底部,并记下每个范围。对我来说,它是1,593-382。

第36行是特别令人感兴趣的地方:

dacvalue = (controllerangle + 2.5617859169446084418) / 0.0025942135867793503208 + 0.5;

目前尚不清楚它的作用。简单来说,它获取控制器的角度(以弧度为单位,在〜1.57和〜-1.57之间测量),并将其转换为DAC的1593至382之间的值。如果您有不同的DAC范围,则需要更改该行。

该行可以写为:

dacvalue = (controllerangle + ) / + 0.5;

使用和是您需要更改的数字。 等于控制器角度(pi)的范围除以DAC值的总范围。 (范围的顶部减去范围的底部)这可以使您尽可能地改变电压,尽管结果将超出所需的范围。这就是为什么您需要的原因。 等于乘以范围的底部再加上控制器运动范围的一半。 (pi/2)将运动范围的一半相加,以确保它不是负数,然后将乘以范围的底部,以确保其与所需的范围同步。

转换时小数点为整数,C ++不舍入。取而代之的是,它会舍去小数,因此9.9变成9。最后加0.5可以确保一半以上的内容都可以到达下一个整数,因此可以四舍五入。

一旦您上传了程序,make

第6步:重新组装控制器

将控制器拆回的方式与您拆开控制器的方式相同(减去左侧)模拟棒。现在应该可以工作了。我发现没有明显的延迟,而且比使用模拟摇杆要好得多。因为它使用加速度计,所以会受到突然运动的影响,但是您必须格外注意它。

步骤7:可能的改进

可以进行一些改进。其中包括:

使用较少的电磁线

将所有内容蚀刻到一个旨在适合控制器外壳的PCB上

重新连接左侧的模拟杆并将支脚连接到Arduino上的模拟输入,以便它们可以用于调整Arduino

获取无线控制器的后壳并将项目放入电池仓(这需要将电池USB电缆孔)
责任编辑:wv

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

    关注

    112

    文章

    15145

    浏览量

    170907
  • 陀螺仪
    +关注

    关注

    44

    文章

    726

    浏览量

    97645
  • Xbox
    +关注

    关注

    0

    文章

    175

    浏览量

    16759
收藏 人收藏

    评论

    相关推荐

    陀螺仪x轴和y轴的应用

    陀螺仪是一种用于测量和感应物体旋转和转动的设备,它通常由三个轴组成:x轴、y轴和z轴。在陀螺仪中,x轴和y轴通常成对出现,关于它们的比例可以因具体应用而异。首先,我们先了解一下陀螺仪的工作原理
    发表于 04-17 15:42 0次下载

    请问陀螺仪能否检测角度偏移?

    陀螺仪能否检测角度偏移?
    发表于 03-28 08:37

    陀螺仪x和y比例是多少 陀螺仪x轴和y轴是指什么

    陀螺仪是一种用于测量和感应物体旋转和转动的设备,它通常由三个轴组成:x轴、y轴和z轴。在陀螺仪中,x轴和y轴通常成对出现,关于它们的比例可以因具体应用而异。 首先,我们先了解一下陀螺仪的工作原理
    的头像 发表于 01-17 11:10 704次阅读

    陀螺仪感应器校准工具有哪些

    陀螺仪感应器校准工具是用于对陀螺仪进行校准和精调的设备或软件。陀螺仪感应器是一种用于测量和检测物体的角速度、方向和姿态的传感器。它广泛应用于飞行器、导航仪器、无人机、游戏控制器、智能手
    的头像 发表于 01-02 14:53 891次阅读

    陀螺仪三轴轴承怎么安装

    和注意事项。 首先,在正式安装陀螺仪之前,我们需要准备必要的工具和材料。主要包括:陀螺仪模块、轴承、螺丝、螺母、螺丝刀、扳手等。确保这些工具和材料都是干净、整齐的,以避免在安装过程中出现意外情况。 接下来,
    的头像 发表于 01-02 14:26 312次阅读

    陀螺仪三轴六轴区别

    陀螺仪是一种用于测量物体旋转的装置,尤其在航空航天领域和导航应用中得到广泛应用。陀螺仪根据其测量的轴数可以分为三轴陀螺仪和六轴陀螺仪。在本文中,我们将详细讨论三轴
    的头像 发表于 01-02 14:22 1477次阅读

    请问陀螺仪合适的带宽是怎么确定?

    请问陀螺仪合适的带宽是怎么确定?和被测物体的旋转速率有关系吗?比如被测物体100转/s,那么它的带宽要大于100Hz,是这样的吗?
    发表于 12-29 07:51

    ADXS450陀螺仪的ADC采样频率是多少?

    请问ADXRS450 陀螺仪ADC采样频率是多少? 资料Re.c中21页所说的速率寄存 的寄存更新速率为500HZ是什么意思? 该频率和ADC采样频率有什么关系?从ADC采样点开始到控制器
    发表于 12-29 06:14

    ADIS16365的陀螺仪读数是否有需要折算尺度因数?

    在使用ADIS16365的过程中,我们使用ADIS16365的默认系统设置,读取陀螺仪的测量值。 为了验证读数是否正确,在读取陀螺仪的过程中将ADIS16365分别绕x轴,y轴,z轴转动360
    发表于 12-28 07:05

    三轴陀螺仪模块怎么使用

    三轴陀螺仪模块是一种用于测量角速度和方向的传感器,可以在航空航天、汽车、无人机等领域广泛应用。本文将详细介绍三轴陀螺仪模块的原理、使用方法和注意事项。 一、原理介绍
    的头像 发表于 12-20 10:36 801次阅读

    陀螺仪的基本组成 陀螺仪的工作原理 陀螺仪的作用

    装置和感应器。陀螺仪的工作原理基于科氏力和陀螺效应,其作用是用于导航、姿态控制、动作捕捉等领域。与重力传感器相比,陀螺仪具有更高的精确性和灵敏度。
    的头像 发表于 12-07 11:26 1070次阅读

    求助,用什么芯片能实现智能小车陀螺仪控制

    用什么芯片能实现智能小车陀螺仪控制
    发表于 11-09 06:16

    怎么解决陀螺仪角度漂移问题 三轴陀螺仪和六轴陀螺仪的区别

    陀螺仪角度漂移是指在使用陀螺仪时,由于各种误差和不完美的因素导致测量的角度随时间发生偏移。为了解决陀螺仪角度漂移问题,可以考虑以下几种方法。
    发表于 08-21 14:40 4692次阅读

    如何将NodeMCU连接到XBOX 360控制器

    我想将 GPIO 从 NodeMCU ESP8266 板连接到 XBOX 360 控制器上的按钮垫。 我已经尝试将跳线从 D0 引脚连接到 360
    发表于 05-24 06:44