DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)

 OSW-MMOS直驱方向盘DIY过程记录 - 简书 (jianshu.com)

        DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)  首先讲一下这个直驱系统大概的框架,首先是电脑,电脑里装MMOS的软件(这个软件国内高手把它汉化了的),电脑通过USB线,连接一个stm32板,这个stm 32板上刷MMOS的固件,这个STM32板再通过一根脉冲线,连接到电机驱动器上的CN 2接口,STM32板就作为电机驱动器的上位机,就是这根从stm32到电机驱动器的接线,也是我们这次自行组装需要接线最多的地方,然后电机驱动器再通过两根线与伺服电机相连(这两根线是电机厂商附带免费送的),这就是一个完整的流程,设置好后,我们就可以通过伺服电机来控制游戏里的汽车方向了。
首先就从最上面的ST M32板说起,原教程用的是一个原厂的ST M32开发版。而我这次用到的是一个比较小的ST M32核心板,芯片也和原厂的同样为STM32f407VGT6,这个核心板是不带下载组件的,要另外购买一个下载模块,而我这次是把这个MMOS固件,发给商家,让他帮忙给我下载(也叫刷)上去,晶振用8m的,(他这个晶振有的是25m的,有的是8m的),焊接好两排排针,调试好,他这个核心板是免费送miniusb线,和一组彩色杜邦线,(虽然我后来是自己买了一根绿联的MINIUSB线换上了,和几颗屏蔽磁环),下面有接线的对照图,他这个核心板,比起原厂的开发板,针脚的字母上前面少一个P字母,对应着接就行了是一样的,,他这个核心板我用了这么多天下来,是没什么问题的,可以用,唯一不好的地方,就是因为板子太小,这个地线GND 接口太少,有时候我不得不把两根或者多根地线缠绕在一起用,据说所有的地线在这个板子里,实际上是相通的,比如我这次就把这个com线,接到了SWD调试接口那里的地线上,还有一根地线也缠绕在了一起,,

1、电机准备

选择支持外部模拟转矩模式的伺服电机+配套伺服驱动器,注意看外部模拟转矩模式下是否支持指令换向

a.亿丰驱动器、时代超群等支持自定义IO输入控制换向的电机,力反馈使用PWM+DIR模式

b.华大、伊莱斯等转矩模式下只支持-10~+10v模拟信号输入控制,力回馈使用100%-50%-0PWM模式,需要使用运放添加减法电路控制

a类咸鱼较少,淘宝全新成套1200-1400左右,b类咸鱼二手较多,价格更低

交流伺服电机是目前性能最好的方案,普遍使用130电机,但130电机单电机就有11kg,家里小需要经常换地的话就很痛苦,于是选了110 6N电机,方便搬动的同时,转动惯量也更小,理论上响应速度也应该更快,伺服电机最高可以达到额定扭矩的3倍,18N应该可以稳稳的满足原G29选手,

 DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第1张图片

不同的伺服有着不同的控制功能和要求,比如日鼎用的是H桥模式,那么我们就需要产生两组PWM信号,用以控制H桥等等。具体的情况需要具体分析,也需要仔细阅读说明书。相对来讲,PWM+DIR是比较简单的一种。

下图给出一个PWM不同模式下的接线图

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第2张图片

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第3张图片

伺服驱动
伺服电机是模拟方向盘最主要的部件,伺服电机要具有模拟量控制的转矩模式。推荐使用伺服电机驱动器:亿丰AASD,台达ASDA-AB,日鼎DCS。

1.  亿丰AASD接线及驱动器设置

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第4张图片

 主控板上的电机信号控制线为DB9母头
恢复默认设置:

设置Pn000=2后可使用Fn004恢复出厂设置,具体方法请查看驱动器说明书。

参数设置:

Pn002=0  转矩模式。

Pn003=0  外部使能。

Pn018=0或1  当方向盘转向与游戏中相反时改动此参数。

Pn052=1  SigIn1设置为伺服使能。

Pn053=18  SigIn2设置为指令取反。

Pn188=5  设置值越大模拟量响应越慢,干扰噪声越小。

Pn189=30  模拟量与转矩的比例。

Pn191=0或1  反馈力方向不对时改动此参数。

Pn270=300  电机最大转速。

所有设置完成后重新上电。

自动校准模拟量(尽可能不要用自动校准):

断开电机使能,MMOS FFB中进行方向盘对中,进入Fn007,长按SET后显示donE,完成模拟转矩指令校正。如方向盘还会自行转动,可用Pn190进行微调。

使用亿丰伺服电机的设置

注意其PWM Mode 设置

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第5张图片
2.  台达ASDA-AB接线及驱动器设置

接线如下图

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第6张图片

 主控板上的电机信号控制线为DB9母头

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第7张图片

上图中的GP8101 

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第8张图片

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第9张图片

 2106231805_Guestgood-GP8101-F50-NH-SW_C2837701.pdf (lcsc.com)

相比于8101芯片 网上DIY的大神也有用LTC2644的芯片 具体看各位DIY

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第10张图片

无标题-11.jpg (82.57 KB, 下载次数: 131)

下载附件  保存到相册

好用不贵,自制MMOS,国产伺服直驱方向盘,新手小白详尽流程

2019-8-31 12:31 上传

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第11张图片

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第12张图片

红色5v或者3.3v  
黑色GND地线  
蓝色INa接pe9(STM32板PWM输出)   
VouA接伺服25号引脚(模拟量输入)
这个芯片是两路,我们只用到了一路,所以INB和VOUTB不用接
当时我也没看的太明白,加上没有成品的模块或者板子卖,要自己焊接,觉得比较麻烦,换个思路,直接在淘宝上买个pwm转模拟量的模块吧!

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第13张图片

恢复默认设置: 

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第14张图片

P2-08=10  恢复出厂配置,完成后重新上电。

参数设置:

P0-02=09  可以在伺服驱动器上看到模拟量电压的大小。

P1-01=03  设定伺服扭矩模式。

P1-46=12500  编码器一圈输出的脉冲数为2500。

P1-55=200  最大转速,根据实际使用情况设置。

P2-10=01  DI1-设置为使能接口。

P2-13=06  DI4-设置为命令输入反向控制。

所有设置完成后重新上电。

自动校准模拟量(尽可能不要用自动校准):

断开电机使能,MMOS FFB中进行方向盘对中,P2-08=20,P4-10=2

如果有报警:

ALE14(逆向极限异常)解除方法P2-16参数值设为0。

ALE15(正向极限异常)解除方法P2-17参数值设为0。

使用台达伺服电机的设置

注意其PWM Mode 设置

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第15张图片

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第16张图片
3.   日鼎DCS接线及驱动器设置

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第17张图片

 主控板上的电机信号控制线为DB9母头
恢复默认设置:

按MOED/ESC到Fn-01,按向上键到Fn-06,长按SHIFT/ENT出现LoAD后放开,出现donE,初始化成功,重新上电。

参数设置:

Pn-09=2 转矩模式。按MOED/ESC到Pn-01,按向上键到Pn-09,长按SHIFT/ENT数值闪动后放开,按向上/向下键调数值为2(转矩模式),长按SHIFT/ENT出现Pn-09,设置完成。

Pn-10=1       COUNT1设置为使能。

Pn-11=2       COUNT2设置为复位。

Pn-19=2500    编码器单圈脉冲数。

Pn-34=300     最大转速,根据实际使用情况设置。

Pn-54=0.01    VREF电压滤波。

Pn-70=1到1.5  扭矩倍数。

Pn-74=15  15:正向力反馈,14或16:反向力反馈。

所有设置完成后重新上电。

模拟量调零(尽可能不要用自动校准):

断开电机使能,MMOS FFB中进行方向盘对中,运行Fn07,查看ON-10是否为0+/-0.02V,打开电机使能,查看方向盘是否转上一边,Pn-71可进行微调。

注意其PWM Mode 设置

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第18张图片

 作者:fred_wu_xs https://www.bilibili.com/read/cv10344806/ 出处:bilibili

2、STM32控制板

MMOS方案使用stm32f4作为主控板,淘宝上STM32F407普遍50左右,512K的版本就可以,mini的版本体积更小,引脚也够,就选用了这个

使用usb转TTL串口烧录固件后,通过usb连接电脑,启动MMOS软件,可以识别并进行设置

3、扩展输入输出电路

MMOS固件是读取电机编码器数据作为方向盘角度输入,游戏里力回馈数据转换为PWM+方向输出控制电机转动实现力回馈,伺服电机转矩模式支持模拟输入,用pwm当做模拟信号直接输入,电机会有震动,体验并不好,所以需要添加外围电路转换为模拟信号,

编码器信号输入:

便宜的电机都是增量式编码器,ABZ三路信号,每路差分输出,A+A-B+B-Z+Z-,总共6路信号,差分信号可使用单路直接输入,但容易受到干扰,因此使用AM26LS32或sn75175对差分信号进行采集,转换为单路ABZ方波信号,输入至STM32,波形更稳定,方向识别也更精准

力回馈pwm输出:

a.支持指令换向的电机,使用pwm转0-10v模块转换为模拟量后输入,dir作为单独指令输入

b.只支持-10v~+10v的电机,使用pwm转0-10v转换为模拟量,再使用运放减法电路,得到-5v~+5v的模拟输出(https://www.jianshu.com/p/9f9480f7aaca)

-5~+5V的信号可以直接输入至伺服驱动器,驱动器中模拟信号增益可调,将原增益参数调大即可达到300%的转矩控制

pwm转电压目前有两种方案,LTC2644芯片-延迟低速度快价格高,GP8108芯片-价格低速度一般,引脚简单够用

运放减法使用OP07芯片

驱动器使能信号:

驱动器可以设置为通电使能,或IO引脚控制使能,使用控制使能,可以单独外接紧急切断按钮更加安全

无方向控制的-10v~+10v方案中,使用GP8101 pwm转模拟信号模块输出需要10ms左右稳定,未稳定前模块输出为0,通过减法电路后,输入到模拟引脚为-5v,此时如果先伺服电机已经通电,会有一下大幅度反转,比较危险,因此需要添加RC延时导通电路,控制使能信号延时200ms发送(https://www.jianshu.com/p/98396fd67af3)

4、方向盘部分电路连接

电机编码器  ——  驱动器编码器接口CN1(伺服电机成套匹配)

电机动力 —— 驱动器动力接口U V W PE(伺服电机成套匹配)

220V交流电—— 电源滤波器 —— 驱动器rst输入,地线 —— 驱动器外壳或单独接地引脚(地线十分重要,必须接,电机对电网有干扰,会影响踏板的模拟量的输入,可以使用电源录波器来进行隔离,效果显著)

驱动器控制接口CN2 —— STM32控制及板外围电路 (编码器ABZ、驱动器模拟输入、模拟地、方向指令,驱动器使能)

伊莱斯电机编码器为2500线,mmos转数设置10000,勾选反向编码器,PWM设置100.50.0,频率8.2KHz

5、方向盘机械部分组装

电机轴去掉定位梢后,使用张紧套连接方向盘或快拆,张紧套与快拆见需要一个转接法兰连接固定,可3D打印或淘宝CNC定制,竞技方向盘孔距一般为70mm,快拆分70mm和75mm两种

电机本身需要对应尺寸的基座,固定至方向盘支架,淘宝有成品伺服电机支架,孔距需要和游戏支架匹配

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第19张图片

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY) | MR (mr-cn.net)

MMOS软件界面

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第20张图片

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第21张图片

控制方案

所谓的力反馈其实就是扭矩控制。游戏将相应的力反馈信号发送给外设的驱动程序,驱动程序通过USB传输给主控后,主控产生一个PWM信号,其占空比对应游戏的力反馈力度;PWM信号再传输给PAC(PWM-Analog Converter)芯片,PAC芯片按其占空比产生对应幅度的模拟量给伺服驱动器,驱动器将控制电机产生对应扭矩的力。

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第22张图片

具体如何设置为扭矩模式需要阅读伺服的说明书。以我的台达为例,扭矩模式下扭矩值通过T_REF的电位控制,所以我们需要PAC芯片根据占空比产生-10~10V的电压信号。要产生正的的模拟量简单,但是负的会麻烦许多,但我们又肯定是需要不同方向的扭矩的。

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第23张图片

所以阅读说明书,发现我们可以通过输入一个开关量,控制扭矩的方向。也就是所谓的指令取反功能。这下就简单了,我们将DI4设置为方向取反,之后只需要管扭矩的绝对值,方向通过设置一根单独的方向信号线就可以解决。这也就是所谓的PWM+DIR模式。

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第24张图片

我们使用的是MMOS这一闭源方案,作者提供的固件是没有源码的,因此我们的芯片型号、引脚定义都已经固定好了,我们直接套用即可。如果是日鼎的方案,PE11就是另外一个PWM,仿照PE9串接一个PAC芯片即可。

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第25张图片

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第26张图片

还需要注意的是,DI-默认是上拉使能的,接在COM-上才是失能。此外,在设计时应该按照说明书的要求,严格区分模拟电与数字电,不同的部分使用不同的电源。使用了差分驱动的信号线,应将差分信号双绞成对传送到光耦。PAC芯片前的光耦,因为传送的是PWM信号,我们需要使用高速光耦,在选型时应注意相关参数。

之后按照说明书,将信号线焊接在相应的引脚上。

参考资料

国内中文资料较多的是哔哩哔哩各个作者的专栏。

DIY伺服直驱方向盘试玩神力科莎 @pkintel DIY伺服直驱方向盘试玩神力科莎_哔哩哔哩_bilibili

这里要特别感谢 @pkintel 前辈,他在视频评论区分享了完整的资料,包括MMOS固件、驱动、设置指南、接线指南以及他设计的多种方案的控制板图纸。

(待完善)台达ASDA-AB伺服器DIY MMOs 直驱力回馈方向盘教程 @极速外卖 (待完善)台达ASDA-AB伺服器DIY MMOs 直驱力回馈方向盘教程 - 哔哩哔哩

该贴内有正确的台达伺服的连接以及设置方法。

MMOS FFB伺服直驱方向盘主控板DIY @fred_wu_xs MMOS FFB伺服直驱方向盘主控板DIY - 哔哩哔哩

该贴内有多种品牌的伺服的连接及设置方法。

【一张图】看懂台达ASDA-AB伺服驱动器diy osw ffb力反馈反向盘参数配置for mmos @辅助全关 【一张图】看懂台达ASDA-AB伺服驱动器diy osw ffb力反馈反向盘参数配置for mmos - 哔哩哔哩

该作者提供了详细的伺服设置方法以及接线方法(不止台达一种,同作者还分享了多种其他伺服的教程)。

 DIY国产伺服方向盘完成,教程,MMOS汉化 (stmicroelectronics.cn)

DIY国产伺服方向盘完成,教程,MMOS汉化 (stmicroelectronics.cn)

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第27张图片


                这次DIY未用到12-24V电源,是直接去电STM32不知道对此有什么影响(后期看是否能慢慢调整)
                具体参数设置:1丶驱动器设置Pn02设置为0  (转矩模式)
                                                         Pn03设置为0  (外部使能)
                                                         Pn53设置为58 (指令取反)用于接PWM&DIR中的DIR
                                                         Pn161自定义设置(这个是设置接收型号的区间:自己理解的undefined )
                                                         Pn162同上
                                                         Pn190模拟转矩指令偏移调整:自定义设置(受STM32影响)

输出的DAC电压值大小
                                                         Pn191模拟转矩指令方向:这个也要用到,当方向反转时伺服停止使能,设置本参数(1-2)具体看自己之前设置,然后
                                                                                             调转A.B相
                                                         驱动器参数设置到这里基本上就可以了,其他关于刚性等需设置Pn190往下的参数,详情请自己研究说明书
                                      2丶接线:本次接线CN2公用了8根线算上外接使能那根一共10根  (抱歉接线错了,上班整的怕领导发现,现在更新下)                                                   
                                                        驱动器     连接线     STM32
                                                           6-----------红-----------使能
                                                           9-----------蓝-----------电源(12-24V这里我用了5Vundefined )
                                                         10-----------白-----------COM(应该是12-24V的地线)                                                  
                                                         13-----------黑-----------地AGND模拟量输入地线    接STM32地
                                                         15-----------黄-----------编码器Z+      对应stm32的PA2
                                                         18-----------橙-----------编码器B+      对应stm32的PA1
                                                         20-----------清-----------编码器A+      对应stm32的PA0
                                                         25-----------紫-----------Vref模拟量输入     对应stm32的PE9
                                                           7 -----------绿-----------指令取反             对应stm32的PE11
                                               链接线只做参考,具体颜色请自己区分

哔哩哔哩几个UP的视频参考

超详细低成本自制模拟器教学 教程向!_哔哩哔哩_bilibili

OSW MMOSFFB 多功能自制主控板调试_哔哩哔哩_bilibili

好用不贵,自制MMOS,国产伺服直驱方向盘,新手小白详尽流程_哔哩哔哩_bilibili

MMOS FFB伺服直驱方向盘主控板DIY - 哔哩哔哩 (bilibili.com)

好用不贵,自制MMOS,国产伺服直驱方向盘,新手小白详尽流程-硬件综合区-外设天下-电脑外设发烧友聚集地 (wstx.com)

 DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第28张图片

有的方向盘会在正中位置来回左右摆动,的这样一个问题,我们今天来解决一下

这是通过调整三个参数来解决的,一个是电脑上mmos软件的“最小力反馈”,另外两个是电机驱动器上面的pn159和 pn190,调整pn159用dn017观察,而调整pn190是用dn016观察。

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第29张图片

      先说说mmos软件的“最小力反馈”这个参数,首先这个参数不要设置过大,我一般用都是3%到5%,其次,比较有意思的一点,这个参数一变动的话,电机驱动器上面的pn159和 pn190的数值也要相应的重新调整才匹配。

    而调整pn159和pn190,我不建议用自动调整的方法,因为方向盘来回左右摆动,无法读准数值。

    注:这次电机驱动器调整的这些参数都是即时生效的,不用断电重启都可以。

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第30张图片

   
       下面详解一下我的实战例子,电机驱动器上电,打开电脑的mmos软件,(因为这个软件经常不能保存参数,我们稳妥一点),先点安装,把电机的“设备设置”参数设置好,再点保存,关闭,然后把软件的“最小力反馈”设置到3%,这时发现方向盘有来回左右摆动现象,调整电机驱动器pn 190参数,我的pn 190默认参数是24,我们先把它归0,然后观察dn 016参数,(因为方向盘来回左右摆动的原因,这个数值是不停跳动的,需要我们用手扶住方向盘,把它固定在正中央位置),这时读得它的数值是0.19,经过单位换算,我们就把pn190的参数给设置成-190(负数),这时候我们发现方向盘已经不摆了,我们再用同样的方法,同样的步骤,通过观察dn 017把pn 159的参数也给改一下,我这里这两个参数也基本上是一样的,到这里基本大功告成。(感觉主要起作用的还是pn190,调好以后,方向盘不来回摆动正常了以后,就把pn159的数值也调到和pn190一样的就行了)


 

      接下来我们再折腾一下,验证一下,我们把mmos软件里的“最小力反馈”设置到5%,这个时候发现方向盘又开始摆动了,观察dn 016的参数,(当然还是要用手扶正盘子),读数为0.11,再次调整pn 190参数,因为这次没有归0,上面的数值已经是负190了,我们累加在一起,直接设置成负300,好了,又搞定了,pn159也一样的。


 

      就是说我们电机驱动器调好一个数值后,就可以不动了。由于mmos的参数经常不能保存,每次打开就只需要改mmos里面软件的参数,(改成和你电机驱动器相对应的那个数值),就行了。

【一张图】看懂台达ASDA-AB伺服驱动器diy osw ffb力反馈反向盘参数配置for mmos - 哔哩哔哩 (bilibili.com)

 DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第31张图片

 【一张图】配置台达伺服diy osw ffb mmos力反馈直驱台达方案_哔哩哔哩_bilibiliDIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第32张图片

DIY 一个汽车方向盘游戏外设(MMOS OSW DIY)_第33张图片

你可能感兴趣的:(汽车,游戏)