CNCルーターによるプリント基板の自作


はじめに

CNCルーターを使ってある程度精密な(0.5mmピッチのICを扱える)プリント基板を作成できるようにしました.使用したCNCルーターはCNC1610という加工範囲が160x100mmの小型のものです.この製品はWoodpecker CNCとも呼ばれ,加工範囲の違いによりCNC2418やCNC3018といったバリエーションがあるようです.CNCフライスやCNC彫刻機とも呼ばれますが,あまり剛性のない構造なのでここではCNCルーターと呼ぶことにします.

プリント基板を自作する方法として昔ケガキ法というものを試してみましたが,コントロール用のPCを捨ててしまったため使えない状態になっていました.また,事前に生基板にレジストを塗布したり,エッチングを行ったり,穴あけを行う場合は位置合わせをする必要があるなど面倒でした.最近ではFusionPCBなどに基板を発注することもありますが,1枚しか必要のない場合やすぐに必要な場合は不便です.最近はAliExpressなどを通じてCNCルーターやプリント基板切削用のVカッターが安く入手できるようになったので,プリント基板作成専用の工作機械を用意することにしました.最初に購入したCNCルーターが不良品だったり,プリント基板作成に必要な精度がなかなか得られず,通販で部品を揃えながらようやく実用化するまでに結局丸一年かかってしまいました.

作成した基板の例
拡大した基板(目盛りは0.1mm間隔)

プリント基板作成の手順

以下にCNCルーターを使ってプリント基板を作成する手順を説明します.

1. KiCadによる基板レイアウトの設計

回路図を作成して基板レイアウトを設計するためにKiCad (Version 5.1.5-3)を使います.

  1. pcbnewで基板レイアウトを行う.
  2. ガーバーデータを出力する.

2. FlatCAMによるGコードの生成

ガーバーデータからGコードを生成するためにFlatCAM (Version 8.5)を使います.

  1. 初期設定
  2. 配線切削のGコードを生成する.
  3. ドリルのGコードを生成する.
  4. 基板外形のGコードを生成する(ここでは外形を配線同様にVカッターで削る).

3. bCNCによる基板の切削

GコードをCNCルーターに送るためにbCNC (Version 0.9.14.306)を使います.

  1. 基板の固定
  2. GRBLへの接続
  3. 加工データ読み込み
  4. 原点の仮設定
  5. Z原点の調整
  6. Height Mapの設定
  7. 加工開始
  8. ドリルでの穴あけ
  9. 基板の取り外し

CNC1610の改良

プリント基板を精度よく加工できるようにするため,いくつかの改造を行いました.

非常停止ボタンとZ軸プローブ

まず,CNCルーターが予期しない動作をしたときに素早く止めるための非常停止ボタンを取り付けました.コントローラーボードのSTOPという端子に接続します.このボタンはCNCルーターを使う上で必須だと思います.またZ軸プローブも取り付けました.コントローラーボードのJ-A5という端子に取り付けます.これにより工具のZ原点設定を自動で行ったりheight mapを利用できます.なおリミットスイッチは取り付けませんでした.6つのスイッチを付けて配線するのは面倒だったのと,3Dプリンターとは異なり工作物を固定して使うフライス盤では機械の可動範囲であっても工具が移動できるか常に注意しなければならず,また工作物に対する相対位置が重要で絶対位置はあまり必要ないと思ったからです.

スピンドルの芯振れの改善

0.5mmピッチのICを扱うには,0.2mm以下の幅の線を安定して削れる必要があります.今回プリント基板を作成するにあたって一番問題になったのはスピンドルの芯振れの問題でした.購入したばかりの状態でVカッターを使ってできるだけ細い線を切削しようとしても,スピンドルの振れが大きく太い線になってしまいました.そこで以下4つのチャックを試してみました.

ER11コレットチャック(左)とER8コレットチャック(右)
小型チャック(左)と真鍮製ジョイント(右)

結局最終的にプロクソンのMM50というミニルーターをスピンドルに使うことにしました.このルーターは12V/20Wで回転数は20,000rpmであり,元からついていた24V/10,000rpmの775モーターよりもトルクは低そうですがプリント基板の作成には問題ないと思います.2.35mmと3.0mmのコレットが付属しますが,3.2mmのコレットが別売りされています.回転数を調整するツマミがついていますが,これは脈流を与えた場合だけ使うことができて,安定化された12Vを与えた場合は常に最大回転数で動作します.回転数制御用の回路や電源ケーブルが邪魔なので取り外そうかとも思いましたが,分解することで軸の精度が悪化する恐れがあるのでとりあえずそのまま使っています.

このルーターを固定するための部品を3Dプリンターで作りました(STLファイル).ThingiverseにあったMICROMOT 50用の部品が使えるかと思ったのですが,サイズが合いませんでした.Made in Japanと書かれているので,型番は似ているけれど海外版の製品とは異なるのかもしれません.装着したエンドミルの振れを測定したところ0.02mmでした.簡単な構造のコレットなのでこれが限界かもしれませんが,今回の目的に対して許容範囲だと思います.

プロクソンのルーターを取り付けた状態

捨て板の平面出し

CNCルーターのアルミ製テーブルは完全な平面ではなく歪みがあり,またドリルで基板に穴開けすることもあるので,100x150x6mmのPOM板を両面テープでテーブルに固定してエンドミルで平面出しをしました.当初は平面出しをすればheight mapは不要かと思っていましたが切削深さが安定しませんでした.そもそも両面テープ自体の厚さが0.17mmほどあり,基板の固定により歪みも起こるので,0.1mmの深さで銅箔を削るにはheight mapは不可欠でした.

Gコード送信装置

CNC1610はGRBLというGコード解釈用のコントローラーが使われていますが,GRBLにGコードを送るための装置が必要になります.購入したCNC1610にはオフラインコントローラが付属していて,電源を入れるとすぐに使えて便利だったのですが,height mapに対応していないため使うのをあきらめました.

オフラインコントローラーの代わりに,Raspberry Pi Zero WにbCNCをインストールして使うことにしました.480x320の3.5インチLCDを取り付けてタッチスクリーンで操作できるようにします.オフラインコントローラー用の8ピンボックスヘッダにシリアル入出力信号が来ていて5Vも供給されるため,CH340E搭載のシリアル変換モジュールをRaspberry PiのUSB OTGに接続してGRBLコントローラーと通信するようにしました.Raspberry PiのGPIO端子にもシリアル入出力端子がありますが,3.3Vロジックなので電圧の変換が必要になるのと,Bluetoothを使えるようにしたかったのでシリアル変換モジュールを使いました.Sambaでファイルを転送できるようにして,VNCでリモート操作できるようにしました.3.5インチLCDでも必要な情報が表示できるようにbCNCを改造して使っています.


ケースに収めたRaspberry Pi Zero WとLCD
Raspberry Piで動作中のbCNC

騒音低減

3Dプリンターで使用したものと同じ振動ダンパーを取り付けたところ,騒音の防止にかなり効果がありました.

スピンドル回転数の制御

このタイプのCNCルーターは,搭載しているコントローラによってスピンドル回転数の制御ができたりできなかったりするようです.自分の購入したCNC1610は,S10にすると回転数は落ちるものの,S300以上からS1000まで回転数がほとんど変わらないという中途半端な動作をしました.回転数をGコードで制御できた方が便利だと思い,以下のように改造しました.しかしながら,現状では回転数は常に最高速度で使っているのでこの改造は不要だったかもしれません.

コントローラー基板(表)
コントローラー基板(裏)

コントローラーの基板を見たところスピンドル用モーター周辺の回路図は下記のようになっていました.これで回転数の制御がおかしい原因が分かりました.モーター制御用のMOSFETであるIRF540はIS181というフォトカプラで駆動しています.PWM信号を与えた場合,フォトカプラがオフになってもMOSFETのゲートの電荷は10kΩの抵抗を通して徐々に減少するので,MOSFETがオフになるのに時間がかかってしまいます.そこでフォトカプラをプッシュプル出力のTLP152に交換しました.またIFT540のゲート電圧は最大20Vなので,コントローラー基板内部で生成している12Vを使うようにしました(24Vをかけて一度MOSFETを燃やしてしまいました).Gコードでスピンドルの回転数を直接指定できるようにするには,GRBLの$30と$31というパラメータに回転数の最大値と最小値を設定する必要があります.購入時のコントローラーのファームウェアはGRBL 0.9でこれらのパラメータには未対応だったので,GRBL 1.1hにアップデートしました.これでスピンドル回転数を連続的に変化できるようになりました.

改造前と改造後の回路

[戻る]
2020-11-24 ページ作成
T. Nakagawa