CNDYシールドGRBLCNC ArduinoUNOユーザーガイド
バージョン1.2

ArduinoUnoのGRBLピン配置
アナログ0 =中止ボタン*
アナログ1 =フィードホールドボタン*(SAFETY_DOORはフィードホールドと共有されます。configdefineによって有効になります)
アナログ2 =サイクル開始/再起動ボタン*
アナログ3 =クーラントイネーブル出力
アナログ4 = (オプション) ミストクーラント出力 (またはALARM_STATE診断ライト**)
アナログ5 =プローブ入力*
デジタル13 =スピンドル方向
デジタル12 =リミットスイッチのZ軸*
デジタル11 =スピンドル/レーザーイネーブルPWM
デジタル10 =リミットスイッチY軸*
デジタル9 =リミットスイッチX軸*
Digital 8 =ステッピングモーターの有効化/無効化
デジタル7 =方向Z軸
デジタル6 =方向Y軸
デジタル5 =方向X軸
デジタル4 =ステップパルスZ軸
デジタル3 =ステップパルスY軸
デジタル2 =ステップパルスX軸
オプションのXNUMX軸機能
Unoアナログピン3 = A軸DUAL_DIRECTION(クーラントイネーブル出力として使用)
Unoアナログピン4 = A軸DUAL_STEP(オプションのミストクーラント出力として使用)
Uno Digital 13 =クーラント(スピンドル方向を置き換えます。)
Arduinoにライブラリとしてgrblリポジトリをインストールした後、config.hの次の行のコメントを外します file grblライブラリフォルダにあります。
#define ENABLE_DUAL_AXIS // デフォルトでは無効です。 コメントを外して有効にする.
// XNUMXつの軸を選択して、別のモーターをミラーリングします。 現時点では、X軸とY軸のみがサポートされています。
#define DUAL_AXIS_SELECT Y_AXIS // X_AXISまたはY_AXISのいずれかである必要があります
注:XNUMX軸制限は (Z軸) デフォルトではピンを制限します。
二軸機能を動作させるには、独立したステップパルスピンが必要です。 独立した方向ピンは絶対に必要というわけではありませんが、Grbl $$設定で方向反転を容易にします。 これらのピンは、スピンドル方向とオプションのクーラントミストピンに取って代わります。
このオプションの1軸機能は、主に、デュアルモーターガントリーの255つの側面を独立して配置するためのホーミングサイクル、つまりセルフスクエアリング用です。 これには、複製されたモーター用の追加のリミットスイッチが必要です。 セルフスクエアするには、ガントリーがスクエアのときにトリガーするように、クローン軸の両方のリミットスイッチを物理的に配置する必要があります。 ガントリーが$ XNUMX = XNUMXの設定で正方形に保たれるように、モーターを常に有効にしておくことを強くお勧めします。
Arduino UnoのGrblの場合、使用可能なピンがないため、複製された軸リミットスイッチをz軸リミットピンと共有して配線する必要があります。 ホーミングサイクルは、z軸とクローン軸を異なるサイクルでホーム化する必要があります。これは、すでにデフォルトの構成です。
XNUMX軸機能は、軸ステップ出力を別のステップピンと方向ピンのペアに複製することで機能します。 クローンモーターのステップパルスと方向は、主軸モーターとは独立して設定できます。 ただし、貴重なフラッシュとメモリを節約するために、このXNUMX軸機能は、親モーターと同じ設定(ステップ/ mm、最大速度、加速度)を共有する必要があります。 これは、独立したXNUMX番目の軸の機能ではありません。 モータークローンのみ。
警告:必ずXNUMX軸モーターの方向をテストしてください! 最初のホーミングサイクルまたは長いモーションを実行する前に、同じ方向に移動するように設定する必要があります。 モーターが反対方向に動くと、機械に重大な損傷を与える可能性があります。 このXNUMX軸機能は、自己責任で使用してください。
注:この機能には、約400バイトのフラッシュが必要です。 特定の構成では、Arduino 328p / Unoに適合するようにフラッシュが不足する可能性があります。 X軸とY軸のみがサポートされています。 可変スピンドル/レーザーモードがサポートされていますが、7つの構成オプションのみがサポートされています。 コアXY、スピンドル方向ピン、およびMXNUMXミストクーラントは無効/サポートされていません。
ホーミングサイクルがXNUMX軸をラックに入れるのを防ぐために、スイッチの障害またはノイズのために一方のリミットがもう一方のリミットの前にトリガーされると、XNUMX番目のモーターのリミットスイッチが以下に定義するXNUMXつの距離パラメーター内でトリガーされない場合、ホーミングサイクルは自動的に中止されます。 軸の長さのパーセントは、失敗距離をパーセントとして自動的に計算しますtag他の非二重軸の最大移動量のe、つまり、二重軸選択が5.0%のX_AXISである場合、失敗距離はy軸の最大移動量の5.0%として計算されます。 故障距離の最大値と最小値は、有効な故障距離がどれだけ離れているか、またはほとんどないかの限界です。
#define DUAL_AXIS_HOMING_FAIL_AXIS_LENGTH_PERCENT 5.0 //フロート(パーセント)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MAX 25.0 //フロート(mm)
#define DUAL_AXIS_HOMING_FAIL_DISTANCE_MIN 2.5 //フロート(mm)
I2Cポートに関する注意
アナログ4(A4)とアナログ5(A5)は、ArduinoUnoまたは2pのI328Cポートに使用されます。 これは、デフォルトのプローブ機能、ミストクーラント、2軸、またはカスタムALARM_STATE LED診断ライトを使用している限り、I0Cを使用できないことを意味します。 機能を向上させるための別のArduinoとの通信は、D1およびDXNUMXのシリアル接続を介して行う必要があります。
はじめに(ステッパードライバー)
まず、ステッピングモーターをGrblに接続するには、ステッピングモーターに電力を供給し、ドライバー入力をArduinoコントローラーピンに接続するためのステッピングモータードライバーが必要です。 これを実行できるドライバーは多数あり、完全にビルド済み、部分的にビルド済み、または完全にDIYとして利用できます。 ステッパードライバーは共有する必要があります ステッパーイネーブルピン(D8) それぞれのイネーブルピンに接続します。 方向およびステップパルスピン(D2-D7) ドライバのそれぞれのピンに接続する必要があります。 すべてのドライバーとArduinoを確認してください 共通点を共有する (あなたのモータードライバーの力で接地された星)。 始めるために必要なのはこれだけです。
ホーミング&リミットスイッチ
その後、準備ができている、または希望していると判断したら ホーミングおよび/またはハード制限を有効にする、接続する必要があります ノーマルオープンリミットスイッチ 各リミットピンに (D9、D10、およびD12)。 ホーミング制限とハード制限は同じスイッチを使用します。 これらの制限ピンは、内部プルアップ抵抗ですでにハイに保持されているため、必要なのはそれらをグランドに配線することだけです。 したがって、スイッチを閉じると、スイッチは制限ピンをアースに引き下げます。 軸の移動の両端にハードリミットスイッチを配置したい場合は、XNUMXつのリミットスイッチを軸のリミットピンとアースに並列に配線するだけです。 ホーミングサイクルを実行する前に、スイッチが取り付けられていることを確認し、入力ピンの外部電気ノイズを最小限に抑えるための適切な配線方法を実践してください。
適切な配線方法には、シールドケーブルまたはclの使用が含まれる場合がありますamp-フェライトケーブルコア上で、デバウンス/ノイズフィルタリング用のリミットスイッチと並列にいくつかの0.1uFコンデンサを使用します。 モーターワイヤーをリミットスイッチワイヤーから遠ざけることも良い考えかもしれません。
必要に応じて、通常閉のリミットスイッチを使用するようにGRBLを構成することができます。 一部の人は、通常は閉じているリミットスイッチが、リミットスイッチに障害が発生した場合の壊滅的なクラッシュを減らすのに役立つと感じています。 多くのユーザーは、リミットスイッチの使用をまったく省略し、代わりにソフトウェア制限を選択します。
Grbl v0.8以降では、サイクル開始、フィードホールド、およびランタイムコマンドのリセットのピン配置があるため、マシンに物理的な制御ボタンを設定できます。 リミットピンと同様に、これらのピンは内部プルアップ抵抗でハイに保持されるため、通常開のスイッチを各ピンとグランドに接続するだけです。 ここでも、入力ピンの外部電気ノイズを最小限に抑えるために、適切な配線方法を実践するようにしてください。
スピンドルとクーラントピン
スピンドルが必要な場合 (D13) または冷却剤制御 (A3&A4) 、Grblは、Grblに送信するGコードコマンドに応じて、これらの出力ピンをハイまたはローに切り替えます。 v0.9 +と可変スピンドルPWMが有効になっている場合、D11ピンはvolの範囲を出力しますtagesは、スピンドル速度のGコードコマンドに応じて0Vから5Vになります。 この場合、0Vはスピンドルがオフであることを示します。 これらのピンはすべてアプリケーションによって使用方法に依存するため、マシンでこれらを制御および使用する方法を決定するのはユーザーに任せます。 スピンドルとクーラント制御源をハックすることもできます file■それらの動作を簡単に変更してから、変更したGrblをArduinoIDEを介してコンパイルおよびアップロードします。
診断用LEDライト
市販のCNCマシンには、マシンのクラッシュやアラームコードが発生した場合に備えて、少なくともXNUMXつの診断LEDビーコンが搭載されていることがよくあります。 GRBLおよびDIYCNCマシンを初めて使用する場合、この機能は、ALARM_STATEがいつ発生したかを知るのに非常に役立ちます(ホーミングおよびリミットスイッチが有効になっているマシンのホームに失敗するなど)。
GRBLには、デフォルトで診断用LEDライトがありません。 これは、328pチップを搭載したArdunio UNOのプログラミングスペースが限られており、そのスペースのほぼすべてが現在使用されているためです(すべてではありません!)。 このような低メモリデバイスにすべての望ましい機能を実装できるわけではないため、犠牲を払わなければならない場合があります。
さらに、使用可能なすべてのI / Oポートが現在使用されており、このようなライトには少なくとも3つのI / Oピンが必要です。 幸い、この機能はGRBL Cコードをハッキングすることで簡単に追加でき、328pチップにはまだ約XNUMX%のメモリがあります。
現在、多くのマシンはAnalog4のオプションのMISTCOOLANT機能を使用していないため、このピンを簡単に再定義して使用できます。 別の方法は、外部ArduinoでそのようなLEDライトをコーディングすることです。これにより、すべてのI / Oポートが使用可能になり、必要な数のLEDライト/ブザーを配線して、シリアルまたはI2Cを介して通信できます。
GRBLソースコードをハッキングしてCNDYシールドのALARMLEDを使用するには、次の手順を実行してください。
ステップ1: LinuxまたはMacintoshでは、テキストエディタを開き(WindowsではNotepad ++を使用)、 cpu_map.h file:
これを変える:
//フラッドおよびミストクーラントイネーブル出力ピンを定義します。
#COOLANT_FLOOD_DDR DDRC を定義
#define COOLANT_FLOOD_PORT ポートC
#define COOLANT_FLOOD_BIT 3 // Unoアナログピン3
#COOLANT_MIST_DDR DDRC を定義
#define COOLANT_MIST_PORT ポートC
#define COOLANT_MIST_BIT 4 // Unoアナログピン4
これに対して:
//フラッドおよびミストクーラントイネーブル出力ピンを定義します。
#COOLANT_FLOOD_DDR DDRC を定義
#define COOLANT_FLOOD_PORT ポートC
#define COOLANT_FLOOD_BIT 3 // Unoアナログピン3
//#define COOLANT_MIST_DDR DDRC
//#define COOLANT_MIST_PORT PORTC
//#define COOLANT_MIST_BIT 4 // Unoアナログピン4
/////////////////
//アラームLED出力を定義します
#SIGNAL_LIGHT_DDR DDRC を定義
#定義SIGNAL_LIGHT_PORT PORTC
#define SIGNAL_LIGHT_BIT 4 // Unoアナログピン4
// #define signal_light(on)(SIGNAL_LIGHT_DDR | =(1 <
// #define signal_light_init()signal_light(off)
#signal_light_init の定義 signal_light_off
#define signal_light_on(SIGNAL_LIGHT_DDR | = SIGNAL_LIGHT_PORT | =(1 <
#define signal_light_off(SIGNAL_LIGHT_DDR | = SIGNAL_LIGHT_PORT&=〜(1 <
/////////////////
ステップ2: LinuxまたはMacintoshでは、テキストエディタを開き(WindowsではNotepad ++を使用)、 プロトコル.c file:
これを変える:
//必要に応じて、実行時コマンドを実行します。 この関数は主にGrblの状態として動作します
// Grblが提供するさまざまなリアルタイム機能を機械化して制御します。
//注:何をしているかを正確に理解していない限り、これを変更しないでください。 void protocol_exec_rt_system()
{
uint8_t rt_exec; // volatileを複数回呼び出さないようにするための一時変数。
rt_exec = sys_rt_exec_alarm; //揮発性のsys_rt_exec_alarmをコピーします。
if(rt_exec){//ビットフラグがtrueの場合にのみ入力
//システムアラーム。 深刻な問題が発生したため、すべてがシャットダウンしました。 報告する
//ユーザーへのエラーの原因。 重要な場合、Grblは無限大を入力して無効にします
//システムがリセット/中止されるまでループします。
sys.state = STATE_ALARM; //システムアラーム状態を設定します
report_alarm_message(rt_exec);
これに対して:
//必要に応じて、実行時コマンドを実行します。 この関数は主にGrblの状態として動作します
// Grblが提供するさまざまなリアルタイム機能を機械化して制御します。
//注:何をしているかを正確に理解していない限り、これを変更しないでください。
void protocol_exec_rt_system()
{
uint8_t rt_exec; // volatileを複数回呼び出さないようにするための一時変数。
rt_exec = sys_rt_exec_alarm; //揮発性のsys_rt_exec_alarmをコピーします。
/////////////////////////
//アラームLED出力を定義します
signal_light_init; // LEDをオフ状態で初期化
if(sys.state == STATE_ALARM){signal_light_on;}
else if(sys.state!= STATE_ALARM){signal_light_off;}
// そうでなければ {signal_light_off;}
/////////////////////////
if(rt_exec){//ビットフラグがtrueの場合にのみ入力
//システムアラーム。 深刻な問題が発生したため、すべてがシャットダウンしました。 報告する
//ユーザーへのエラーの原因。 重要な場合、Grblは無限大を入力して無効にします
//システムがリセット/中止されるまでループします。
sys.state = STATE_ALARM; //システムアラーム状態を設定します
report_alarm_message(rt_exec);
アナログ4(A4)の定義された機能を、オプションのミストクーラントからLEDライトに変更しました。 次に、Cでコードを記述して、オンまたはオフのどちらであるかによって、(PC4)ポートC 4(Analog4)をハイまたはローに書き込むことができるようにしました。 次に、単純なif-elseステートメントを記述して、GRBLステートマシンをチェックし、アクティブなALARM_STATEにあるかどうか、およびLEDをいつオンにするかを通知します。
すべてがうまくいけば、Arduino IDEでコンパイルし、コードをアップロードできます。これで、ALARM_STATELED診断ライトが機能するようになります。 オプションで、外部LEDビーコンライトを接続して、部屋全体に見えるマシンの高い位置に配置できます。
起こりうる問題
理想的には、これらの変更は、利用可能な最新のgrblソースコードを使用して行われ、grbl「ライブラリ」をArduinoIDEに追加する前に行われます。 Arduinoライブラリフォルダにすでにgrblがある場合は、手動で参照してgrblフォルダを削除するか、 file■arduinoライブラリ内。 私のLinuxマシンでは、「ライブラリ」は/ home / andrew / Arduino / libraries / grblにあります。 最新のgrblリリースは次の場所にあります。 https://github.com/gnea/grbl/releases。 利用可能なzipをダウンロードできます file そして、grbl-1.1h.20190825という名前のフォルダが中にあります。 このフォルダー内で、grblという名前のフォルダーが、「ライブラリ」「zip」としてArduinoIDEに追加するフォルダーになります。 file」。 必ずcpu_map.hとprotocol.cに変更を加えてください file■ArduinoIDEに追加する前に。 それ以外の場合は、編集する必要があります file■library / grblフォルダー内。 grbl-1.1hzipのXNUMX軸機能には既知のバグがあります file、代わりにメインのgrblブランチをダウンロードすると修正されます。 https://github.com/gnea/grbl
CNDYシールドの更新とエラー
* V1.1:スピンドルPWMとスピンドル方向が入れ替わる小さなシルクスクリーンエラーがあります。 これはV1.2で修正されています。
V1.2では、5vラインにオプションのノイズリダクションコンデンサがなくなり、他の入力ボタンラインに新しいコンデンサが追加されました。 V1.2には、スピンドルPWMと並列に配線されたオプションのLEDがあります。 これは、安全のためのレーザーのセットアップに役立つ場合があります。
28年2021月XNUMX日更新
追加情報はで見つけることができます ラビットマウンテンリサーチ.com.
ドキュメント / リソース
![]() |
CNDYシールドGRBLCNC Arduino UNO [pdf] ユーザーガイド GRBL CNC、Arduino UNO |




