2013年6月23日

週末しんちょく無し

ガバナーSETUPのときの動作を調べようと思ってたんですが、アパートにsetup boxを忘れて実家に戻ってきたので、なーんにもできません…

その他にもケーブルが無いとかコネクタが無いとか絶妙に肝心なものが全て無くて…

しょうがないので初フリップに向けて練習しようかと思ったけど、実機じゃ当然できるわけもなく、シミュレータを動かそうと思ったらSmartPropoがつかいものにならず、PIC開発キットが無いので作ることもできない。。
妥協しまくってPS2パッドでやろうとしたら、Heli-Xが機体ロードでクラッシュして何をしても起動しない。。。

結局SuperCPを無意味にぶつけてピニオンとブレードとモーターコネクタを壊しただけでした。

2013年6月16日

BLHeli シリアル出力モニタ アップデート

シリアルモニタ機能をもうすこしアップデートしました。




















・ビルド環境をRKit-51に移行したので、本当に必要な箇所以外は完全にオリジナルコードです。
・その結果、他のESC用にビルドしやすくなったので、未検証ですがいろんなESC用のHEXを同梱しました。
・通信速度を1200bpsに増やしました。分周比6.5が必要なんですが、1ビットごとに6と7分周を切り替えることでなんとか擬似的に実現しました。
・AD値を見て電圧を表示してみました。でもXP7Aでは機能しますが、Oversky doubleでは1023に張り付いて機能しません。ESCによるみたいです。
・PC側には一応グラフを付けました。目盛りすら書いてない手抜きですけど…


やっぱりファイルのアップロード方法がわからないので、RCGに最新版置き場を作りました


いろんなESC用にビルドしようとしたことで、コードが大きすぎてターゲットによってはビルドできないことがわかりました。もっとダイエットするか、別の領域を使わせてもらうしかないです。
でも全体的にコードサイズは厳しいみたい。。。

2013年6月12日

テールブラシレス準備

すっかりBLHeli漬けの日々で、ヘリは飛ばすものじゃなくて机の上に固定してベンチテストするものになりつつあります。こんなことじゃいかん…

さて、うちのまったりフライトではテールが負けるとかありえないので、テールモーターは7mm化すらせず純正6mmのままです。壊れたらV911用のスペア6mmにするか、V922用の7mmにするかなー、くらいに考えていたのですが、何気なくRCGでBLHeliのレポートをしてたら、「俺もOversky doubleを使ってダブルブラシレスにするぜ! という人が何人もいるのでとても心配になってきました。

自分で必要性を感じてないので、さすがにHP02Tをポチる勇気はなかったんですが、HobbyKingの$9 hexTronikモーターくらいなら無駄に持っててもいいか…と思って先日入手しておきました。


そんな今日この頃、nobさんがちょうどこの$9モーターで1SダブルブラシレスminiCPを作って飛ばしてはったので、これなら安心と真似することにしました。



まあ、違いはと言えばSuperCP君の困ったPWM信号ですね。テール側は綺麗だといいんだけど…

とにかくまずは信号取出しです。FET後から取ると負荷抵抗しだいで見え方が変わって嫌なので、とにかく生信号とりだし派です。
赤が以前から取り出しているメインモータPWM
青が今回追加したテールモータPWM信号です
GNDはどうせ電池コネクタで繋がってるのでESC基板内で確保します

青ケーブルで取り出した信号をオシロで見ると、ハーフスロットル(つーかハーフラダー)は…
大丈夫だ。問題ない。


ではらだーを左いっぱいに切ってテールを止めると…
またお前か!!!!


なんなんでしょうねえSuperCPは。ソフトで出してるんだからノイズなんてわざわざ出さなきゃそうそう乗るもんじゃないと思うんですが…。まあメインと全く同じで、3ms周期のパルスノイズがゼロスロットル時に限り乗ることがわかりました。

テールモーターの物理的保持も考えなきゃいけないので、続きはまた後日。

2013年6月9日

BLHeli 回転数モニタ成功!

sskaugさんとXC90さんお二人に詳しく教えてもらって、ついに回転数の表示ができました。

なにが難しいって、回転数って何のこと?というのが難しくて…。いや未だにちゃんと理解できてませんが、とにかく式にあてはめてそれっぽい回転数が出るところまでは納得しました。


ガバナーの有無に関係なくちゃんと回転がわかるので、電池を持たすためにガバナーをOFFってる私のようなホバ専でも安心。

うちのSuperCPを計ってみましたが、やっぱ9Tじゃスロットルを全開にしなくてもけっこう早く回ってるもんですねえ。
nobさん推奨の3600rpmに近づけるには、ピニオンを8Tに下げてジーニアス64Tギアを使うのがとても良さそうです。

使い方の紹介

前提として、専用の改造BLHeliファームウェア10.64をESCに書き込みます。
こいつはXP-7A用の10.3をベースにしてますので、1S環境ならわりといろんなESCに使えるとは思いますが、うちではXP-7AとOversky/Origin doubleでしかテストしていません。
シリアル通信を追加した以外はまったく改造していませんが、シリアル通信の影響で何かおかしな動作をするか保証の限りではありません。うちでは特に違いなく飛んでいますけどね。


このファームウェアを使うと、ESCのプログラム書き込みに使うC2端子のうち、白のC2D線からシリアル通信でリアルタイムにモニタデータを吐きます。信号レベルは3.3VのUART、通信設定は600bpsのデータ8ビットパリティ無しです。

PCにつないでモニタするためには、まず3.3VのUART接続ができるシリアルポートが必要です。マイコン遊びをやってる人ならレベルコンバータやらFTDIモジュールやらあると思いますが、何も無い場合は秋月かストリナで3.3VUSBシリアル変換ケーブルを買うのが楽です。

接続は

   ヘリ側                                  PC側
     C2端子の黒(GND)  ------  変換ケーブルの黒(GND)
     C2端子の白(C2D)  ------    変換ケーブルの黄(RX)

って感じにつなぎます。つまりヘリ側から一方的にしゃべるだけです。


んで、PCアプリのBLH_Monitor V0.0.0.2を起動して、シリアルポート番号を選んでconnectするだけです。あとはヘリの電源を入れれば通信が始まって、スロットル値やらガバナー目標値やら現在のモーター回転数やらローター回転数が表示されます。

ESCから取れるのは電気的な周波数(electric freq)だけなので、モーターのポール数(磁石の数)、ピニオン歯数、メインギア歯数を自分で入れないと正しい回転速度が出ません。デフォルト値はうちのSuperCPの値です! ちなみに値を覚えてくれないので今は起動するたびに入れなおす必要があります。すいません…


Bloggerにファイルを置く方法がわからんので、RCGのブログにソースとHEX、PCアプリを置きました。すみませんがあっちから拾ってください。。

2013年6月8日

BLHeli 回転数モニタへの道

電波の問題はともかくとして、Bluetoothなりなんなりでヘリから手元のPCへ情報を伝えることは簡単にできます。電波でなく有線であっても、とにかくヘリのいろんな情報をモニタできればセッティングや修理の際にとても役に立ちます。

温度や電圧は必要なら簡単にセンサーを付けるなりして知ることができますが、意外と困るのがローター回転数です。大型ヘリの高価な受信機やBESCにはモニタ機能があるのでモーター回転をモニタしてギア比で割ればわかりますが、我らがBLHeliファームウェアにはモニタ機能がありません。

ちょうど最近、XC90さんのブログでBLHeliのビルド方法を知ることができたので、モニタ出力ができるかトライしてみました。


将来のことを考えると、うまく動いたら自分だけではなくいろんな人に役立つ機能だと思います。そうすると、最大の困難はプログラム開発ではなく、出力端子のハンダ付けでしょう。
したがって、CPUそのものはシリアル通信機能を持っているのですが、自由にピンアサインができないので使わないことにしました。
取出しがもっとも簡単なのは、BLHeli利用者ならプログラム書き込みとセッティング用に既に外に出ているはずのC2インターフェイスです。

実はBLHeliBoxのメモリリードライト機能でちょいちょいとモニタができないかと考えたのですが、このC2インターフェイスはCPUをhaltしないと通信できないので、動作中の情報取出しには使えないと4712さんが教えてくれました。確かにCPUマニュアルを見たらはっきりそう書いてありました。

しかし、データ線のC2Dピンだけは、動作中にGPIOとして出力ができます。実際にソースを見ると、デバッグのためにこれをON/OFFさせて使っているような形跡もあります。
つまり、ソフトウェアシリアル通信さえ作れば、BLHeliファーム内のRAMをいろいろ外から眺めることができるはずです。

インテルのアセンブラは初めてなのでけっこう苦労しましたが、なんとかBLHeliファームウェアに、3.3V UARTのシリアル出力を追加することができました。



以下、コードの説明です。

ベースにしたのは純正10.3のソースに、XC90さんの紹介してくれたASEM-51でビルドするためのプリプロセッサ表記修正を加えたもの、です。


完全に未使用のタイマーは無いので、負荷の軽そうな128us周期のTimer2割り込みからシリアル出力ルーチンを呼び出すことにしました。

普通に毎回ビット出力をすると、1sec/128us = 7812bps になりますが、こんなビットレートを設定できるPCは普通ないと思います。マイコンなら読めると思いますが。
やはりPCから見られないと利便性が落ちると思ったので、13回に一度だけ処理をすることにして、7812/13=600.9bpsの通信速度に決定しました。

文字の取りこぼしもあり得るでしょうから、1パケット=8バイトとして、先頭バイトに必ず'U'の文字を出力してPCソフト側で同期をとることにします。

現在は試しに、8バイトの内容として
  +0  アスキー文字 'U'         通信の 同期用
  +1  Requested_Pwm          送信機からのPWM指令を0-255段階のスロットル値に直したもの?
  +2  Governor_Req_Pwm  ガバナーの目標出力を送信機PWMと同じく0-255で表現したもの?
  +3  Gov_Integral_X            ガバナー積分エラー  最上位バイト
  +4  Gov_Integral_H            ガバナー積分エラー  Hバイト
  +5  Gov_Integral_L            ガバナー積分エラー  Lバイト
  +6  Gov_Proportional_H     ガバナー比例エラー   Hバイト
  +7  Gov_Proportional_L     ガバナー比例エラー   Lバイト
を出力させています。

イメージとしては、Requested_Pwmでスロットル信号がわかって、ガバナーの目標回転数がGovernor_Req_Pwmでわかる。するとそこからのずれが、積分エラーと比例エラーに反映されるはずなので何か魔法の計算をすれば現在の回転数がわかる…はず? と考えました。

まあ、結論から言うと単位がわからないのと、単純に上記のようなものを意味する変数ではないみたいなので現時点では何もわからないんですが…。
とにかくRAMの変数を見ることはできるようになったので、後は計算でどうにでもなると思います。
場合によってはESC内でモニタ用の値を作って保持しても良いですしね。



動作風景
3.3VのUART出力なので、PC接続にはFTDIのTTL-232R-3V3を使いました。
http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm


もちろんSuperCPしか持ってないのでこれでテストしています。複数の改造を混ぜるとデバッグが困難なので、XC90さんのSuperCP用改造版ではなく純正10.3をベースにして、CRノイズフィルタを付けて動かしています。


PC側の画面
こんなの。テストアプリなのでスカスカです。
回転数がちゃんと取れたらグラフとか出してあげたいです。

まだどうやれば回転数を取り出せるかもわかっていませんが、それ以前にガバナーを理解して自分の機体で使えていないので、BLHeli内のRAMのうちどんな情報をどんな形式でモニタするか考えるのは自力では無理があると思います。まずHeliFreakで聞いて反応を見てみようと思います。

最終的には、こういった機能は単独アプリではなくBLHeliSetupに内蔵されるほうが便利でしょうしね。


2013年6月4日

V911 古典的バーレス化 (人間ジャイロ版)

V911のフライバーを撤去してみました。撤去するだけです!
当然ながら安定性がまるでなくなりますが、丁寧な調整と丁寧な操作でなんとか飛ばす、というシロモノ。昔はスケール機をやせ我慢してこうやって飛ばす人が多かった、とか本で読みました。

で、V911は元の素性が良いのでそこそこ飛びます。改造と言えばこの方KKDDMMさんの日記では一年以上前にさんざん紹介されています。ブレードに錘を貼って、ブレード自体のジャイロ効果を調整するのがポイントです。動画もありますよ。

その後funkunさんも試されてますが、送信機が純正なためあまり良い感じには飛ばなかったようです。


で、これは後に続くプロジェクトのための第一歩なわけですが、とりあえず現状
video
飛ばなくはないです。頑張ればそこそこ止められます。くいくい左右に振るのもクイックです。
動画で言えば25秒~35秒が左右にくいくい振ってみたところ。墜落間際の48秒からが前後にくいくい振ってるところです。

悪いところ。まずミソります。胴体がぶら下がってる分の力に抵抗できないので、水平に復元するわけでもないくせに傾いた状態を維持もできません。左右の操作バランスもすごく悪いです。つまるところピタホバ以外をさせるとサイクリック操作を止めたらろくなことになりません。
スワッシュ出力ポールは長い方の足で、プロポ設定はDRが75%のEXPが50%くらいです。


作り方は基本funkunさんと同じで簡単そのものです。まずは予備のブレードにリンクを接着します。
写真は接着前ですが、こいつを本来ある場所に接着します。要は動かなければいいだけです。
 次はちょっと重要。今までスタビを支点にして動いてたのでスワッシュとブレードのプリセッションが45度で済んでましたが、バーレスにしたら直結するので90度ずれるようになります。うちはdevo7eなのでプロポ側で120度CCPMスワッシュのミックス設定をしてもいいですが、原始的にやるにはスワッシュの回り止め角度を45度ずらします。

ちょうどY911用の回り止めが二本あるスワッシュがあったので、これを使います。

V911の機体側は斜め後ろ45度に回り止めホルダがありますが、ここにスワッシュの後ろ側が来るように45度反時計回りにずらして装着します。

サーボロッドが苦しくなりますが、サーボホーンのニュートラルを上にずらしたり、ロッドをめいっぱい伸ばしたりしてなんとかつじつまを合わせました。特に加工は無しでOKでしたよ。

そのままでは数秒しか浮かないので、ブレードに0.5~1.5g程度のウェイトを貼ります。回転モーメントが増えればよいので、重いものを外周に貼るほど安定します。
この写真じゃ糸ハンダで0.4gをかなり内周側まで伸ばして貼っているので、かなり安定は悪い方です。動画はこの状態で撮りましたが、かなり苦しそうなのがわかると思います。この後ウェイトを倍に増量したら手放しホバリングで数秒耐えるくらいになりました。その代わり運動性も落ちますけどね…

完成図。サーボロッドがかなり苦しそう

というわけでそこそこ飛ばすことはできますが、このままではあまり意味はありません。(飛ぶと言うこと自体に感動しますが)
ミソが消えないと傾けたまますっ飛ばしたりできないし、見た目上バーが無いのと、少しだけ電池が
長持ちするという以外、純正に対するメリットがありません。

KKDDMMさんの作例ではこの後、主翼の剛性をいろいろ調整してフラッピング等で安定度を稼ごうとしています。うちの場合は後付でジャイロをなんとかくっつけて、V911基板を生かしたまま介入してなんとかインチキバーレスシステムができないかと思っています。

とはいえ正統派の制御ができるわけではないので錘安定化より良い結果がでる保証は全くありませんし、まだ実験回路すら作ってないので失敗の可能性大です。いちおう乞うご期待ということで。

2013年6月3日

HobbyKIngのC05M

RCGでは、SuperCPのブラシレスと言うとHobbyKingのC05Mを推薦する人がとても多いです。
理由は安いからと、適度な回転で純正コアレスに似たマイルドな飛び方をするからだそうです。

別件でHobbyKing通販をする機会があったので、ついでにぽちっと混ぜてみました。円安にはなりましたがそれでも$15は確かに安いです。

なんかシャフトがお尻に突き出てますね!

実はピニオンを叩き込むときに作業が雑だったみたいで、動作確認すらしないうちにシャフトが折れました。。。
慌てて以前みかけたつーてんさんのブログと同じように1.5mmのドリルを買ってきてどこのご家庭にでもあるグラインダーでさっくりカットして修理したのが上の姿です。
上が折れたシャフト。下側のCリング溝からぽっきり行きました。
下はドリル歯を切った代替品。
グラインダーカットを失敗することも考慮して長めに切ったのと、元々SuperCPの希望ピニオン位置からするとシャフトが長かったのでだいぶ余りました。まあ別に困らないからいいか…

Cリングはついてないのでピニオン側から軸を押すとぐいっとアウトランナーが外れます。でも長強力磁石ですから押さない限り外れるわけないし、仮に浮いてもピニオンがひっかかるので分離はしないでしょう。

機体への装着はこんな感じです、ってただ付けただけですが。。
スキッド部に乗せてあるのは元々乗ってたHP03S。薄いですねえ。重量も大きさに見合うくらいで、C05Mの方が1gくらい重いです。

サーボとのクリアランスは、8Tピニオンが無くてたまたま余ってた9Tを使ったので、ピニオン側が大きいためにSuperCP純正メインギアでぎりぎり収まりました。8Tだったら少し大きいGeniusCPメインギアが必要になるでしょう。

今までの13500kvより遅い11000kvですが、ピニオンが9Tなのであまり違いは無いです…。けっきょく全力では回さずスロットルで絞って70%くらいで回してるので、効率も上がらずフライト時間もHP03Sと大差無し。あとで8Tピニオンを注文せねば…。

1g重い以外に唯一の違いは、回転のスタートがスムーズです。BLHeliのスタートアップ設定をデフォルトに戻したら、HP03Sの時の最初のガゴガゴっが無くて、ふいーーーーんって気持ちよく回転が上がっていきます。まあHP03Sでは回って満足だったので徹底してセッティングを詰めたわけでは無いんですが…。



まあ、そんなわけで安いしパワーも十分あります。大物は送料が高いHobbyKingですが、こういう軽いものなら国内と変わらないくらいの送料です。納期もみぽりんには負けますがBanggoodと違って1週間かそこらでやってくるので、軽いパーツはお勧めですねー。