OSW-MMOS直驱方向盘DIY过程记录 - 简书 (jianshu.com)
1、电机准备
选择支持外部模拟转矩模式的伺服电机+配套伺服驱动器,注意看外部模拟转矩模式下是否支持指令换向
a.亿丰驱动器、时代超群等支持自定义IO输入控制换向的电机,力反馈使用PWM+DIR模式
b.华大、伊莱斯等转矩模式下只支持-10~+10v模拟信号输入控制,力回馈使用100%-50%-0PWM模式,需要使用运放添加减法电路控制
a类咸鱼较少,淘宝全新成套1200-1400左右,b类咸鱼二手较多,价格更低
交流伺服电机是目前性能最好的方案,普遍使用130电机,但130电机单电机就有11kg,家里小需要经常换地的话就很痛苦,于是选了110 6N电机,方便搬动的同时,转动惯量也更小,理论上响应速度也应该更快,伺服电机最高可以达到额定扭矩的3倍,18N应该可以稳稳的满足原G29选手,
下图给出一个PWM不同模式下的接线图
1. 亿丰AASD接线及驱动器设置
主控板上的电机信号控制线为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 设置
接线如下图
主控板上的电机信号控制线为DB9母头
上图中的GP8101
2106231805_Guestgood-GP8101-F50-NH-SW_C2837701.pdf (lcsc.com)
相比于8101芯片 网上DIY的大神也有用LTC2644的芯片 具体看各位DIY
恢复默认设置:
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 设置
主控板上的电机信号控制线为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 设置
作者: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) | MR (mr-cn.net)
MMOS软件界面
所谓的力反馈其实就是扭矩控制。游戏将相应的力反馈信号发送给外设的驱动程序,驱动程序通过USB传输给主控后,主控产生一个PWM信号,其占空比对应游戏的力反馈力度;PWM信号再传输给PAC(PWM-Analog Converter)芯片,PAC芯片按其占空比产生对应幅度的模拟量给伺服驱动器,驱动器将控制电机产生对应扭矩的力。
具体如何设置为扭矩模式需要阅读伺服的说明书。以我的台达为例,扭矩模式下扭矩值通过T_REF的电位控制,所以我们需要PAC芯片根据占空比产生-10~10V的电压信号。要产生正的的模拟量简单,但是负的会麻烦许多,但我们又肯定是需要不同方向的扭矩的。
所以阅读说明书,发现我们可以通过输入一个开关量,控制扭矩的方向。也就是所谓的指令取反功能。这下就简单了,我们将DI4设置为方向取反,之后只需要管扭矩的绝对值,方向通过设置一根单独的方向信号线就可以解决。这也就是所谓的PWM+DIR模式。
我们使用的是MMOS这一闭源方案,作者提供的固件是没有源码的,因此我们的芯片型号、引脚定义都已经固定好了,我们直接套用即可。如果是日鼎的方案,PE11就是另外一个PWM,仿照PE9串接一个PAC芯片即可。
还需要注意的是,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未用到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)
【一张图】看懂台达ASDA-AB伺服驱动器diy osw ffb力反馈反向盘参数配置for mmos - 哔哩哔哩 (bilibili.com)