replyESC自作実験の続きです。何はともあれ目標とする回路図を書いてみました。動作させてみてマズいところは修正していきます。マイコンのマニュアルはSiLabsの公式ページからダウンロードしました。https://www.silabs.com/documents/public/reference-manuals/efm8bb2-rm.pdfドライバのマニュアルは良く分からないところからダウンロードしました。https://static.qingshow.net/fortiortech/file/1597746029372.pdf回路をざっと説明すると次の通りです。制御用マイコンSiLabsのEFM8BB21F16G。この中のBLHeli_Sファームウェアが全体を制御します。MOS-FETで、手持ちの2SK2232を使用します。全てはこの6個のMOS-FETを狙い通りにON/OFFする事がESCの目的となります。FET駆動用ゲートドライバFORTIORのFD6288Q。パワーMOSのゲート駆動用ICです。ゲート駆動するのもそれなりのパワーがいるので電圧及び電流容量アップ、またH/L同時ONの防止等を行います。ブートストラップ回路NchのパワーMOSを駆動するにはソース端子よりも10V程度高い電圧が必要です。H側FETがONしている時、ソースとドレインはほぼ同電位なので、結局電源よりも高い電圧が必要です。ブラシレスモーターをセンサー(ホール素子等)を使わずに回すには、現在の回転角を検出する必要があります。このためコイル電圧を抵抗分割してマイコン内臓のコンパレーターで検出します。ゲートドライバICにはパワーMOSと同じ電源電圧を入れているので2~4セル程度の電圧なら回せると思いますが、2SK2232のゲート・ソース間電圧が最大20Vなので6セルで回すとFETが壊れるかもしれません。部品摘出元の市販ESCでは12Vのレギュレータを挟んでゲートドライバに入れてありました。製作で、作ったのがこれ。パワーMOSは手元にあった2SK2232を6個使用しています。マイコンとゲートドライバは先日作った基板に載せて、それをブレッドボードに挿しています。モーターは軸が曲がったジャンク品を接続。Rev2があるので実機には載せないけど諸々の実験には便利に使っています(なにせ内部の回路が全て判っているので)。ここからDshot信号を発生させるのです。配線をミスってたりQFNのハンダ付けが上手くいってなかったりしましたが、何とか動作しました。EFM8BB2を使ったESCではBluejayというファームウェアをインストールできます。(Bluejayの存在は最近知ったのですけど・・・)BluejayはRPMtelemtryが使える等の機能強化がなされているのです。インストールするにはブラウザから下記のサイトを開くとコンフィグレータが立上がります。https://esc-configurator.com/(Chromeで実行しました。ほかのブラウザは試していません。スタンドアロン版もある様ですがメンテしないので非推奨と書かれていました。ドローンの場合ネットが繋がらない環境で使う事も多いので、その場合どうなんでしょうね?)実行結果が下の画面です。BLHeliSuite同様、FC経由でConnectしてファームを書き換えました。メロディーエディター機能もあるのでスタートアップのビープ音も変更してみました。Bluejayに書換後、モーターが回らないので焦りましたが、原因はFCのプロトコル設定がPWMになっていました。BluejayはPWMのサポートは無くDshot専用なんですね。Dshotに変更し、更にRPMtelemetryをONにした動画。BetaflightConfiguratorに回転数が表示されています。いう事で・・・バラック状態ですがESCを作れる事が分かってきました。One)基板を作るという野望があります。これはかなり大変そうですね。Ki-cad上で基板設計は出来たとしてもチップ抵抗もこれまでより細かいサイズにする必要があるでしょうし、部品点数も多いので手作業での実装はたぶん無理。Reply大晦日に基板が到着したので作業を続行します。前回の投稿にジャンクESCからマイコン(EFM8BB21F16G)とドライバIC(FD6288Q)を摘出した事を書きました。これらのICを基板に載せ、ブレッドボード上であれこれ実験する予定です。今回はメタルマスクを作らなかったのでコピー用紙をレーザーカットしてクリームハンダを塗ります。部品を載せて・・・リフローしました。チップ内蔵クロックを使用するので発振子も不要ですし、この後ピンヘッダと電源のコンデンサだけを取り付けました。マイコンの動作確認ではEFM8BB2マイコンのGNDとP05端子にフライトコントローラー(以下FC)を接続し、3.3Vの電源を入れます。この状態でBLHeliSuiteを起動すると設定内容を読出せたので、マイコンは生きていますね(ジャンクから取出したので一応確認)。次はマイコンに何か書き込んでみたいのですが、公式の書込み機(Toolstick)は持っていません。調べたところEFM8BBxマイコンにプログラムを書き込むにはざっと以下の方法がある様です。C2インターフェース経由での書込み。公式の書き込み機(Toolstick)はこのC2インターフェースに接続する様です。新品状態ではこのブートローダーが書かれていてUARTから書ける様ですが、今回ESCから摘出したマイコンには下記のBLHeliブートローダーが上書きされているので、この方法は使えません。BLHeliブートローダーESCを購入した時点でファームウェアと共に書かれているブートローダーで、FCからの信号端子をそのまま使ってファームを書き換える事ができます。普段FC経由でファームをアップデートする時はこのブートローダーが動作しています。いう事でまずはBLHeliブートローダーからのファーム書換えをやってみます。言っても普段やっている通りで、FCを接続すると問題なく書換えができました。将来的に新品マイコンを買ってきた場合にはこの方法は使えないのでC2インターフェース経由でも読書き可能な事を確認したいですね。公式のマニュアルによると開発ツールのSimplicityStudioから書込み機(Toolstick)を使って接続する様ですが、上記の通りToolstickは持っていません。そこで見つけたのはPCでBLHeliSuiteを立上げておいてArduino経由でC2インターフェースに接続する方法。この方法ならBLHeliのファームを壊して文鎮化した場合でも書き直せる様です。BLHeliSuiteからArduino経由C2-I/Fでファームを書いてみる。流れを言うと、BLHeliSuiteを起動し、まずArduinoにファームを書込むことでArduinoがC2インターフェースでの書込み機に変身します。(この時ArduinoIDE等は使わず、BLHeliSuiteから直接書くことができます。)その後Arduinoとマイコンを接続してマイコンにファームを書込む流れとなります。interfaces」タブをクリックすると下の様な画面になりました。4way-interface」をクリックします。ここで3つのファームから1つを選ぶ画面が現れたので4wArduinoNano_16_PB3PB4v20002.hexを選択しました。(ここでPB3PB4とかPD3PD2というのはArduinoのどの端子をC2インターフェースに接続するかの違いだと思います。MULTIというのは良く分かりませんが複数のESCを接続できるんでしょうね?)あとは「開く」とか「OK」(だったかな?)とかを適当に押すとArduinoにファームが書き込まれます。これでArduinoが書込み機となりました。次にArduinoとEFM8BB2マイコンの間を接続して電源を入れます。C2(4way-if)を選択します。BLHeli」とボタンを押してファームを選択すると書込みができました。Lチカプログラムを書いてみる。上記の方法で当面の目的は叶えられました。前回ビルドしたLチカサンプルプログラムを書込んでみようと思います・・・が、BLHelisuiteでLチカプログラムを書こうとするとエラーが出てきました。「変なものを書いているよ」という警告ですがキャンセルボタンしか無いです。書き込めるわけではない様ですね。そこで更に調べていくとow-Silprogというのを発見しました。こちらもBLHelisuiteと同じ様にArduino経由で読み書きするツールです(どうやらBLHelisuiteのC2接続機能のベースになったツールっぽい)。こちらはAvrBurnToor_V101.exeを使ってArduinoにファームを書込みますが、そこからC2インターフェースに接続するので基本的にやっている事は同じです(但しArduinoに書いたファームはBLHelisuiteとは互換性はない様でした)。このサイトの説明によるとWindows上で動くGUIツールを使った読み書きもできる様ですが、このツールの存在場所を見つけられませんでした。コマンドラインから使う為の命令一覧が載っているので、こちらは実行できました。この方法でマイコンFLASH内のアドレスを指定して内容を読出す事ができます。実はジャンクから摘出したマイコンではファクトリーブートローダーは上書きされていると先ほど書いたのはこれで読んだ結果からです。bwというコマンドではインテルHEX形式を指定して書込めるという事なので、下の様に1行ずつ書き込んでいきました(Lチカプログラムは10行もないのでコピペで実施した)。これでLチカも動作していますね。ファクトリーブートローダーを書き戻す事も出来そうですがキリが無いので一旦止めて、本来の目的であるESCを動かす事を先に進めたいと思います。Reply前からやってみたかったESCの製作をしてみました。以前FCを作ったので、加えてESCも作れるとドローンの主要パーツが揃う事になります。:フライトコントローラーマイコン基板にセンサーが載ったやつ。ESC:エレクトリック・スピード・コントローラーブラシレスモーターを回すドライバ。今回もESCのファームウェアを1から作るような根性はないのでオープンソースの優秀なファームを使う予定です。レース系ドローンでよく使われるESC用ファームにはBLHeliというのがあり、更にBLHeli内の分類、その他最近登場したファームも含めて整理してみました。BLHeliAtmelやSiLabsのマイコンが対象ですがちょっと古いタイプでレースではあまり使われません。generationという事です。_Sが何を意味するのかは判りません。SiLabs製マイコンのみ対象でAtmelは対象外みたいですね。BLHeli_32STM32マイコンを使った32bit版です。telemetry(回転数をFCに送信する機能)がありFC側でRPMフィルターという高度な処理ができるのですが、上の二つと違ってソースが公開されてないっぽいです。telemetryが使えます。AM32これも先ほど知ったのですがSTM32を使ったオープンソースのファームウェアらしいです。今回製作するESCはBLHeli_Sを対象にします。上手くいけば後にbluejayも試そうと思っています。SiLabs製マイコンについてという事でSiLabsのマイコンを使う事になりますが、このメーカーって馴染みが無いので調べてみました。BLHeli_SでサポートしているのはEFM8BBxという8bitマイコンで、このCPUコアはインテル8051の命令セットとコンパチです。8051って随分昔に使った事があり懐かしいですね。8080に周辺回路をつけてワンチップマイコン化した様なやつだったと思います。EFM8BBxは処理速度が大幅に向上しているそうです。ところでBLHeli_Sのソースはアセンブラで書かれているんですね。80のアセンブラなんてすっかり忘れたなー。StudioというのがSiLabsのサイトからダウンロードできます。そこで絶対必要というわけではない(ビルド済HEXファイルをダウンロードすればよいので)ですがBLHeli_Sをビルドしてみたいと思います。StudioにはWindows上で動くGUIな開発環境が付属していますがBLHeli_Sのビルドはコマンドラインからバッチファイルを実行します。実行してみたところC8051開発ツールが評価版なのでサイズの制限でビルドできないっぽいメッセージが出ました。内部で使っているKeliというコンパイラ/アセンブラのライセンスをARMから買うっぽいですね。BLHeli_Sのビルドは絶対ではないので一旦置いといて付属のサンプルからLチカプログラムを実行したところ、やはり同じメッセージが出て止まりました。Studioを使うならKeliのラインセンスは無料でもらえっぽいメッセージが出ているので表示に従ってラインセンスをもらうとビルドできてしまいました。いう事はBLHeli_Sもビルドできる様になったのかな・・・もう一度バッチを実行してみると確かにこちらも最後まで進み、無事HEXファイルが出来ていました。何はともあれ実行してみる為のハードウェアが必要です。EFM8BBxの評価ボードを調べると市販はされていますが5000円以上します。考えるとこのマイコンは沢山持っていますよね。こんな感じで・・・ジャンクのESC群。ここから摘出すればよいのです。FD6288Q)も摘出できます。ドライバICのFD6288QはH側にN-MOSを使う場合に必要な電源電圧より数V高い電圧を発生してくれたり、H側とL側が同時にONして貫通電流でFETを壊す事故を回避してくれます。いう事で摘出しました。x3個マイコンとドライバ、どちらも0.5mmピッチのQFNパッケージなのでそのままでは配線し辛く、引き出し基板が必要です。Ki-Cadで描いてFutionPCBに発注しました(送料込みで$16.4)。引き出し基板が届いたら色々試していきたいと思います。feedWordPress.orgこちらも見てちょ~だい。