我的賽車模擬器 G29 on PS4 pro

====散熱先走

前面說到,不管有沒有計劃要改,原廠狀態的熱衰退肯定是值得改善的一個點

網路上可以買到模型玩具馬達用的散熱器

我不知道模型玩具的規格是怎麼分辯,但我知道G29的馬達直徑是36mm

搜尋了一下,用540這個規格可以找到適合的馬達散熱器。我也不知道為什麼540是36mm?

網路上有人買純散熱器來裝,我認為這幫助有限,還是要帶風扇的才會有效果

我特地挑這款散熱片有鏤空設計的散熱器,主要目的是讓風扇的風可以直接吹到風扇本體,

甚至透過馬達上的開孔直接把風往內吹到轉子上直接對熱源散熱

而不是散熱片完全隔絕,靠散熱片跟馬達殼交換熱量再把散熱片吹涼這種







安裝很簡單,直接扣上去就好

至於馬達上原本的鐵片要不要拆? 拆不拆都能裝,但我認為原廠那個鐵片根本就是阻礙散熱,所以我把原廠的鐵片拔了,這樣馬達能露出更多能通風的孔隙

供電的話,我買的散熱器是給模型玩具用的,賣家說明風扇接7v,最高到7.4v,這聽起來就是給鋰電用的規格,剛好符合我的要求,我想用USB的5V供電,要風扇轉但不要它太吵,降壓5v使用剛好。我測試過這一顆風扇接5v時電流是0.15A,兩顆就是0.3A。原廠規格寫5V 0.5A,這是原主板的耗電,加上0.3A的話總耗電0.8A,直接用主機USB供電沒毛病。



測試!

原本我在GT7內的力迴饋強度是調5,玩大概10~15分鐘,馬達溫度就會超過60度,用手摸的體感是"非常燙"。今天為了測試風扇效果,我把力迴饋開到7,跑了半小時,用手摸馬達露出來的殼,感覺溫熱溫熱,溫度大概在40度上下,效果非常顯著! 馬達有沒有主動散熱差別超大

這樣以後要爆改就不用擔心馬達了
太厲害了 真是專業
==== 一些測試

最近在等淘寶買的料,所以沒啥進度,有空就是玩而已

不過我還是抽空做了一些測試

前面說到,電流控制的基礎就是在供應電壓的前提下去讓實際電流滿足目標電流

意即當電壓全部用完還是推不出目標電流時,這時就是電壓不足限制了電流

根據前面的測試,我覺得2A設定為最大值是一個我覺得比原廠好又不會太誇張的設定

所以我需要知道,要推出2A的電流需要多大的電壓,做為未來改成電流控制需求電壓的參考

因此先做了簡單的測試

首先要有一個概念,馬達在堵轉狀態(standstill)的等效阻抗是最低的,意即同樣的電壓在此時能推出最大的電流

反之當馬達旋轉起來,轉速越高,同樣的電壓能輸出的電流就越小了

所以首先我先以供應電壓24V (實際25.7V)來測試

圖中黃色線是命令電流,藍色線是實際電流。Y單位是電流(A)

在供應電壓25.7V的條件,馬達standstill的條件下,最大電流只有約1.5A

這裡我們似乎就能理解為什麼原廠配的電供是1.75A的了。



再來這個要解釋一下才好理解,測試自由轉動。但這是逆轉測試,所以電流要反著看

測試電壓一樣是以25.7V

電流命令一樣是2A(負)

命令電流一下,瞬間馬達的電流會拉高到大約1.2~1.3A,然後馬達轉速上升,電流就開始下降到0.05A左右(是不是比你想像得要低很多?),這時方向盤就維持等速一直轉(就類似開機校準那個動作),最後撞到底停下來,最終電流依然卡在1.5A左右。


電壓跟電流的關係大致上可以當成是正比的(當然實際會複雜一點)

也就是說馬達堵轉狀態最大1.5A @ 24V。那麼想要2A的話,粗略估計就需要32V的電壓

我沒有32V的電源供應器,所以我用48V然後利用電供上的微調VR調到 40v

應該基本可以保證能推滿2A

實測結果也是如此,2A槓槓的沒問題



自由運轉測試也做一下,同樣的,馬達啟動瞬間會拉到2A一下子,然後馬達轉速上升,電壓無法推出足夠電流,電流開始下降

馬達穩速時的電流大約是0.1A,也約略24v時的兩倍,還算符合預期。最後撞牆停止


另外可以提一下的是,這兩個運轉測試我都是把方向盤打到底,讓它從一側轉到另一側(方向盤轉三圈)

圖上X軸是時間,單位是秒,可以看到24V供電時從起步到撞牆約需1.5秒,40V時大概0.8秒,快了近兩倍,這跟上面的影片是對應的。

根據這個測試,我會挑選48V 3A的電源供應器來做為未來電流控制的電源選擇,

再來就等材料到了開始施工

另外多嘴一下,根據這個測試,網路上有人把原廠電供換成3A5A甚至10A的。其實真的沒啥用,因為24V最多就是推出1.5A左右的電流,單純增加電供的電流能力並不會增加實際的輸出電流,電壓不夠用

這也是網路有些人的改裝會提高電供電壓的原因。

當然我不是說那些改大電流的人在唬爛啦

因為其實我這幾天在玩的時後也是換上一顆從倉庫挖出來的3A電供,也有感覺力迴饋有變強

深究原因,是因為我量原廠電供的靜態電壓(無負載)只有23.2v,而我換的電供則是25.7,這在規格上都是24V,都是允許且合理的電壓,但實際電壓差了2.5V,這是10%的差異,大略可以推出力回饋的強度也會差個10%左右,這還是會有感的差距。

另外電供在負載狀態是會壓降的,原廠1.75A的容量,如果電流逼近1.5A,那負載來到85%,當然還是安全範圍,只是難以避免的電供會有比較明顯的壓降,一壓降,電流會更往下掉。而如果是3A的電供,電流來到1.5A時負載才50%,對電供來說還輕輕鬆鬆,壓降自然不會太明顯,兩者的差距就進一步拉開了

所以想簡單換電供提升效果的人,我個人建議3A就足夠了,5A甚至10A都不會有更多幫助。當然重點是它本身靜態電壓在合理範圍內偏高一些,效果會更加明顯。萬一你買到一顆靜態電壓只有23V的電供,即使電流有5A,完全感覺不出差異也是正常的。 又或者你乾脆就買那種工業用電源供應器,上面有個旋扭可以在一定幅度內調整電壓的。網路上有人尬到30V來用,所以理論上30V以內都應該還是安全的。至少不會瞬炸什麼東西
期待你的成果
這厲害了,專業!
到底是在玩設備還是在玩遊戲
敗家有理!勸敗至上阿!!
yagami7215
都玩。玩設備跟玩遊戲都有各自的樂趣。遊戲玩一玩,覺得設備哪裡可以改進,就停幾天玩設備,設備搞一搞累了,玩幾天遊戲享受設備優化的效果。這樣更不容易玩膩。可以玩很久
等了好一陣子,淘寶買的材料終於到了

我的構想是,買一片可以寫程式的控制板,加一塊可以迴授電流的驅動板

然後在控制器裡寫控制訊號的轉換跟電流控制

最後選擇買Arduino Nano來當控制

主要原因是它很便宜,一片控制板才一百多台幣

加上我很久以前就想玩玩看Arduino但一直沒機會,所以趁這次搞這個玩意兒順便當入門了

說到這裡,其實我喜歡搞東搞西,很大一部份也是因為在研究這些東西時會蒐集到很多資訊

這些資訊很多在當下未必會有什麼用,但未來的某一天有可能就用上了

譬如這次趁機自學了Arduino,未來其實需要的時候也許又能用來搞其他東西

不斷累積技能跟眼界,就會逐漸培養出看到什麼都想惡搞一下的想法

====================================================惡搞開始

首先是取得控制訊號

一開始我的想法是直接用主板上的馬達輸出取得控制馬達的電壓,用這個訊號當成控制訊號

原本我在使用外部控制器測試時就是這樣使用,只要把+- 24V分壓成+- 10V就可以了

但Arduino的類比輸入並不支援負電壓輸入,只能輸入0~5V

因此如果要直接取用輸出給馬達的電壓(帶正負),就需要另外的電路板去做訊號轉換。

所以我把目標轉而放在控制主板上MOSFET的控制命令,這個控制命令就肯定只有正電壓

控制MOS的命令是PWM命令,它直接控制MOS的開關

一顆雙MOS上的兩個Gate訊號分別是控制馬達正轉跟反轉

訊號等效電壓是2.5V~5V 代表0到最大出力(24V)

所以我先從主板上飛兩條線出來,飛線的點位就是MOS的Gate腳

把這個訊號送到Arduino的類比輸入,用程式判斷

理論上只應該出現三種情形

  1. 正轉>2.5v表示馬達正轉,電壓代表出力
  2. 反轉>2.5V表示馬達反轉。
  3. 正反轉電壓都小於2.5v,代表馬達煞車
程式只要判斷這三種情形做出相應的控制,從控制命令得到我們想要的電流命令以後
再來就是要控制驅動板輸出我們想要的電流

驅動板本身仍是電壓驅動,但有電流迴授,所以把驅動板的電流迴授接回控制板

控制板再根據實際的電流迴授去調整輸出的命令以符合目標電流

這部份需要用到PI(D)控制器,我在網路上找了現成的PID 函式庫,本來想說直接用就好

沒想到不知道為什麼,程式不會跑?PID的輸出一直是0,我懶得研究,就乾脆自己寫一個

因為我是純粹只要用來做電流控制,所以就只需要寫PI控制,然後根據我的需求調整了一些內容,同時盡可能精簡以提高程式效率,畢竟這顆CPU只有16MHz,效能有限。




從主板上的兩根飛線,讀取訊號




Arduino Nano,負責蒐集所有資料 & 控制



帶電流迴授的驅動板



Arduino程式,眼尖的可能會發現函式的回傳值是Int,因為這個輸出會直接用來輸出給類比輸入,Arduino Nano的類比輸出只有8位元(0~255),所以本來就是整數,這是專門對這個應用客製的精簡控制器


最後,就接上測試。

第一次上電測試,反應非常激烈,可以聽到歸零過程有喀喀聲。這是控制參數調太硬造成的


接著就開始邊玩邊調,玩一場,調一下參數再玩一場。大致調到一個比較平衡的結果。還可以再細微調整一下但已經差不多了。
我真佩服這樣有心研究的人
yagami7215
我這幾天在研究更精進的控制手段,才發現網路上有神人直接自製整塊G29的主板。那才真的是神人
改了電流控制玩了一陣

說實話現在的確比原廠狀況要好得多

但真的不是無敵

目前的優點是迴轉速度快很多,力迴饋線性很多,轉動時的齒輪感少很多(那個齒輪感不是齒輪造成的)

但缺點也是有

最大的缺點是中央死區變得更明顯了,這種落差感讓方向盤在中央時更出戲了....

另外同樣是中央死區的問題,在中央死區的邊緣,力迴饋出現的邊緣會感覺到不正常的抖動感

這個其實原廠在中央死區邊緣就會有一些這種抖動感,力迴饋一下出來把方向盤推回死區內然後力迴饋又消失,產生的抖動感

只是因為原廠狀態的力迴饋本身強度比較弱加上電壓控制的響應比較差,所以感覺不明顯

改成電流控制時就被突顯出來了

這讓我不禁進一步思考,那為什麼使用直驅盤的玩家從來沒抱怨過直驅盤有中央死區的問題?

又或者更直接的問,為什麼直驅盤沒有中央死區? 直驅盤是怎麼克服這個問題的?


前面有提過G29為什麼原廠會有中央死區+中央低敏帶的原因

追根究底就是因為G29本身只聽主機控制,如果正中央沒有死區(馬達煞車)的話,當方向盤在正中央時會無可避免的產生往復晃動的狀況(看我第一次改電流控制的影片)

中央死區(馬達煞車)跟中央低出力區共同保證方向盤在中間時不會產生晃動

但是,那為什麼直驅盤沒有這個問題? 要知道直驅本身的特徵只有力迴潰傳遞比較直接這個特點,中央死區這問題不管直驅盤還是非直驅盤都應該會有,那問題到底在哪?


======未完,待補===========


這裡先打個預防針,接下來的內容一樣會很枯燥,沒興趣可以跳過

所以到底直驅盤是怎麼避開中央死區問題?

這個問題其實我沒有答案,除非我買一組直驅盤來研究,然而更可能的是即使買了一組直驅盤也不見得能知道它是怎麼處理的

那問題其實回到 : 如果是我,會怎麼處理這個問題?

稍微思考了一下,我就有答案了,這裡要先說的是,我的解答不見得就是其他高階方向盤的解決方案

只是我認為這個方式可以解決這個問題。當然這也只是想法上可行,並不代表實際上真的可行,實際仍是需要驗證

那麼先整理思路,再思考可以怎麼實現?

首先

不管是多低階的方向盤,都肯定有編碼器,差別頂多是編碼器的解析度多高而已

G29也有編碼器,不然遊戲怎麼會知道方向盤轉到哪了?


有編碼器表示經過開機校準後,我們可以得知方向盤實時所在的角度

然後在G29上,這個方向盤位置實際上並沒有得到充份應用(至少我認為是這樣)

我看起來G29主要就是把這個位置傳送給主機,主機則用來提供給遊戲做為遊戲內的控制訊號,遊戲運算後再把需求的力回饋丟給方向盤,方向盤則聽從送來的資訊提供力迴饋反應 (這部份很粗略,實際內容其實不完全是這樣,但先當成這個狀況來思考會比較簡單)


那麼,我認為可行的方案是什麼? (再說一次,這只是我認為可行的方案,不代表真的可行,需要實驗,也不代表是現在其他高階盤使用的方案)

答案是位置控制扭力限制

如果我方向盤的編碼器取得它回傳的訊號,得到方向盤的實際位置,並以這個位置來做位置控制(控制方向盤要去的位置)

並且以力迴饋的命令做為扭力的限制值(動態的限制值)

那麼會得到什麼效果?

譬如我把命令位置放在正中央(假設中央位置是0,往左轉負往右轉正),當轉動方向盤往左時,會得到往右的力迴饋命令,這時我把目標位置放在0,上限電流設定力迴饋命令

因為手會持續握著方向盤不讓它自由轉動,所以方向盤實際位置跟目標位置的誤差持續存在,經由位置PID運算後會立刻達到非常大的命令電流(轉矩),然而我使用力迴饋大小作為扭力限制值,因為方向盤會最大以這個限制值來輸出電流產生力迴饋,這樣就能達到方向盤持續輸出力迴饋的目標。

而當手放開方向盤時,方向盤是以位置控制的模式去轉到目標位置(0)的,因此只要位置的PID參數調整得當,它會轉到正中央時整定到目標位置而不會來回晃動(即使晃動也會收斂)

另一種狀況是當方向盤在負方向,瞬間來一個力迴饋命令往左(譬如過彎狀態壓到路緣石產生的晃動)

這時可以立刻把目標位置改到左死點的位置,以此來控制方向盤產生合適的力迴饋

所以嚴格來說就只會有兩種模式而已,目標位置在中間或目標位置在兩側死點這兩種狀況

程式上只要判斷方向盤所在角度的方向跟力迴饋命令的方向是同向還是反向來區分這兩種模式即可



而稍微再往深一點思考,因為G29在中央會有一定區域的死區,這是我在思考這個進階方案最想改善的部份

但很遺憾的是,我能力有限,無法取得在中央死區內的實際力迴饋資訊。我能做的只是抓出G29輸出給馬達的控制命令來取得力迴饋命令,然後在控制馬達的命令裡,中央死區已經在裡面了。因此我取得的控制命令本身就包含了中央死區,所以實際上我並無法在原本中央死區的範圍內重建那些力迴饋訊息

我能做的,只有讓中央死區不要這麼突兀那麼讓人出戲

所以我想到的改善方案,是定義出原廠的中央死區範圍(有編碼器位置就能定義出來)

然後在方向盤進入死區前,紀錄當時的力迴饋強度,然後當方向盤進入死區後,將之前的力迴饋強度繼續作為命令控制馬達讓方向盤持續回正到正中間以前都有穩定的扭力。

也就是把死區前的力迴饋複製到死區內繼續使用,這樣就不會在進入死區後突然感覺方向盤變死魚一條

但在這個死區範圍內,遺憾的是如果有什麼細節動態,基本上都不會被呈現(原本也沒有)

這是我目前想到的方案。

所以第一步是什麼?

第一步當然是想辦法讀出原廠的編碼器資訊啊!

原廠編碼器六條線,我以為撿到寶了,六條線難道不是很典型的兩條電源(黑紅有! 5V有量到),另外四條分別是A/B相位差90度的方波訊號(最典型的編碼器增量訊號)

然後我用示波器一量

這撒小?


路很長,夢卻難圓 如果可以... 我想縮短天空和大地的距離,夢想和現實的差距...
yagami7215
有錢真好,線目
yagami7215 wrote:
====結束了?當然(恕刪)

刪文15151515151515151515
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!