2026年6月20日土曜日

GreenPAKの開発ツール

ソフトはGo Configureで1本化されているので問題なし。GreenPAKに対してはI2Cでマイコン等から書き込めるとはいえ、Go Configureとのやり取りには開発キットが必要です。

当初秋月でも売ってたDIP Development Kitは、liteに近い機能があったけどdeprecatedっぽい。安くて便利だったのに残念。

DIPの次はSerial Debugger使ってくれってことだけど、DIPは外部にピンを引き出したりすることができたのにSerial DebuggerはI2Cでの読み書き専用です。

開発ボードとして何を買って良いのかどう組み合わせるべきなのか等の網羅的な資料を探しても見つからないので調べて簡単にまとめてみました。

表記揺れ大文字・小文字ミス、認識誤り等ご指摘いただければ幸いです。

DIP Development Platform

読み書き、ピンを外に引き出して外部回路とつないだ状態でのテストができたけど現在はdeprecated。

Serial Debugger

I2Cでの読み書き用。

Lite

各ピンをON/OFFしたり外に引っ張って信号を入れるような使い方ができる。DIPの後継機・上位機種? 秋月で売ってるDIP化GreenPAK SLG46826もそのまま挿せるし、オプションのソケットアダプター(TSSOPなどのチップをそのままZIFにはさんでテスト書き込みができる)も使える

Intro-kit

LiteにDIP版のサンプルGreenPAKを何個か付けたもの。お買い得。

Advanced

さらに上位機種で信号波形やタイミングを定義して実際の信号としてチップに入力できる。

Go Configureで電圧源・信号源として各種デジタル信号パターン / アナログ信号波形などを設定してエミュレーションできるようになっていますが、あれが実チップに対して行えるという素晴らしい世界。

Go Configure Development Board(GCDB)

さらに上位機種としてForgeFPGAも使える予定(なおGreenPAK / ForgeFPGAのためのExtention Boardは未発売なので2026年5月現在何にもできない)
  • GCDB
  • +GreenPAK / ForgeFPGA Extension Board
  • +チップ(パッケージ)ごとのアダプタ
という構成が必要。20ピンDIPもDIPアダプタを追加すれば使えるっぽい。

……というまとめであってます? 

OpenPnP:バックラッシュ!?(解決)

ノズルチェンジャーが衝突事故を起こしてしまい、その後、topカメラの照準と実際の部品実装位置がズレてしまいました。

OpenPnPは「ノズル装着状態の現状把握処理」があまくて、「画面上にN1にノズルがセットされている」と表示が出ている状態なのにJobを走らせると「N1にノズルを取り付けよう!」と動いていってしまって、装着済ノズルとノズルチェンジャー上のノズルが激突します。

アライメントが狂ったりノズル台が破損したりの大惨事です。とりあえずオートチェンジャー使用は諦めて手でノズル交換する運用で行こうと思っています。

で、狂ったアライメントの調整方法について店主さんに問い合わせたところ、N1とN2に504ノズルをセットした上でIssues & SolutionsでSolvedになっている以下の3つをRe-openしてやり直し

  1. Primary calibration fiducial position and initial camera calibration
    1. テスト基板の位置合わせマークまでjogで移動して開始→マークの位置とカメラの基礎的な調整などが自動的に実施される
  2. Nozzle N1 offsets for the primary fiducial.
  3. Nozzle N2 offsets for the primary fiducial.
    1. N1/N2に504ノズルを装着してjogを使ってノズル先端をテスト基板の位置合わせマークに正確に移動して確定→実際のノズル先端座標とカメラ座標などが設定

さらにMachine Setup>Nozzle Tips>Calibration>CalibrateボタンをN1, N2に対して実施すること、等の指示をもらい、無事解決できました。これが1か月ほど前のこと。

その後ちょっとソフトウェアとかはんだ付けが忙しくて実装機に障っていなかったのですが……1ヶ月後に時間ができたので試そうとすると正しく動いてくれません。通常の手順通り

  1. 基板の実装データを読み込む
  2. 原点をセットする
  3. Fiducial点(位置合わせマーク)で自動校正→基板の位置やセット時の傾きが自動補正

これで以前は基板が正しくセットされていたのですが……なんど試してもズレます。

上に100mm、下に100mmの動きを指示すると原点に戻らないので、典型的なバックラッシュが起きている?と推定しました。

ただ、うちに到着してまだ2か月。稼働時間などからまだベルトが滑ったりすることは考えにくい状態です。結果、店主さんは「キャリブレーションこの手順でやってみて」「キャリブレーションでここを確認して」とキャリブレーションを疑い、私はメカのトラブルを疑う状況に。起動した直後は比較的誤差が少ないのに試していると次第に誤差が多くなる症状など、メカトラブルの典型ではないですか?私はそう思い込んでおりました。

が。

再び少し時間が取れたので試していると、急にtop vision cameraの映像がボケて来ました。

フォーカスは機械式なので調整しようとカメラに触ってみるとレンズカバーというかフォーカスリングがガタガタに緩んでしまっていました。画像をみながらリングを回していくとしっかり締めたところでカチッとフォーカスが合いました。

この状態で出荷時の設定ファイルに戻し、キャリブレーションを実施し、基板のfiducial校正を実施すると……見事ズレが解消しました! バックラッシュっぽい症状はカバーが衝撃・加速度でずれたりして起こっていたのでしょうね。

キャリブレーションでもメカでもなく光学系のトラブルだったとは……。

個人的にはちょっと大きな買い物だったので、買ったばかりでぜんぜん投資を回収できていないうちに壊してしまったことにショックを受けていたのですが、助かりました。

日本ではあまりOpenPnP / PSE-3000を使っている方は少ないようですが、まぁこんな問題と解決があったよ、ということを記録しておこうと思います。

2026年5月6日水曜日

OpenPnP:Bottom Vision Pipelineがうまく行かない時

いろいろいじっているうちに不調になってしまいまして。

リカバーで苦労するんだったら、その経緯と結果をここに「こういうpipelineを設定すればバッチリ!」って書こうと思ったのですが……

  1. パーツのbottom vision pipelineをリセットする
  2. 調整したい部品をノズルに吸い付ける
  3. カメラのブライトネスを調整する
    1. Machine SetupのCameraのDevice Settingタブで、全部の数値をデフォルトに戻してAutoを外す
    2. Brightnessを±2ぐらいの範囲で調整する
    3. Partタブで調整したい部品をクリックし、Bottom Vision Settingタブを選び、Test Alignmentボタンをクリックし、ノズルの先の部品が正しく赤枠で囲まれているかを確認する
    4. 囲まれていなかったら2に戻る

これだけでした……要するに、パイプラインはいじらずにカメラをいじれってことです(ヤサグレ

といいますか、pipelineの各項目やその関連についての情報がないんですよね……どなたか見つけたら教えてください。

どっとはらい。

Tips

Machine Setup->Cameras->OpenPnp Capture Camera Bottom VisionのDevice Settingタブで、Brightnessなどの数値を変更してもApplyが有効になりません。

バグじゃん?と思ったけど、設定の下の方を見てみたら「reapply to camera」というボタンがありました。ここで書き込むようですが、でも押さなくてもそのまま反映されているっぽいです。

設定項目それぞれにAutoのチェックボックスがあるんですが、Autoにしても遅くてpipelineには間に合いません。地道に設定しましょう。

Bug?

まだ調査中ですが、Reference Auto Feederで、左下のパネルのActuatorタブから"Set feeder address"でIDをセットして、"Feeder Forward"ボタンからIDを指定するとちゃんとフィードするんですが、メイン画面のFeedersタブからfeedしても動いてくれません。泣いてます。

メイン画面でパーツをピックアップしてノズルに吸着した状態だと真空ポンプがうるさいです。用が終わったらさっさと左下パネルのSpecialタブからDiscard / Recycleしていたのですが、その状態はすぐ上のnozzle表示には反映されるのですが、メインパネルの状態には正しく反映されないようで、アプリを再起動しないと正常になりません。

どうも左下のパネルとメインパネルとの間の連携うまく行ってない感じですね。昔Java屋だった時代もあるので、いろいろと昔の日々を思い出しております。

なお、その状態でも実装するときにはちゃんとフィードされます。どうなってんだ。使い方の問題?ごめんなさい←先に謝っておくという生き方

仕様?Bug?

もう一つ困っているのは、ノズルの状態をアプリがしっかり把握していないということです。あとで別の記事にしますが、ノズルを持った状態のままノズルチェンジャーに移動してノズル同士が衝突して大惨事になります。こっちのメニューでの保持と別のメニューでの保持が競合しているというか物理的な状態として共有されていないというか……防げば防げる事故なのですが、起きる事故は必ず起こります。決定的な回避方法がないので、現在はオートチェンジャーは使わない方向で運用しています。

2026年5月2日土曜日

OpenPnP:Bliend Feederのレンダリング修正

OpenPnPはオープンソースなので、部品を供給するフィーダーが何種類も3Dプリントで作れるように公開されています。ヘッドで自動的に送るもの、電動、テープを貼り付けて静置するものなどいろいろです。

その一つのBlinds Feederは、3Dプリントした土台にテープをセットしてカバーの透明シールを剥がし、同じく3Dプリントしたフタを被せるようになっています。フタをスライドすると中身が飛び出さないようになり、実装のときにはフタをスライドして中身が見えるようにしてから稼働します。

どういう部品(カットテープ)を使うかをスクリプト?でセットすると、OpenSCADというやはりオープンソースのツールが3Dでレンダリングしてくれます。そのSTLを3Dプリンタに持っていけば、部品名のばっちり入った専用フィーダーが手に入るという素晴らしさ。

なのですが……試すとラベルが出力できません。

Claude Opusさんに相談したら3回ぐらいのやりとりで問題が修正されました。

いやー……大したもんだ。

ちなみに、冒頭の画像は、以下のスクリプトで生成されたものです。

    arrayed_tape_lanes=      [
        LaneDefinition(1, tape0402,   ["R0402-316K"]), 
        LaneDefinition(1, tape12mm,   ["LTC4011CFE"]), 
        LaneDefinition(1, tape12mm,   ["TPS630701"]), 
        LaneDefinition(1, tape0402,   ["C0402-100nF"]), 
        LaneDefinition(1, tape0402,   ["R0402-100K"]), 
        ],    

いやー……大したもんだ。

なお、光学認識の精度を高めるために、緑色のフィラメントを使うとクロマキーあれこれで認識精度がよくなるらしいです。

修正したスクリプト?はgithubに上げておきます。オープンソースほんと何もわからんのですが、とりあえず元がGPL 3.0なので公開しておかないといけないよね、ということで。

2026年5月1日金曜日

OpenPnP:Tips:ズレた!?

OpenPnPの実装機PSE-3000を順調にテスト中です。

が。模様替えしていて掃除機で強打してしまいました。

ヘッド(ピックアップを上下させるところ)が曲がってしまったようで、0.05mmほど部品がズレて置かれるようになってしまいました。

光学的な処理は問題ないので、たぶんカメラ位置とピックアップ軸とがずれたのではないか?という推測のもと、関係しそうなところを片っ端からいじっていたら(原始人)、見つかりました。Machine Setup→Heads→ReferenceHead H1→Nozzlesの下に2つノズルがあって、私の場合、両方ともズレますので個々に


Configuration→Coordinate Systemを直します。今回、上に0.05mmほどズレるので、Yの値を0.05mm変えたところ、無事真ん中に置かれるようになりました。

焦りました……自分のミスなのでメーカー製品だったら、サービスマンに来てもらって10万円ぐらい請求されかねない事態でしたが、オープンソース製品こういうところ助かります。

ソフトの改良などでオープンソースに貢献する日が来るかどうかわかりませんが(バグはいくつか見つけましたが)、とりあえずTIPSを公開しつつ恥を晒して生きていこうと思います。

2026年4月30日木曜日

誤家庭リフロー再び:今度はオーブン改造

いい感じのグラフ

弊社のリフロー歴は以下の通りです。

  • 山善のホットプレート+放射温度計による手動制御
  • 中華リフロー炉LY962と日本製アップトランス導入
  • PCBA外注へ
  • 自宅リフロー回帰 ←今ここ

中華リフロー炉LY962は赤外線+温風式で、赤外線式のT962よりも少しマシでステージの中央付近だけを使う分にはムラ無く動いてくれました。冷却ファンが回らないなどの些細(?)な問題はありましたが。

ただ、その後JLCPCBのPCBAがとてもリーズナブルになり、「LCSCに在庫のある部品で設計する」という方針だと自分で作業する気になれないほど安く早く基板が届くようになりました。それで中華リフロー炉を手放しました。

ということで数年間はPCBAでいい感じに試作・少量量産をしていたのですが、トランプ関税とイラン事変が始まりまして……JLCPCBのPCBAは部品のコストが急上昇し納期も伸びがちです。コストはまだしも納期が延びたのは痛いです。

また、国内のPCBセンターも品質が低下してしまい価格に見合わないものになってしまいました。

というわけで、また自宅でリフロー環境を整えることになりました。外注PCBAに頼っているうちに設計は0402やBGAが多くなり、ピンセットで乗せるのもしんどいので、OpenPnPの実装機も導入しました。

で、リフロー炉。中華リフロー炉はでかいし臭いし温度も誤差が大きく改造が必要……ということで選択肢から外しました。改造にも結構な手がかかり、それならコンベクションオーブン改造する方が早いな、と。

その他、30x30mmの主にリワーク用のMHP30と部品取り用Mechanicの60x80mm、100x100mm中華ホットプレートが転がってます。

余談ですが、昔はスイッチサイエンスさんがオーブン用の制御基板を出してたんですよね。またネット検索してもいろいろ「作った」っていう記事はみかけるんですが、売ってない……。

はっ、もしかしてビジネスチャンス!?

構成

GPIO足りないからPi Picoに移行するか……などと右往左往したのですが、液晶付きmicroSD付きという安楽さには勝てずにM5Stack Basicにしました。

構成は以下の通りです。


コンベクションオーブン

シロカの安いコンベクションオーブンST-4N231は余計な電子制御がないので(温度はバイメタル制御、あとは機械スイッチ、タイマーはゼンマイ式)内部を改造しなくても外部で電源供給をON/OFFすれば使えます……ただ在庫少なくなってきました。

ゼンマイで自動的に電源切れるのは安全側としてはありがたいのですが、毎回リフロー開始前に60分にセットしてリフロー途中で電源OFFという惨事を予防する必要があります。

M5Stack BASICの改造

将来の拡張も考えるとGPIO足りないのでスピーカーを殺します。具体的にはこの記事を参考にAFMジャンパーを短絡してアンプが働かないようにしました。

これで浮いたGPIO25はSSRの制御に使います。

熱電対+MAX31855

ブレイクアウト基板を使います。Adafruit製品とそのパチ、Strawberry Linux製がありますが、Adafruitのは熱電対別売りなのでちょっと面倒です。

・1番楽:Strawberry LinuxのMAX31855セット秋月のコネクタ付き熱電対

・少し面倒:Strawberry LinuxのMAX31855セットで自分でコネクタ配線する

という感じです。秋月の熱電対は250℃までと書いてありますが200℃ぐらいで被覆溶けます(笑)。Strawberry Linux付属の熱電対はガラス被覆で400℃まで使えます。後者はガラス繊維の被覆を剥く必要があります。手袋をしてもガラス繊維で指がチクチクになりますし、カプトンテープでペローっと剥けたりしますので、扱いは慎重に。

Adafruit製はターミナルブロックに直接接続する方法です。がっつり固定しないとすぐに断線しそうです。私は自分で基板とネジ止めできる台を3Dプリントで作り被覆ごとしっかりくわえ込むようにしました。

左:ストリナ、右:Adafruit製

まぁStrawberry Linuxさんのもネジ位置がコネクタから離れているので、ちゃんとサポート作る方が安全かな?とは思います。

M5Stackの配線

左右サイドの端子だけ使います。

MAX31855はMOSIを使いません。計測データー送りっぱなしです。GPIO5 = SCK, GPIO16 = MISO(MAX31855モジュール上ではDOと表記されることも)のピンは並列、CSを1台ずつ(GPIO17, GPIO26)につなぎます。あとはGNDとVccです。

上記の通りGPIO25はSSRを制御するためのフォトカプラーにつなぎます。GPIO25から電流制限の470Ωを経由してフォトカプラー(どこの誤家庭にもあるTLP624)のアノードにつなぎます。カソードはGNDへ。

フォトカプラーの二次側は5V→フォトカプラーのコレクタ→SSRの制御入力側+→SSRの制御入力側ー(マイナス)→GNDという配線です。

SSR

今回使うのは秋月で売っているこれ↓ですが、最大12mAとは書いてあるものの最低動作電流が書いてないんですよね。

SSRの入力特性を確認するため、制御入力側に直流電源を接続して動作確認を行いました。

その結果、約4mA〜12mAの入力電流でAC100V側がONとなり、今回使用した個体では3.7V・約3.6mAから動作を開始しました。

本来、SSR入力(内部はLED)は電流制御が望ましいのですが、本構成ではCRDは電圧差不足により使用できず、抵抗による制限では動作マージンを十分に確保できない状態でした。

そのため本記事の構成では、SSR内蔵の電流制限抵抗に依存し、外部電流制限なしで使用しています。

ただし、入力電流の仕様が明確でないため、個体差やロット差による動作ばらつきが想定されます。

同様の構成を採用する場合は、必ず入力電流を実測し、十分なマージンを確認してください。

また、SSRはオフ時でも微小な漏れ電流が流れます。このためヒーターが完全に遮断されない可能性があります。改造・配線作業時や未使用時は、必ずコンセントを抜いてください。

仕様書には5A以上で使うときには放熱器が必要と書いてあるのですが、秋月にもありませんし、Mouser, Digikey, AliExpressでも手に入りません。型番で検索したらAmazonに在庫があって購入できたのですが、さっき見たら無くなっていました。

なお結果として1200Wのコンベクションオーブン全力で使ってもほぼ温度上昇しませんでした。これなら放熱器なしでも?と思うのですが、まぁ半導体は意外と特性変化するので、そのまま付けておきます。みなさまも何か適当なアルミ板で放熱してください。

コンベクションオーブンの改造

※ここから先はAC100Vを扱います。感電・発火の危険があります。
 圧着・絶縁処理に不安がある場合は、この部分だけでも経験者に依頼してください。

ACのコードはゴム引きの2本平行になっているやつです。これを真ん中で2つに分けます。左右の被覆に傷を付けないよう慎重に!まぁ傷ついた側を加工用に使えばいいですけども。

左右に分かれた片方を真ん中で切断し、切断した両端の被覆を剥いて、絶縁付き圧着端子を圧着してしっかりネジで締め込みます。

これでAC電源をSSRでカットできるようになりました。

なお圧着工具がない場合には、この機会にご購入ください。決して!銅線を巻き付けてネジで止める!なんてやってはいけません。

私が使っている圧着工具
マーベル(MARVEL) 圧着工具 ハンドプレス 絶縁被覆付圧着端子・スリーブ用 MH-032

今回必要な圧着端子

制御入力側:TRUSCO 絶縁被覆付圧着端子先開形φ4.3長さ21.9 (25個入) TTMEX1.25Y4N

AC100V側:TRUSCO 絶縁被覆付圧着端子先開形φ4.3長さ21.5 (20個入) TTMEX2Y4S

圧着工具はもっと安い中国製もありますが、必ず「絶縁被覆付き圧着端子用」を購入してください。絶縁被覆なしの「裸圧着端子用」というのもあって、そっちだと正しく圧着できません。また、絶縁被覆付U字圧着端子は被覆の色で電線の太さが決まり、圧着工具に装着する場合も工具の同じ色のところに差し込みます。電線の太さと端子のサイズ(ねじ径)が別々に指定されているので、間違えないように気をつけてください。

配線と基本テスト

まず、M5StackとMAX31855 x 2とフォトカプラーをつなぎます。MAX31855には熱電対を接続します。

MAX31855 x 2個との通信をします。Adafruitさんのライブラリでピン接続だけ変更して1台ずつ動作を確認すると良いでしょう。熱電対を指でつまんで、温度が室温付近から30℃ちょいまで上がることを確認してください。指でつまんで温度がさがる場合には、たぶん熱電対の配線が逆極性になっています。室温が高すぎる可能性もありますが。

次はフォトカプラーですが、フォトカプラーの二次側に電流制限抵抗入りLEDなどをつないでLチカするのが一番わかりやすいと思います。

一度電源を全部切ってから熱電対をコンベクションオーブン内に取り付けます。私はこのリフローオーブンは試作用とわりきっているので、緑色専用にするつもりです(レジストの色に寄って赤外線吸収率が違うので測定用基板と実施用基板が同じ色でないと誤差が大きくなる)。余っている緑色両面基板に熱電対を貼って、オーブンのトレイ左右に配置しました。「大きな基板が使えるように!」と左右いっぱいに離すと真ん中に置く基板との温度差が大きくなってしまうと思いますので、実際に使う基板の最大サイズから少し離れる、程度の位置に設置するのが良いかと思いますが……この辺は実験して決めるしかありません。

あと、オーブンのドアから熱電対につながる線を引き込む必要がありますが、このオーブンはドアをあけるとトレイを引き出すようなフックがついてます。そのせいで「トレイを容易に引き出せる」かつ「開閉してもじゃまにならない」ような配線を決めるのに苦労しました。

現状では以下のように配線しています。

上左右の隅から入り、白いフロントカバーと銀灰色のカバーの間にある縦溝を通してトレイの下の方まで。


下の方には「ドアをあけてトレイを引っ張り出せるけど、たるみすぎてヒーターに接触しない」程度のたるみをもたせます。


そしてトレイの左右端にある針金に固定するのですが、開閉時にフックが当たらない位置から手前に向かって伸ばし、一番手前のところで断線しない程度にUターンして、奥の方へ折り返し、奥行き半分ぐらいのところで中央方向に向かって曲がり、基板と熱電対を固定する。


という形になりました。トレイの下には「ぱんくず受け」のアルミ皿がありますので、この上に配線を少し長めに残しておけば、熱電対の位置を変える時に困らない。はず。です。

ちなみにT962のような赤外線式オーブンの場合には熱電対は基板の上空にぶら下がっています。いいのかそれで。

結合テスト

M5Stackに結合テスト用プログラムをアップロードしておきます。単純に

  1. 各GPIOやMAX31855を初期化
  2. Aボタンが押されるのを待つ
  3. 押された後は、温度を表示する→両方が30℃以下ならSSRをオンにする、そうでなければSSRをオフにする→繰り返し

程度で良いと思います。

電源コンセントから全部ぬけていて、M5StackもUSB給電されておらず、バッテリーでも動いていない状態から始めます。コンベクションオーブンのタイマーが切、モードが上下ヒーター、温度100℃になっていることを確認します。

M5StackとMAX31855x2とフォトカプラーを接続します(確認します)。

フォトカプラーとSSRの制御入力側を接続します(確認します)。

SSRの二次側は配線済と思いますが、未接続なら接続します。

コンベクションオーブンのタイマーが切になっていることを再度確認します。

M5StackとパソコンをUSBで接続します。SSRのインジケーターが点灯していないことを確認してください。

まだここではコンベクションオーブンのプラグはささっていませんからね!

M5のスタートボタンを押します。SSRのインジケータが点灯するはずです。点灯したら、熱電対を指でつまみます。温度が30℃を超えるとSSRインジケーターが消えるはずです。

基本的な動作は大丈夫みたいです。

M5のプログラムを書き換えて、両方60℃以下ならSSRオン、にします。

コンベクションオーブン+SSRのプラグをコンセントに差し込みます。

コンベクションオーブンのモードを上ヒーター、タイマーを10分ぐらいにセットします。

M5StackのAボタン(上記テストプログラムの場合)を押します。SSRのインジケーターが点灯して上ヒーターが赤くなってきます。温度が上がってくるとSSRのインジケーターが消えて、ヒーターも白くなっていきます。切れたあともしばらくはオーバーシュートで温度が上昇していくと思います。早く冷やすためにドアをあけて空気を入れて温度を下げます。温度が60℃を切ると再びインジケーターが点灯し、ヒーターが赤くなります。

電気製品全般として「異常な臭いや煙があがったら電源を切る」のですが、新品のオーブンはものすごく臭いんですよね……なので、正常に動作しているか、特にACのコードが加熱したりしていないか、十分確認してください。

一度完全に冷ましてから、コンベクションオーブンのモードを上下ヒーターにして、再度テストします。SSRやACコードなどが異常に発熱している様子がなければ、大丈夫かと思います。

が、自作機器、くれぐれも最後は自己責任!ということで一つずつ確認しながら進めてください。

お疲れ様でした(まだ終わってない)。

制御について

PIDでもできるかもしれませんが、熱慣性が大きすぎてしんどいです。

なので、私は計測のプログラムを書いて(Claudeさんに書いてもらって)、150℃、200℃、250℃……など要点でのオーバーシュート量と時間、PWM20〜30%で平衡になる温度を計測、そのパラメーターをもとにして差分制御を行う形にしました。

まぁプリヒートのところを除くと出力全開なんすよね。

ゼロクロスSSRを使っていますし熱慣性も大きいので1HzのPWMにしています。

ということで、Claudeさんにテストデーター取得用のプログラムを書いてもらってSDカードに入ったログを得ました。それ踏まえて

  1. プリヒート温度まで
    起動ボタンが押されたら100%で加熱する。150℃でのオーバーシュートが6.5℃だったので145℃で100%加熱を止める。
  2. プリヒート区間
    オーバーシュートが収束する160℃から勾配制御を始める。PWM 22%だと180℃まで上昇するので、150-180℃までの30℃を90秒→0.33℃/秒の温度勾配に近づくようPWMを10秒ごとに1%ずつ変化させる。
    150℃を超えた時点から計時して、180℃を超えるか90秒を経過した時点でプリヒート終わり。
  3. リフローへ
    100%出力で250℃まで加熱。250℃ではオーバーシュートがほとんどないので、数秒後にオーブンのドアを開けて空冷(人力)

という制御にしています。結果が冒頭のグラフです。まだ細かいチューニングをしていませんが、バタバタ暴れないいい制御になっているんじゃないかと思います。


少し宣伝

自分も作ってみたいけど、苦手な分野は手伝って欲しい!という方は、私のココナラサービスをご検討いただければ幸いです。

  • 基板を作る
  • ソフトウェアのみの開発
  • 各種サポート

など、どの段階・要素でも対応可能です ^ ^

2026年2月16日月曜日

ATTINY1616への書き込み

自分へのメモ。

Arduino NANO経由での書き込みには失敗。jtag2updi自身がもうやーめた、みたいな感じですし。

続いてシリアルでの書き込み。

先人曰くCH340が良いらしいけども、手元に皆無だったので、昔ハミックベア用に作ったCP2102の基板を使います。懐かしい型番ですわね。

接続方法としては、

  1. USBシリアルのTXとRXの間にショットキーバリヤーダイオードを入れる。TXがカソード / RXがアノード
  2. RXから470Ω(4.7KΩという記述もある)でATTINY1616のUPDIピンにつなぐ。
  3. ATTINYのGNDとUSBシリアルのGNDを接続
  4. ATTINYのVCCとUSBシリアルのVUSBを接続

Arduino IDEにATTINY1616などのビルド&書き込みツール「megaTinyCore」を入れます。入れ方はここを参考にしました。

Arduinoで動く20PinのAVRマイコンATtiny1616を試してみた

で、ツールメニューはこんな感じ。


PortはUSBシリアルのポート、BoardはMegaTinyCoreの下にATTiny1616が2つでてくるのですが、w/Optibootのない方を選びます(何が違うのか不明)。

Chip:で接続したATtinyを選びます。

あとはProgrammerのところがミソで、USBシリアルをつなぐ場合にはUPDI Serialを選ぶのですが速度などいろいろあります。私は「SerialUPDI 230400 .... Mac / Linux」というのが目に留まったので、それで試しました。

Toolメニューから「Burn Bootloader」を選びます。これで、USBシリアル経由でATTiny1616に対してArduinoブートローダーが書き込まれます。

で、おなじみのBlinkの書き込みですが、ここはもうcmd+Uでイケます。さてピン番号の指定はどうすれば?と思ってLED_BUILTINにマウスオーバーしたら「PIN_PA7」と表示されました。で、PA7に抵抗入りLEDをつないでみたら無事点滅しました。


jtag2updiで半日ぐらいツブしたあとなので、あっけなく動いたなぁという感じです(枯木

その後、SerialのスピードをTurbo 921600にしても書き込みできましたが、Blinkぐらいのサイズ(744 bytes)だと違いがわかりませんw

あと、Serial.printはPB2に信号が出てました。ピンアサイン通りですね(RXはPB3)。公式サイトにピンアサインをソフトで切り換える方法が出てました。が……

Hardware Serial reference (AKA UART or USART)

Serial.pinsで送受信ピンのアサインを変更したり、Serial.beginで各種モードを指定できるようなのですが、うまく行ってません。pinsで他のピンを指定してもPB2から出てきてしまうので、まだ何か他にあるんでしょうか……まぁ全部読めって話なんすけどw

とりあえず最低限の動作確認できたので、今日はこの辺で。

その後、M5StackのCH9102F搭載タイプのESP32-DOWNLOADERを試してみましたがうまくいきませんでした。手元には同製品のCP2104タイプがないので試せていません。CH340で書けた、FT232を使った、という記事は見かけるのですが……。うちは前記の通りCP2102です。

ご参考まで。

2025年12月7日日曜日

電池電極用溶接器

埃が落ちているようにみえるけど溶接点なのよ

ニッケルタブ用溶接機を買うのは2台目です。1台目は保管している間にバッテリーが干上がってしまい、必要に迫られて2代目を買いました。

今度のはポータブルオシロなどでもなじみのあるFNIRSIの製品です。

FNIRSI SWM-10 スポット溶接機

使い方は動画で何となくあたりをつけつつ、とりあえず初期設定のままで使って見ました。

  1. 予め溶接機をフル充電。USB TypeC充電器につなぐと緑の点滅、フル充電で常時点灯になります。
  2. テストに使う電池を万力に固定。今回使用済アルカリ乾電池を使いましたが、生きている電池は締めすぎるとよくないので治具などを使った方が良いと思います。
  3. 付属のニッケル板を電池にしっかり固定。
  4. 溶接機に溶接棒をセットする。差し込み口がかなり固いので、なにか間違えたのかと思いましたが、垂直に立てると刺さります。
  5. 電源スイッチ長押しで溶接機の電源ON
  6. 片手で電極棒の片側をしっかりニッケル板を押さえつつ電池まで押しつけます。
  7. もう片手で電極棒のもう1本でニッケル板ごしに電池までグイイイ、と押します。
  8. 1秒ほどで火花が散って溶接されます。
電極棒同士を短絡させないよう(短絡検知はついてますが)、ニッケル板だけでなくしっかり電池まで押しつけるのがコツかもしれません。

日本語マニュアルはPDFで送ってくれるようですが、とりあえずデフォルトそのままで十分溶接できました。初期設定のままですが、かなりチカラを入れても剥がれない程度にしっかり溶接できていると思います。

エネループを束ねてバッテリーパックを作る、という程度の作業であれば、十分対応できるんじゃないでしょうか。

先日、15AhのLiFePO4電池を買って評価していますが、1台目の溶接機が使えなかったので電極は丸めた金属板を押しつけただけでした。これでしっかり電極を溶接して、溶接した電極に配線をハンダづけ、という状態での評価ができます。


余談ですが、アリエクで買った15Ah表記のLiFePO4電池はしっかり15Ahの容量がありました。最初の放電→充電は挙動不審でしたが2回目からは表記通りの容量です。0.1Cでの充放電ですが、放電では最後まで発熱せず充電でも容量の90%ぐらいまではほぼ発熱なかったので、かなり良いですね。三元Li-Ion電池よりも安全ですし、もっと普及してくれると良いなぁと思います。取り寄せるのも大変ですので。



2025年12月3日水曜日

電池ボックスの製作(LiFePO4用)


アリエクプレスから32140サイズの大きなLiFePO4バッテリーが届きました。容量15Ah、重さは300g近いです。10Ahのリポ電池が200g弱なので、電流容量あたりの重量はそんなに遜色ないですね(表記が正しければ)。なおLiFePO4の方が電圧が低いので、電流容量が同じなら電力容量は15%ほど少ない計算になります。

電池ボックス、市販されていないか一応探したんですが、無いですねw

こういう場合に持っていてよかった3Dプリンタ。テストなのでFusion 360で簡単な形のボックスを作り、スリットにニッケルのストリップを通して電極バネとして使う方針です。

デザインに小一時間、お昼休みの間に出力して、電極作りとテスト条件設定が30分。作業時間は90分ほどで簡易電池ボックスのできあがりです。実験用で1回使うだけなので再出力は避けたい。そこでキツくて入らないよりゆるめに作ったら少し緩すぎました。

電池溶接用のニッケル板を使ったんですがバネ効果はあんまり期待できません。ニッケルメッキのリン青銅板って売ってないですかね……。

とりあえずサーモグラフィーで温度を測りながら1A放電で容量を確認中です。

こういう充電放電テストの間に過熱している部分がないか監視するデバイスを作らなきゃと思いつつ何年が過ぎたんでしょう……8x8のサーモパイル程度で良いと思うんですが、自分の物となるとなかなか手が動きません ^ ^

2025年10月24日金曜日

新しいスミチューブ(熱収縮チューブ)


秋月で「スミチューブ」という熱収縮チューブを売ってます。とりあえず不満はないけども、新しく「スミチューブF(Z)」というタイプが入荷したので注文してみました。

パッと見、思っていたよりも厚手で、触った感触はざらざらしています。旧タイプのものは半透明でツルツルでしたがこっちは不透明でざらざらです。

0.3mmと0.5mmの架橋ビニール被覆線を通して、手芸用のヒートガンで加熱してみました。

芯線0.3mmの方は少し長めに熱を加えないとしっかり粘着しない感じですが、0.5mmの方は十分固定されています。

従来のものよりも収縮率が高いかな?と思います。収縮後は厚手ですが収縮率高いわりにカチカチに硬くならないのでモノタロウで売っている高収縮タイプよりも使いやすそうです。まぁモノタロウのは硬さ・厚さを必要とする用途に使う物だと思いますが。

ところで……私、先日、旧タイプの熱収縮チューブを20本ほど買ったばかりなのですが……。