フライトコントローラーを自作してみる。~その18~ またまたF7

久々のFC自作ネタですが、内容は前回とほぼ同じ。
壊れたFCを大量に貰ってきたので、ここからSTM32のF7マイコンを外して自作基板に載せるのです。
未だにSTM32マイコンは入手困難なので壊れたFCを頂けると非常に助かります。

ESCまで含まれていますがこっちの自作は難易度高く、今の所FCだけ。

こうしてみると見るからに壊れている基板からパッと見では何ともなさそうなモノまで色々あります。正常っぽいのはもしかして直るかもという期待もあるので今回は明らかに壊れていそうな中から2枚を選び、マイコンを外して新しいFCを2個作ろうと思います。

では取り外しから。ヒートガンで温めると・・・

隣の発振子も一緒に外れました。

もう一個も外しましょう。今度はレギュレーターらしきICも一緒に外れました。

次に新しい基板にハンダペーストを塗って部品を載せます。前回までは古くなったハンダペーストにアルコールをスプレーして無理やり使っていましたが今回は新しいハンダペーストを使う事にします。

そしてリフロー

なんかいっぱいブリッジしています。

でも裏面に進み、またリフロー。

裏面は結構うまくできました。

問題は表面のブリッジ。 基板から外した時にリードが曲がり、これを完全に直していなかったのでバラバラです。
実装前にもっと完璧に直しておくべきでしたね。
もう半田ゴテでやるしかありません。汗かきながらなんとか修正しました。

またSHコネクタが思いっきりずれているのを発見。
リフロー前に手でも当たったのな?こちらも修正。


なおこの部分、F4の頃はSBUS信号を入れる為に反転回路を通す必要があったのでXOR用ICを載せる設計にしていましたが、前回F7だと反転不要である事が判ったのでXORは載せずに直結しています。

ところで私のレベルでは実装をミスる事が結構あるので実機に載せてテストするまで安心できません。という事で実装テスト。

一番良く実装をミスるのがジャイロセンサーのMPU6000ですが、今回新品のハンダペーストが効いたのか一発で動作しました。

しかし片方の基板はバッテリーから電源を供給するとDCDCコンバータ付近からジーという音がします。このDCDCはバッテリー電圧から5Vを作り出しますが、5V波形をオシロで見てもガタガタです。
DCDC周りの配線を見まわしても原因らしきものが見当たらないし、以前「MP1584EN その3」の時にハズレICを引いているので今回もMP1584ENを外してみました。外観は異常ない様ですが、別の個体を取り付けてみると正常になったので、やっぱりハズレICを引いたんですかね(もう一度このICに戻せばハッキリするんですがやる気が起きません)。’’

前回のハズレ品は裏面パッドが無かったけど今回はちゃんとついています。

今のところ10個買った内の2個がハズレなのは確率高すぎですね。やっぱりパチもんだったのかなぁ。まだ半導体不足になる前とはいえ10個で218円だったしなぁ。

ところでこの部分、VTX用の5V電源をチップコンデンサの根本から取っています。

回路図ではこの部分で・・・

ここから5Vを取ればUSBから電源供給する時にはVTXを動作させなくできます。
もし通常の5V端子からVTX電源を取ると、レースや大勢で飛ばすとき、PCと接続してレートを変更するだけでも電波が出てしまうと色々と不都合があるのです。
次に基板を設計する際はこのためのパッドを設けておこうと思います。

そんなこんなでFC2枚完成です。

実は今年も7月23,24日のJDL宮崎戦に参加する予定なので予備基板を作っておきたかったのです。機体に積んでいるFCは去年作ったF4搭載の物なので今回作ったF7の方が高性能ですが、レースまでに飛ばす機会がないので実績のある方を積んでいきます。
去年は自作FCで参戦する事が目標な感じでしたが、今回は人並みのタイムで飛ばし、できれば(オープンクラスですけど)予選を通過したいと思います。

フライトコントローラーを自作してみる。~その17~ F7マイコンを載せる。

自作フライトコントローラーにはSTM32F411というマイコンを搭載していました。これは普通に飛ぶには十分な性能ですが、RPMフィルター等という負荷の高い処理には計算周期を下げる必要があるのです。そこでもっと早いマイコンを試したかったのですが、恐らく昨今の半導体不足のせいで納期が未定だったり発注してもキャンセルされたりして入手できていなかったのです。

そこに救世主が現れました。

宮崎ドローンクラブにお邪魔して練習させていただいたとき、基板のパターンがはがれて使えなくなったフライトコントローラーを頂いてきたのです。
これにはSTM32F722RET6という、まさに欲しかったヤツが載っています。

という事で、この基板からマイコンだけ取外しHOIHOI-FCに載せてみました。
今回も色々発見があったので忘れない内にこのブログに書いておきます。

まず頂いた基板をヒートガンで温めてマイコンを外しました。

そしてHOIHOI-FC Rev2基板に搭載します。

組み立て後の一発目、安定化電源から5Vを供給して電流を測ると180mAも流れていました。 F411搭載基板では70mA程度なので、 これはどこかミスったと思いショートした箇所を探したのですが、それらしき所は見当たりません。

そこで恐る恐るUSBケーブルでPCとつないでみたところ、あっさりとDFUモードに入りファームを書き込む事が出来ました(F722用ファームは前にビルドしておいたのです)。
もしかするとOSDデバイスに大電流が流れているのかという事も考えたのですが、カメラとVTXを繋ぐとこちらも正常動作しています。
またESCと接続してモーターを回しても正常です。
暫く通電していると結構温まりますがF7だとこれくらい流れるのでしょうか?データーシートには最大300mA流れる様な事が書いてあるので今の所これで正常だろうと思っています。

という事で、とりえあずはあっさり動作したかと思ったのですが、そう簡単にはいきませんでした。

受信機からSBUS信号を入れても受け付けてくれないのです。

このFCでは下図の回路でUART6RX端子にSBUS信号を入れています。

SBUS信号は通常のUARTとは極性が逆なので間にXORを入れて反転し、将来通常のUARTデバイスを接続したくなった場合はJP3をショートさせる事で正極性に戻せる様にしているのです。
今回SBUS信号を何故か受付けず、色々試してもダメなので 反転回路を外部のブレッドボードに載せてUART2から入れてみたけど、これでもダメでした。

こりゃファームの設定が間違っているのかと見直してもそれらしい箇所が見当たりません。

で、色々試している内に突然動作したのです。
改めて回路を見直すと、誤って外部で反転させた信号をまたXORで反転させていました。
・・・という事は反転しなくても良かったの?
そこでXORのジャンパーJP3をショートさせると正常に動作する様になりました。またUART2に直接(反転なしで)入力しても動作します。

F4の時は反転必須だったのにF7だと不要になった・・・?
F7のデーターシートでUARTの機能を確かめると次の文言があります。

「Separate signal polarity control for transmission and reception」

極性を個別に設定できる?(って事は個別じゃなければ今までもできたんか?)
詳しい事は解りませんがマイコン自体に極性を反転する機能が付いたのでBetaflightがこの機能を使って上手くやってくれるみたいですね。
という事はF4の時みたいにSBUS信号は反転回路がついたUART端子に接続しなければならないという制約はなくなり、F7なら受信機をどのUART端子にでも接続できるのだと思います。これは便利になりましたね。
今回はXORの片方の入力をLに落として対処しましたが次からはXORの搭載自体を止めて直結しようと思います。

という事でF7で一通りの機能が動作したので息子が持っていた適当な機体に載せてみました。
飛ばしてみると上手く飛んでいる様です。

RPMフィルターでハマる。

次にせっかくのF7なのでRPMフィルターをオンにすると・・・
フリップした時に変な挙動をしました。何だか急に思った以上のレートで回転した様です(さっきから「様です」と言うのはこの辺りのテストパイロットは息子に任せているのです。自分じゃフリップとかできないので。)。
もう一度RPMフィルターOFFに戻すと正常。またONにすると異常。
明らかにRPMフィルターが絡んでいます。

なんか、波形的な問題か?
そこで写真の様な中継基板を作ってFCとESCの間に割り込ませ、オシロのプローブを当ててみます。

で、波形はこれ。。。

モーター2 のDSHOT600 双方向ONの波形

ちょっとオーバーシュートはあるけど鈍ったりはしてなさそうですけどねー。
気になって市販のFCを眺めると、STM32の出力とモーター信号の間に100Ωの抵抗が載っていました。たぶんオーバーシュートを抑えるダンピング抵抗ですかね。または双方向Dshotで万一信号がぶつかった時の保護?

市販FCはこうなっていました。HOIHOI-FCには抵抗はなく直結です。

これが無いとだめなのかな?そこで先程の中継基板に100Ωを割り込ませてみましたが・・・効果はありませんでした。

ここであと一つ心当たりが・・・RPMフィルターをONにして動作を確認したとき、BetaflightConfiguratorのモータータブを使ってモーターを回転させ、回転数が取れている事を確認しますが、この時モーター2だけエラーレートが0.6%前後となっていたのです。

赤線部分が回転数取得のエラーレート。

BetraflightのWikiによれば1%程度までに抑える様にと書かれています。0.6%なので良さそうにも思えますが、過去に幾つかの市販FCで試した時は0%しか見たことはなく、今回の動作異常と関係しているかどうかは分かりませんがちょっと気になります。

この原因、色々試した結果 ファームをビルドする際のコンフィグファイルtarget.hに以下の記述があるとダメでこれをコメントアウトするとエラーは消えました。

#define DSHOT_BITBANG_DEFAULT   DSHOT_BITBANG_OFF

この記述はCLIで設定を見たときの’DSHOT_BITBANG’に相当します。
‘DSHOT_BITBANG’ はON|OFF|AUTOのいずれかを選択する内、上記行が記述してある場合はOFF、上記行を削除するとAUTOになる様です。
そして回転数取得のエラーはOFFだと発生し、AUTOまたはONだと発生しませんでした。

この辺り、BetaflightWikiにはOFFにしろと書いてある様に見えるので(英語ですが、たぶんそういう意味だと思います。汗。)、試した現象とは逆なのです。
どなたか真相が分かりますか?(そもそも DSHOTでのBITBANGとは何を意味するのでしょう?)。

何はともあれ市販のFCを見てもAUTOになっているし、HOIHOI-FCもAUTOで様子を見る事にします。

そして回転数取得エラーが無い状態で飛行させると「変な挙動」は無くなりました。やっぱり回転数エラーと同じ原因だったみたいですね。
以上で当面の使用には問題はなくなりました。

でもあと一つ気になっている事があります。

HOIHOI-FCはモーター8個まで制御できる端子を設けており、いずれオクタコプター(モーター8個の機体です)を作るという野望があるのです。
ここでCLIモードでDUMPコマンドを使って設定を見るとDMA周りが次の様になっていてB09端子にDMAが割り付けられていません。

 dma pin B04 0
pin B04: DMA1 Stream 4 Channel 5
dma pin B05 0
pin B05: DMA1 Stream 5 Channel 5
dma pin B06 0
pin B06: DMA1 Stream 0 Channel 2
dma pin B07 0
pin B07: DMA1 Stream 3 Channel 2
dma pin B08 0
pin B08: DMA1 Stream 7 Channel 2
dma pin B09 NONE
dma pin A00 0
pin A00: DMA1 Stream 5 Channel 3
dma pin A01 0
pin A01: DMA1 Stream 6 Channel 3

なおDMAというのはDirectMemoryAccessの略で、CPUを介さずメモリーと周辺レジスタとの間でデーター転送を行う機能です。その間CPUは別の仕事ができるので負荷が下がるのですが、具体的にDSHOTの制御として何をしているのかは分かりません。
これでも全端子ESCに繋いで回せる事は確認済みなのですが・・・。
でも一つだけDMAを使えないというのは気持ち悪いですよね。 もしかするとこれもRPMフィルターで影響を受けるのかも。

で、B09端子というのはモーター6に割り付けています。これはファームのコンフィグファイルtarget.cの中で下記(ここではPB9と表現)の様に指定しています。
そしてこのモーター端子はタイマー4のCH4を使用しています。

 DEF_TIM(TIM3, CH1, PB4 ,  TIM_USE_MOTOR,  0, 0), // MOT1
DEF_TIM(TIM3, CH2, PB5 , TIM_USE_MOTOR, 0, 0), // MOT2
DEF_TIM(TIM4, CH1, PB6 , TIM_USE_MOTOR, 0, 0), // MOT3
DEF_TIM(TIM4, CH2, PB7 , TIM_USE_MOTOR, 0, 0), // MOT4
DEF_TIM(TIM4, CH3, PB8 , TIM_USE_MOTOR, 0, 0), // MOT5
DEF_TIM(TIM4, CH4, PB9 , TIM_USE_MOTOR, 0, 0), // MOT6
DEF_TIM(TIM2, CH1, PA0 , TIM_USE_MOTOR, 0, 0), // MOT7
DEF_TIM(TIM2, CH2, PA1 , TIM_USE_MOTOR, 0, 0), // MOT8

なぜこのモーター6だけがDMAが割り当てられないのか、この原因を探るため、STM32F72xxxリファレンスマニュアルを調べると下の表がありました。タイマー番号_チャンネル番号毎にDMAの割り当てが決まっている様です。
表の中で色を塗っている項目はHOIHOI-FCでモーターに使っているタイマー番号ですがモーター6に割り当てているTIM4_CH4は記載がありません(なので恐らくDMAが割り当てられない)。

次に基板を変更するときはこの辺りの端子割当ても考え直そうと思います。
また今の基板のままオクタコプターをやるなら他の端子を使う事も可能です。例えば現状UART2に割り当てているPA2,PA3だとTIM2_CH3,TIM2_CH4なので,どちらもDMAの割り当てがあります。UART端子は1本減りますが。

という事で・・・

まずはF7でも使えそうだという事が分かってきました。
次に基板を作るなら直したいところが色々と溜まってきましたが 、そもそもF7のマイコンがまだ普通に買えそうにないんですよね。

フライトコントローラーを自作してみる。~その15~ 基板データ公開

フライトコントローラーを作ってみませんか~?
HOIHOI-FC F411 Rev2基板のKi-cadデータとガーバーを公開します。

基板データ

Ki-cadデータ→HOIHOIFCF411R2.zip
ガーバーデータ→HOIHOIFCF411R2_gerber20210314.zip
※Ki-cadはVer5.1.9で作成しました。
 ライブラリのキャッシュファイルも含んでいるので大丈夫なつもりですが、
 もし何か不足していたら連絡ください。
※そのままの形で基板を発注するならガーバーデーターだけで大丈夫です。

部品表

部品表→HOIHOIFCF411Rev2BOM.ods
※参考に私の購入先も記載しています。

部品配置図

部品配置図(表)→HOIHOIFCF411R2PlaceFront.png
部品配置図(裏)→ HOIHOIFCF411R2PlaceBack.png

基板データの使用に関する表示

今までこのサイトの掲載物に著作権的な表示をしてこなかったのですが、利用しやすくする為、きちんと表示したいと思います。
どういう形式が良いか考えた結果、クリエイティブコモンズ CC BYとして公開するのが良かろうという結論になりました。詳細はこちらを参照ください。

クリエイティブ・コモンズ・ライセンス
上記基板パターンはクリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供しています。

Betaflightファームウェア

ファーム→ betaflight_4.2.8_HOIHOIF411R2_101738d8e.zip

FCを作るには

もっと詳細に書くべきですが取り合えず簡単にいうと・・・
まず基板メーカーにガーバーデーターを送って発注します。この時メタルマスク(裏/表)も一緒に作成します(私はPCBGOGOに発注しました)。
並行して部品表に記載した部品を入手します。
メタルマスクを使って基板にクリームハンダを塗ります。
配置図に従って部品を載せ、リフローすれば完成!
あとはBetaflightConfiguratorを使ってファームを書き込んで使います。
※細かい所は過去に書いたブログを参照願います。

フライトコントローラーを自作してみる。~その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なので多分大丈夫。(ただし送料が若干高い気がするし、また面付けすると高くなるので用途によって使い分けてます)

つづく・・・

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

フライトコントローラーを自作してみる。~その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℃くらい高い温度となるのでその分と跳ね上がり分を差し引いた上限値にします。

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

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

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

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

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

そして基板・・・

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

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

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

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

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

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

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

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

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

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