導風扇的動平衡



以前總認為動平衡是個超難的東東....
第一次看到土法動平衡是在阿郎那, 那時就看他組好風扇, 拿在手上,上電轉起來, 再拆下來,在扇葉上的小孔插牙籤, 再轉....做到他滿意為止....原來他就是在做動平衡啊!!左方是他的導風扇, 你可以看到扇葉上有很多孔...

後來, 很多人都用平衡槳用的東西來做導風扇的靜平衡, 我也這樣做了幾次, 對於7cm以內, 效果我覺得算是不錯了....



一直到這個4"的導風扇, 扇葉的孔跟扇葉都太大了, 超過我靜平衡的能力...這種大功率的不做平衡基本上是很危險的....這家浩業的導風扇台灣也有人賣, 我在RCgroup上看到許多人用4"~5"的灌給他5Kw...但是要小心, 結構還是沒有很好...中間固定馬達的地方一定要再補強, 我是學老外用合板切了一塊大小一樣的黏上去...這地方如果不小, 一但高速震動起來, 槳葉打到筒身就爆了.....

RCgroup上有篇非常好的文章,How to dynamically balance EDF unit with a cell phone, 理論與實際兼顧, 有水準!!

原理是這樣的:

導風扇的馬達(跟槳夾)有自己的不平衡, 槳葉也有他自己得不平衡...這是很正常的...

第一步是找出先對的角度, 讓兩者的不平衡, 能盡量抵銷...

再來是加上配重把這最後得不平衡, 平衡掉....























原作者是用smart phone裏的 G sensor, 配合iphone的程式去把G值輸出到PC上, 再用excel去求標準差...
標準差是一堆數值的離散度, 基本上就是工程上的震動...

我們的導風扇的震動基本上, 有大小跟離散度...大小會跟著轉速不同而變, 所以測量時必須都在相似的轉速...實驗的結果, 震動變大時標準差也會變大...

身為arduino 的愛好者, 手上又有版子 上面有ADXL345的g sensor, 當然是自己來搞....更棒的是....已經有人在arduino上寫好標準差的library了...


第一步是把槳夾鎖上, 做好記號...我用簽字筆上了紅藍兩色, 槳葉上配合孔洞我也用簽字筆寫上編號1~7(看的見就好了)



左邊那個小綠版子就是我的sensor board, 上面有gyro跟G sensor, 不過我只有用G sensor, 這時要注意方向, 因為有一軸的分量我們是不去管它的...就是跟馬達軸心通像的那一軸....在我的case裏, 是 ADXL345的 X 軸...


IIC 把sensor接進去seeduino, 然後我是用3S 4P的電池來做測試, 預計動力是要用6S,不過6S全動力去平衡應該很可怕....折衷一下....
我是在ESC全開的時候去量測G值的大小...如果電池壓降不要太大, 轉速應該是差不多的....下次應該要做個轉速計來確認這個地方...

ADXL345我是設在+-16G的地方, RAW data 抓進來以後, 把之前做的水平校正值扣掉,這樣3軸都會在0附近, 然後也不轉換成G值, 直接用ADC的RAW data去做大小, 這樣應該可以把數值控制的簡單一點, 反正我需要的是比較值...根據擺的方向選兩軸算出大小...

void vibrate_cal_X_Z(){
vibre_size=sqrt(((float)AccADC[0]* (float)AccADC[0])+((float)AccADC[2]* (float)AccADC[2]));
}// end of vibrate cal

void vibrate_cal_X_Y(){
vibre_size=sqrt(((float)AccADC[0]* (float)AccADC[0])+((float)AccADC[1]* (float)AccADC[1]));
}// end of vibrate cal

void vibrate_cal_Y_Z(){
vibre_size=sqrt(((float)AccADC[1]* (float)AccADC[1])+((float)AccADC[2]* (float)AccADC[2]));
}// end of vibrate cal

再塞進去人家寫好的library去算平均值跟標準差...我試過每次都印, 大約每100 sample之後, averge跟STDdev就會穩定下來...
就每100個算一次averge跟STDdev, 然後從uart輸出...在從serial monitor上copy 到excel裏做圖表...
這部分以後也可以想辦法輸出成CSV....

myStats.add(vibre_size); // adding new calculation result

if (myStats.count() == 100) // if Nr up to 100, reset.....
{
STDdev_print2();
myStats.clear();
delay(100);
}

步驟約是:
把軸心的紅線對準葉片上的mark1, 全油門(讓每次的轉速相近), copy 5 ~6組 arduino輸出的資料到excel去做平均...
停機, 鬆開葉片, 轉到下一個mark, 再重複一次....
這樣很快就會有7筆平均值了...(比我想像中快多了)

用excel 做出圖來....哇!!真的耶...


這樣就找到馬達跟風扇震動最小的位置....也看得出來, 以我們的運用來說, 看averge跟STD dev是差不多一致的...只看averge應該也可以...

接下來, 要找出, 需要貼平衡的位置, 以及貼多少....

把馬達跟風扇對到震動最小的位置, 然後剪一小塊紙膠帶, 貼在mark1的地方, 跟之前一樣的步驟, 我們可以找出那個貼了以後震動最小的點...
之後再增加配重紙片, 理論上互有一個值讓震動最小, 超過了震動就會再增加...

今晚就開始用一張小紙片開始, 原作者是用 1/4 inch,那我用的比較大, 約1cm的白色遮蔽膠帶開始,一個位置一個位置貼, 到後面幾個地方時要用力按, 因為不太黏了....
結果:

當膠帶貼在約6的位置效果最好, 我也有先轉一次沒貼的來做比較, 確定真的有效....

接下來是一片一片加....加到第四片時, 明顯太多了....拿下來撕掉一半, 那個3.5就是這樣來的...

那大概就是這樣了. 雖然也是可以在這附近多做幾次check,但是應該不會差太多....
撕下貼外面的膠帶, 換到殼裏面....


我剛開始沒有把椎尖罩合上去, 要鎖上時只好再來一次....轉一下看一下數字...轉一下看一下數字...轉一下看一下數字...最後STDdev降到100左右...

其實聽聲音變化也會發現好很多....數字會提供比較好的判斷....
這個方法唯一不方便的是沒有辦法像車胎在平衡時提供正確需要補配重的位置, 這麼高的轉速要做得這樣要比較多的雞絲, 我看過一個老外是利用正時燈的原理(這個電子點火的時代,大概沒有太多人聽過這個東西了..)去show...不過他的機器複雜度很高, 量測時的轉速也不能太高....

這個方法如果安全做得好,是可以全功率實轉速去測的....

我用的程式式放在 qaxis的google code裏, 歡迎大家改良...
Code is Here

就這樣....接下來把6S接上去測功率....另篇再試...














留言

張貼留言

這個網誌中的熱門文章

Heltec ESP32+OLED+Lora, hardware testing

micro SD card for ESP32, on lolin32 with OLED and heltec 32 lora oled

Install Network Time Protocol(NTP) on BeagleBone with Angstrom linux and set local time zone