フライトコントローラーを自作してみる。~その13~ Rev2基板動作確認

いよいよ電源を入れて動作を確認します。
まずは実験用電源からUSBコネクタへ、電流制限しながら5Vを印可・・・問題なし。

ではBOOTボタンを押しながらUSBケーブルでPCと接続・・・BetaflightConfiguratorを立ち上げておくとDFUモードに入る筈ですが反応ありません。
調べていくとR1とC7が入替わって取り付けていることに気づきました。
パターン上の近い場所にあったので間違った様です。リセットかかりっぱなしだしクロックも発振しないし、こりゃ動作しませんよね。

R1とC7が入替っていた。動く訳ないっす。

R1とC7を正しく取り付けなおすとDFUモードに入る様になったのでBetaflightのファームウェアを書き込んでリブート。すると今度はBOOTボタンを押していなくてもDFUモードに入る様になってしまいました。
原因はBOOT0端子のプルダウン抵抗R11のはんだ付け不良で、クリームハンダの乗りが少なかった様です。

ここまでで安定に動作モードに入る様になり、BetaflightConfiguratorからも認識されましたが、今度はジャイロ(加速度機能も)が認識されません。基板を傾けても画面上の機体は静止したままなのです。
ここは色々悩んだのですが結局はこれもジャイロの接続不良でMPU-6000を取り付け直したら正常動作となりました。

どうも今回ははんだ付け不良が多いなぁ。Rev1基板の時はもっとリードが細かいジャイロIC(MPU-6500)でも接続不良は無かったのに。。。
やっぱり固まったクリームハンダを溶かして使ったのが原因でしょうか?

まあナンダカンダで正常動作する様になりました。OSDも正常です。
また手持ち数が少ないので取り付けていなかったフラッシュメモリ(BlackBOX用)も取付けてログが取れる様にもなりました。

では5インチ機に積んでホバーリングテスト

特に問題なく飛びます。この後FPVでも問題ありませんでした。

という事でFC完成とします。
この後は処理能力の高いSTM32F405やSTM32F722を試そうと思ったのですが、昨今の半導体不足の為か入手できません。Aliexpressでは何度もキャンセル食らうし、RSやチップワンストップも入荷未定になっています。

STM32F411ならあと数個持っているのですが出来れば早いマイコンで試したいですよね。

フライトコントローラーを自作してみる。~その12~ Rev2基板組み立て

PCBGOGOからRev2基板が届きました。
が・・・ メタルマスクが裏面の分しか入っていません。発注内容を確かめると確かに裏面だけを注文していますね。
毎回なにかミスるなぁ。今回、基板自体は散々見直したんですけどね。

基板の裏/表。メタルマスクは裏面用のみ。

仕方ないのでメタルマスクの表面だけ再発注したところ、1週間せずに到着しました。早い!

メタルマスク表側

とにかく必要なものは揃ったので組立てに入ります。
机の上を片付けて適当な紙を敷きました。

こうやってマスクを被せた上からクリームハンダを塗るつもりなのですが・・・

クリームハンダがだいぶ固くなっています。
これって数か月で劣化してしまうらしいですね。一応冷蔵庫には入れていたのですが。

試しに無水エタノールを吹きかけて練り直してみると柔らかくなりました。
エタノールは何かと使うので、のどスプレーの空き容器に入れておくと便利です。

柔らかくなったのでメタルマスクの上から塗ってみます。


マスクを外すと・・・・なんか多くの箇所で短絡している。

柔らかくしすぎたかな。一旦クリームハンダをふき取ってやり直します。
少しアルコールを飛ばして適当な粘度になったところで塗りなおし(実際は何度かくりかえした)、大体いい感じになったと思うので部品を載せて・・・

リフローした結果がこれ。前回もそうでしたがマイコンのリードにブリッジができています。リフロー条件の問題か?
後から半田ゴテで修正します。

そして裏面も同様にリフローした後。こちらはブリッジは見られませんね。
なおU7と書いてあるところに部品が載ってませんが、これはBlackBOX用のFLASHメモリーを載せる場所で、部品の手持ちが少ないので一通り確認した後に手はんだで載せる予定です。

動作確認編へつづく・・・

フライトコントローラーを自作してみる。~その11~ Rev2基板

ブログを遡って読むと、ほぼ1年前からフライトコントローラー(以下FC)を作り始めていました。当初はFCを何度も壊すので自作して安く済まそうという魂胆でしたが、だんだんとFCを作る事自体が目的になっている気がします。

前回はRev1基板を使って3インチ機でFPVしたところまで書きました。その後5インチ機でも問題なく飛行できる事を確認しています(まあ3インチで飛べりゃ5インチでも飛べますよね)。

HOIHOIFC-F411 Rev1
ツギハギだらけです。パターンも何か無駄に遠回りしているところがあるし

という事で、Rev1基板の不具合修正や改良を加えたRev2基板を作っていきます。

まずはRev1基板の不具合点を振り返ると・・・

・USB信号のプラスとマイナスが入れ替わっていた。
・ブザー駆動トランジスタのピン配置を間違っていた。
・ブザー駆動トランジスタのベース100KΩという大きな抵抗値になっていた。
・DCDCコンバータ周りの配線が長すぎて電圧が揺れていた。
・取付穴位置を30mm角ジャストにしていた(一般的なサイズは30mmジャストではなく30.5mmでした)

当然ながらこれらは修正します。

BEC(DCDCコンバータ)について

バッテリー電圧から5Vを作り出すDCDCコンバーターICについて、前回はMonolithicPower社MP2359を使っていました。これは出力1.2A、最大入力24Vでしたが6セルバッテリーにすると耐圧が足りないのでMP1584に変更します。これだと出力3A、最大入力28Vです。
実際にはショットキーダイオードの3A品はサイズが大きいので2A品を使う事にして定格2A(瞬間的には3Aいける)BECです。
事前にMP1584を試した話はこの辺りに書きました。

左がMP2359,右がMP1584。
MP1584にするとだいぶ大きくなるなぁ。

DFUモード安定化

前回DFUモードに入りにくい(不安定)という問題があり、BOOT0に加えてBOOT1端子もLに落としたりしてみましたが今ひとつすっきりしていませんでした。
でも今回原因が分かった気がします。
STM32マイコンはBOOT1端子=H状態で起動するとブートローダーが立上るのですが、この時USARTやCAN等、幾つかのシリアルポートに信号が来ているかどうかをチェックし、その後USBを見に行きます。 この時USART端子に信号が入っているとその端子からプログラム書き込み信号を待つ様になってしまいます。
STM32F411の場合、USART1と3がブートローダー端子として動作します。そしてRev1基板ではUSART1にSBUS受信機を接続していました。
恐らくこれが邪魔してUSBを受け付ける状態まで進めなかったのだと思います。なのでRev2基板ではSBUS受信をUSART6に変更します。
そういえば市販FCもUSART6にSBUSを入るのが多いと思ったら恐らくこの理由なんだと思います。

ジャイロ

前回InvenSenseMPU6500を使っていました。
どうやらこれだと感度が高すぎて振動対策をしっかりする必要があるらしく、市販FCは大抵MPU6000を使っています。
という事でRev2もMPU6000に変更します。
またMPU6500はリードが0.4mmピッチに対しMPU6000は0.5mmピッチなので実装し易くなる事も期待しています。

左がMPU6500、右がMPU6000。
これも見比べると差が大きい。

マイコン本体

これまで最初に入手した評価基板に合わせてSTM32F411を使ってきたので今回もこのマイコンで進めます。
でもよりクロック周波数が高いマイコンにSTM32F405があり、ピン配置を調べたら1か所だけ変更すれば載せ替え出来そうなので後で試せる様に作っておきます。更にSTM32F722にも同じパッケージの製品があり、これもピン配置がほぼ同じなので使えるかもしれません(でも値段が高いんですよね)。

モーターの数

Rev1では基本の4本に加え予備として2本のモーター出力端子を持っていました。これでヘキサコプターを作れる筈なのです。
そしてRev2では更に2本追加し計8本にするので、その内オクタコプターを試してみたいと思います。

その他

発振子を小型の物に変えたり部品の配置を変更したり、結局かなりの変更量となりました。

最終的な回路図はこれ

そして基板パターン設計(これが一番大変だった)。

部品配置を変更したのでちょっと余裕ができた。
やっぱり基板設計は最初の部品配置が大事ですねー。

基板発注

基板はPCBGOGOに発注します。約500円の格安基板で作る場合、FusionPCBだとソルダーレジストの最小値が0.4mmなのでマイコンやジャイロのピン間隔(0.5mm)に対しては無理があるのです。
これに対しPCBGOGOは0.1mmなので多分大丈夫。(ただし送料が若干高い気がするし、また面付けすると高くなるので用途によって使い分けてます)

つづく・・・

コンデンサーマイク大量

前回に続き、共立エレショップで購入したパーツの話です。
デジットが移転(で一時期閉める)という事で色々なパーツが放出されているのです(もうだいぶ終わった感じですが)。
そこでコンデンサーマイクが200個で¥200円というのがあり、先日の超音波振動子と一緒にポチっていました。
でも冷静に考えるとマイクを使った工作って殆どしないので、これで今後まず一生コンデンサーマイクを買う事は無いと思います。

そして実物。シリコン製のカバーみたいなのを被っています。
電極が3本出ているけどこれも導電ゴムっぽい柔らかい素材なのでハンダ付けはできそうにありません。

何はともあれ動作させ見たいと思いますが、あまり情報がないんですよね。
とりあえずカバーを外してみるとこんな感じ。同心円上に電極があり、外から見ると端子は3極に見えましたが実際には2極です。

ちょっと細かくてやりずらいですが何とかハンダ付けして・・・

とりあえず外側がGND,中心が信号および電源と予想して動作させてみました(もし壊してもあと199個もあるし)。

出力波形。
ちゃんと音を拾っています。

そのままPCのライン入力にいれるとちょっとレベルが低めですが動作しました。オペアンプで少しレベルを上げれば丁度良くなると思います。

もう一度ネットで調べると、どうもホシデン製のこれっぽいですね。
・・・という事で次にマイクを使う事があれば(あるのか?)活用しようと思います。

超音波振動子

みら太さん共立エレショップの超音波振動子(特価¥1000)の事をツィートされており、見てたら自分も欲しくなったのでポチりました。

ドライブ基板とはこんな感じで接続します。

ランジュバン型ボルト締め超音波振動子というもので、ググってみると圧電素子をボルトで締め付ける事で壊れにくくしているらしいです。なので大きなナットがついているネジは振動子を固定する為のものではなく、付属の説明書にも緩めてはいけないと書かれています。

ではどうやって固定するのでしょう?またまたググると超音波洗浄機の例では洗浄槽に接着しているとの記載を見つけました。方法は追々考えるとして、まずは実験的にやってみます。
振動子を上向きにするとぴったり合う穴をJw-cadで書いて・・・

MDFの端材をレーザーで切りました。

この穴に振動子をはめ込んで適当な梱包材の上に乗せてみます。

振動面には細かい金網がねじ止めされており、説明書によるとここに水を垂らせば霧が発生すると書かれています。
ではやってみます。

確かに霧が発生しますね。なおジリジリという音は金網が振動している様です。

金網を外すとジリジリ音はなくなり、あまり霧は出ません。

次に超音波洗浄を試してみます。
金網を外した面に両面テープを貼り・・・

洗浄槽としてタッパーを貼り付けます。
両面テープでいくらかは超音波が遮断されるかもしれませんが、まあやってみましょう。
ところで超音波洗浄としてまず思いつくのは眼鏡ですよね。入れてみました。

その他、ピンセットやネジや・・・

適当なものをぶち込んで・・・

綺麗になったのかというと良くわかりません。
振動でネジが移動していくのでそれなりに超音波が伝わっているのだと思いますが。

ところで説明書に周波数等は不明と書かれているので測ってみます。
両面テープに磁石をくっつけて適当なコイルで検出しようとしましたが何も現れません。コイルの巻き数が少ない気が・・・

そこでクリスタルイヤホンをマイク代わりにしてオシロにつなぐと・・・

こんな波形が出てきました。
周波数は33.5KHz。
なんか中途半端な気もしますが周波数精度にこだわる感じでもないのでこんなものなのでしょう。

という事で、もう少し色々と試してみようと思います。

テレビのリモコンから異音

テレビのリモコンを手に取ったら内部でカラカラという音がしました。
もし金属のネジが外れていてショートするとまずいので開けてみる事にします。

よくあるSHARPのリモコン
10年以上使っています。

異音の原因、電解コンデンサのリードが完全に断線して転がっていました。
リードをL字に曲げて取付けてあったため、長年の振動で金属疲労を起こしたのでしょう。

電源のデカップリング用っぽいコンデンサ。

パターン面側に極性が書いてありました。

パターン側


交換しても良いのですがそのままでも取り付けできそうなので・・・

折れて残ったリードにハンダ付けしました。

ただし、このままだとまた振動で外れる可能性大なのでグルーガンで固めておきます。

ケースに当たりそうなグルーはカッターで削り取ります。

以上で修理完了。というかコンデンサが外れていても動作してたんですけどね。

RotorHazard~その2~

先日作ったRotorHazardを屋外の練習で使ってみました。

庭でTiny機を使って試した時の感触から、シールドケースにこれくらいの窓を開ければいいかなと思ったのですが・・・

思ったより感度が低く、結局は蓋を全開にしてちょうど良い程度です。

こんな感じでデータが取れます。
ほぼ問題なく取れているし取込みミスしたところは後から修正できます。

という事でいい感じに使えているのですが、PCとの間のWi-Fi回線が時々切れます。一度機体をぶつけてから発生している気もしますが単に電波状態の問題かもしません。
RoterHazard(のラズパイ)とPCの間は先日リサイクルショップにて770円で購入したWi-Fiルーターが中継しています。小型なのが気に入ってこれにしたのですがあまり強力そうには見えません。
同じ店にアンテナが3本くらい生えている強力そうなのが約900円であったのでそっちが良かったのかも。。。

家に帰って確認するとケースにペラが思いっきり当たった傷がついていましたがそれ以外に問題はなく、やはりWi-Fiルーターとの距離の問題だと思います。

次回やる時はRotorHazardとPCのなるべく中間付近にWi-Fiルーターを置いて距離を短くしてみます。

MP1584,MP1854,MP8514???

自分で書いた記事を読み返したらスイッチングレギュレーターICのMP1584の事をMP1854と書いたりMP8514と書いたりメチャクチャになっていました。
この時なんかはタイトルからして間違ったまま最後までMP1854で通していて、あまりにヒドイので本日修正しました。

正しくはMP1584です(もう間違えない様自分に言い聞かせる)。
メーカーサイトはここ→https://www.monolithicpower.com/jp/mp1584.html

しかしブログをもっと読み返したらいろんなのが出てくるんだろうな。

RotorHazard

NonsayaDroneWorksにRotorHazardの記事が載っていました。

私はドローンレースを主催する事はありませんが、練習の時にはラップタイムを計測したくて、この記事と同じ様にARマーカーを試したりしましたがやっぱり時々読み取りミスが発生するんですよね。また、かつてこんな記事を書いたこともありましたがその後まったく手を付けていません。
そこでこのRotorHazardなるラップタイマーを試してみようと思います。

RotorHazardはRX5808レシーバーが受信したFPV信号強度をArduinoを経由してRasberry Pi(以下ラズパイ)に渡します。ラスパイはWebサーバーとして動作し、PCのブラウザーで接続して操作できます。
RX5808とArduinoは受信するチャンネル数だけ必要なので最終的には3セット欲しいところですが、取り合えず手元にある1セット分で、またラズパイ3がおすすめらしいですが無いので手持ちのラスパイ2でやってみます。

最初RotorHazardのリリース版(RotorHazard-2.2.0)だとエラーが出たのでRotorHazard-2.3.0-beta2で実行できました。ライブラリバージョンとのからみっぽいです。
まあ何はともあれ上手く動作している様なのでAliexpressにRX5808モジュールを追加注文して2チャンネルにしてみました。
なおシールドしておかないと離れていても電波を受信してしまうのでお菓子の空き缶に収めています。

そして庭でTinyレース。庭だとどうしても計測ゲート以外を飛んでいる時の電波を拾いやすくなるのでコース設定に工夫が必要です。

こうなると野外に出て3インチや5インチの機体で試したくなります。その為にはちゃんとした基板とケースに収めたいと思います。
基板はRotorHazardのサイトにガーバーデータが掲載されているのでこのまま作ればよいと思ったのですが・・・

どうやら最小のビアサイズが小さすぎて約500円の激安仕様では作れず、見積もり価格が3000円を超えてしまいます。また基板の元データが無くてガーバーのみなので簡単には修正できないのです。

ならば新たに基板パターンを作ってみようと思った訳です。
日本では大抵3チャンネルで足りるしArduinoNANOを載せるのも勿体ないので直接ATmega328のフラットパッケージ版を載せたらコンパクトにできそうです。
また屋外のインターネットがつながらない場所で使うならリアルタイムクロックも搭載すると便利です(ラズパイ標準ではリアルタイムクロックを持っていないので電源を切ると時計がリセットされるのです)。

そして10枚500円仕様で作った基板がこれ。 。

マイコンの上を跨いで受信モジュールを実装する立体構造。

今回メタルマスクは注文せず、紙をレーザーカットしたマスクでハンダペーストを塗ってみました。ちょっと塗り辛いけど何とかなります。もしかすると塗り辛いのはハンダペーストが乾き気味だったせいかもしれません。
ただ何枚も塗るだけの耐久性はありません。

メタルだとそうでもないのに紙だと何だか汚く見える。

そしてリフロー

やっぱりリフロー炉作って良かったですねー。
表面実装できると何かと便利です。

リフローの結果。
一か所抵抗が立ち上がっています。これがマンハッタン現象ってやつですかね。
ハンダペーストの塗りが薄かったのかも。ここはコテで修正しました。

そしてブートローダー書込み×3回。

基板の裏に書き込み用パッドを設けているのです。

次にファームウェア書き込み×3回。

一旦ファームを書き込めば以降のアップグレードはラスパイからできる仕様になっています。(試してませんが)

ここでミスに気づきます。RX5808のピン並びが逆になっていて裏返しでしか実装できません。ま、とりあえず裏返しに実装します。

ラスパイに載せて動作確認OK!
ラスパイはメルカリで格安だったラズパイ3にアップグレードしています。

ボタン電池が載っているモジュールがリアルタイムクロック。

先日のMP1854ENモジュールを取り付けてリポから電源を取れるようにしました。

ケースに使う空き缶を探しましたがちょうど良いのがなかったので、2.5mm厚のMDFをレーザーで切って箱を作り、ダイソーの0.3mm厚アルミ板(裏面テープ付き)を貼り付けてシールドしました。

ケースのアルミシールドは回路のGNDに接続。

電源の入り口

XT60コネクタで給電

蓋を一部切って電波を取り入れます。ここの開き具合で感度を調整する予定。

ここの空け具合は色々調整してみます。

なおWi-Fiのアクセスポイントがない屋外で使うときは 、ラスパイとPCとの間をアドホックモードでつなごうと思いましたが設定変更が面倒です。
結局リサイクルショップに行ったらWi-Fiルーターが¥770だったのでこれを使う事にしました。

Wi-Fiルーター。中古とはいえ安くなったもんです。

これで完成かな。今度練習する時に使ってみようと思います。

ところでいまRotorHazardのページを見たらこんな基板がリリースされています。Arduinoの代わりにSTM32を使い、マイコン1個でRX5808モジュール8枚(ドミノ倒しみたいに縦に実装!)を制御するという構造。進化してます。
しかし8台同時にレースできるんですね、海外って。

SBUS→PWM変換

ドローンをいじっていると色々とパーツが増えてきます。SBUS出力の受信機もそうなのですが、ふと思い立って固定翼の飛行機に普通のサーボを積もうと思うとPWM出力の受信機がないのです。
そこでSBUSからPWMに変換する基板を作ってみました。

まずシリアルポートが複数あってデバッグし易いArduinoMEGAを引っ張り出してきます。SBUSの受信は何度もやっているのでソースをコピペし、沢山定義したサーボ出力に値を渡せばファームは出来上がりです。
その後ArduinoUNOに移しても問題なく動作しました。

そして基板化。
私が作る飛行機は大抵スチレンペーパー製の小型のものなので基板もなるべく小型がよいです。そこで最近はリフロー炉も稼働した事だし、中華格安メーカーに表面実装の基板を発注しました。マイコンには0.5mmピッチQFNパッケージ(リードがないやつ)のATmega328MUを使います。

という事で面付けして全部で120枚分の基板ができてきたのですが・・・・・

約500円の格安基板

シルクデータを含めるのを忘れていました。
更に0.5mmピッチのところソルダーレジストが載っていません。一瞬基板メーカーにヤラれたか?と思いましたが仕様を見るとレジスト幅は最小0.4mmという仕様でした。0.5mmピッチでリード幅もあり、どう考えてもレジスト幅は0.4mmには収まりませんよね。
そういえばフライトコントローラーを作った時、わざわざレジスト幅が細かいメーカーを選んだのでした(でもそのメーカーは面付けすると価格が上がるのです)。

マイコン周りのソルダーレジストが崩れている

とりあえず比較的上手くレジストが載っている基板を選んで(120枚もあるので中には上手くいっているのもあるのです)部品を実装しました。

そしてArduinoUNOを使ってブートローダーを書き、FT232RLを使ってファームウェアを書きます。

ブートローダー書き込み中。
奥に見えているフリスクケースがFT232RL

ピンヘッダを付けて完成!
12chまで出せます。6chまでは3pinのピンヘッダで、残り6chは信号だけ出しています。

例によって1か所ミスっておりジャンパーで補修しています。
(どこかわかります?)

息子が製作していた機体に積んで飛ばしてもらいました。特に問題なく飛んでいます。

高校生の息子が作った機体。
キット化して小遣いを稼ぐ野望を抱いている様です。