フライトコントローラーを自作してみる。~その7~ リフロー炉

細々と続けているフライトコントローラー自作の続きです。
部品が一通り揃ったのでリフローの準備を始めます。

フライトコントローラーはすべて表面実装部品を使うので手ハンダでは難しく、リフローで実装したいのです。
また35mm角の基板に部品を載せていくと両面実装になるので、ホットプレートを使ったリフローでは裏側実装のとき密着できない懸念があり、ここはやはりリフロー炉を使う必要がありそうです。

という事でオーブントースターを改造してリフロー炉を作る事にします。
内容的にはスイッチサイエンスさんのこのキットを真似して作ります。
(キットはずっと品切れなのでバラで部品を集めます)

まずオーブントースターを入手。リサイクルショップで適当なものを¥1800で買ってきました。TIGERのKAM-A130という機種で1300Wの品です。どれだけのパワーがいるか不明なので、足りないとどうしようもないので強めの機種を選びました。

ヒーターは3本備えていますが、この内2本は並列につながっています。常温で抵抗値を測ったところ並列状態の2本と単独の1本が同程度の値になっていて、2系統の配線が半分ずつのパワーを受け持つ様に制御しています。

前面にはタイマーと温度設定つまみがあります。タイマーはゼンマイ式で0まで戻ると「チン」となるアレです。温度設定つまみはバイメタル式サーモスタットらしき機構につながっています。
タイマーの方はそのまま安全タイマー(なにかトラブルがあって通電を続けても時間が来たら止まる)として使いたかったのですが、カバーが金属のツメを折り曲げて止めてあり、一度外すと元に戻せなくなりそうなので諦めました。
結局ヒーターに接続する電線だけを引き出して利用することにします。

回路はこれ。
オリジナルのスイッチサイエンスのキットはATMega328Pを3.3Vで動作させていて、これはたぶん温度センサーのMAX31855が3.3V動作の為だと思います。でも今回はAdafluitのMAX31855モジュール基板(秋月電子で入手)を使うので内部に5V→3.3Vレギュレータを持っているし、更にSSRは入力が4V以上となっているので5V系のArduino UNOの方が都合が良いのです。

温度を測定する熱電対は秋月電子で買ったステンレス管に入ったタイプでやってみます。
オーブンの内部に突っ込むので電線がピラピラしているよりもしっかりした棒状のセンサーを突っ込む方が保持しやすいと思ったのです(が、これは失敗だった事に後で気づきます)。

では改造です。
オーブントースターの筐体に穴をあけて電線を引き出します。穴の縁が鉄板そのままだと電線を傷つけそうなのでハトメを打ちました。 でもハトメの穴も案外ギザギザしているんですね。これだと効果が薄いので結局ハトメは外して他の方法を探します。

そして見つけたのがこれ「ダイソーのシリコーンマット」。230度までOKとなっています。これを適当に切り電線の周りに巻いて穴にツッコミました。


これで電線を傷つける心配はないと思います。

制御回路はまだバラックです。

ファームをGithabから取ってきてリフロー条件もそのままでArduinoに書き込みました。
そしてとりあえず何か焼いてみます。以前基板を発注したら間違って届いたものを使い、適当なランドにクリームはんだを塗って適当なチップ抵抗を載せます。


まずはソースコードに最初から書かれていた温度プロファイルそのままでやってみます。これは130℃まで上がるとで15秒待ち、その後230℃まで上がると目標を225℃に下げ、更に100秒経過するとすべてのヒーターを止めるという動作です。

ではスタートスイッチをポチッと。
最初の段階は1系統のみヒーターONで130℃を目指して温まっていきます。 そして130℃で一旦ヒーターが切れますがそれでも暫く温度が上昇し140℃まで上がりました。そして15秒のタイムアップ後2系統共ヒーターONとなり230℃を目指して上昇していきます。230℃に達するとヒーターOFFになり目標温度が225℃に下がるのですがまだまだ温度が上昇し240℃を超えてしまいました。基板からは時々プチッという音が聞こえてきます。その後225℃まで下がるか下がらないかの間に100秒の待ち時間が過ぎて一通りの処理が終了しました。

扉を開けると・・・

何か色が濃い・・・

結果・・・基板が黒くなっていて過熱しすぎっぽいですね。

左はリフロー前, 右がリフロー後。
過熱により黒くなりました。

ならば温度センサーがちゃんと温度を取れているのか、熱電対温度計と並べてヒートガンで過熱してみます。

結果、温度はまあ一致するのですが、ステンレス管に入った方は温度が伝わるのに時間がかかり、遅れて追いつく様な感じになります。
ステンレス管の熱電対を選んだのは失敗ですねー。さっき温度読みが240まで上がりましたがこれは遅れた表示なので実際はもっと上がっていたと想像できます。
まあちょっと予想はしていて、電線直接の熱電対が何本か手持ちが あるのでステンレス管がダメならこっちに変えようと考えていました。

電線直接の熱電対だと固定しずらいのでどうするかですが・・・3Dプリンタで使ったテフロンパイプがまだあった筈。これを適当に切ってその中に熱電対を通し庫内まで貫通させてみます。

次は制御回路と温度計、二つの熱電対を基板のほぼ同じ位置に貼り付けて動作させてみます。

こうすると制御回路と温度計の表示がほぼ同じで動作しているので測定自体は大丈夫みたいです。しかし通電を止めてから10℃くらい上がるのは変わりません。ヒーターからセンサーまで熱が伝わるのに時間がかかるのでしょう。

このファームは設定値に温度が達したら通電を切り、設定値よりも下がったら通電するというシンプル制御です。そこでPIDを追加してみたりと迷走したのですが結局止めました。最大温度に達する直前に過熱をゆるめるので温度の跳ね上がりはなくなりますが、最大温度付近にいる時間が長くなってしまうのが気に入らなくなったのです。

で、結局元通りのファームを使って温度プロファイルだけ調整する事に落ち着きました。

なお庫内でピロピロしない様、こんな感じでセンサーを固定しようと思います。この状態で基板に貼り付けた温度計と比べると、温度計の方が最大10℃くらい高い温度となるのでその分と跳ね上がり分を差し引いた上限値にします。

こんな感じで横からセンサーが出っ張ります。

更に何度か試してほぼ目途がたったので、次はいよいよフライトコントローラー基板に部品を実装しようと思います。

Microsoft Flight Simulator 2020 + モーション機構

先日マイクロソフトからFlight Simulator 2020が発売されました。
前作のFlight Simulator Xで開発は終了との事でしたが14年振りに復活したのです。
フライトシミュレーターといえば黙って見過ごす訳にはいきません。早速ダウンロード(一晩かかった!)して実行するとこんなのが毎回出ます。

i3-7100じゃ不足なんですかねー。
Microsoftの製品紹介ページではi5-4660以上となってます。
まあOKを押せば先に進むのでいいんですが、こんな毎回出さなくても・・・。

ソフトはまだ日々更新されているらしく、立ち上げる毎にしばらく何かのダウンロードが始まり時間がかかります。

この画面でダウンロードを待たされるのです。

その後このメイン画面が立ち上がります。
以前のXや2004とはだいぶ操作方法が変わっていますね。

メイン画面。まだ全体を見渡せていません。

コックピットの風景はこんな感じ。リアルにはなってるけどちょっと計器が見づらいなー。前作では計器類を固定表示できけど、これもできるのかな?

熊本空港 RUNWAY07

モーション機構を接続

Flight Simulator Xの時に作ったモーション機構を接続したいのですが、それにはSimconnectを使う必要があります。Simconnectは過去のバージョンからある機能で、シミュレータとは別に動かしたプログラムからシミュレーターの情報(速度とか姿勢とか)を取ってきたり設定したりできる機能なのです。これはCのライブラリとしてSDKに含まれています。

これが今回のバージョンでも使えるかですが、いろいろググってみると今回もSimconnectがついていて、デベロッパーズモードというのをONにするとダウンロードでそうなのでやってみました。

そしてコンパイルして実行したら確かにデータが取れています。
でもその後Flight Simulator Xの時にコンパイルしたプログラムをそのままで動かしてみたらこれでも問題なく動作しました。新たにコンパイルする必要なかったんですね。

とにかくここまでくれば動作したも同然。実行するところを動画にしてみましょう。
ところでいつもこのブログに動画を載せるときはYoutubeにアップロードしてリンクを貼っています。Youtube側には殆ど説明を書いていなかったのですが、今回はBGMやキャプションを入れてYoutuberの動画っぽくしてみました・・・

さ、いろんなところを飛んでみよっと。。。

ブログの「←古い投稿」ボタンのリンク切れ修正

このブログの下の方に「←古い投稿」というボタンがあります。

赤で囲んだボタンの事です。

本来このボタンを押すと名前の通り古い投稿のページに移り、どんどん押していくと時期をどんどん遡って古い投稿が表示されていくずなのですが、最近までリンクが切れておりサーバのエラーメッセージを表示していました。

だいぶ前から気づいてはいたのですが修正方法が分からず放置していましたが、今日やっと修正ができました。

多分大丈夫です。

フライトコントローラーを自作してみる。~その6~

PCBGOGOに発注していた基板ができてきました。

こんな箱に入ってきました。

そして基板・・・

10枚550円。以前と比べると信じられない低価格です。
パターンを見ていると何だか無駄な場所が見えてきます。

今回表面実装なのでリフローをする予定です。
ハンダペーストを塗るためのマスクは画用紙をレーザーカットして作れるかとも思ったのですが、リフロー初挑戦なのでメタルマスクを購入しておきました。

メタルマスクは1100円。
基板よりこっちの方が高い・・・。

基板はできましたがまだ部品が揃っていません。
オーブントースターの改造もしなければならないので組立てができるのはしばらく先になりそうです。

HOIドン入手

NONSAYAさんから販売仕様のHOI-LINK-HRを頂きました。
HOI-LINK-HRに受信機を一体化したドングルなので通称「HOIドン」なのです。

立派な箱に入っています。
内容物はドングル本体とクイックリファレンス
ボディは3Dプリントパーツですが綺麗にプリントされています。

いままで使っていたFRISKケース版と比べてかなりコンパクト。
受信機一体なので電線を切る心配がなくてよいです。

フリスクケース版の様に電線がピラピラしません。

では早速PCに接続してみます。ドングルの穴から適当なものを突っ込んでボタンを押しながらUSBポートに挿せば送信機とバインドされます。

ファームゥエアは最新のRev2が書かれていました。
このファーム、USBの更新レートを上げて遅延を減らしたバージョンで、旧版を購入された方にはNONSAYAさんが無償バージョンアップをされるそうです。

なおこのブログを見ていただいている方には申し訳ないのですが、Rev2のファームは大人の事情によってここでは非公開なバージョンなのです。すみません。
それはつまり、HOIドンが売れると私にも分け前を頂けることになっているのです。^^;

・・・という事でご購入はこちらへどうぞ→NOSAYA Graphics

2020年台風10号

9月6日から7日にかけて台風10号が熊本に接近しました。
風速70m/Sとか80m/Sとかの予報で、本当に80mも吹いたら一溜りもなさそうです。
とにかく雨戸がある窓は全部閉めて、雨戸がない窓はテープを貼ります。
そして足しになるかはわかりませんが霧吹きで濡らしたガラスに梱包用ラップを 貼っておきました。

テープを貼っていると中心に星マークができます。どうでもいいんですけど、これを綺麗な形に貼ろうとしますがどっちかにずれます。

テレビで「段ボールを隙間なく貼ると良い」と言っていたので面積の広い窓に貼りました。

一昨年MakerFaireに荷物を輸送した段ボールにも頑張ってもらいましょう・・・

モバイルバッテリーに加えドローン用リポバッテリーも2本ほど充電しておきます。
リポはTiny用充電器を通すとスマホの充電にも使えるのです。

これだけやって避難します。
しかし地元の避難所はコロナ対策の為、受け入れ人数を制限すると言っており、もしかすると入れない心配も出てきました。
一時は暴風圏外の広島に宿をとって避難しようと真剣に考えましたが、道中の危険性も考えて止めました。
とにかく地元の避難所に行ってダメなら家で耐える事にします。
・・・そして避難所に行ったらあっさり入れました。

熊本最接近が夜中の3時頃との事ですが、避難所の中ではそんなに強い風には感じられず、むしろ夜が明けてからの方が風が強い気がしました。

結局朝8時に自宅に戻ったところ全く問題ありません。
段ボールも貼った時のまま。

工作室の窓も問題なし。

何事もなくて幸いでした。
予報よりも勢力が落ちたのか、たまたま何かが良い方に働いたのか・・・
でもこれに安心して今後の台風の時に対策を怠る事がない様、肝に銘じておきます。

HOI-LINK-HR の遅延を減らせるか試す。

NONSAYAさんが販売されて以来、HOI-LINK-HRがドローンレース界隈で静かな話題になっている様です。このHOI-LINK-HRはSBUSから受けた11bitのデータを8bitに減らさず11bitのままPCに届けるので分解能が上がっていて、私には効果が体感できませんがプロには評判がいい様です。
そこで更なる改良として遅延を少しでも減らせないか試してみました。

どうやって遅延を減らすか

まあそんなに大幅に遅延を減らす方法などはそうそう無いと思いますが、多少でも改善できそうなのが次の点・・・。

まずSBUS信号はRCチャンネル18ch分を25バイトのデーターとして送ってきます。そして25バイトの転送に約3.5mSを要します(計算上3mSだと思っていたのに実測すると3.5mSなのでした。とりあえず3.5mSで話を進めます)。
その後数msの無信号期間を挟んでまた3.5mSのデータを送出するという事を繰り返します(無信号期間の長さは送受信機によって異なりますが、いくつか見た限り4mS~10mS程でした)。

このデータをPIC18F14K50マイコンで受取ります。この時、これまでは25バイトを全部受け取ってからRCチャンネルデータに変換し、USBに送り出していました。そしてUSB側ではPCが周期的にポーリング(問合せ)したタイミングでデーターを転送します。SBUS信号とUSBポーリングのタイミングは同期してはいないのでポーリングのタイミングがデータ転送期間の3.5mSの間に来る事もある筈です。この場合今までの処理だとその瞬間にSBUS転送中のデータは、ひとつ後のポーリング周期にUSBに送る事になります。


そして今回の変更ですが、HOI-LINK-HRは8CHまでのサポートなので約1.5mSの時点で必要なデータは受取っている訳です。なので「この時点で処理を開始してもええんちゃう?」というのが今回の考えです。
先頭から1.5mSの間にポーリングが来たら従来と同じですが、それ以降だと最新のデータを転送する事ができるので、従来の3.5mSと比べ1.5mSなのて2mSの期間は一周期前倒しができる事になります。なおUSBのポーリング周期は10mSらしい(この値、資料が見当たらないのですが、どなたかご存じでしょうか?)ので約20%のデータが今までより一回分(10mS)早く転送できるはず・・・なのです。

例によってこの変更がどの程度体感できるか不明ですし、私にはまずわからないと思いますが、少なくとも今までよりは早くなっているはず・・・。

あとUSBの処理をプログラムで周期的に呼び出す方式から割り込み方式に変更しました。これはμS単位では早くなっているかもしれませんが殆ど気分の問題だと思います。

その他の変更

一時期SBUSの区切りを検出する方法が色々と迷走していました。8bit版HOI-LINKの時は無信号期間が数mSあったら区切りと判断していましたが、11bit化したとき受信器によって不安定なことが分かり、参考に見たSBUSデコードプログラムでは最終バイトが’00’である事を手掛かりに判断していたのでそれに従っていました。
しかしBetaflightの処理をみたら無信号期間検出方式だったので安心して元に戻しています(不安定だったのはSBUSを受けるUSARTのオーバーフロー処理をしていなかったためで解決済)。
この修正は NONSAYAさん販売バージョンは適用済です。

またPIC18F14K50のRC3~RC7ポート(5~9pin)は今まで空きピンでしたがデバッグ情報を出力する様に変更しており、LEDをつないでおくとオーバーフローやパリティエラー発生時に点灯する様にしています。まあ特に何も接続していなければ影響はありません。

でVelociDroneで試したら・・・

やっぱり体感できません。でも理屈の上では今までよりも遅延が減っているはず(・・・ホンマか?)
このあたり、何か遅延量を測定する方法が必要と考えているのですが、いい案はありますか?

ファームウェア

例によってファーム(ソース・バイナリ)を載せておきます。
なお過去に何度か書いていますがUSBのベンダーID、デバイスIDは適当な値を書いているので使用される場合は自己責任でお願いします。0xffff/0x0012というありそうにない値なので重複する可能性は低いと思いますがもし重複した場合はPCがその機器を認識できない可能性があります。この場合以前このブログに書いた方法でPCに過去の接続を忘れさせる事ができると思いますが保証はできません(まずそんな事態にはならないと思いますが)。
なおNONSAYAさん販売のドングルはマイクロチップテクノロジー社からサブライセンスを受けているのでちゃんとしたIDが書かれています。

またソースはOpenStick Liteから流用した関係で色々と無駄なコードを含んでいるので、読まれる方は温かい心で見てください。

HOI-LinkHR20200822.zip

追記:20200820版は一部ミスっていて効果が出ていなかったので20200822版として再アップロードしました。

フライトコントローラーを自作してみる。~その5~

前回の投稿から3か月も過ぎてしまいましたが、細々とフライトコントローラーの自作は続けています。
前回までで回路は決まったので基板の設計に取り掛かったのですが、私のレベルでは35mm角に収めるのが結構大変で、最初はアナログとデジタルのGNDを分けてやろうとか色々と考えていたんですが、とにかく詰め組むのがやっとな状態です。
4層にすれば楽なんでしょうけど基板代が大幅にアップするので何とか2層に収めたいし・・・ところで市販のFCは何層なんだろう?

基板パターンって一旦配線が完了しても細かい所を色々いじっていると、どんどん時間が過ぎてしまいますよね。あまりいつまでもパターンをいじっていてもキリがないし疲れてきたのでここらで一旦発注してみる事にします。何かミスがあるとは思いますが・・・。

今回発注した基板パターン
どこかミスっている気がする。

基板の発注先ですが、過去何回かFusionPCBに発注しているので今回もそのつもりでしたが、500円ちょっとで10枚作れる仕様だとソルダーレジストの最小幅が0.4mmという制約がネックになりました。マイコンやジャイロセンサのパッドとパッドの間にソルダーレジストを塗りたいのですが、そうすると0.4mmよりも少し細くなってしまうんです。0.1mmというオプションもありますが、これを選ぶと3000円を超えて一気に値段が上がります。
そこで他社を調べたところPCBgogoというメーカーだと0.25mmまでなら500円ちょっとで作れるみたいなのでここに発注してみました。

まだ部品が全部揃ってないし、リフロー用にオーブントースターの改造もいるので、基板ができても組立てがいつになるかわわかりませんが、少しづつ進めていきます。

オシロスコープ購入

10万円の給付金をもらったし前から欲しかったオシロスコープを購入しました。
今まで使っていた古いアナログオシロだと見たいものが見れない事が多々あったのです。

当初RIGOL DS1104Zが帯域100MHzの4chでデジタル入力もあって良いかと思ったのですが8万円以上します。これでも昔と比べたら格段に安いのですが。ただデジタル入力といってもオプションのプローブが必要で何万かするんですよね(どこで値段を見たのかわからなくなりましたが)。

他に候補として考えたのがAnalogDiscovery2。オシロスコープとしての機能は今一つですがロジアナ、ファンクションジェネレータ、パターンジェネレータ等、機能がてんこ盛りで3万円台後半です。オシロの機能が今一つといっても家での作業なら大半は事足ります。

そしてネットを見ていたらAmazonのタイムセールでRIGOL DS1202Z-Eが¥39,886-で出ていました。2chですが帯域200MHzです。なおデジタル入力はありません。
願わくば帯域は100MHzでいいから4chある方が便利なのですが、この値段は魅力的です。

DS1104Z買ったとして後日必要な時にデジタルプローブも買うと合計10万円を超えます。だったらDS1202+AnalogDiscovery2という手もあるかと考えました(AnalogDiscovery2はまだすぐに買うわけではありません。「必要になったら」です。いつの事かわかりませんが)。

結局DS1202Z-Eを¥39,886- で注文しました。昨日Amazonを見たら5万6千円に戻っていたので良いタイミングで買ったと思ったのですが、今日見たらまた
¥39,886- になっていて、見間違えたのかな?

そして2~3日後、この様な箱で届きました。

箱を開けるとまた箱が・・・厳重です。

そして中身に到達。イメージしていたよりも小さいです。

早速プローブを基準信号につないでトリマーを調整します。

こんな感じですかね。

と、やっていると玄関のチャイムが・・・。この時発注していたレーザー管が到着しました。結構時間がかかっていたのにこのタイミングで来て部屋がダンボールだらけです。

レーザー管は後日交換するとして、とりあえず何か波形を見てみましょう。先日からイジッているS.BUS信号・・・
ところでこのオシロにはシリアル通信のデコード機能があります。
会社でつかっているTektronixのオシロだとこのあたりの機能がオプションだったりしますがコイツは標準で使えるのが嬉しいのです。

ちゃんと先頭が’0F’で始まっているのがわかります。
こういうのが簡単に見れるのが今どきオシロの良いところ。

マニュアルはRIGOLのサイトからダウンロードしました。
なぜかDS1202という名前では辿り着けずシリーズ名であるDS1000Z-Eを選び、「カタログ&チラシ」→「ユーザー・マニュアル」に切り替える必要があってちょっと解り難いです。
また今のところ英語版しか上がっていません。
でも中身は真面目にしっかり書かれている印象です。

その後もイジっていますがTektronixと操作が似ていてわかり易くイイ感じです。
でも表示を日本語にすると変な訳になり余計に解り難いので英語に戻しました。

このオシロが¥39,886-で買えるのは感動的ですね。ヘタするとTektronixのパッシブプローブ1本よりも安いです(帯域は全然ちがいますけど)。

バシバシ活用していきたいと思います。

2020年6月21日の日食

先週の日食、梅雨時なのに熊本は晴れたので日食グラスを使うとよく見えました。そこでグラス越しにスマホで撮影したけどうまく撮れませんでした。

日食グラスでみたらもっとそれっぽい形でしたが撮影するとこんなのです。

なので次の策、木洩れ日を探して撮影・・・。
明るい部分が三日月形に撮れています。夕方近かったので地面よりも壁に映る影の方が角度的にはっきり分かりました。