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か所ミスっておりジャンパーで補修しています。
(どこかわかります?)

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

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

MP1584EN その2

フライトコントローラーへの搭載を目論んでいるMP1584使用のDCDCコンバータがうまく動作しない話を先日書きました。
だいぶ更新をサボっていましたがその後の記録です。

まず前回はAliexpressで購入したMP1584ENがパチもんではないかという疑いを持ったのでマルツエレック経由DigiKeyにMP1584単体と、これを使用したモジュールを発注したというお話でした。

まずは届いたモジュールの動作を確認・・・

MP1584ENモジュール

1A流した時。きれいな波形が出ています。
※CH1(黄)は未接続、CH2がインダクタ通過後の出力波形。

CH2(青)が 5V出力5Ω負荷。
CH1はオープンです。

ICのスイッチング出力にCH1(黄)のプローブを当てると1MHz弱の矩形波が見えています。なお上の波形では綺麗だった出力が ここにプローブを当てる事でノイズが載る様です。

CH2(青)が 5V出力5Ω負荷。
CH1は(黄)はSW出力(MP1584の1pin)

次にIC単体で購入したMP1584EN

上がAliexpressで購入。
下がマルツ経由Digikeyで購入。

これは結論から言うとICがパチモンで上手く動作しないという訳ではありませんでした。
自作基板のMP1584ENをAliexpress購入からマルツ購入の物に変えても全く変わりません。

で、何が問題だったのか

結局は配線の取り回しが最大の原因でした。
欲張ってスイッチング周波数を上げると極力配線を短くする必要があります。それは言葉では分かっているのですが、では実際どれくらいギリギリまで詰める必要があるのかというと、もうとにかくできるだけ! 試作だからといってリード部品を使った時点でアウトだったみたいです。
今回やったのは次の点・・・
・まずインダクターとか転流ダイオード、コンデンサ類はとにかく可能な限り近づけます。
・インダクターも前回はアキシャルリードのパワーインダクタを使っていましたがチップ部品に変えました。
・Compensation端子につけるCRや周波数決定端子の抵抗もリード部品ではスイッチング波形が乱れていたのがチップ部品に変えると綺麗になりました。

ダメダメな配線
なんとかなった配線
ダメダメな波形
CH1は(黄)はSW出力
CH2(青)は5V出力5Ω負荷。
何とかなった波形
CH1は(黄)はSW出力
CH2(青)は 5V出力5Ω負荷。

何とかなった波形
CH1は(黄)はオープン、
CH2(青)は5V出力5Ω負荷。

スイッチング周波数の1MHzって電波の周波数やマイコンのクロックと比べると大したこと無いイメージですが、大電流のスイッチングは難しいんですね。

という事で・・・

6セルに対応するDCDCコンバータをフライトコントローラーに搭載できるめどが立ちました。
改良版フライトコントローラのプリント基板設計は、一番最初に電源回路からパターンを作っていこうと思います。

BRAVO BST12修理 その3

またゴムボート用ポンプBST12の修理の話です。
このブログに過去2回投稿しましたが・・・
BRAVO BST12修理 その1
BRAVO BST12修理 その2
この時修理したのは息子が通っていたヨットクラブにあったポンプで今回は自分のなのです。

今回、久々に自分のポンプを動作させてみるとブロアーモードは正常に動くのにコンプレッサーモードに切り替わらず止まってしまうのです。
ま、今すぐに使うわけではないのですが、壊れたとなると直したくなるのが人情というもの。
早速開けてみました。

これがコンプレッサー側のモーター。モーターに直接電源をつなぐと回るので今回はモーターは壊れていない様です。

上のリレーがRL2、下がRL1です
(回路図に落とす際に勝手につけた番号)

となると制御回路の問題かな。
基板を取り外す為、バラバラにしました。

基板の裏側・・・

ここから回路図を書きだします。もしかすると間違っているかもしれないけど、たぶんこんな感じ・・・

部品番号は適当に割り振っています。

2個のリレーの内、RL1が全体のON/OFF、RL2は2個のモーターを切り替えるのに使っている様です。
FLAPと書いたスイッチはブロアーの出口に風を受けて動作するスイッチで、空気が流れているとON,ゴムボート内の空気が満タンに近づき流れが弱まるとOFFになります。
PRESSUREと書いたスイッチはあらかじめダイヤルで設定した圧力になるとOFFになるスイッチで強制停止ボタンと直列につながっていて、どちらかがOFFになれば全体の動作が止まる様になっています。

正常時の動作としては、STARTボタンを押すとRL1,2両方がONになりブロアー側のモーターが回り始めます。ここでSTARTボタンを放してもRL1はD3→PRESSUREスイッチ→STOPスイッチを経由して電流が流れるのでONを維持します。またブロアーが回る事でFLAPスイッチがONになるのでRL2もONを維持します。
暫くしてボートに空気が溜まってくるとブロアーの流れが減りFLAPスイッチがOFFになります。するとRL2がOFFになる事でブロアーは止まってコンプレッサーが回り始めます。
その後、圧力が高まりPRESSUREスイッチが切れるとRL1もOFFになって終了するという動作になっています。

今回はブロアーが動作するのでRL1,RL2両方ONにはなっている様ですが、FLAPがOFFしたところで全体が止まってしまうという症状です。

モーターをバンバン回しながら調べるのも騒々しいのでモーターの代わりにLEDを付けてみました。

これでSTART押し→FLAP押し→START放し→FLAP放し とするとちゃんと動作してコンプレッサー側につないだLEDは点灯するんですよね。でもモーターをつないでやるとダメでRL1,2共にOFFしてしまいます。

・・・てことはモーターが回りだすことで電圧が下がってRL1のONを維持できなくなっているのでしょうかね。
配線が ヘタっているのかとか基板にクラックがあるのかとか疑いましたが根本原因にはたどり着けませんでした。モーターがヘタって始動時に大電流が流れているのかもしれません。

RL1の接点を手で動かしてやると(むき出しのリレーなので手で動かせるのです)コンプレッサー側モーターは元気に回って手を放しても回り続けるので切り替えの瞬間だけ電圧が落ちている感じなんでしょうか。

ところでRL2のコイル両端には1000μFの電解コンが付いています。たぶんFLAPスイッチのバタつきを拾わない様に時定数を持たせているんじゃないかと思います。これをヒントにRL1にも電解コンを付けて始動時の大電流をやり過ごしてやると上手く切り替わる様になりました。根本対策にはなっていない気もしますが今のところ正常動作しています。

パーツケースにあった1000μF/25Vの電解コンをこんな感じで取り付けました・・・

基板の裏にスペースがあるので他の部品には当たらないのです。

あとはフタを閉めて元の状態に戻しました。

根本原因が分かっていないのが気持ち悪いですが、取り合えずは動作しているのでこれで様子を見ます。

MP1584EN

自作フライトコントローラーではバッテリー電圧を5Vに落とすためにMonolithicPowor社のDCDCコンバータIC、MP2359DJを使っていました。このICは最大1.2Aを流せるので電流能力としては大抵事足りるのですが、入力電圧の最大定格が24Vとなっています。これは4セルLipoだと全く問題ありませんが6セルの場合は満充電時25.2Vなので定格を1.2V超えてしまいます。
5%の定格オーバーなので実際は耐えてくれるかもしれません。またシリコンダイオードを2本直列にして電圧を落とすという手もありそうですが、できれば素の状態で定格に収まるのが安心です。

そこで市販の6セル対応FCがどうなっているかを見るとMonolithicPowor社のMP1584ENが積まれていました。

ならばこれを試そうという事でMP1584ENをAliexpressに発注して10個¥218(送料無料)を購入しました。

と、その前にデーターシートによくわからない部分があります。ここにはスイッチング周波数は6pinとGND間の抵抗値で設定できて、次の式で決まる様に書かれているのですが・・・

Rfreq(KΩ)=180000/fs(KHz)

これだと1MHzにする場合、抵抗値は180KΩという事になります。しかし別のページには次のグラフが書かれています。

このグラフでは1MHzで動作するときの抵抗値は90KΩ程度に見えます。なんだか式とグラフが合わないっぽい・・・それともデーターシートの読み方を間違っているのか?

そこで市販FCに積まれているDCDC回路を実測すると抵抗値100KΩでほぼ’1MHzで動作していました。という事はグラフが正しいのでしょうか?

この辺りを含めて確かめる為に動作させてみます。なるべくデーターシートのリファレンスに近いパターンに基板を削って・・・

実装しました。

既に色々試してゴチャゴチャになった後の写真

動作させると狙い通り5Vが出てきますが、何だかリプルが大きいんですよね。特に5Ωのセメント抵抗を付けて1A流すと盛大にリプルが乗ります。

黄色:インダクターを通る前。青:インダクター通過後。

で、色々いじったのですが改善しません。というか、動作周波数が1MHzになる様に設定した筈なのに65KHzで動作しており、波形も随分と汚いのです。

因みに市販FCだとほぼ1MHzで動作しており波形もきれいです。

黄色:インダクターを通る前。
インダクター通過後の波形を残していませんでしたが上とは比べ物にならない綺麗な直流でした。


いろいろ弄ったのですが、今だになぜ周波数が低いのか不明です。もしかしてMP1584ENがパチもんなのか?
たしかに、Digikeyだと1個300円くらいするのがいくら中国通販とはいえ10個で218円は怪しすぎる気がします。

うーん、どうしよう? 市販FCとICを入替えればハッキリするでしょうが、ちょっとリスクが高いですよね。

そこでAmazaonでMP1584EN搭載モジュールが格安で売られていたのを発注しました。コイツで動作を確かめて上手く動いているのなら自分の基板とICを交換してみようと・・・。
そして到着したのがこれ・・・

Amazonで購入したMP1584(のはずの)モジュール。
ICの型番が消されています。

これどう見てもMP1584ではないです。デバイスのマーキングは消されていますがピン配置的にはMP2307っぽい。商品ページにはハッキリとMP1584ENと書かれているのに・・・とりあえず波形だけ見て返品しました。

謎IC使用のモジュール。周波数は263KHz。自分の基板よりはかなりマシな出力。

もう何を信じてよいかわからなくなってきました。
確実なショップでMP1584ENを購入したいのですがDigikeyだと送料が2000円くらい要るみたいなんですよね。
そこでマルツエレック経由だとDigikeyの商品が送料250円で買える事を発見。注文して現在入荷待ちです。

フライトコントローラーを自作してみる。~その10~ FPVで飛ばす。

前回、自作フライトコントローラーでホバーリングできるところまで確認したので次はFPVで飛ばしてみたいと思います。

が、その前に電源周りをもう少し強化しておきます。前回ノイズっぽかったのを転流ダイオードの配線を縮めて改善したのですが、まだスイッチングノイズが載っているのでその他の配線も縮めました。またGNDも配線追加により強化し、ノイズがかなりマシになりました。第二弾の基板ではこの辺りを盛り込む必要があります。

スイッチングレギュレータ周りの配線短縮&GND強化
だんだん汚くなってきました。

また機体発見ブザーを鳴らすトランジスタ、2SC2712のピン配を間違っていてブザーが鳴りませんでした。そこで無理やりトランジスタの向きを変えて取り付けています。
更にベース電流を決めるR14を100KΩにしていたのは大きすぎで5.1KΩに変更しました。試作基板はちゃんと5.1Kだったのになぜか回路図の段階で間違っていたのです。

機体発見ブザー周り。
トランジスタ斜め取付け。
R14はこの後変更しています(5.1Kの手持ちがなく6.8Kを使用)

以上の対策をした上でレース機に積むのですが、5インチ機にいきなり積むのも勇気がいるのでまずは3インチ機で試します。しかしフライトコントローラは35mm角なので一般的な3インチ機には積めません。そこで以前作ったウッドフレームに積んでみます。これだと35mm角の基板を載せるスペースがあるのです。


久々に登場、木製フレーム機。

この機体、いまはバラバラなので別の3インチ機からフレームとFC以外の部品を持ってきました。
ESCは25mm角なのでこの様な変換スペーサーをプリントして載せることにします。

35mm角⇔25mm角変換スペーサー

こんな感じで25mm角のESCの上に35mm角のFCが載っています。

全てが無理やり・・・

そしてホバーリング実験。
この時点ではBetaflightのバージョン3.5を書き込んでいて、前回の確認と同じで問題なくホバーリングできます。。
次にBetaflight4.2を書き込んでみます。前回の機体では4.2だと機体の揺れが収まらなかったのですが・・・この機体だとピタッと安定しています。

ならばFPVやっても大丈夫そうですねー。
という事で近くの原っぱにやってきました。

ゴーグルを付けて飛ばしてみると、何事もなく飛んでいきます!!
基板はツギハギだらけですが飛んでいる間は市販FCと特に違いは感じられないのです。
息子にも飛ばさせてみましたが特に違和感は無い様でした。

という事で色々見つかった不具合を修正すべく第二弾のパターン設計をしながらも次は5インチ機で試そうと思います。

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

前回基板に部品を実装したので、いよいよ動作させてみます。

まずはUSBコネクタから5Vを入れて電流が振り切れない事を確認しました・・・これは問題なし。
その後、BOOTボタンを押しながらPCとUSBケーブルで接続するとDFUモードに入る筈ですが・・・入りません。(T_T)

回路を見直していくと基本的な間違いに気づきました。USBのD+とD-が逆になっています!!そりゃダメだわ。


完全に見落としですねー。

とにかく修正します。
D+とD-には後からダンピング抵抗を入れられる様0Ωの抵抗を付けているのでこのパターンを使って配線をクロスさせます。

モーターのコイル巻き直しに使ったエナメル線で配線をクロスさせました。

改めてケーブルをつなぎなおすと、今度はDFUモードに入りました。
そこでBetaflightConfiguratorのUpdateFirmware画面から以前作ったファームを書き込みました。
ここまで何とか問題なし(いや問題はあったけどとりあえず修正済)。

そして改めてケーブルを挿し直してBetaflightConfiguratorで接続すると、ちゃんと認識されています。この状態で基板を手で動かすと傾きが表示されるので、ジャイロセンサーも正常に接続できている事になります。実はここのパターンが細かくて一番心配でしたが正常にリフローできた様です。

あとはフライトコントローラーとしての諸々の設定をしていきます。
ここまで正常。

次に受信機を接続し、送信機の操作が伝わっている事も問題なし。

ではESCを接続してモーターを回してみます。安定化電源から2セル分の7.4Vを供給してBetaflightConfiguratorモーターつまみを上げていくと・・・ちゃんと回ります。

ならばバッテリー(3セル)を接続して送信機から制御してみると・・・なぜかArmingできません。安定化電源に戻して色々試したところ、どうやら2セル電圧だとArmingできるのに3セル電圧だとダメみたいです。
となるとBEC回路ですかね。電源電圧によって違いがあるのはBEC回路より手前だけの筈・・・。

そこでBEC回路の出力をテスターであたるとちゃんと5Vになっています。
しかしオシロで見るとBECのスイッチングノイズが電源が高いと大きく載る様です(波形取り忘れた)。

原因はどうやら図のところ、スイッチング電源のダイオードのループが長すぎた様です。
2層基板に無理やり載せたので電源周りが厳しい気がしていたのですがやっぱり。 GNDの取り回しが遠回りな感じ。

そこでGND側を最短になる様に配線を追加しました。これでもOKだったのですが念のため5Vラインに47uFを追加しています。でもまだちょっとノイズっぽいけど先に進めていきます。

これで3セル電圧でもArmingできる様になったので例の「えー加減な機体」にペラを付け、Angleモードでホバーリングさせてみます。

すると斜めに振動しながら浮き上がりました。でもこれは想定内。試作回路で飛ばした時もファームがBetaflight4.2だと同様の現象が起こり、市販のFCでも同じでBetaflight3.xに下げると安定したのです。今回もファームのバージョンは4.2を書き込んでます。
4.2で揺れる原因は調べていませんが何か機体の特性みたいです。でもバージョンで変わるのでPIDかフィルターかそのあたりを調整すれば4.2でも納まりそうな気がします。

とりあえず今回はBetaflight3.xを書き込んでみます。
・・・すると、あれ?またDFUモードに入らないぞ?

どうもDFUに入る時と入らないときがあります。
DFUモードに入れる方法には二通りあって、BOOTボタンを押しながら電源を投入する方法とBetaflightConfiguratorの「ブートローダー/DFUを有効化」ボタンを押す方法があります。このどちらの方法も不安定で、ダメなときはずっとダメなのに入る時は繰り返してもうまく入るのです。成功率30%くらいでしょうか。

BOOTボタンを押すとSTM32F411のBoot0端子がHレベルになる筈で、実際オシロで見てもHになっていて、この部分は大丈夫だと思います。
ここでひとつ気になるのはBoot1端子です。 Boot1はPB2と共通の端子で、マニュアルによるとDFUモードに入れるためにはこれをLレベルにすることになっています。
しかしDIOと共有なんですよね。この端子を本当にLに落とす必要があるのか、回路図を書くとき疑問に思いました。そこでSTマイクロエレクトロニクス社の純正開発ボードSTM32F411Nucleoを調べたらこの端子はオープンで、これを使った試作機は問題なかったので、安心してフライトコントローラーもオープンにしていたのです。
しかし改めてマニュアルを読むとやはりLにしろと書いてあります。
という事で0.5mmピッチQFPのリードに無理やり電線をハンダ付けしてプルダウン抵抗をつないでみました。

これで成功率が上がりました。でもまだ時々ミスるのでまだ何か他に原因がありそうですが、やっぱりBoot1はLにするのが正しいのですかね。まあマニュアルに書いてあるから当然そうすべきで、最低でもパターンを引き出しておけば良かったんですが。でもNucleoはなんで大丈夫なんだろう?(端子オープンなのでたまたま上手くいっているだけなのかもしれません)

時々失敗する理由は判りませんが、とにかくBetaflight3.5のファーム書き込む事ができたので再びホバーリングにチャレンジ。
初飛行の動画です。

ちょっとふらついていて調整の余地が(私の操縦技術の問題も)ありますが一応ホバーリングしています。

あとOSDとBLACKBOXへのロギングも大丈夫でした。
ここまでの問題点をまとめると次の通りです。基板の第二弾を作る時(やるのか?)修正したいと思います。

  • USBのD+とD-の入替り。
  • 5Vスイッチングレギュレータ周りのGNDの取り回し
  • Boot1端子のプルダウン

という事で何とかホバーリングするところまでたどり着いたのでレーサー機に載せてどうなるかを試していきたいと思います。

フライトシムのモーションシミュレータ化~9~

モーション フライトシミュレーターのArduiono側ソースコードを見たいという書き込みを頂いたのでアップします。

FlightMotion6.zip

中身が行き当たりばったりで恥ずかしいので載せていませんでした。
※温かい目で見てください。
(PC側のプログラムはもっとかっこ悪いのでまだ載せていませんが、もしこちらも見たい方がおられたらコメントください)

で、この中身は自分でも殆ど忘れていますが思い出しながら簡単に説明させていただきます。

  • ジャイロ/加速度センサーのMPU6050へのアクセスライブラリは、たしか下記から貰ってきたと思います。→https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050
  • PCからは”ピッチ,バンク<改行>”がテキストで送られてきます。
    ピッチとバンクは角度の少数以下一桁までを10倍した値です(浮動小数点をさける為)。
  • PCから送られるピッチとバンク角から目標とするリニアアクチュエータの目標長を算出します。
  • MPU6050が示す加速度センサーの値でも同様にリニアアクチュエーターの現在長を算出します(加速度だけ使ってジャイロの値は使っていません)。
  • ソース中の”//各ジオメトリ”に続く数行はモーションシミュレータの各寸法で、角度からリニアアクチュエーターの長さを算出するための情報です(これら値の詳しい説明は今できませんが当時は下の様な寸法図を書いていました。ソース中の値とは変わっているところもあると思います)。
  • リニアアクチュエータの目標長と現在長から動かす方向と速度を決めてPWMの関数に送ります(速度の加減は試行錯誤で決めました)。
モーション計算用寸法図

モーターを動きをもっとスムーズにするため、この次のバージョンでPID制御にしてみようと取り掛かりましたが放置状態です。

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

いよいよフライトコントローラーの基板に部品を実装したいと思います。

まず実装前の基板はこれです。PCBgogoで製作して入着済。

約500円で10枚作れるPCBgogoの基板

そしてメタルマスクも購入済。こっちは基板よりも高くて約¥1000します。
画用紙をレーザーカットして代用できないかとも思いますが、初めてのリフローなので確実な方でやってみます。

実装前の準備として部品を紙の上に並べていきました。コンデンサの様に何も書いていない部品もあるので手をひっかけてバラケると大変なことになります。なので紙はテープで机に貼り付けています。

そして板の上に不要な基板の切れ端を貼り付けて固定治具にします。
まずは部品が少ない裏面(機体に積んだ時に下側にくる面)から実装する事にしました。

その上からメタルマスクを貼り付けて・・・

慎重に位置合わせ・・

マスクの上からクリームはんだを塗っていきます。

プラスチック板の切れ端でスリコミ スリコミ・・・

マスクを剥がすとこんな感じでクリームハンダが載っています。
まあ大丈夫そうです。

そして1個ずつピンセットで部品を置いていった後の写真。
この時には気づいていませんが左下のスイッチングレギュレーターICの位置がずれていて、リフロー後に気づく事になります。

ではいよいよオーブントースター(改)リフロー炉に投入。
不要基板に温度計のセンサーを貼り付けて横に置き、温度を見ながらやります。

スタート!
そして リフロー中・・・

よし終わった・・・

大体良いのですが、先程書いた通りレギュレーターICがずれていたのでポロッと落ちてしまいました。これは後ほど手ハンダで取り付けます。

またよく見るとOSD用ICのリードにブリッジがあります。なにか条件が良くなかったのでしょうね。クリームハンダが厚すぎたのかな?
これもはんだゴテで除去します。

ちょっとピンボケですがMAX7456のリード2か所にブリッジが見られます。

ハンダブリッジとレギュレータずれ以外、見た感じは良さそうです。

では表面側の実装に取り掛かります。
ところで表面にクリームハンダを塗る際、裏面には既に部品がついているので先程と同じ方法だと基板が浮いてしまいメタルマスクと基板が密着できない事に気づきました。
そこでMDFをレーザーで切り、部品のない四隅を支える治具を作成しました。このままだと基板厚の分MDFより高くなるので厚みが基板とほぼ同じ1.6mmの段ボールを見つけてきて基板の周りに置く事で全体が面一になりました。

1.6mm厚の段ボールに窓を開けてこの上に載せると全体が同じ高さになるのです。

あとは先程同様クリームハンダを塗って部品を載せました。

SHコネクタやタクトスイッチが溶けないか心配

リフローの時、実装済みの裏面から部品が落ちるとまずいのでアルミ箔で熱を遮ってみました(効果の程は判りませんがとりあえず大丈夫でした)。

リフロー完了

コネクタやスイッチが溶けないか心配していましたが無事みたいです。
でもやっぱりマイコンのリードにブリッジがありますね。何がいけないんだろう。
なお表面の過熱により裏面のブリッジが直っていないかと期待しましたが変化ありませんでした。 まとめてはんだゴテで除去します。

リフロー×ブリッジでググると、クリームハンダがそもそもブリッジしている場合は当然として、高温時間が長い場合も狭い隙間にハンダを吸い上げてしまう様です。毛細管現象みたいなものですかね。
今回のはリードの少し上でブリッジしているので高温長すぎの方かもしれません。

何はともあれ、基板に部品がつきました。
次は動作を確認していきたいと思います。