とある科学の備忘録

とある科学の備忘録

CやPythonのプログラミング、Arduino等を使った電子工作をメインに書いています。また、木製CNCやドローンの自作製作記も更新中です。たまに機械学習とかもやってます。

【木製CNC】電子基板の製作

前回、CNCの機械系を設計・製作しました。

shizenkarasuzon.hatenablog.com


今回は、この機械部を動かすために必要な電子基板を作成していきます。

1.概要

CNCには、三次元で物体を切削するために、X軸、Y軸、Z軸の3つの可動部があります。そして、各軸にはステッピングモーターがついていて、それがそれぞれの可動部の移動量を制御しています。そして、これらのステッピングモーターはパソコンから送られた切削指令をもとに動いています。

なので、この記事で紹介するのは、「PCから送られてきた切削指令をもとに各軸のステッピングモーターを制御するための基盤作成方法」です。


そこで、この研究では、次のような方針で基盤を作成しました。
f:id:pythonjacascript:20181107222031j:plain
まず、私たちはステッピングモーターを動かすための専用のドライバーが必要と考え、それぞれの軸専用のモータードライバー基盤(Motor Driver Board)を製作しました。
そして、それらのドライバー基盤と、PCを繋いでいるのが、「メイン基板(Main Board)」です。

PCから送られてきたモーターの制御命令の信号はメイン基板を通って各軸のドライバー基盤に伝わります。そして、ドライバー基盤はその信号をもとに専用のICによってステッピングモーターを動かします。


さらに、緊急時の非常停止ボタンも取り付けています。上図でいうと赤枠の部分ですが、スイッチを押すと、すべて機能(ステッピングモーターの回転、スピンドルモーターの回転 etc. )が停止するようになっています。


ステッピングモーターまでの信号の流れ

ステッピングモーターを動かすための信号の伝達経路についてです。

f:id:pythonjacascript:20181109003122j:plain
まず、パソコンから、パラレルケーブルを通して「クロック信号」と「DIR信号」が送られてきます。

・「クロック信号」は回転方向や回転角度を表しています(クロック信号はパルス派の信号で、1パルスが入力されると、ステッピングモーターが1ステップ角*1だけ回転する。)
・「DIR信号」は「CW/CCW信号」とも呼ばれ、モーターの回転方向(時計回り or 反時計回り)を表します。

この信号は、メイン基盤を通して、それぞれのモータードライバー基盤のステッピングモータードライバーに送られます。ステッピングモータードライバーは受け取ったクロック信号とDIR信号をA、A/、B、B/信号の4つに変換します。ステッピングモーターはこの4つの信号によって動きます。



2.メイン基板の製作

f:id:pythonjacascript:20181107225652j:plain
メイン基板


メイン基盤はパソコンとパラレルケーブルでつながっており、主に、パソコンから送られてきた信号をモータードライバー基盤に送る役割があります。

補助的な役割として、非常停止信号とリミット信号をパソコンに送る役割もあります。

回路図です。
f:id:pythonjacascript:20181109001417j:plain


この回路図には書き忘れていますが、74HC14の近くにパスコン(ノイズを防いだり電源電圧の変化を少なくするコンデンサ)をつけたり、リレーのコイルやスピンドルのモーターの近くに逆起電力を流すためのダイオードをつけたりしています。また、74HC14の入力がオープンになるのを防ぐために、パラレルポートの各入力ピンを抵抗でプルアップ(またはプルダウン)しています。

基盤の電源(5V)は、三端子レギュレータL7805を使って生成しています。

シュミットトリガインバータ

パラレルケーブルから入力された信号は、一旦74HC14 というICを通ります。

74HC14はシュミットトリガインバータという種類のICです。これを取り付けることで、送られてきた信号にフィルターをかけることができ、出力電圧の違いがはっきりと現れます。
入力信号がはっきりしたデジタル0と1の明確な差がない時に、0と1境でどちらか不明になったり、高速で0と1を繰り返さないために使われます。


3.モータードライバー基盤の製作

f:id:pythonjacascript:20181104233708j:plain
モータードライバー基盤

モータードライバー基盤の役割は、メイン基盤から送られてきたclock信号とdir(正転 ・逆転)信号をステッピングモーターの駆動信号である、A、A/、B、B/の信号に変換して、ステッピングモーターを動かすことです。

制御しなければいけないステッピングモーターはX軸用、Y軸用、Z軸用で3つあるため、モータードライバ基盤も必然的に3つ必要になります。

回路図です。
f:id:pythonjacascript:20181104232418j:plain

上の回路図は、SLA7078のアプリケーションノートに乗っていた、下の回路図をもとに作成しました。
f:id:pythonjacascript:20181104232002j:plain:h400

そして、回路図をもとに部品を配置してパターン図を書きます。
f:id:pythonjacascript:20181104232712j:plain:h400


ステッピングモーターを動かすためのドライバーICはユニポーラ駆動用の SLA7078MPRT を使った。
SLA7078MPRTは、こんなICです。
f:id:pythonjacascript:20181104223134j:plain:h300


詳しい作り方については、こちらの記事をご覧ください。
shizenkarasuzon.hatenablog.com


回路図はアプリケーションノートを参考にしています。



4.パラレルケーブルの製作

このCNCは、PCと「パラレルケーブル」で通信します。

「パラレルケーブル」とは

f:id:pythonjacascript:20181107224038j:plain
PCと周辺機器を接続するケーブルの一種。昔はプリンターとの接続などに使われていたらしいが、今は使われているところを全く見ない。
名前の通り、パラレル通信を行うため、ピンが25本もある!

ケーブルの製作

普通に買ってもよかったのだが、なぜか作りました...
f:id:pythonjacascript:20181107224425j:plain

ピンが25個もあるので半田付けが相当大変です。   

PC側のポート増設

PCとCNCをパラレルケーブルで接続しよう!
...と思っていましたが、パラレルポートがPCにありませんでした。

よし、ポート増設しよう!

ということで、このようにパラレルポートの増設ボードを買ってきて増設しました。

f:id:pythonjacascript:20181107224932j:plain
ボードをぶっさして、

ドライバをインストールして、

f:id:pythonjacascript:20181107225020j:plain
完了です。




5.リミットスイッチの製作

各軸の可動部が、移動できる範囲の終端に来たことを検知するスイッチがリミットスイッチです。

リミットスイッチは、各軸に2個(3軸あるので合計で6個)取り付けられており、可動部が端に来るとスイッチがonになり、可動部が可動域以上に動かないように制限します。

f:id:pythonjacascript:20181109001653j:plain
このように、各軸の可動域の端にホットボンドで設置しています。

緑のまるで囲まれた部分にリミットスイッチが取り付けられています。
f:id:pythonjacascript:20181109001629j:plain


ちなみに、リミットスイッチには使い捨てカメラ「写ルンです」のフラッシュを光らせるスイッチを使っています。
f:id:pythonjacascript:20181109001614j:plain



4.設置

このようにして製作した基盤たちをCNCに設置しました。
f:id:pythonjacascript:20181107223635j:plain

ひとつだけ基盤の色が違って一回り大きい基盤が「メイン基板」、
その他の3つの基盤が「モータードライバー基盤」です。

なんか自作パソコンを組んでる気分でした。



次回:
shizenkarasuzon.hatenablog.com

*1:私が作ったCNCの場合は0.056525度