JLCPCBさんにスポンサーになっていただいた
おまえがき
おひさしぶりです。あぐちゃんさん❆です。高専を卒業してもロボコンから成仏できず、学ロボに参加する団体であるRobopro長岡の回路屋さんをしています。
せっかく一丁前に4層基板なんて作るようになったのに、弊団体はお金がないのであんまり高い基板をほいほいと買えるようなもんじゃないです。あるあるですね。たぶん。
そんなとき、JLCPCBがスポンサーさんがスポンサーについてくれたらなんと『無料』で基板を刷ってくれるという話を聞きつけて、うちの代表にお願いして話を進めてもらいました。
スポンサーについてもらう前から全然発注しまくってました。まだまだ作らないといけない基板はあります。
JCLPCBのつかいかた
前準備
まずお好みのCADで基板をつくります。100mm x 100mm以内のサイズだと安上がりになったと思います。
スポンサーについてもらったあなたは、基板のどっかにこんな感じでJLCのロゴをのせましょう。
できましたか?できましたね、じゃあ次に.gbr形式で基板の製造用データをお好みのCADから出力します。 ファイル群は1つのフォルダにぜんぶまとめて、.zip形式で圧縮します。
うp
ここにアクセスして、今すぐお見積りボタンをとにかく押します。
Add gerber fileのところにさっきつくった.zipをポイーします。
いろいろ設定
普通の人が気にするのは、
- PCB Qtyで枚数を選ぶ
- Layersで層数を選ぶ
- PCB Colorで色を選ぶ
- Remove Oder Numberで製造番号を消す有料オプションを使うか、場所を指定するかを選ぶ
ぐらいです。1項目ごとに詳しく解説してるサイトがどっかにあったので、詳しいことはよそで調べてください。けっこういろいろ指定できます。 時期によっては、色ごとに値段が大きく変わったりするので注意です。
ちなみに、リフロー用のステンシルをつけたり、部品実装までしてもらうオプションもあります。気になったら調べてみてください。
設定が確定したら、SAVE TO CARTをポチーしてカートに放り込みます。ほかにも基板を発注するなら同じようにしてってください。
発注
発送先を記入して、配送方法と支払方法を選びます。
Pay Directlyを選んで決済方法を選べば発注完了です。
うちにもJLCにスポンサーについてもらおうと考えている団体代表者さんへ
先にクーポンをもらっておきましょう。
弊団体で一度起きた事故事例として、スポンサーについてもらったしもういけるやろと発注したら料金が発生したとのこと。
事務係の人から話を聞くと、クーポンをもらった状態で決済画面に進む必要があるらしいです。
感想
感想も何も、いつも使ってた製造業者が無料で基板を刷ってくれるのでマジでありがたいです。神。
twitterのDMからスポンサーのお願いができるらしいので、気になったら所属団体の代表に聞いてみるといいと思います。
ちなみに普通にクーポンなしでも安く作れます。趣味で基板作るにもおすすめできます。
高専卒業しました
お久しぶりでございます
いつ振りの更新でしょうか。あぐちゃんさんです。部内wikiができてたのでそっちにはいろいろ書いてました。非公開なのであしからず。
ついに自分の番が回ってきてしまった感です。毎年先輩方を送り出す側だったのにね。 長いようであっという間の5年間でした。
音ゲーマーは留年するというのはどうやらマジらしく、同級生の音ゲーマーはほぼ全員留年したり辞めたりして同時に卒業できませんでした。かなしい。ぼくは留年休学も無く何事もなく進級して進路も決まりの卒業です。あーけあは無事2星になったし、ウニはようやく虹レになったし、ボルテは後光或帝滅斗に、舞はヘタクソモブ金レです。なんでや。多分一番クレ数突っ込んだのが舞なのに。
ロボコン部には特にお世話になりましたね.....
1年生のころから出場ロボットの主要なプログラムを担当しその後も毎年デスマの日々開発してました。オフシーズンもずっと部室に籠って基礎研究や趣味に没頭してました。
5年次は流石に見守る側になってましたが。
なんとなく高専生活を思い出してみる
1年生
ロボコン
オンシーズン中の写真は出せるのがありませんでした。 超音波測距センサ読み取り基板を作ったのと、本番出場機の移動以外の動作の制御を担当したような? 人が足りない上PICが扱える1年生だったので動員されたようです。同期もそんな感じで同チームの別マシンの制御をやってました。
オフシーズン開催のミニロボの様子
1年生のオフシーズンは上級生が部内での小規模なロボコン、通称「ミニロボ」を企画し、福岡市科学館で実施した展示会での一幕の様子です。 このころにしてもうすでにPICとLazuriteがある程度扱えていたのはミニロボがあったおかげでしょう。やっぱり必要に迫られるのが何でも覚えるんですね。i2cが上手くいかなくて必死になって調べた記憶があります。 回路を早々に完成させて、設計担当の進捗を煽りまくってました。果てにはサボる設計者から図面を奪ってって自分で加工も多少やってました。この時の1年生はまず全員加工をやらされていたので、全員一通りの心得がありました。
それ以外
このころちょうどAC音ゲーにハマりはじめてmaimaiとChunithmに手を出したようです。スマホは一回データぶっ飛ばしてるので古い写真はもう一切全くどこにも残ってません。諸行無常だね
マイクラに中一の時からドはまりしたまま抜け出せず、建築以外の要素は大体遊んでました。中三の時にはデカい加算器とかも作ってました。古いスクショはないなってしもた
あとごちうさときんモザにドはまりしていた様子。スクショが大量に出てきた。これと少女終末旅行で早くも百合性癖獲得したかもしれないぽい。
2年生
ロボコン
当然ながら1台分の制御を任されるわけです。設計はミニロボで組んだのと同じ人でした。ミニロボ上がりで進捗煽りをかましまくり、例年までよりも比較的余裕のある開発だったと言われたと記憶しています。しかしまあハード的不具合で大会での成績は奮いませんでしたが。やってみなわからんのです。
このころはまだkicadを覚えていなかったので手書きの回路図です。駆動電源だけが入ったら赤色だけが点滅する仕様で、無安定マルチを使って発振させてました。回路電源が入ると点滅が止まって、マイコンからの制御に切り替わります。この回路を作ったのがアナログ回路やディスクリート志向にハマるきっかけだったと思います。
この年のオンシーズンで移動制御をあらかた身に着けて、当時先輩が挑んでいた「三軸制御」を会得するべく、オフシーズンはひたすら足回りの制御のための行列演算のプログラムと移動制御を頑張ってました。
たのしい pic.twitter.com/CgClx47RCv
— あぐちゃんさん❄ (@Agchan_Luice) 2019年12月27日
時刻で値が定まる関数をそれぞれx座標用、y座標用、回転角用で用意してその通りの軌跡と姿勢を取るような制御です。これのために線形代数を授業より先の内容を勉強してました。惑星の公転と自転を組み合わせたような動きとかもやりました。手動機だと動画のように直進しながら回転するような動作が可能になります。ライブラリとして整備しましたが、コロカスのせいで活用の機会はありませんでした..... あと、PID制御を適当に実装したことから制御工学に興味を持ち始めて、ラプラス変換を扱えるようになるために微分方程式の勉強とかも先取りしてやってたっけ。春休みに本格的に制御工学の勉強したんだっけ?
それ以外
Vtuberにハマる。テスト勉強中に横で流し始めたのがすべてのきっかけ。おわりのはじまり。
最初に見たのが月ノ美兎のヨーロッパ企画のゲーム実況だったかな?料理をしていたはずがいきなりかまいたちの夜になって「すっぺらぴっちょん!」するせいで大爆笑した記憶が。 確かちょうどそのころだいさんじのラジオが始まってて、パーソナリティをやってたから追ってた。で、ゲストで出てきたリゼ・ヘルエスタを知る→さんばかにハマる→沼入り、って流れだったはず。青系銀髪癖はここから始まったのかもしれない。選んでるわけじゃないのに気が付いたらそうなってた。あと鈴原るるにめちゃくちゃハマる。
あと電検の勉強をするも飽きる。多少の予習にはなったかな?ぐらい。 あとボルテをちょっとだけはじめる。maimaiもだいぶできるようになる。
ArcaeaはGrievous LadyがEX寸止めを踏むくらいにはできるようになってた。
あとoverrapidをやり始める。
3年生
ロボコン
コロカスのせいで活動制限がかなりキツかったです。その上例年にはないオンライン大会用ルール。急ピッチでの準備の中でも、先輩の手伝いもあってろびぃちゃん(5ねんせい)とお絵描きタコでなんとか出場しました。予選で負けましたが、九州の並み居る強豪とはじめてまともに戦うことができました。
それ以外
学校が使えないので家でいる時間が長かったのがVtuberハマりを加速させました。オフシーズン冬が確か部室が使えなかったので、家でLTSpiceいじったり制御の勉強をしてたりマイクラでCPU作ったりしました。
おー昇圧してる pic.twitter.com/jcHbg9gifv
— あぐちゃんさん❄ (@Agchan_Luice) 2021年3月10日
やるわよ pic.twitter.com/U5RScacVqm
— あぐちゃんさん❄ (@Agchan_Luice) 2020年11月7日
とりあえず4bitCPU完成しました
— あぐちゃんさん❄ (@Agchan_Luice) 2020年12月31日
簡単な命令を実行できます。
スペック↓
クロック:0.078125Hz(12.8秒周期)
RAM:16bit(増強可能)
EEPROM:なし
GPIO:デジタル入力16ポート デジタル出力16ポート アナログ出力4ポート アナログ出力4ポート PWMモジュール
15命令(増強可能) pic.twitter.com/JDtkABZb04
マインクラフトで8bitCPUを作りました。二代目です。
— あぐちゃんさん❄ (@Agchan_Luice) 2021年1月6日
スペック↓
8bitアーキテクチャ(前回は4bit)
クロック:4.4秒周期(前回比3.6倍)
プログラムメモリ:252命令(前回比約16倍)
RAM:16byte
GPIO:デジタルI/Oともに32ポート
追加機能
Wレジスタ
ALUの計算時のオーバーフロー検知機能 pic.twitter.com/GG7K3GgegW
この現代制御がめっちゃたのしいんですねこれが。何よりかっこいいのが良い
CPUは4bitのを作ってみて勝手がわかったからすぐ8bitの2代目を作ってた。
あとこのブログ作ったのもこのぐらいだっけ?家にいろいろ作業環境整えたりしてました。確か春休みは部室が使えて、モタドラの研究とかしてました。電源自作もこの時期かな? あとインバータ制作の目途を立てたのもこのころかも。コロナで何もできなかったと思いきやいろいろやってたみたいです。
ボルテにだいぶハマってきたので、家でもできるようにコントローラを自作。
稼働中であります pic.twitter.com/ojsD2Gfkww
— あぐちゃんさん❄ (@Agchan_Luice) 2020年5月15日
買うと高いからね。無いものは作る。ちなみに2023年3月現在も修理を重ねつつ現役。
— あぐちゃんさん❄ (@Agchan_Luice) 2020年8月2日
ラズパイデビュー。いきなりUbuntuをブチ込む。この時はまだ何もわからなかったので先輩の手助けを借りながらOSを焼いてました。 で、あぐちゃんツールができるわけです。
このころにはもうすでに多くのVtuberを追っかけていたので、画像収集の手間を省くべく、また目立ちすぎないように作ってました。RTした画像はすべてローカルに保存してます。 2023年3月末のAPI有料化をもってサービス終了予定です。
あと、分解能高めのステッピングモーターの限界速度を調べるとかいうアホな試みも。
その辺に落ちてたステッピングモーターの速度の限界から脱調まで pic.twitter.com/SHznuVgqC6
— あぐちゃんさん❄ (@Agchan_Luice) 2021年4月8日
これのために部室にあったロジックICというICをかき集めて同期カウンタとドライバをわざわざブレボ上に作ってた。機械科の同期に治具をわざわざ作ってもらってた。何してんのマジで。
あとはリゼるるlistenがはじまる。はい。全部が良い。アーカイブを見よう。
Arcaeaは5月ごろに星ポテ入りしてました。あとボルテは剛力羅合格してました。このころはまだVivid Waveだったのがなつかしい
overrapidをやりまくっていたので、指押しはすぐ慣れました。
ウニにもちょっとハマりました。maimaiは13+でSSSが出るくらいにはできるようになりました。
あと、ボルテを始めたことで棗いつきを知りました。
ほんとにプラネタジャーニーの人????ってなった記憶。
めちゃくちゃ声が良い。イケメンボイス。でもかわいい。何故。
Endorfinで知ってた藍月なくるといちゃついてた。またやってほしい。そのままの流れでLa prièreにハマる。
ほんの少しだけお絵描きをするようになる。
え、てかこれほんとに1年間の出来事?なんでもやりすぎじゃね???
4年生
ロボコン
さらに活動制限が厳しくなってました。よってより暇に。長期休みもほとんど使えなかったような
倒立振子ロボットを作ることになり、現代制御理論を投入。というか、誰かが倒立振子を言い出した時に現代制御を勉強したぼくができそうじゃね?みたいな適当言ったら採用されたような。 活動制限が厳しく時期になる前に試験機が作られて、そこで制御の実装を試してました。本番機は大会一週間前に本体が完成。 なんと当時のぼくは回路の実装含め3日でもう立たせていたらしい。回路を事前に作り上げていたとはいえまあとんでもないデスマをしたもんだ。かなりヘロヘロになった気がする。
足をのばすはずでしたが、計測などの時間が間に合うはずもなく。バランスの安定する分だけ足を延ばした状態で固定してパフォーマンスをしました。消化不良ですが制御に手間のかかるマシンだった上、その後の活動制限も厳しかったのでより高度なことはなにもできませんでした。
それ以外
ついにインバータ作成に本格着手します。4年生の時点では前に記事にしたところまでしかやってないかな?制作自体は以前からやっていましたが、PrototypingLabにプロジェクトを移行して、予算を出してもらって回路を作ってました。必要な電源もわざわざ用意してもらいました。
ようやく自作PCを構築。CPUはRyzen9、メモリは16GB、GPUはGT1030というクソ歪構成。LTSpiceの解析をぶん回しまくるためにCPUをつよつよに組んでます。部品選定は詳しいオタクに問い合わせました。
あとは諸々ドライバをブチ込んだら完了
— あぐちゃんさん❄ (@Agchan_Luice) 2021年5月25日
はじめての自作PC対あり pic.twitter.com/cOfUz2WY3x
せっかくなのでマイクラ鯖を立てて、マイクラ仲間とFTB Infinity Evolved環境で遊んでました。でもドラエボ時代突入のタイミングでみんな飽きた。 あと、またAnniにもハマってMaster-IIIになる。
そして「限 界 開 発 鯖」 加入 プログラミングが本職の人ばっかりの中に何故か回路/制御屋が混じることに。プログラミングなんもわからん。
限界の人につられて、Satisfactoryもめちゃめちゃやってました。高難度MODPackをやるような奴がハマらないわけがない。
金のナッツどころか像の全コンプもしました。チケットにして1700枚分くらいだったかな?今は違うかもチケットがさらに200貯まってたから像増やした
— あぐちゃんさん❄ (@Agchan_Luice) 2021年10月8日
1枚あたり8000万ポイントいるらしい pic.twitter.com/z5RKRRvRyM
冬休みには、パワエレの研究が盛んな長岡技科大に見学に行きました。当然ながら最中の写真はありません。
— あぐちゃんさん❄ (@Agchan_Luice) 2022年2月25日
1000円でこれが出てくるってマジ...? pic.twitter.com/zA3xmhhZDh
— あぐちゃんさん❄ (@Agchan_Luice) 2022年2月24日
そのあとは、ゲームもほぼほどにやりつつ、長岡技科大を受験するべく勉強をしてました。
春休みには限界のメンバー数人でマイクラのInterractionsというMODPackを開始。その前にもバニラでなんかしてた気がする。
ほどほどとは???なペースで攻略してたような。流石に勉強が本格化してからはやってませんでしたが。
そしてるるちゃんロス。これがなかなかキツい。未だに引きずってる。つらい。初期から追って卒業した人はこれが初めてでした。 いつも楽しそうにゲームをしている様子を見ながら作業をしていたけど、当たり前にあったものがなくなるのはそれはもう結構つらくて、当時はかなりしょげてました。
ラストの24時間配信は最初から最後までずっとリアタイしてました。
音ゲーはというと、ボルテは或帝になって、maimaiは14でSSSがちらほら出るようになりました。Arcaeaは2星になりました。
あとバンドリにはまる。めっちゃ曲聴くようになる。RoseliaとMorfonicaとRASが良く刺さりやすい。
5年生
ロボコン
オンシーズンはなんもしてません、マジで。ただ見守るのみでした。
オフシーズンはミニロボを企画/実行して、自分は単独チームで設計加工回路制御全部やりました。 コースを走ってペットボトルを取りに行って、戻ってきてコースと逆側に撃ち出すというルールでした。
部内ロボコンでつくった
— あぐちゃんさん❄ (@Agchan_Luice) 2023年3月5日
設計加工回路制御ぜんぶぼくです pic.twitter.com/oOrfIlcalx
ペットボトルの回収と装填がなかなかうまくいかず、ギリギリ時間内で発射に至らなかったのが残念でなりません。が、機体の詰めが甘いので仕方がないです。 後輩たちのチームもちゃんと無線で操縦するロボットが多くて一安心です。でもスタート位置へ回収してくるロボットは自分のロボット以外に居ませんでした。ぎりぎりの時間の開発では上手くいかないという教訓になっていればと思います。
それ以外
https://twitter.com/Agchan_Luice/status/1493983054855282689?s=20 まさかの再びSatisfactory。今度は砂漠マップで開始。あろうことか最後の起動エレベーターまで終わらせたうえで受験前にpt生産のための増強。でもちゃんと勉強は毎日学校で朝から晩までしてたんです.....
長岡技科大と熊大を受験しました。どっちも受かってて、長岡の方に行くことに決めています。なぜならパワエレつよつよ大学だからです。聞くところによると全国のパワエレ狂いが集まるとかなんとか?
2日目に時間がめちゃくちゃ余ったのでついでに旅行してきました。
C57180もたぶん先はそう長くないので、乗っててよかったです。
あと限界の人とエンカもしました。 https://twitter.com/Agchan_Luice/status/1540895499473264640?s=20
授業の課題でLinuxのAPIを使ってなんかしろというやつで、3~4日の突貫工事でシェルを作りました。動画で解説せよとのことだったので、ゆっくりに解説してもらいました。
この後の夏休みはずっと車校に通ってました。運動の機会がほかにないので、毎日往復8kmくらい自転車をこいで通ってました。1か月くらいで免許取ったと思います。あとは卒業研究のための勉強と先行研究の検証をやったりしてました。
年度後半は前年度より続いて、ついにインバータを作りました。
三相100V出力で定格負荷!
— あぐちゃんさん❄ (@Agchan_Luice) 2022年12月14日
放射ノイズに勝った pic.twitter.com/hLt2sfB72m
いろいろ対策をしつつ電圧を上げていって、電源電圧280Vまでいけました。これ以上上げるとノイズがどえらいことになって燃えました。
ハーフブリッジ回路とそのドライバの組を3つ作って3相インバータとしてたので、枚数を減らせば単相にもなります。 同じ基板を1枚だけ使って、同期整流昇圧チョッパも組んで動かしました。
同期整流昇圧チョッパに負荷かけた pic.twitter.com/TQxxxF2iZK
— あぐちゃんさん❄ (@Agchan_Luice) 2022年11月25日
これをシンポジウムで発表するための準備と、同時並行で卒業研究を進めていました。卒研ネタバラシはやっていのかわかんないのでまだ伏せときます。
そしてCPUまさかの3代目。また機能増えて速くなった。
自作CPU(3代目)
— あぐちゃんさん❄ (@Agchan_Luice) 2022年6月12日
8bit
クロック:3.4秒周期
レジスタ:16byte
RAM:256byte
命令数:256
左のデカいのがRAMで、右のデカいのがプログラムメモリ(ROM) pic.twitter.com/yItLr0OJjA
でもpushとpop実装して動作させて満足してからもう動かしてない......
ボルテはついに後光或帝になり暴龍天受験資格を得ました、が、無理。20の壁がデカすぎる。 maimaiは14のSSSがちらほら出るようになって、ウニはGengaozo鳥寸を踏みまくりました。
Arcaeaはというと、いよいよポテンシャルが伸びにくくなってていよいよ大変。これが一番最近の最高値更新のリザ。 最近は10の難化がすごい。Crimson Thormeむずすぎ。
らぷりのブランケット。めちゃくちゃかわいい。
らぷりの膝掛けきちゃ! pic.twitter.com/ggb8pw9bB2
— あぐちゃんさん❄ (@Agchan_Luice) 2022年12月7日
今と今後
今はオーディオアンプをフルディスクリートで組もうと四苦八苦中です。とりあえず一旦できるだけゲインの平坦な差動増幅回路を作ってみることにしています。
それとは別に、今後は連続時間での制御だけではなく、ディジタル制御にも手を出そうと思っています。カルマンわかるマンになりたい。
まとめおわってしまった
結構いろいろやってんだねこの人。
生き急いでるといわれても仕方ないですねこれは。ええ。 常に何かしらしていたわけでして。
ほんとうにあっという間の5年間でしたがその中身は胃もたれするほどに濃いものでした。 いろいろ無茶苦茶をするにあたって様々手を貸していただいた電気科の某技術職員には感謝してもしきれません。
来年からは長岡技科大に行ってとりあえずロボコンをやるつもりでいます。もしかしたらロボマスに傾倒してるかもしれないけど。
ここまでいろいろできたのはやっぱり先輩から学んだ見積もり力が大きいと思います。自分の実力、目標の難易度、資源からやることを絞るということを無意識にやっていたように思います。 概ね目標通りのことが毎回できていたと思いました。 最後の最後まで好き放題させてもらったおかげで、もう未練はないです。
なんかまじめなこと書いてしまった。うんちうんちうんち!!!!うんち!!!ぶり!!!!! よし。
ここはまあまた気が向いたら更新すると思うので。それじゃあまた~
ハーフブリッジ回路のプリント化
改良しますた
前回作った試作品ハーフブリッジをベースにして作ったのがこれ。とりあえず100V目標。
具体的な変更点はたぶんこのくらい
・ブートストラップのコンデンサを高分子のいいやつにした
・ゲートのクランプダイオードの最寄りにパスコン置いてみた
・出力部分に放電阻止型のRCDスナバを置いてみた
負電圧でのターンオフは回路が複雑になるんでやめました。電源も正負いるしね。
ダイオードはマジで速いやつじゃないとたぶんだめ。RとCは割とてきとう。どのくらいRが発熱するかわかんないからとりあえず電力型にしといた。
ちゃんとした配線の取り回し方わかんないけどとりあえずそれっぽく配置して、 うんうんいい感じいい感じ!(ほんまか)
ゲトドラうごくかな
長い長いテスト期間の間に中国で基板が作られて、ちょうどテスト明けにやってきましたこちら。
ヒューマノイド型カメラスタンドが映り込んでしもた。
テスト基板はやっぱ緑でしょ。電位差がデカくなるところはパターンの間広めにとってみたけどどのくらいやっときゃいいんすかね。L成分めっちゃ増えてそう
レポートラッシュを捌ききって一週間後にてきとーにはんだ付けしてこう。
とりあえずこの日はゲトドラが動くかどうかだけ確かめたかったんで、本チャンで使う250V30Aのやつじゃなくてその辺にあった謎FETで動作確認。
ゲート電圧がアホみたいに発振してるけどクランプもしてないしゲート抵抗じゃなくてフェライトビーズだからそらこうなるわな。しかもPWMの信号のローとハイ逆だし。ローにするとハイサイドがターンオンしてまう。PWMはとりあえずシンクで駆動します。
100Vスイッチングするぞするぞするぞ
数日後には本命のK30J25Dを実装してまずはRCDスナバなしで無負荷~軽負荷で実験。
ドレイン端子に履かせてるのはアモビーズっていうなんかdi/dtによるノイズをアホみたいになくしてくれるやべーやつ(秋月で80¥/個)
スピリチュアルみをすげー感じるけど実際すごいらしい。
主電源なしのゲートドライバだけ動作させたときのゲートの立ち上がりはこんなもん。とりあえずデッドタイムはでかめに1usくらいにしといた。 めっちゃきれい
だがしかし。20Vくらいでスイッチングさせてみたらこんなんになった。黄色がハイサイドゲートで青が出力電圧。 見事に発振してんね~~はいクソ~~ 負荷つなごうがつながまいがこんな感じ。
てなわけでRCDスナバ実装ですん。
パワみありそうな回路っぽくなってきた テンション上がってきた
実験風景。負荷は100Wの白熱電球を貸してもらった。
あついあついまぶしいまぶしい
こいつはひでえや
本日のガバ(コンセントの先は電球) pic.twitter.com/vxoOOSSbbk
— あぐちゃんさん❄️ (@Agchan_Luice) 2021年12月16日
負荷時の電圧波形はこんな感じになた。無負荷時はとり忘れた。てへぺろ
めちゃめちゃ落ち着いたけどにしたって振れすぎなんよ、なんでやねん!ってなったけど、まさかと思って電源電圧(青線)を見てみると
お前か~~~い!!!てことで安定化電源が負けてたみたいっす。それ考えたらまあだいぶ波形は落ち着いてんなって感じ。
ある程度の振動はあるにしてもまあ300nsくらいで収束してるしええんちゃいますん。しかもこれ電源電圧の揺れもだいぶあるしね。
ハイサイドのソースードレイン間電圧も見てみたけどいい感じだった(とり忘れ)
どのくらいスナバがノイズ吸ってるのか気になったので、コンデンサのVCCじゃない側とGNDじゃない側の電位を見てみるとすごかった。
最初に電圧下がってるのは電源が負けてるときです。めちゃめちゃノイズ吸ってんね。でも抵抗全然熱くないし値小さくしてよさそう。あと電力容量も2Wもいらなさそう。あとダイオードはUF2010使ったけど、もうちと早いのがいいかもしれない。
放電阻止型ってノイズの分だけ発熱するって理解で正しいんだよね.....?
CをでかくしといてRを小さくすればノイズはいっぱい吸えるしエネルギーの放出も早い!でもCがRと比べてデカすぎると放電間に合わんしダイオードはマジではやいやつにしてねって感じか???
このスナバの定数決め方結局よくわからん。
まあええんちゃう
立ち上がり時のオーバーシュートを見るに250V素子じゃ200Vのスイッチングは無理そうなんでとりあえずMosFETでの実験はここまでです。次はアモビーズなしでIGBTを駆動してみようとおもいます。もしかしたら駆動周波数下げないといけないかも?
1Aくらい延々吐かせてもぜんぜん発熱しなかったんで、ゲートドライブはうまくいってそうです。
[追記 2022/01/12] 部品や機材は学校主催のPrototyping Laboという講習会に参加することで買ってもらったり借りたりしています。作りたいものを言えば内容によって予算をつけてもらえ、機材を出してくれるというものです。学校の金でインバータ作れるねやったね!
ハーフブリッジ(試作)
ドライバ回路の簡略化
以前にも実はハーフブリッジ回路を作ったことがありまして。まあ無事失敗したわけですが。
前作ったこれ、動かん原因さっぱりわからなかったけどやっと解明できたわ pic.twitter.com/h0yPG69g2Z
— あぐちゃんさん❄️ (@Agchan_Luice) 2021年10月23日
急いで作ったからか、パターン上に明らかにおかしい配線を見つけることができた。
これ作ったときよりも知恵がついたので、大幅に簡略化する方法を思いついたので、とりあえずブレボ上で作ってみることに。
上手いこと動いたので、これを3つ用意して、部室から借りてきたマイコン使ってちっこいBLDCをドライブ。
ブラシレスDC回してみた pic.twitter.com/cObaPUOTao
— あぐちゃんさん❄️ (@Agchan_Luice) 2021年10月30日
定格7Vに12V突っ込んでるからか、常に1Aくらい流れてた。熱い。自作降圧電源もあったかい。
試作
ともあれいい感じに動いたので、部室に転がってた使わないであろう両面スルーに実装してみる。
これもいい感じに動いた。回路図はこんな感じ。ミスって、入力をローにすると出力がハイになるようになってるから、PWMの入力はシンクでやらないといけない。あと、TLP152のシンボルがなかったから、ピン配置同じフォトカプラで代用してる。
ブートストラップから生えてるピンは外部からフローティング電源をつないで100%駆動をするためのやつ。デッドタイムの生成はいつも通り2903DとRCとダイオードの充放電。充電だけ鈍らせて、放電は素早く。使うダイオードは適当に1N4007。もう片方の信号は信号用MosFETの2N7000でいい感じに充放電。
電源平滑用コンデンサの耐圧が低いから電圧をむやみに上げられないけど、コンデンサさえ変えれば耐圧はスイッチング素子が行けるところまでいける。これをベースにしてインバータを作ろうと思う。
今後やること
インバータまでやるとなると、ゲートドライブをもっと素早くやる必要があるのかな。次作るやつはローレベルを負電圧にしたり、出力にRCDスナバをつけたりしようと思う。
絶縁型DCDCコンバーターを作った話
経緯ってなんですか
三相インバーターの作成を目標としていろいろ試す中、やはりフルNchで組みたいというのがあるので、ハイサイドのゲートドライブの電圧を何とかする必要があります。ブートストラップで最初やるつもりでいたのですが、やはり何かと不安要素が多いので、フローティング電源として出力が三系統ある絶縁DCDCコンバーターを作ってしまえばいいや、という結論に至りました。
前に書いた絶縁DCDCの記事今見ると意味わかんないですね。なにしてんのこいつ。
回路
これ
ブレボ上であーだこーだやってうまくいったやつです。ブレボ上でやったときは負荷30Ωで最大2.8Wの出力が得られました。トランスのサイズの割にはしょぼいね。トランジスタのベース抵抗とかも適当に1kぶち込んだり電流減らしたいところは100kとスピコン突っ込んでみたりとだいぶ適当な構成となっております。真ん中下あたりでいっぱいピンあるのはトランスにつながってる部分です。
タイマICを買い忘れてたので無安定マルチとコンパレータで適当にデッドタイムの調整をしてます。ハイサイドへの信号伝達はその辺に落ちてたTLP250でやってしまいました。
駆動するMosFETがk4017なのでオーバースペックですがまともに使えるのがこれしか手持ちにありませんでした。速いフォトカプラなんかいいやつないんですかね。
はんだづけしたった
手持ちのユニバ1枚に入らなかったのでフルブリッジ部分とトランス&整流で基板分けました。
絶対入らん pic.twitter.com/Gj2GdODW3x
— あぐちゃんさん❄️ (@Agchan_Luice) 2021年9月3日
FETのそばにある10kΩは回路図上で忘れてたプルダウンが居ますが他は変更ないはずですたぶん。 フルブリッジはちゃんと動作したので、あとは整流用のブリッジに使う1s4が秋月から届けば完成する予定です。
トランスなんもわからん
回路に使ったトランス(ほんまか?)は適当なコアを買ってきてエナメル線を巻いた自家製です。以前の記事で作ったやつは巻き数も少ないわ結合もゴミだわで使い物になりませんでした。あやつは巻きなおしてチョークコイル行きです。
もう巻きたくない。巻いた pic.twitter.com/X05CpiTn5x
— あぐちゃんさん❄️ (@Agchan_Luice) 2021年9月1日
まともなトランスボビンを買って巻くのが一番いいはずなんですが、どこから買えばいいのやら。
Minecraft.1.12.2 Forge IntelliJ IDEA mcmod.infoやassetsの中が読み込めない
注意
Mod制作初心者が書いた記事です。ここの情報を鵜呑みにして問題が起きても知りません。それでもいいよっていう同志初心者の皆々様は続きをお読みください。
具体的な問題の内容
IntelliJでMinecraftのMODを作成するときに、Tasks/fg_runs/runClientから実行すると、resources中のファイル/フォルダにアクセスできない。故に、mcmod.infoやアイテム、ブロックのテクスチャを読み込むことができない。ファイルを配置したにもかかわらず、FileNotFoundExceptionエラーが出まくる。
環境
Windows 10
JDK 8u211
Minecraft 1.12.2
Minecraft Forge 1.12.2 (14.23.5.2838)
IntelliJ IDEA 2021.1.1
コード
build.gradle
buildscript { repositories { maven { url = 'https://maven.minecraftforge.net' } mavenCentral() } dependencies { classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '4.1.+', changing: true } } apply plugin: 'net.minecraftforge.gradle' group = 'jp.agchan_san' version = '1.0.0' archivesBaseName = 'ninino_mod' java.toolchain.languageVersion = JavaLanguageVersion.of(8) // Mojang ships Java 8 to end users, so your mod should target Java 8. minecraft { // The mappings can be changed at any time, and must be in the following format. // Channel: Version: // snapshot YYYYMMDD Snapshot are built nightly. // stable # Stables are built at the discretion of the MCP team. // official MCVersion Official field/method names from Mojang mapping files // // You must be aware of the Mojang license when using the 'official' mappings. // See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md // // Use non-default mappings at your own risk. they may not always work. // Simply re-run your setup task after changing the mappings to update your workspace. mappings channel: 'stable', version: '39-1.12' // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') // Default run configurations. // These can be tweaked, removed, or duplicated as needed. runs { client { workingDirectory project.file('run') // Recommended logging data for a userdev environment // The markers can be changed as needed. // "SCAN": For mods scan. // "REGISTRIES": For firing of registry events. // "REGISTRYDUMP": For getting the contents of all registries. property 'forge.logging.markers', 'REGISTRIES' // Recommended logging level for the console // You can set various levels here. // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' mods { redenginemod { source sourceSets.main } } } server { workingDirectory project.file('run') // Recommended logging data for a userdev environment // The markers can be changed as needed. // "SCAN": For mods scan. // "REGISTRIES": For firing of registry events. // "REGISTRYDUMP": For getting the contents of all registries. property 'forge.logging.markers', 'REGISTRIES' // Recommended logging level for the console // You can set various levels here. // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' mods { redenginemod { source sourceSets.main } } } } } // Include resources generated by data generators. sourceSets.main.resources { srcDir 'src/generated/resources' } dependencies { // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied. // The userdev artifact is a special name and will get all sorts of transformations applied to it. minecraft 'net.minecraftforge:forge:1.12.2-14.23.5.2855' // You may put jars on which you depend on in ./libs or you may define them like so.. // compile "some.group:artifact:version:classifier" // compile "some.group:artifact:version" // Real examples // compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env // compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env // The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. // provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' // These dependencies get remapped to your current MCP mappings // deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev' // For more info... // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/dependency_management.html } // Example for how to get properties into the manifest for reading by the runtime.. jar { manifest { attributes([ "Specification-Title": "NininoMod", //"Specification-Vendor": "NininoMod authors", "Specification-Version": "1", // We are version 1 of ourselves "Implementation-Title": project.name, "Implementation-Version": project.version, //"Implementation-Vendor": "nininomod authors", "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } } jar.finalizedBy('reobfJar')
原因と解決策
解はここにありました。
どうやら、GradleとIntelliJがビルドする際の出力先がそれぞれ違うとのこと。なので、build.gradleの内容を少し書き換えます。プラグインを読み込んでいる部分と、archiveBaseNameの下に、出力先をそろえるためのコードを少し書き足します。
build.gradle
buildscript { repositories { maven { url = 'https://maven.minecraftforge.net' } mavenCentral() } dependencies { classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '4.1.+', changing: true } } apply plugin: 'net.minecraftforge.gradle' //追加 apply plugin: 'idea' group = 'jp.agchan_san' version = '1.0.0' archivesBaseName = 'ninino_mod' //追加 //##################################################### sourceSets { main { output.resourcesDir = java.outputDir } } idea.module.outputDir file("out/production/classes") //##################################################### java.toolchain.languageVersion = JavaLanguageVersion.of(8) // Mojang ships Java 8 to end users, so your mod should target Java 8. minecraft { // The mappings can be changed at any time, and must be in the following format. // Channel: Version: // snapshot YYYYMMDD Snapshot are built nightly. // stable # Stables are built at the discretion of the MCP team. // official MCVersion Official field/method names from Mojang mapping files // // You must be aware of the Mojang license when using the 'official' mappings. // See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md // // Use non-default mappings at your own risk. they may not always work. // Simply re-run your setup task after changing the mappings to update your workspace. mappings channel: 'stable', version: '39-1.12' // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') // Default run configurations. // These can be tweaked, removed, or duplicated as needed. runs { client { workingDirectory project.file('run') // Recommended logging data for a userdev environment // The markers can be changed as needed. // "SCAN": For mods scan. // "REGISTRIES": For firing of registry events. // "REGISTRYDUMP": For getting the contents of all registries. property 'forge.logging.markers', 'REGISTRIES' // Recommended logging level for the console // You can set various levels here. // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' mods { redenginemod { source sourceSets.main } } } server { workingDirectory project.file('run') // Recommended logging data for a userdev environment // The markers can be changed as needed. // "SCAN": For mods scan. // "REGISTRIES": For firing of registry events. // "REGISTRYDUMP": For getting the contents of all registries. property 'forge.logging.markers', 'REGISTRIES' // Recommended logging level for the console // You can set various levels here. // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' mods { redenginemod { source sourceSets.main } } } } } // Include resources generated by data generators. sourceSets.main.resources { srcDir 'src/generated/resources' } dependencies { // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied. // The userdev artifact is a special name and will get all sorts of transformations applied to it. minecraft 'net.minecraftforge:forge:1.12.2-14.23.5.2855' // You may put jars on which you depend on in ./libs or you may define them like so.. // compile "some.group:artifact:version:classifier" // compile "some.group:artifact:version" // Real examples // compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env // compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env // The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. // provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' // These dependencies get remapped to your current MCP mappings // deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev' // For more info... // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/dependency_management.html } // Example for how to get properties into the manifest for reading by the runtime.. jar { manifest { attributes([ "Specification-Title": "NininoMod", //"Specification-Vendor": "NininoMod authors", "Specification-Version": "1", // We are version 1 of ourselves "Implementation-Title": project.name, "Implementation-Version": project.version, //"Implementation-Vendor": "nininomod authors", "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } } jar.finalizedBy('reobfJar')
自分の場合だとこれで、resourcesにアクセスできるようになりました。
くどいようですが、これで問題が起きても知りませんからね。
絶縁DCDCコンバーター とりあえずシミュレート編
制作に至った経緯
ハーフブリッジ回路を作ったのですが(これはまた後記事にします)、駆動するうえでフローティング電源があると非常に便利なんです。内部に電位が動きまくるところがあり、電流の供給が外部からあると動作が安定します(なくても動くけど制約が付きます)。最終的には3つのハーフブリッジを同時に駆動したいので、出力が3系統ある絶縁DCDCコンバーターを作ろうと思いました。欲しい電圧は5~8V程度で、電源は12Vを想定しているので、適当なフルブリッジと16:8:8:8のトランスで降圧します。
わざわざフルブリッジでやるのは、出力からのフィードバックができないため、トランスの巻き数比で出力電圧を調整できるからです。
線材もっと細くすればよかった。
なんもわからん
意気込んだはいいもの、めちゃくちゃ難かしいななんだこれ。絶縁型なめてたわ。なんもわからん。
実際にトランスを巻いてフルブリッジを組んで適当な周波数の電流を流したのですが、案の定一瞬のうちに飽和して電源装置が電流制限をかけてました。飽和しないように周波数を上げて、なんとか1W程度の出力を得ました(あぶない)。インダクタンスはそれなりに確保できてるんでしょうけど、一体どんだけ結合小さいんだ。
Hブリッジの制御はゲートドライバ組むのめんどくさかったのでPIC16F1823でやっています。ゲートドライバICは高いからね。5V電源はめんどくさかったので5.1Vのツェナーで済ませました。上流は100Ω(定格オーバー)だし小食だからこれでたぶん足りるでしょう。で。
これ、危なくね?
今は電源が電源装置だから良いんですけど、バッテリーをつないだ時の挙動があまりにも不安です。なにせ、いつ飽和するかもわからないコアをギリギリで使っているからです。電源短絡を恐れながら使う回路なんて、FETがいくつ焼けるかわかりません。なので、なんとかして電流を制限する必要がありそうです。現在(4/29)、コロナの影響で部活動が原則禁止で、部室の機材を好き放題使う借りることができない状況です。家でバカスカ電流を流すような回路を扱うのは嫌なので、シミュレータ上でいろいろ試すことにしました。みんなだいすきLTSpiceです。
いろんな昇圧回路を調べたのですが、解決のヒントはあるブログで見つけた400W級昇圧チョッパから得ました。それがこちら。実際に作る回路とは多少異なりますが仕組みは同じです。
やばくなったら止める。以上。
X1とX2はハーフブリッジで、互い違いに動かしてフルブリッジを作ってます。シャント抵抗がやや大きいのは、小さいのを使おうとしてノイズのせいで痛い目見たことがあるからです。SRラッチとコンパレータはPICのペリフェラルに入ってるのでそれで処理します。入力にローパス入れる必要が出てくるかもしれません。
シミュレータ上の回路はこちら。
トランスのインダクタンスは適当です。2:1だったらでかすぎなきゃいいです。2次側でいちいちダイオードブリッジを組んでいるのは、2次側にセンタータップがないからです。線材細くすればよかったのに。
参考元の回路は非絶縁のチョッパで、最大電流と最小電流を監視していたのですが、こちらは最大電流のみを監視します。これで電流流しすぎは防げるはず。もっとも、設定した最大電流を流す前にコアが飽和する可能性があるんですけどね。
青:1次コイル電流
緑:出力電圧
出力にはとりあえず36Ωがつないであります。
とりあえず1次側の電流を2Aに制限することは出来たのですが、2次側の電圧を見てみると5Vギリギリって感じです。まあこれは結合もインダクタンスもよくわかっていないので実際に試さないと何とも言えません。
100kHzで発振してますが、500mA流した時で25kHzくらいだったのでその時より周波数は下がるはずです。おそらくスイッチングも間に合うでしょう。
ただ、この回路はフルブリッジを組むのがすごくめんどくさいです。マイコンも使ってていろいろめんどくさそうなので、ほかの方法も考えてみることにします。
沼った
絶縁DCDCには複数の方法があり、別の方法を試してみたものの、そっちはそちらで沼に嵌ることになりました。趣旨とだいぶずれていきそうなので、また別に書くことにします。つづく。