ロボマスモーター(M2006)を自作ドライバで回す

 どうもこんにちは。さばねっこです。

 

 突然ですが皆さん、ロボマスモーターは使っておりますでしょうか。

m.dji.com

m.dji.com

 最近のロボコン界隈でのロボマスモーターの流行り具合は凄まじいですよね。
 先日の学生ロボコンも、強いチームは大体採用している印象でした。昨年の高専ロボコンでもいくつかのチームが採用していましたね。今年はどうなることやら。

 このロボマスモーターの何がいいって、機械的に見ても制御的に見ても、レベルの高い合格点を超える性能をオールウェイズ出してくれるところですよね。

 このサイズ感で連続1Nm出るんですよ。頭おかしいんじゃないの。

M2006

 しかもめっちゃ小さくて安全性の高い専用ドライバまで販売されています。これは採用しない理由がない。

 

 

 ……でも高いのよ……。

 まとまった予算があればいいのですが、ABチームが完全に別予算なクソ状況の弊学高専ロボコン界において、導入はかなり難しい。

 というわけでドライバを自作することにしました(???)。

 

 まあ実際にはOBの方に、「モーターは買ってあげるけどドライバは自分で用意してね♡ もしくは高専ロボコン地区大会で優勝してね♡♡(意訳)」という試練を課されたからです。何故。

 

 というわけでやっていきます。

 

ドライバの用意

 まずドライバ回路を用意するわけですが、実はたまたま暇つぶしにBLDCドライバを設計していたのでこれを使います。

github.com

 ※mainブランチ(実際に発注した基板)はミス多すぎワロタで死んでるので参考にするならver2_devブランチの方でお願いします。

 

 4層基板でJLCPCBでPCBAしてもらいました。一枚当たりの部品はコネクタ抜きで5ドルくらいに収まりました。最高です。
 一応連続20Aぐらいのつもりです。でもGNDパターンがカスなので微妙。まあ設計しなおして再発注するつもりなので…。

 あ、そういえば電源入力のコネクタにXT30(2+2)を採用してみました。電源とCAN信号を一つのコネクタでやり取りできます。めっちゃ便利でおすすめ。

XT30(2+2)

 まあ入手性は割とゴミなんですけどね。僕はアリエクで入手しました。

https://ja.aliexpress.com/item/1005003667387663.html?spm=a2g0o.order_detail.order_detail_item.5.5fbf16912J76b8&gatewayAdapt=glo2jpn

 

 パワー系の回路は問題なく動作したのでとりあえずOKです。

 

ロボマスモーターのエンコーダー

コネクタ

 ロボマスモーターを自作ドライバで回すうえでの一番の障壁ってエンコーダのコネクタですよね。そうだよね。

エンコーダーのコネクタ

 全く見たことのないコネクタだったので探さないといけません。

 まあでも、こういう圧着端子はJST製と相場が決まっているので取り合えずカタログから探します。1.25㎜ピッチのロック付きで絞り込むと…

www.jst-mfg.com

 …これやん。

 というわけでGHコネクタでした。あっさり見つかってよかった。

 DJIレベルの企業ならワンチャン独自コネクタ…?とも思ったのですが汎用品で助かった。JSTすごいですね。

出力形式

 コネクタが見つかったのはいいですが、まだ肝心のエンコーダーの出力形式がわかりません。というのも4本の信号線の内、2本が電源で信号線は残りの2本だけなんですよね。

 一般的なホールセンサなら3本の信号線になるはずなのでとても謎。

 というわけでオシロで見てみました。

 まだコネクタが届いていなかったので無理矢理接続します。

 まさかのアナログ出力。出力が90度ずれているので、ローターの電気角に対するsinとcosが出力されているようです。

 赤がエンコーダー出力(正規化済み)で、橙がPWM角に対するsinです。
 モーターはめちゃめちゃゆっくり回しているのでPWM角はほぼローター電気角のはず。

  ベクトル制御をする際にpark変換という変換をするわけですが、そこで電気角に対するsin、cosが必要になります。いちいち計算しなくてもこのエンコーダー値を正規化するだけでいいので最高ですね。
 park変換する程度であればこれくらいの精度でも多分大丈夫。

 角度を知りたくなったらarctanしないといけないので演算が遅くなって面倒ですが…。

 ただ、エンコーダがアナログ出力というのは想定していなかったので、無理矢理エンコーダーコネクタをアナログ入力に対応させます。

 ちなみに、もともとこのエンコーダーポートは、インクリメンタル、SPI、I2Cなどの様々なインターフェイスを使用できるように設計していたのですが、この改造でさらに意味わかんない感じになってしまいました。

 ホールセンサ/ABX/SPI/I2C/ADC/UARTが使える超マルチポートでございます。
 意味が分からない。 

回す

 ここまで来ればあとは適当にdq電流をPIDするだけですね。

なぜか激ヤバゲインで回してる動画しかなかった()。本当はもっと静かに安定して回せます。

 

 

 まあ、あとはいい感じにゲインなどを調整して通信系を整えるだけなので大したことはないと思います。これから頑張る(頑張るとはいっていない)。

 

 エンコーダーの出力が想定外でしたが、それ以外は普通に回すだけだったのでベクトル制御の経験があればそれほど難しくは無いと思います。

 専用ドライバのC610は4500円もするので作る価値は…。面倒だし信頼性も微妙なのでC610/C620を買うべきですね。

 

結論:金があるなら純正買え

(あ、このドライバは完全に趣味なので弊学ロボコン部が使うことは多分ないです。後輩の皆さんは純正買って幸せになってください。)

 

追記

 なんか内容薄味すぎ太郎だったのでモーターを分解した感想でも。

 ありがちなドローン用と違って重量を気にしなくていいので結構ガチガチですね。

 多分この部分は全部金属の塊ですよね。モーターを回しているとギアヘッドが結構熱くなっていたので、ギアヘッド側に熱を逃がす設計思想でしょうか。
 ドローン用モーターと違って風による強制冷却は期待できないのでまあ妥当。

学生ロボコン2023に出たよっていうやつ(作ったものも)

 どうもこんにちは。さばねっこです。

 実は、先日開催されたNHK学生ロボコン2023に豊田高専からピットメンバーとして出場させていただきました。

www.youtube.com

 豊田高専は学ロボ初出場なのですが、なんと決勝トーナメントに進出し、ベスト4という結果を残すことができました。うーんつよい。

 

 というわけでそれの感想と作ったもの紹介的な感じの記事になります。

 

作ったもの

 まずは大会に向けて僕が作ったものから。

 とはいえ大したものは作ってないですが…。高専ロボコンで成仏してモチベが死んでました。先輩方ごめんなさい。

DCモタドラ

 まずはブラシ付きモーター用のモタドラから。

モタドラちゃん

 設計自体は高専ロボコン界隈では超ポピュラーなピンヘッダ縦刺しスタイルですね。熱設計はそれなりに真面目にやっています。計算上はヒートシンクありで連続40A出せる。

 ちなみに、電流センサにMAX40056というブルジョアいいやつを採用しているのですが、こいつには過電流アラート機能が付いてまして…。ハードウェア過電流保護機能を簡単に実装できてしまいます。つよい。

MAX40056双方向電流センス・アンプ - Analog Devices / Maxim Integrated | Mouser

 

 

 オフセット電圧なども超低くて最高です。少々高いですがおすすめ。

 回路図などはこちらに上げておきました。良かったら参考にしてください。kicad6です。

github.com

縦刺しモタドラって見た目だけはいいですよね。ただピンヘッダスタイルだと安定性が微妙な気もするので、カードエッジコネクタや3dプリンタ治具の仕様をお勧めしておきます。

BLDCドライバ(VESC)

 つぎは足回りや射出機構に使用したBLDCドライバですね。オープンソースのドライバであるVESCをもとに製作しました。GUIなどが整っているのでお手軽です。

VESC Project

 連続60Aとかいうキチガイ要求スペックに応えるために熱設計はわりと真面目にやっています。クソデカヒートシンクはその末路。

 まあジャンパ線が見えてるところからわかるように若干設計ミスってます。オープンソースの回路図なのになぜ間違えるのか。コレガワカラナイ。

 というかどう考えても連続60Aとかいらんやろ。何がしたいんでしょうねほんとに。コネクタ焼けること必至。

エレファントの足回り

 とまあ作ったものはこれくらいです。まあ電源基板とかもあるけどそれは高専ロボコンの方とほぼ同じなので。

sabanekko2.hatenablog.com

 

高専から学生ロボコンに出るということ

 そもそも高専生ならおとなしく高専ロボコンに出ておけって話ですよね。僕もそう思う←。でもなぜかうちのリーダーは出たいって言い出しちゃったんですよね。意味が分からない。で、それに学ロボ経験者の先生が乗っかって無事(?)出場することに。

 もちろん順調にロボットが完成するわけもなく迷走の連続でした。って語るのは僕がやるべきことじゃない気もするけれど

 当然2022年度の高専ロボコンが終わるまではほとんど活動していませんでした。僕に関してはやりたかったことが大体できてしまってモチベが死んでましたし…。その状況でエレファントは3回、ラビットは4回完全に作り直しています。メンバー合計11人、実働はもっと少ないわけなのでまあまあ大変だった。

 まあ、こうして運も味方したおかげで我々はベスト4まで上り詰めることができたわけですし、学ロボに挑戦したい高専の方々は挑戦してみては?

 なんかいろいろ書きたかった気もするけれどわすれちゃった…。まあいいか。

 

 

 最後に、本番をテストに被せてくるNHKは反省すべき。高専ロボコンの全国大会もだけど。
 というか高専ロボコンの時と違って全然交流できなくて無念すぎる…。TLの方々の基板をいっぱい拝む予定だったのに全然見れませんでした。全部台風のせいってことで。

プリント基板コイル(PCBステータ)を使ってモーターを作る会 その2 制御編

どうもこんにちは。さばねっこです。

今回は製作した自作モーターをいい感じに制御する記事(tekitou)です。

前回はこちら

sabanekko2.hatenablog.com

まあとはいってもやることは一般的な同期モーターのベクトル制御の実装なのでさほど目新しい内容はないよう(激ウマギャグ)。

ドライバ基板

とりあえず、ベクトル制御しようにも回路が無いとどうにもならないので適当に基板を設計します。

pcb設計

マイコンはSTM32F303を採用。デバッグ用にUSB type-Cも載せておきました。

今見るとパワー部分のGNDがちょっとキモいかも。まあ問題なく動いてたのでヨシ!

ちなみに、この時はじめてkicad7使いましたが結構いいですね。まあ自動配線機能とか使ってないのでほとんどkicad6として動かしてるわけですが…。

基板のデータはこちらにアップロードしてあります。参考になるかは知りませんがしてください。

github.com

そして基板をJLCPCBに発注して着弾

 

基板とおしゃべりかわいいね

特に目新しいことはやってないので問題なく動いてくれました。

制御実装

ここからベクトル制御を実装していくわけですが、現在のローター角度を取得する必要があるので適当な磁気エンコーダーを使います。センサレスなんもわからん

一応基板の裏にAS5048を乗せられるようにしているのですが、高いので取り合えずアマゾンで売ってた安い奴(AS5600)を使ってみます。

https://www.amazon.co.jp/dp/B0BLSHGNNL/

これで無事に角度を取得してベクトル制御できましたバンザイ!!、とはなりませんでしたありがとうございます。

そもそもAS5048はSPI通信なのに対してこいつはI2C通信なんですよね。なのでこんな感じのカス違法建築で無理矢理接続してます。

卍違法建築卍

そして無事接続できたはいいもののどうにも安定しない。僕の送ってるコマンドが悪いのかもしれませんが、定期的に角度値が一定値にへばりついてしまい、まともに角度を取得できませんでした。

しょうがないのでクソ高いAS5048を購入。

ついでにドライバ基板とモーターを合体させます。

見た目は割と気に入ってる。

ドライバ基板の裏にこんな感じでAS5048を乗せています。わかりずらいけど。

エンコーダー(わかりづらい)



これでようやくベクトル制御~~と思ったらなぜかまたうまくいかない。現在の3相電流をdq電流に変換しようとしても、なぜかpark変換が思うようにできないんですよね。

原因が全く分からずに色々試行錯誤していたのですが、全然わかりませんでした。というわけでtwitterに投下

一瞬で解決してしまいました。つよい方々本当にありがとうございます!!!!!

原因としては3相交流を生成するところで位相を逆向きにずらしていたという話でした。要は符号ミスですゴミカスウンチ

何はともあれ無事にベクトル制御(dq軸電流制御)できました。よかったよかった。

ソフトは全てここに公開してあります。

github.com

まあ構造がキモくなってしまったのであんまり見るとこないです。コメントもほとんど書いてないのでやさしくない。あ、CMSIS-DSPライブラリを使っているので使う人がいたら注意(?)してください。
僕のコードを見たいもの好きはCore/driverフォルダ内とCore/Src/main.cppを見てください。他は自動生成なので。

 

いやーここまで長かった。基板が届いてから動かせるようになるまで1か月はかかり過ぎでは。まあほとんどエンコーダー周りなんですけどね。これもすべて学ロボが悪い。

 

次はモーター本体の構造に関する考察的な記事を書く(書くとは言っていない)ので需要があるか知らないけどお楽しみに。

 

参考にした記事

toshiba.semicon-storage.com

基礎的な内容がまとまっているので定期的に見てた

qiita.com

やっぱり実装例を見るとわかりやすい。

jp.mathworks.com

このGIFが無ければ理解まで5倍ぐらい時間かかったかも。ビジュアライズは正義

 

本買いたいけどお金あんまりないんだよなあ…

 

プリント基板コイル(PCBステータ)を使ってモーターを作る会 その1

どうもこんにちは。またもやブログを放置していたさばねっこです。

今回はプリント基板製のコイル(以下PCBステータ)を使ってモーターを製作し、一応回ったのでその紹介って感じです。個人的な忘備録も兼ねて。

取敢えず

  • アキシャルフラックス型
  • コアレス
  • トルクつよいといいな~~

という感じの方針で設計・製作していきます。

ちなみにアキシャルフラックス型を採用したのは、PCBステータとの相性が良かったのと、すでに先駆者(企業)がいたからですね。

pcbstator.com

これとか

engineer.fabcross.jp

これとか

PCBステータの設計

まずは今回の一番の目玉ポイントであるPCBステータを適当に設計していきます。

目玉なのに適当でええんかって感じですが、正直調べても具体的な作例が少なすぎてよくわからんのよ。
とりあえず回ればOKってことで

設計したステータ

こんな感じでkicadでサクッと作ります。円形配列を使えばそう大したことはないですね。なおヤバめなテストの前日にこいつを設計してたら爆死しましたが、それはまた別のお話。

3相モーターにはΔ結線とY結線があるわけですが、どちらが向いているのかわからなかったのでどちらにもできるようにしておきました。

ちなみに、コイル一つ分(?)だけの配線はこんな感じ。

外側から内側への配線はオモテ(赤橙)、内側から外側はウラ(青緑)って感じで配線しています。

あとは同じようなコイルを15°づつずらして配置して完成。

ちなみに4層基板で作りました。

で、JLCPCBに発注してこんな感じで具現化

具現化したステータ

配線抵抗を低減したい時、巻き数を増やしたい時に基板を重ねて使いたかったので一番薄い0.8㎜基板で発注しました。
ちなみに銅箔厚みは外1oz、内0.5ozの一番安いやつです。お金なさすぎて死んじゃう。

 

ローター製作

次にステータの設計に合わせてローターを作っていきます。

ローター

こちらもfusionで適当に作って、

具現化したローター

デカい磁石の間の小さい磁石は磁束を強化するためのやつですね。ハルバッハ配列とか言うらしいです。14極ローターですね。

※ちなみにさばねっこ君はアンポンタンなので後述の通りこのステータでは回りません
ハルバッハ配列用の小さい磁石は若干出っ張っており邪魔だったので速攻外されました。かわいそう。

 

組み立て

さて、ステータとローターができたので適当に組み立てていきます。

モーター概念

軸受部品などを適当に設計して…

印刷して組み立て。

軸を回してみるとしっかり起電力が発生しました。

さて、あとは適当なモタドラをつないで回すだけ、なのですが…

回らない。

はい。まあ一発で行けるとは思ってなかったのでノーダメですが(強がり)

とりあえず原因がわからないので結線をY結線からΔ結線にしてみたり、電流が足りないのかと思って基板を並列にしてみたり…いろいろやってみたけれど回らない。

というわけで一旦頭を冷やしながらステータの配線を見てみると…

これ、必要な磁石数、14じゃなくて16じゃね??

試しに90度ごとに同じ向きで磁石を配置したローターを使ってみると…

あっさり回るやんけ…。

※ちなみにこのミスに気が付かず土日が吹き飛びました。かなしい。

ローター設計変更

というわけで普通にローターの設計ミスってました。

ただ、今使っている磁石だとサイズが大きすぎて16個すべての磁石を収めるのは難しい…とりあえず磁石は8つだけにして設計

ローター(磁石8つ版)

とりあえず無事回ってくれました。

 

今後の展望

というわけでなんやかんや無事にモーターを動かすことができました。

ただ、配線パターンの抵抗が大きすぎてクソデカ損失が発生していたり、磁石も16こフル装備できていないのでその辺をどうにかしないとですね。

取敢えず若干小さい磁石を発注して、基板も少し手直しして発注しようと思います。

 

またお金が消えていく…

最近やってたこと

 どうもこんにちは。五億年ぶりにブログを更新するさばねっこです。

 いやー、記事書くのめっちゃ久しぶりですね。ほんとはもっと書きたいけどどうしてもめんどい忘れちゃうんですよね。

 まあとりあえずここ半年の間にやってたことまとめ記事です。

 

ロボコン

 まずはやっぱり高専ロボコンから。

 こちら我々のロボットです。

 紙飛行機の射出はローラで行っており、二機同時発射が可能です。
また、足回りは無駄に3輪独立ステアリングになっています。

 カッコいいでしょう?僕もそう思いますw

 試合の結果は芳しくなかったのですが、まあそれはそれとしてここからは回路紹介

 

今回僕は

1.クアッドモタドラ(黒基板)
2.ローラー用モタドラ(青基板)
3.電源基板(赤基板)
4.電磁弁基板(小青基板)(今回はLED制御基板として利用)
5.基板固定用レールシステム

といったものの開発を担当しました。

 クアッドモタドラ(UCS)

UCS3.0



 こんな感じです。クッソエロい。
 この基板一枚でモーター4つとエンコーダー4つ、そしてCAN通信で通信することができます。マイコンはSTM32F446REです。

 ちなみに使っているFETがクッソつよいのでこんなアホみたいなことができます。

 結局練習期間から本番まで一度も壊れることなく動いてくれました。やっぱりつおいFETはつおいのよ。

 あ、もちろんノイズ対策とかはちゃんと考えて設計してます。非絶縁だけどマイコンが誤動作するとかそういうことは一度もありませんでした。

 あとUSBシリアル変換ICを乗せたので、teratermなどを使ったデバッグも可能です。F446REなら直接USB使えるやんけ

 UARTからプログラムを書きこむこともやろうと思えばできるので使いこなせばかなり便利そうですよね。
 ちなみに変換ICはこちらのCH340Eです。安くてちっちゃいのでおぬぬめ。

akizukidenshi.com

 制御担当君が相当なあまりにも不器用過ぎてめちゃくちゃUSB端子を捥がれたんですがそれはまた別のお話

 余談ですが、UCS=undercarriage control system = 足回り制御基板、ということでこのちらの基板は、元々4輪オムニの制御を目的として設計されているんですよね。まあ上半身も動かしてたんですけど。

 あと熱設計が微妙なのであんまり高負荷(50Aとか)をかけ続けると普通に燃えます。というか溶けます。まあ空冷すればおk

 僕設計の歴代モタドラ基板シリーズ並べてみました。だんだん小型化+最適化されてて成長を感じる。

 

 ローラー用モタドラ

 上のモタドラは性能的に見れば最強なのですが、コスパはあまりよろしくありません。特に一方向に回るだけで良い射出用ローラーの制御に使うのはもったいないです。

 というわけで、ローラー専用のモタドラも作りました。

ローラー用モタドラ



 マイコンはPIC32MXで、ローラー4つを回すことができます。
ちなみにエンコーダーの読み込みはインプットキャプチャモジュールを使っています。なので速度制御しかできません。

 基本的に余ってた部品しか使っていないのでコスパ最強です。部品点数も少ないので製造はかなり楽ですし。

 あ、通信はSPIで、こちらもUSB-シリアル変換器を乗せています。

 この基板に関しては4時間ぐらいの超高速設計なので割と適当ですね。特に熱とか。まあでもローラーって基本的に一度加速してしまえばあとは惰性でいい感じに回ってくれるので。

 ちなみにこいつのプログラムは僕が書いています。というか部にある程度PIC使えるの僕しかいなくてさみしい。

 

 電源基板

電源基板



 こちらはいかつい電源基板。700番台の始動電流と回生電力に耐えられるようにクソデカコンデンサとクソデカリレーを乗せています。

 リレー周りの回路はこんな感じ。非常停止スイッチや外部からの停止信号でリレーを落とすことができます。

 また、リレーが落ちてもコンデンサに残った電荷でロボットが動き続けては元も子もないのでオートディスチャージ機能も載せています。

 こんな感じで、discharge が HIGHになるとオペアンプの反転入力端子が(大体)0VになるのでFETがONになり電荷を抜いてくれます。
 ちなみに普段は回生電力による過電圧から守るための保護機能として動いています。シャントレギュレータみたいなイメージですね。

 ちなみに電源基板の制御には、部室に落ちてたdsPIC30F4012を使っています。
このマイコンCANが使えるのはいいんだけどレジスタ叩いて実装しないといけないの非常にクソ。CANのライブラリ整えるのクッソだるかった。

 最近のPICは全部MCCとかharmonyがいい感じにライブラリを生成してくれるのでいいですよね。

 電磁弁基板

電磁弁基板



 かわいい(語彙力)

 C基板より若干小さいサイズですが、これ一枚でエアーの制御などに使う電磁弁を6つ動かすことができます。まあ今年のロボットはエアー使ってないんですけど。

 メインの通信はCANで、こちらもUSBシリアル変換ICを乗せています。マイコンは電源基板と同じdsPIC30F。

 今年のロボットではLEDの制御基板として動かしていました。

 

 基板固定レール

今回作った基板たちは基本的にねじ止め固定を想定された設計になっています。

校内ロボコンの時の回路

 しかし、このような固定をしてしまうと、下の方の基板が壊れた時に交換するために、上の基板タワーを全てばらさなければならず、非常に整備性が悪くなってしまいます。

 ということで、基板をワンタッチで交換できるレールシステムを開発しました。

実際に使うとこんな感じ。

  これ、マジで便利なのでおぬぬめ。みんな作ろう!

 足回り用モタドラの下に空冷ファンを乗せているのですが、こちらも同じ規格のレールに固定したためワンタッチで取り外せます。

 ステッピングモタドラにはストロベリーリナックスのL6470を使っているのですが、こちらも同じくレールに固定できるようにしました。

 

ステッピングモタドラとレール

 整然と基板が縦に並んでるのいいよね。縦刺し用でない基板でもこのようにいい感じ(語彙力)に固定できます。

 

 回路ボックス

これは僕の設計ではないのですが、ここで紹介。

回路板

 基本的な構造はハニカムプラダンを使って作っています。また、パワー系の配線は裏を通すことで、かなり綺麗に配線を収めることができました。設計者(@Rmatsuura2)に感謝

 

テスラコイル

ロボコンと並行してテスラコイルの製作も行っていました。まあこれはほんとに片手間にやっていたのでだいぶ適当です。

コイルまきまき

制御用ハーフブリッジ

 本当はこの基板はあくまで動作確認用のつもりだったのですが、結局この基板のまま文化祭に出してしまいました。

 放電距離は15cm程度のしょぼいものでしたが、来場者の皆さんには結構楽しんでもらえたので満足です。

 というか来場者の皆さん積極的に手をかざして感電していくんですけどなんなんですかね。特に感電しながら「効くわぁ~~」って言ってたおじいちゃん、忘れないよ。

 まああんまりつよいテスラコイルだと危なくて触れ合ってもらう(?)ことはできませんしね。これはこれで良かったのかな。

新型基板

 本当はこちらのクッソエロい基板で動かしたかったんですけどねー。なんかゲトドラが上手く動かなかったので諦めました。悲しい。

 来年の文化祭までには50cm以上放電できるDRSSTCあたりを作って音楽でも流したいですね。

 和音の鳴らし方は分かったのでmidiから動かせるようにできたらいいなーとか考えています。

 

これから

 ロボコンと文化祭という大きなイベントが終わったのでこれからは割と虚無ですねー。ベクトル制御でもやってみようかな。

 あ、一応最近は電界結合方式の無線給電をやってみたいなーと思ってちまちま準備をしています。

一応50Wぐらいを最終目標に適当にやっていきたいなーと。でもこれめっちゃ地味だよね。

 とまあそんな感じです。これからもよろしくお願います。

ポータブルな電源装置を作った

 どうも、春休みが終わりかけていることに焦り始めたさばねっこです。

 今回はちまちまと作ってきた電源装置が完成したので紹介したいと思います。

f:id:sabanEkko2:20220324202250j:plain

スペックは

 電源入力:USB PD(9V2A,5V3A)
 出力:15V300mA 2系統(絶縁)、CVCC機能付き

という具合です。

 

 正面から見るとこんな感じ。

f:id:sabanEkko2:20220324203658j:plain

 つまみはロータリーエンコーダーで、その隣のトグルスイッチはOUTPUTスイッチです。真ん中のトグルスイッチは左右の出力の接続切り替えスイッチで、下図のように出力を正電源2系統、正負電源、独立2系統の3つの中から選ぶことができます。

f:id:sabanEkko2:20220324204149p:plain

 動作はこんな具合で、ロータリーエンコーダーによって出力電圧、最大電流を設定することができます。

 いい感じですね。エンコーダーはクリック感があるタイプなのですが、クリックごとにきっかり電圧が変わっていくのは結構気持ちがいいです。電圧は1V、0.1V単位、電流は10mA単位で調整できます。

 中身はこんな感じ。

f:id:sabanEkko2:20220324203321j:plain

 結構詰め詰めな感じになってしまいましたね。まあ入ってるのでOKということで。

 

 一応PD給電ということになっていますが、5V入力でも動かすこと自体はできるのでこんな感じでtype-A to type-Cなケーブルでも一応動かすことはできます。まあ全力は出せないのだけれど。

f:id:sabanEkko2:20220324222011j:plain

 でもこの形態結構便利なので気に入っています。

 

 さて、ここからは技術的な話とか。

 まずは一次側基板

f:id:sabanEkko2:20220310221503p:plain

 まあ実際に中に入れた基板はここからいろいろ改良したやつなんですけどね。

 役割はこんな感じ(雑)

f:id:sabanEkko2:20220324212139j:plain

 USB PDのトリガーにはこちらの専用ICを使用しています。かなり簡単に使えたのでお勧めです。

www.amazon.co.jp

 あと念のためにポリスイッチを入れてあります。

 

 次にフライバックコンバータですが、こんな感じの回路を使いました……って言いえたらよかったんですが、完全に脳内回路図とトライアンドエラーだけで作ってるので回路図とかないんですよね。描けよっていう話ですがめんどいのよ。まあTL494とTL431を使った普通のやつです。コアはマルツのEF28を使いました。

 そういえばこれはちょっと工夫した点、というか学んだ点なのですが、クロスレギュレーション特性をよくするためにトランス一次側のスナバダイオードには割と遅めのやつを使っています。今回は絶縁二系統を出力したいわけですが、フィードバックは一方の出力側からしかとっていません。そんな状況でどちらの出力も安定させるためには、クロスレギュレーション特性を良くする必要があるわけですね。初めはショットキーを使っていたのですがあまりにもクロスレギュレーションがクソザコだったので普通の整流用ダイオードにしたら結構良くなりました。

f:id:sabanEkko2:20220324214555p:plain

 なんか調べた感じ早すぎるとリンギングして良くないらしいですね。よくわからんけど。

 

 そして次は補助電源のチャージポンプです。回路図はこんな感じ。

f:id:sabanEkko2:20220324214952p:plain

 555を使ってチャージポンプな倍圧回路を組んでいます。一応ツェナーを使って簡易的な電圧フィードバック回路も付けています。余裕があるならTL431とかにしたほうがいいかも。
 で、ここで倍圧して何に使うのっていう話ですが、TL494の駆動電源とMOSFETのゲート電源として使っています。PDで9V供給されていればいいんですが、もし電源入力が5VだったりするとFETでの損失も大きくなってしまいますし、そもそもTL494が動かなくなってしまうんですよね。というわけで割と重要だったりします。

 

 そういえばUSBって電源バスラインに接続していいコンデンサは突入電流の関係で10uFまでらしいですね。しかしフライバックコンバータのようなスイッチング電源は入力リプルもそれなりに大きいですし、それなりな平滑コンデンサを入力側にも付けたいのものです。ということでこんな感じの突入電流防止回路を付けています。

 シミュったときの電流波形はこんな感じ。

 まあなんか電流波形はキモい感じではありますが、USB側にも多少は優しくなるんじゃないかな。しらんけど。

 

 さて、ここからは2次側の回路。

f:id:sabanEkko2:20220310222607p:plain

 こちら側も例によって例のごとくまともな回路図を起こしていないんですよね。すみません…。構造としてはだいたいこんな感じ。

f:id:sabanEkko2:20220324220710p:plain

 オペアンプはPICに内蔵されているものを使用しており、V_targetとI_targetはPICのDACにつながっています。で、そこからMOSFETを制御して間接的にPNPトランジスタを動かすことでCVCC機能を実現しています。

 そういえばLCDもPICで制御しています。PIC君頑張ってるねー。実際文字データで結構メモリを使ってしまっているのでちょっとつらいです。

f:id:sabanEkko2:20220324222154p:plain

 コードは800行ぐらいです。

 

 とまあ回路的にはこんな具合です。普通に便利で実用的なものができたんじゃないかなって勝手に思っています。マイコンとかオペアンプとかを使った実験に使っていきたいですね。
 というか書くの疲れました。いやまだ正直書き足りない感あるのだけれど。まあなんか思いついたら加筆していきたいと思います。

電源系を作ってゆく

 どうもこんにちは。春休みを謳歌するさばねっこです。

 また前回の記事から時間たってしまいましたねー。いやでもテストとかあったから仕方ない。

 

 最近はなんか電源関係の工作ばっかやってる気がします。というわけでそれらの紹介。

 

 とりあえずロボコン用の電源基板から。

f:id:sabanEkko2:20220310224926j:plain

 こんな感じの電源基板を作りました。

 いやロボコンの電源基板なんてバッテリーからの入力を分岐させるだけやんけっていう感じですが、それだけではつまらないので過電圧保護など便利そうな機能をいろいろ乗せてみました。

 過電圧保護ってロボコンで必要なんですか??っていう感じですが、クソデカモーメントが乗ってるときにブレーキを掛けると回生電力がデカすぎて電源ラインの電圧が結構上がるのでわりと危なかったりします。

 まあクソデカコンデンサを入れればいい話なのですがそれだと品がない(?)のでシャントレギュレータ的な回路を乗せてみました。

 こんな感じです。ちなみにこの回路だと発振します。訂正めんどい。

 電圧が上がりすぎた時にMOSFETを線形領域で動作させることで、電源ラインの電圧が一定以上に上がらないように調整します。

 これをやるだけならわざわざ線形領域で動かさんでもコンパレータとか使えばええやんって感じですが、まあそこは気分の問題です。抵抗に電力消費させるよりFETで消費させた方がかっこよくない?(tekitou

 あと非常停止スイッチが押されたときにOPAMPの反転入力が0Vになるようになっているので、大きめの容量が電源ラインに存在しても速やかに電源を落とすことができます(オートディスチャージっていうらしい)。

 MOSFETに直列に入っている抵抗はオートディスチャージモードの時の電流制限用です。回路図では3Ωになってますが嘘です。ほんとはもっと小さい。

 ちなみに設計ミスってるのでバッテリーを挿すXT60コネクタが基板裏に付きます。

  そして前回紹介したモタドラと合わせるとこんな感じ。

f:id:sabanEkko2:20220310225005j:plain

 ちょーかっこいい(小並感)。

 バスバーで給電することができるので無駄なケーブルが無くてすっきりしますね。バスバーは本当は銅製がいいのでしょうが今回はアルミ製です。まあでも抵抗値は結構小さかったので多分大丈夫。

 

 つぎは現在制作中のUSB PD給電のポータブル電源装置の基板たち。

 まあこっちに関しては完成したらまとめ記事みたいなのを書くつもりなので今回は簡単な紹介だけにしておきますが、フライバックコンバータを使って絶縁2系統の出力ができるポータブル電源装置を作っています。

 まずはフライバックコンバータ系の基板。

f:id:sabanEkko2:20220310221503p:plain

 左下の緑の基板たちはUSB PDとかのやつです。そこから取り出した電力を右上側のフライバックコンバータで絶縁昇圧します。

 トリガーICはこれを使いました。少ない外付け部品で使えるのでいい感じ。

Amazon | USB PD トリガー IC エミュレーター デバイス「IP2721」 (INJOINIC製) TSSOP-16 x10個 (IP2721-MAX12) | INJOINIC | スクリーンプロテクター

 USB PDトリガーモジュールとかを使ってもよかったのですがなんか負けた気がするのでICを買いました。

 ちなみに左上の555は倍圧回路で、電源がPD非対応で5Vしか入ってこなかったとしてもちゃんとTL494が動作するようにしています。

 

 そしてフライバックコンバータから出力される電力を安定化させてCVCC動作させるのがこっちの基板。

f:id:sabanEkko2:20220310222607p:plain

 まあまだコネクタが足りなくて未完成なんですがね。

 制御にはPIC16F1769をつかっています。やっぱりオペアンプを内蔵しているマイコンはいいですね。PIC一つでCVCCからLCDまで全部制御できます。

 絶縁二出力がコンセプトなので待ったく同じ回路が二つ乗っています。

 フライバックコンバータと合わせるとこんな感じ。

f:id:sabanEkko2:20220310224407p:plain

 動作させるとこんな具合。

 LCDに現在の出力電圧・電流や設定電圧・電流を表示させています。OLEDなやつを使っているのでコントラストも良く結構綺麗に見えます。

 設定電圧はロータリエンコーダを使って設定します。

 クリックごとにきっかり電圧が変化してくれるのは結構気持ちいいですね。

 

 ちなみにサクッとLCD使ってますがこれがくそだるかった。arduinoならライブラリがあるので簡単なんですがPICにはそんな便利なものは無いのでフォントとかも頑張って用意しないといけません。まあその辺もまとめ記事に書くかも。

 

 

 とまあそんな感じです。とりあえず電源装置をちゃんと完成させられるように頑張っていこうかなーって感じなのでよろしくお願いします。