(57)【特許請求の範囲】
【請求項１】
λ回転モータであって、前記λ回転モータはλシャフトおよび対応するλ軸を備え、前記λ軸は前記λシャフトと同一直線上にある、λ回転モータと、
θ回転モータであって、前記θ回転モータはθシャフトおよび対応するθ軸を備え、前記θ軸は前記θシャフトと同一直線上にある、θ回転モータと、
固定された基準平面から所定距離にある構築表面と、
前記λシャフトが通過する開口を備えるベースプレートと、
ツールヘッド軸を有する機械ツールヘッドと、
近位端において前記θシャフトに固定され、遠位端において前記λモータに固定された接続アームと、
を備える機械ツールであって、
前記λ軸および前記θ軸は平行であり、ずれており、
前記基準平面は前記λ軸および前記θ軸に対して垂直であり、
前記基準平面は前記ベースプレートから所定距離にあり、
前記λモータは、前記ベースプレートの第１の側に配置され、前記構築表面は前記ベースプレートの第２の側に配置され、
前記構築表面は、取り外し可能に固定された部品を受容するよう構成されており、
前記ツールヘッド軸は、前記機械ツールヘッドを通過し、前記基準平面に対して垂直であり、前記θ軸に対して固定され、
前記λシャフトは、前記構築表面を前記λ軸の周りに回転させるように構成され、
前記θシャフトの回転は、前記λモータと、前記λ軸と、前記構築表面とを、前記接続アームを介して前記θ軸の周りの円弧の範囲内で回動させるよう構成され、
前記開口は、前記円弧に沿って設けられ、
前記ツールヘッド軸が前記構築表面上の任意の所望の点と交わるように前記構築表面を運動させるように、前記λシャフトの回転および前記θシャフトの回転が構成される、
機械ツール。
【請求項２】
前記構築表面は、前記λシャフトの回転および前記θシャフトの回転のみに応じて運動する、請求項１に記載の機械ツール。
【請求項３】
前記λモータと、前記θモータと、前記λシャフトと、前記接続アームと、前記構築表面と、介在する運動可能な機械的要素すべてとからなる前記機械ツールの運動可能な機械的部分は、ベルト、プーリー、チェーン、ワイヤ、歯車、スクリュー駆動および油圧を備えない、請求項１に記載の機械ツール。
【請求項４】
前記λシャフトの回転が前記構築表面を回動させ、これにおいて、前記λ軸に対する前記構築表面の回転角度は、前記λシャフトの前記λ軸の周りの回転角度と同じであり、
前記θシャフトの回転が前記構築表面を回動させ、これにおいて、前記θ軸に対する前記構築表面の前記回転角度は、前記θシャフトの前記θ軸の周りの回転角度と同じである、
請求項１に記載の機械ツール。
【請求項５】
部品ソースデータを受け取るよう構成される機械ツール制御装置と、
前記λシャフトに配置され、前記機械ツール制御装置に動作可能に電子的に接続されたλ回転角度センサと、
前記θシャフトに配置され、前記機械ツール制御装置に動作可能に電子的に接続されたθ回転角度センサと、
をさらに備え、
前記機械ツール制御装置は、前記部品ソースデータと、前記λ回転角度センサと、前記θ回転角度センサとに応じて、前記λモータおよび前記θモータにモータ制御出力を提供するよう構成される、
請求項１に記載の機械ツール。
【請求項６】
前記機械ツールは、単一の親スクリュー軸をさらに備え、
前記単一の親スクリュー軸は、単一の親スクリューの中心と、Ｚ軸回転モータのシャフトの中心とを通り、
前記Ｚ軸回転モータは、前記親スクリューを直接的に駆動するよう構成され、
前記親スクリュー軸は、前記ツールヘッド軸と平行であり、前記ツールヘッド軸からずれており、
前記機械ツールはＺ軸レールを備え、前記Ｚ軸レールは、前記親スクリュー軸と平行な２つの側面を備え、前記２つの側面は共通の縁において接合され、
前記機械ツールはツールヘッドブームを備え、前記ツールヘッドブームはＺ軸ベアリングを備え、
前記Ｚ軸ベアリングは前記Ｚ軸レールの縁上に動作可能に載っており、
前記Ｚ軸回転モータは、前記ツールヘッドブームを、前記Ｚ軸に平行な直線経路上で移動させるよう構成される、
請求項１に記載の機械ツール。
【請求項７】
前記親スクリューは前記ベースプレートを通過する、請求項６に記載の機械ツール。
【請求項８】
前記ブームに対する支持は、前記親スクリューおよびＺ軸レールのみである、請求項６に記載の機械ツール。
【請求項９】
前記機械ツールは、単一の構築表面スキューセンサを備え、
前記単一の構築表面スキューセンサは、前記ブーム上に、前記ツールヘッド軸からずれて配置され、前記構築表面と前記基準平面との間の角度を測定するよう構成され、
前記機械ツールは、前記構築表面と前記基準平面との間の角度を測定するよう構成される第２のセンサを備えない、
請求項６に記載の機械ツール。
【請求項１０】
前記ブームの固定された位置に対して、前記単一の構築表面スキューセンサは、前記構築表面から、前記構築表面と前記機械ツールヘッドとの距離よりも大きい距離を置いて配置され、ただし、距離は前記基準平面と垂直に測定される、請求項９に記載の機械ツール。
【請求項１１】
前記機械ツールは、前記λモータ、前記θモータ、前記構築表面、前記Ｚ軸モータ、前記Ｚ軸レール、前記ブームおよび前記ツールヘッドからなる群を囲う箱型フレームを備えず、
前記機械ツールは、前記群のいかなる要素に対する機械的支持を提供する箱型フレームも備えない、
請求項６に記載の機械ツール。
【請求項１２】
前記ベースプレートの前記開口は、前記θ軸から所定の固定径方向距離を置いて設けられ、前記円弧に沿って湾曲したスロットである、請求項６に記載の機械ツール。
【請求項１３】
前記機械ツールは制御装置を備え、
前記制御装置は、
（ａ）前記構築表面を第１の位置へと移動させ、
（ｂ）前記スキューセンサが前記構築表面を検出するまで前記ブームを下降させ、
（ｃ）ブームを上昇させ、
（ｄ）前記構築表面を第２の位置へと移動させ、
（ｅ）前記スキューセンサが前記構築表面を検出するまで前記ブームを下降させ、
（ｆ）ステップ（ａ）〜（ｅ）に応じ、構築表面スキューに対する２個のスカラー値を計算する
よう構成される、請求項１０に記載の機械ツール。
【請求項１４】
前記機械ツールヘッドを除き、前記機械ツールは、前記λ回転モータ、前記θ回転モータ、およびＺ軸モータ以外のいかなる追加の機械的アクチュエータも備えない、請求項１に記載の機械ツール。
【請求項１５】
前記λ回転モータ、前記θ回転モータおよび前記Ｚ軸回転モータは、前記ベースプレートの前記第１の側に配置される、請求項６に記載の機械ツール。
【請求項１６】
前記λシャフトの回転運動および前記θシャフトの回転運動は、前記λシャフトを介して前記構築表面に伝達される、請求項１に記載の機械ツール。
【請求項１７】
前記λモータと、前記θモータと、前記λシャフトと、前記接続アームと、前記構築表面と、介在する運動可能な機械的要素すべてとからなる前記機械ツールの運動可能な機械的部分は、線形運動要素を備えない、請求項１に記載の機械ツール。
【請求項１８】
前記機械ツールは、前記取り外し可能に固定された部品を構築するよう構成される、付加的材料製造ツールであり、
前記機械ツールヘッドは、前記部品を製造するために用いられる付加的材料を提供する、
請求項１に記載の機械ツール。
【請求項１９】
機械ツール上で部品を製造する方法であって、
前記方法は、
（ａ）機械ツール制御装置によって第１の部品に対するソースデータを受け取るステップと、
（ｂ）前記ソースデータに応じ、前記機械ツールを用いて前記第１の部品を製造するステップと
を備え、
前記機械ツールは、
λ回転モータであって、前記λ回転モータはλシャフトおよび対応するλ軸を備え、前記λ軸は前記λシャフトと同一直線上にある、λ回転モータと、
θ回転モータであって、前記θ回転モータはθシャフトおよび対応するθ軸を備え、前記θ軸は前記θシャフトと同一直線上にある、θ回転モータと、
固定された基準平面から所定距離にある構築表面と、
前記λシャフトが通過する開口を備えるベースプレートと、
ツールヘッド軸を有する機械ツールヘッドと、
近位端において前記θシャフトに固定され、遠位端において前記λモータに固定された接続アームと、
を備え、
前記λ軸および前記θ軸は平行であり、ずれており、
前記基準平面は前記λ軸および前記θ軸に対して垂直であり、
前記基準平面は前記ベースプレートから所定距離にあり、
前記λモータは、前記ベースプレートの第１の側に配置され、前記構築表面は前記ベースプレートの第２の側に配置され、
前記構築表面は、取り外し可能に固定された部品を受容するよう構成されており、
前記ツールヘッド軸は、前記機械ツールヘッドを通過し、前記基準平面に対して垂直であり、前記θ軸に対して固定され、
前記λシャフトは、前記構築表面を前記λ軸の周りに回転させるように構成され、
前記θシャフトの回転は、前記λモータと、前記λ軸と、前記構築表面とを、前記接続アームを介して前記θ軸の周りの円弧の範囲内で回動させるよう構成され、
前記開口は、前記円弧に沿って設けられ、
前記ツールヘッド軸が前記構築表面上の任意の所望の点と交わるように前記構築表面を運動させるように、前記λシャフトの回転および前記θシャフトの回転が構成される、
方法。
【請求項２０】
前記ツールヘッド軸は前記基準平面に対して固定される、請求項１に記載の機械ツール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２０１４年８月２８日に出願された米国仮出願第６２／０４３，２９３号明細書（整理番号４５−００１Ｐ）の優先権を主張する。
【０００２】
［技術分野］
本発明の分野は、三次元の物体を製造するために３本以上の軸を用いる製造ツールである。実施形態は、付加的(additive)な製造機械を含む。本発明は、物体が製造されるプラットフォームを駆動する反転ＳＣＡＲＡアームを組み入れている。
【０００３】
［発明の背景］
３Ｄプリンタは、三次元の物体の形状を定義する電子ファイルからその物体を作成するための装置および当該装置を用いる方法である。３Ｄプリンタは、材料を付加すること(adding)によってプラットフォーム上または構築プレート上で物体を構築するか、または材料を除去すること(subtracting)によって物体を作成するという点において、付加的であってもよく、除去的(subtractive)であってもよい。大部分の３Ｄプリンタは付加的である。比較として、大部分のフライス盤および旋盤の動作は除去的である。典型的な付加的３Ｄプリンタは、一時に少量の材料を堆積させるヘッド（押出機またはプリントヘッドとも呼ばれる）を用いる。材料は、ヘッド内で熱によって液化し、構築中の物体上に配置されてもよい（その後冷却するにつれて硬化する）。代替的なシステムは、光、紫外光、他の放射線または熱を用いることによって硬化または重合する材料を用いる。別の代替的なシステムは、ヘッドによってポイントごとまたはピースごとに硬化する液体またはゲルのタンクを用いる。
【０００４】
物体内の材料のコア単位（またはソースファイル内での当該ユニットの定義）は、しばしば、体積ピクセルに大まかに対応する「ボクセル」(voxel)として参照される。３Ｄソースファイルは、ボクセルではなく（またはボクセルを補充するものとして）ベクトルまたは面(face)の定義を含んでもよい。３Ｄプリンタは、３Ｄファイルの一部または全部をボクセルに変換してもよく、ソースデータをベクトルの系列に変換してもよい（これらは典型的には１つの平面内にある）。
【０００５】
３Ｄプリンタの従来技術は、Ｘ−Ｙ−Ｚ３軸の、直交座標格子に基づいている。ＸＹ各軸は通常水平面を定義し、Ｚ軸は垂直である。物体は、一時には１つのＸＹ平面内に形成され、Ｚ軸が段階的に断続的に増加する。Ｚ軸の増分ごとに、ＸＹ平面がプリントされる。ＸＹ平面内のヘッドは、反復的走査パターン内を移動してもよく、ベクトル運動の系列で移動してもよく、双方でもよい。
【０００６】
この設計の特徴は、３個のモータ（実際にはＸ−Ｙ−Ｚ軸それぞれに１個ずつ）を要するということである（プリントヘッド内のフィラメント駆動モータは含まない）。３Ｄプリンタは、典型的には箱型フレーム（機構と構築空間とを囲う６面または５面のフレーム）内に構成され、各運動は少なくとも１つのスクリュー駆動またはベルトによって制御され、構築プレートまたはそのサポートが２対の平行スライド（一方の対と他方の対とは直交する）上を移動する。代替的に、ヘッドが、２対の平行スライド（一方の対と他方の対とは直交する）上を移動してもよい（プラッタがＸ−Ｙを固定しＺ軸内を垂直に移動）。したがって、典型的な設計は、箱型フレームと、３個のモータと、３個以上のスクリューまたはベルトと、４〜６個のスライドとを要する。各軸の真の直交性を維持することは困難である。一部の実装では、１本以上の軸の精度および線形性を維持することもまた困難である。
【０００７】
従来技術は、熱溶解積層法(Fuse Deposit Modeling)またはＦＤＭＴＭを含む。ＦＤＭＴＭはStratasys, Inc.の商標である。従来技術は、溶解フィラメント成形(fused filament fabrication)（ＦＦＦ）およびプラスチックジェットプリンティング(Plastic Jet Printing)（ＰＪＰ）を含む。
【０００８】
従来技術は、ＳＣＡＲＡ（選択的追従ロボットアーム）(Selective Compliance Robot Arm)アーム、反転ＳＣＡＲＡアームおよびロボティックＳＣＡＲＡアームを含む。
【０００９】
この発明の実施形態は、除去的製造機械と、付加的製造機械とを含む。
【００１０】
［発明のサマリー］
この発明は、従来技術における弱点を克服する。
【００１１】
この発明は、水平面に対する直交ＸＹ座標の代わりに「角度」座標を用いる。
【００１２】
水平面内の２本の軸は、ターンテーブルの中心軸（λ軸）周りのターンテーブルの回転と、ターンテーブルの中心から離れたスイング軸(swing axis)（θ軸）の一部の周りのターンテーブルの回転とである。Ｚ軸は従来の垂直軸である。一実施形態では、垂直カラム内の垂直スクリューが、材料ノズルを備える押出機ブロックまたはヘッドをＺ軸上で駆動する。一実施形態では、Ｚ軸駆動スクリューまたはリニアモータが水平ビームを駆動し、当該ビームが押出機ヘッドを備え、押出機ヘッド内の１つ以上のノズルが、装置によって物体を付加的に構築するために用いられる材料を生成する。
【００１３】
一実施形態は、ソースファイルにおけるＸＹ線形座標系をλ角度値およびθ角度値に翻訳するためにソフトウェアを用いる。この実施形態では、ソースデータは、Ｘ、ＹおよびＺスカラー座標からなるボクセル（１個以上のボクセルによって少なくとも部分的に定義される、点、直線、辺、曲線、面(face)、表面(surface)、テクスチャまたは体積）として見ることができ、一方で、この実施形態についての対応するボクセルデータは、λ、θおよびＺスカラー座標からなる。ソースＸ座標、Ｙ座標およびＺ座標の範囲は、概して機械の物理的範囲内であるが（なんらかのポスト座標スケーリングまたはクリッピングが行われない限り）、λ座標およびθ座標の範囲は、［０°，３６０°）の範囲内にある必要がある（機械が有するこれら２つの座標の範囲はより小さいものであってもよい）。一実施形態では、λの範囲は［０°，３６０°）であり、θの範囲は［０°，３６０°）よりも小さい。ボクセルに関する二次的なファクター（許容度、速度および加速度等）は、Ｘ−Ｙ−Ｚ座標系からλ−θ−Ｚ座標系へと同様に変換可能であるということに留意されたい。我々はそのような座標変換全体を単に「座標翻訳」と呼ぶ。一部の実施形態では、ソースＺ座標からターゲットＺ座標への翻訳はない。別の実施形態（以下に論じるスキュー(skew)補正を用いる等）では、ソースＺスカラーからターゲットＺスカラーへの座標変換も存在する。
【００１４】
一実施形態は、ターンテーブル（または構築表面）の平面と、当該実施形態の実効的な機械的Ｚ軸との間の非直交性を測定する。この測定は、スキューと呼ばれ得る誤差を特定する。スキューは、ターンテーブルまたはプラッタ平面の、Ｚ軸からの完全な直交からのずれであるので、スキューを定義するためには少なくとも２個のスカラー値が必要であるということに留意されたい。この実施形態は、λ、θおよびＺという３個の座標のうち少なくとも１つをずらすためにこの測定を用いる。スキュー補正は、計算的には、他の座標翻訳と同時に実行されてもよいし、個別に、より前に（すなわちＸ−Ｙ−Ｚ空間において）実行されてもよいし、より後に（すなわちλ−θ−Ｚ空間において）実行されてもよい。
【００１５】
別の実施形態では、ソフトウェアが、λ軸近傍の体積またはボクセルを特別なケースとして扱う。とくに、これらの位置内またはその近傍では、λ軸のスピードが制限されてもよい。
【００１６】
さらに別の実施形態では、ソフトウェアが、λ軸近傍の体積またはボクセルを特別なケースとして扱う。とくに、ターンテーブルを１８０°回転させてもよい。
【００１７】
さらに別の実施形態では、本発明（３軸すべて）は、ベルト、ケーブル、プーリー、およびチェーンの組み合わせを備えない（free)（これらすべてを備えないことを含む）。
【００１８】
さらに別の実施形態では、ターンテーブルの回転角度がλモータシャフトの回転角度と等しくなるように、ターンテーブルがλモータシャフトに直接接続されている。この実施形態は、λモータシャフトとターンテーブルとの間で互いに対して運動する歯車または他の部品を備えない。
【００１９】
さらに別の実施形態では、剛体アーム(rigid arm)の回転角度がθモータシャフトの回転角度と等しくなるように、λモータは剛体アームを介してθモータシャフトに直接接続されている。この実施形態は、θモータシャフトとλモータとの間で互いに対して運動する歯車または他の部品を備えない。
【００２０】
さらに別の実施形態では、本発明は、Ｚ軸を駆動するために用いられる単一のスクリューまたはねじ付きロッドを備える。
【００２１】
さらに別の実施形態では、押出機ヘッドは、Ｘ軸駆動機構およびＹ軸駆動機構の双方から離れて(free)、Ｚ軸駆動に直接または間接に固定される。
【００２２】
さらに別の実施形態では、押出機ヘッドは、プリンタの基部と押出機ヘッドとの間のすべての機械的駆動部(mechanical drive)（ただしＺ軸駆動部およびフィラメント駆動部を除く）から離れている。
【００２３】
さらに別の実施形態では、本発明は、箱型フレームを備えない。すなわち、３本の運動軸のいずれに対して必要な機械的サポートを提供する矩形（または円筒形等の等価なもの）フレームをも備えない。
【００２４】
さらに別の実施形態では、本発明は、単一の、構造的な、固定された垂直構成要素（Ｚ軸レール）のみを備える。
【００２５】
さらに別の実施形態では、ヘッドは、一端において支持される単一の水平ビームの構成要素であり、その一端がＺ軸駆動カラムに取り付けられる。
【００２６】
さらに別の実施形態では、本発明は、１つ以上の親スクリューまたは駆動スクリューの不完全な位置整合を補償するためのいかなる構成要素も備えない。
【００２７】
さらに別の実施形態では、本発明は、ターンテーブル、プラッタまたは構築表面の中央周辺の、構築表面と押出機ヘッドとの間に、少なくとも３５０°、または少なくとも３３０°、または少なくとも３００°、または少なくとも２７０°、または少なくとも２２０°、または少なくとも１８０°、または少なくとも１５０°、または少なくとも１２０°の開口角を備える。この開口角には、この実施形態のいかなる要素も存在せず(free)、とくに、フレーム要素が存在しない。このような開口により、構築中の部品に対するアクセスが可能になる。とくに、この実施形態を囲う体積の各側面よりもＸ−Ｙ平面双方において大きいモノリシック部品が、手順を追って構築可能である。
【００２８】
さらに別の実施形態では、座標翻訳は、３Ｄプリンタの動作中に、リアルタイムで実行される。
【００２９】
さらに別の実施形態では、ターンテーブル、プラッタまたは構築プレートが、工具なしで取り外し可能である。さらに別の実施形態では、ターンテーブルはプラッタであるか、またはプラッタを支持する。本明細書および特許請求の範囲は「構築表面」を参照する。これは基準表面であり（この基準表面上に部品が構築される）、典型的にはＺ軸測定に対するゼロ基準点である。典型的には、構築表面は、プラッタまたは構築プレートの、（現実または仮想の）上側表面である。この表面が基準平面であるか、または基準平面内にあると考えることが有用である（取り外し可能なプラッタ等の物理的部品ではなく）。様々な実施形態において、運動するターンテーブルと、構築中の部品との間に、様々な層があってもよく、なくともよいということに留意されたい。そのような層の１つは、取り外し可能であるが恒久的なプラッタであってもよい。そのような層の別の１つは、ユーザによって提供され、部品の下に配置される使い捨ての「テーブルクロス」であってもよい。構築表面が、ターンテーブルによって駆動されるプラッタのような物理的対象物であると考えることが必要な場合もある。したがって、プラッタは構築表面を意味すると解釈してもよく、その逆でもよい。プラッタに対する他の名称は、「構築表面」または「構築プレート」である。さらに別の実施形態では、ターンテーブルまたはプラッタは取り外されてもよく、交換されてもよく、自動化された機構とともに追加されてもよい。一実施形態では、プラッタは、磁石によって、垂直に、水平に、またはその双方で、ターンテーブルに固定される。３個の磁石、６個の磁石、または磁石対が使用可能である。一実施形態では、ターンテーブルまたはプラッタは、位置整合ピン、支柱、移動止めに係合する凹部、スクリュー、クリップ、他の固定具、等によって水平面に実効的に固定され、重力によって所定位置に保持される。
【００３０】
部品に対する作業表面は移動しないので、従来技術においてしばしば構築プレートと呼ばれる。我々の実施形態では、構築プレートが移動する（ターンテーブルによって駆動される）。したがって、用語「プラッタ」のほうがより記述的であるが、構築プレートとプラッタとは同じ機能を果たし、適切な場合には同一のまたは等価な部品および機能であると解釈され得る。
【図面の簡単な説明】
【００３１】
【図１】３Ｄプリンタの一実施形態の斜視図である。
【図２】３Ｄプリンタの一実施形態の底面図であり、３つのモータ位置を示す図である。
【図３】３Ｄプリンタの一実施形態の正面図であり、Ｚレール、ベースプレート、ターンテーブルおよびプラッタを示す図である。
【図４】３Ｄプリンタの一実施形態の側面図であり、ブーム、Ｚレール、脚部、および２個のモータを示す図である。
【図５】ステッパモータ用の駆動波形の一実施形態を示す図である。
【図６】θアームのポジションの２箇所の例示図である。
【発明を実施するための形態】
【００３２】
［実施形態の説明］
図示され論じられる実施形態は、すべて例示のみのものであり、限定的ではない。当業者は、特許請求の範囲に記載される発明を実施する多くの代替的材料、構成、構造および方法ステップを知っている。
【００３３】
用語「回転する(rotate)」は、物理的または仮想的な物体であって当該物体の内部の軸の周りに回転するものを記述するということに留意されたい。たとえば、オーディオレコードは、共通の（旧式ではあっても）レコードプレイヤーのスピンドルの周りに回動する。回転は、物理的には回る運動(rotary motion)で実施される。
【００３４】
一方、用語「回動する(revolve)」は、物理的または仮想的な物体であって、当該物体の内部にあるとは限らない軸の周りの円弧内を、（必ずしも回転ではなく）運動するものを記述する。たとえば、機械的なコンパスを保持して立っている人物を想定しよう。コンパスの針は（磁北を示すために）ピンの周りに回転するが、もしその人物が別の方角を向くために鉛直軸上で足を動かすと、コンパスのボディはその人物の鉛直軸の周りを回動する。この例では、人物のその軸がθ軸であり、コンパスの針の軸をλ軸であると考えることができる。
【００３５】
図１は、一実施形態の斜視図を示す。水平なベースプレート０１は主構造要素(primary structural element)である。ベースプレート０１は、３本の脚０３（ベンチ、机、床または他の支持表面上で装置を支持するために、図示しない３個の脚フッタと係合する）によって支持される。一実施形態では、ベースプレート０１はまたＺレールフッタ１７によっても支持される。鉛直Ｚレール０２は、第２主構造要素である。Ｚレール０２は、２側面においてＺ軸ねじ付きロッド１１を囲み、Ｚ軸ねじ付きロッド１１は、親スクリューナット（図示せず）を介してＺレール０２上でブーム０６を上下に駆動する。ブーム０６は、スペーサ１５を伴う４個のベアリング１２を介してＺレール０２に載っている。
【００３６】
押出機１６と、エンクロージャカバー２７（押出機の一部と、フィラメント駆動モータと、ファンとに対するもの。ファンカバーまたはエンクロージャとも呼ばれる）とが、ブーム０６に接触してまたはブーム０６内に取り付けられる。押出機１６は、ブーム上に、押出機プレート（図示せず）およびエンクロージャカバー２７の背後に取り付けられる。Ｚレール頂部プレート０８は、Ｚレール０２の頂部に取り付けられ、Ｚ軸ねじ付きロッド１１の頂部をベアリング（図示されているが番号を付さない）で固定する。Ｚ軸ねじ付きロッド１１は、Ｚ軸モータ０５Ｚによって駆動される。Ｚレール０２は、底部においてＺレールフッタ１７で終端する。押出機ブロック１６は、付加材料を吐出するノズルを少なくとも１つ含む。一部の実施形態は、複数の押出機や、複数のノズルを伴う押出機を用いる。典型的には、押出機ブロックおよびノズルはフィラメントから供給を受け、フィラメントは押出機内またはノズル内で加熱される。ノズルはこの図には現れない。穴３１（ここを通って、図示しない付加材料フィラメントが供給される）が設けられる。フィラメント駆動モータ（「第４のモータ」とも呼ばれる）は図示していない。電源スイッチ３０が図示されている。ターンテーブルは２３として図示される。プラッタまたは構築表面（図示せず）がターンテーブル２３の上にあってもよい。押出機、フィラメント駆動モータおよびファンに対するエンクロージャは２７として図示される。
【００３７】
図２は、例示的な底面図を示す。他の図と重複する参照符号は同一の構成要素を参照する。ベースプレート０１が図示される。３個のモータが現れている：Ｚレールフッタ１７に隣接するＺ軸モータ０５Ｚ、図示しないターンテーブルをλ軸（図示しないλモータシャフトの中央）の周りに回転させるλモータ０５Ｌ、および、θ軸（図示しないθモータシャフトの中央）の周りの円弧内でアーム０７を移動させるθモータ０５ＴＨ。λ軸はθ軸の周りに回動する。３個のモータは、いずれも図示しないスペーサを用いて取り付けられる。λモータ、θモータおよびθ運動の間の関係の概略図については図６を参照されたい。λモータ０５Ｌは図示しないターンテーブルに取り付けられる。λモータおよびターンテーブルは、ベースプレート０１の互いに反対の面上にある。ベースプレート内には湾曲したスロットの形状の貫通部(penetration)４１があり、これを介してλモータはターンテーブルに接続する。図示しないシャフト把持部が、Ｚ軸モータ０５Ｚのシャフトをねじ付きロッド（図１に１１として示される）に接続する。３Ｄプリンタは３本の脚０３上に支持される。一実施形態は、プリンタ内の４個のモータのうち１個以上について、ＮＥＭＡ標準規格モータサイズ「ＮＥＭＡ１７」を用いる。モータは、ステッパモータまたはサーボモータであってもよく、その他の種類のモータ（ＰＺＴまたは油圧モータ）であってもよい。本実施形態では主にステッパモータについて論じる。
【００３８】
新規な実施形態は、図２に示すスロット４１を利用して、θ運動、λ運動、または双方に対する運動制動を実施する。θ軸に対する制動は、摩擦ライナー、スペーサまたは構成要素（スロット４１の内側上のもの。モータ０５Ｌからターンテーブルまで、ベースプレート貫通部と接触する）の使用によって達成されてもよい。λ軸に対する制動は、制動要素（１個以上の摩擦スリーブ、ブッシング、ブラシ、圧力プレート、嵌合部(fitting)、または、モータ０５Ｌの回転するλシャフト（またはその延長部）の、（全体または一部の）周りの構成要素を備えるもの。制動要素がそのシャフトと接触する）の使用によって達成されてもよい。新規な一実施形態では、単一の構成要素（モノリシックであってもよく、２個のモノリシックな構成要素から構成されてもよく、モノリシックでないものであってもよい）が、λ運動およびθ運動双方に対して制動を提供する。たとえば、圧力嵌合ライナー（λモータシャフトがシャフトの長手方向に移動する（θ運動）際に摩擦および制動を提供するとともに、λモータシャフトが回転する（λ運動）際にも摩擦および制動を提供するもの）がスロット内に配置されてもよい。別の新規な実施形態は、λ運動およびθ運動の双方に対して運動制動の少なくとも一部を実施するために、スリーブまたはブッシングを用いる。たとえば、回転するλモータシャフト周りのこのスリーブは、スリーブがスロット４１の長手方向に沿って移動する際に、スリーブの内側上でλ運動に対する制動を提供し、スリーブの外側上でθ運動に対する制動を提供する。スリーブの内側と外側とで、および、λモータシャフトの表面とスロットの内側とで、圧力、表面サイズ、表面の種類、および他の任意の選択的な潤滑剤または摩擦流体（ワックス等）が異なるように変更することにより、λ運動に対する制動と、θ運動に対する制動とが、少なくともある程度独立して制御可能となる。一実施形態では、スロットライニングおよびシャフトスリーブの双方が用いられる。一実施形態では、スリーブは、内側において少なくとも部分的に丸められ(round)、外側においてスロットの一部と整合するよう成形される。そのような実施形態では、組み合わせられた制動要素はモノリシックであってもよい。
【００３９】
一実施形態では、上述の制動要素のうち１個以上が、工具を使わずに現場で交換可能(field replaceable)である。そのような交換は、メンテナンスのためのものであってもよい。別の実施形態では、様々な制動ファクタを意図的に達成するために、様々な制動要素が現場で互換可能であってもよい。
【００４０】
制動要素に適した材料は、コンポジット、フェルト、硬質ゴムおよびプラスチック（ポリエチレン、テフロン（登録商標）、ＰＴＦＥ、ナイロンまたは他のフルオロポリマーまたは半芳香族(semi-aromatic)ポリアミド、等）を含む。λ運動に対するモノリシックな制動要素と、θ運動に対するモノリシックな制動要素と、λ運動およびθ運動双方に対する単一の要素を伴うモノリシックな制動要素とが、具体的に特許請求される。制動要素または機能の一部としての、ベースプレート０１内のスロット４１を用いる制動構成が具体的に特許請求される。ＳＣＡＲＡアーム内での使用について記載される制動要素および構成が具体的に特許請求される。反転ＳＣＡＲＡアーム内での使用について記載される制動要素および構成が具体的に特許請求される。３Ｄプリンタにおける反転ＳＣＡＲＡアーム内での使用について記載される制動要素および構成が具体的に特許請求される。
【００４１】
一部の実施形態では、プリンタは上述の制動要素の制動パラメータを１つ以上動的に測定し、測定された１つ以上の制動パラメータを、モータ制御出力へのソース運動命令（source move commands）の処理に組み込む。制動を測定する方法の一つは、λ軸またはθ軸を最大速度で駆動し、その後駆動波形を固定値に瞬間的にフリーズさせ、実質的に駆動速度をゼロに落とすことである。シャフト位置エンコーダがモータシャフトの実際の回転位置を提供し、したがって、モータシャフトとターンテーブルとの間のバックラッシュがないことと、剛性との恩恵により、ターンテーブル回転位置を提供する。その後、時間と移動した回転距離とを用いて、その機械の実時間構成および構築表面の任意の部分について、実質的な制動を計算してもよい。加えて、λ軸およびθ軸双方の共振周波数（軸の一方または双方に関する１つ以上の共振周波数を含む）を測定してもよい。共振周波数の知識は、たとえば、運動が共振周波数にあるかまたは共振周波数の近傍にある時に、速度または加速度を減少させるために用いることができる。そのような測定（複数可）および用途（複数可）が特許請求される可能性がある。
【００４２】
動的な制動測定は、機械の変動（温度、経年および摩耗等）を補償するのみならず、構築中のピースの重量の変動をも補償可能である。したがって、部品が構築されるにつれて制動が変化するのみならず、変化する制動は部品構築の間に１回以上測定することができ、部品構築の間にモータ制御出力へとソース移動命令を処理することを変更するか、改善するか、または補償するために用いることができる。
【００４３】
制動は、概略的に、ばね質量制動系の一部として見ることができる。典型的には、系における臨界制動を持つのが理想的であるが、望ましい部品許容度に対するわずかなアンダーダンピング(slight under-damping)は、より高速な動作を許容する。一部の実施形態では、θ軸およびλ軸に対して個別にばね質量制動パラメータを区別するのは困難である。したがって、系全体を効率的に制動する単一の制動要素は、制動の最も単純な実装であり、応用に適している。２軸（とくにこれらの実施形態の各軸）を制動するために単一の制動要素を用いることは、新規である可能性があり、よって特許請求される。しかしながら、他の実施形態では、θ軸およびλ軸についてばね質量制動パラメータが個別に（１つの機械について動的に、または動作前に静的に）決定されてもよい（モデル化、理論的計算または双方による決定を含む）。たとえば、θモータのみが運動し、θモータシャフト位置センサが観測に用いられ、その軸に対するばね質量制動を計算してもよい。この運動および測定は、その後、λモータのみを運動させることによって同様に繰り返される。構築表面が空である場合には、機械要素の質量および弾力性(springiness)の双方が正確に測定され、したがって既知となる。このように、これらの要素およびこれらの方法によって、摩耗と、意図的に生成される制動パラメータの他の変化とを測定することができる。この測定または較正中の加速度または速度は、動作中に通常用いられる最大の加速度または速度より高い（またはかなり高い）ものであってもよいということに留意されたい。機械設計の剛性に起因して、構築表面上の物体が、動作可能なばね質量制動の弾力性の大きさに寄与してもよいということに留意されたい。したがって、ばね質量制動の動的測定が望ましい。機械内の構成要素の質量はあらかじめ知られており、構築中の物体の質量は構築中の任意の進行時点において計算が容易であり、制動パラメータもまた構築の開始前にあらかじめ知ることができるので、構築中の物体の弾力性を構築中に測定し計算し、モータ出力を変更するためにこの測定値を用いることができる。とくに、最終的な物体構築精度を改善するために、機械的な固定(mechanical settling)を可能にするために、より小さい加速度またはより小さいピーク速度（またはより長い一時停止時間）を用いてもよい。そのような動的測定、計算および使用は新規である可能性があり、よって特許請求される可能性がある。また、ばね質量制動系の制動パラメータおよび弾力性は、回転運動と直線運動との間で実質的に変化し得るということと、ある直線運動と直交直線運動とで実質的に変化し得るということにも留意されたい。たとえば、高く薄い壁の構築を考えよう。壁の軸方向に運動する場合には物体は剛体であるが、壁の軸に垂直な運動は弾力がある。したがって、一部の実施形態では、これらの軸の一部またはすべてについてばね質量制動系の測定パラメータを個別に測定し、ばね質量制動パラメータの、（構築前にあらかじめ）既知の測定値と、実時間の測定値（とくに弾力性）との双方を組み合わせることが望ましい。各モータシャフトにシャフト位置センサを設けることにより、３Ｄプリンタ上で物体を構築している間に制動を動的に測定す��能力が提供され、これはこの設計実施形態の新規な利益である。制動実施形態（この段落において論じた組み合わせを含む）が明示的に特許請求される。
【００４４】
図３は、例示的な正面図を示す。他の図と重複する参照符号は同一の構成要素を参照する。ベースプレート０１が図示される。１個のモータ（λモータ０５Ｌ）が現れている。３本の脚０３が図示される。Ｚレールフッタ１７が図示される。Ｚレール０２が図示される。Ｚ軸ねじ付きロッド１１が図示される。ブーム０６の端面図が示される。フィラメント駆動モータ、ファンおよび押出機の一部に対するエンクロージャカバー２７が図示される。１６は押出機を図示し、エンクロージャカバー２７の下方に部分的に現れる。この図では、プリントヘッドまたは押出機ノズルは、押出機の最下部として現れる。ターンテーブル２３は、その上にプラッタまたは構築表面１８が載置されて現れる。λモータ０５Ｌの駆動シャフト（参照番号なし）は、ベースプレート０１を貫通し、ターンテーブル２３の底部中央に接続して現れる。この駆動シャフトは、ベースプレート０１を、湾曲したスロット（図２に４１として示される）を貫通する。
【００４５】
図４は、例示的な側面図を示す。他の図と重複する参照符号は同一の構成要素を参照する。ベースプレート０１が図示される。３本の脚０３のうち２本が現れている。代替的な実施形態は４本の脚を用いる（脚水平化器を含んでもよい）。λモータ０５Ｌおよびθモータ０５ＴＨが図示される。アーム０７が図示される。Ｚレールフッタ１７およびＺレール０２が図示される。ブーム０６が図示される。プリントヘッド（ノズルとも呼ばれる）を持つ押出機１６が現れている。ブーム０６は、４個のベアリング１５を介してＺレール０２に載っている。ターンテーブル２３は、その上にプラッタまたは構築表面１８が載置されて現れている。また、図４は、ターンテーブルまたはプラッタのスキューを測定するのに用いられるマイクロスイッチまたは他のセンサ４２（別の箇所で説明される）の概略図も示す。実際上、押出機１６およびそのプリントヘッドはマイクロスイッチの機能とは干渉しないことが必要であり、また逆もそうであるということに留意されたい。押出機はマイクロスイッチより低い（たとえば０．５〜１０ｍｍ低い範囲内）。構築表面にプリント領域の外側を移動させることにより、干渉が回避される。この動作に対するＺ軸移動距離は、押出機ノズルが構築プレートまたは構築表面２３を避け、これによってマイクロスイッチが構築表面と接触できるようにするようになっている。マイクロスイッチと押出機ノズルとの垂直距離は既知であり、このずれは、機械較正処理中にマイクロスイッチの読み取り値に適用される。この目的のために、ターンテーブルを回転させるためにθモータを用いてもよい。センサにおけるヒステリシスは、センサの状態変化を１つのみ（または双方）用いることで相殺可能である。ターンテーブル、プラッタまたは構築表面のスキューを測定または決定するために、マイクロスイッチ以外のセンサ（磁気または誘導センサ、ホール効果センサ、光学または音響センサ、または視覚ベースのセンサ(vision-based sensor)等）を用いてもよい。ターンテーブルまたはプラッタの距離（ターンテーブル、プラッタまたは構築表面のスキューを含む）決定の一部として、反射性パターンまたは干渉パターンを用いてもよい。スキューは、理想的には、周縁近傍に等間隔で配置された３箇所において測定される。しかしながら、より少ないまたはより多い測定箇所を用いてもよい。一部の実施形態では、スキューを構築表面上で直接的に測定することが有利である可能性があるが、一方で、他の実施形態ではスキューをターンテーブル上で直接的に測定することが有利である可能性があるということに留意されたい。構築表面のスキューをより正確に計算するために、またはねじれを測定するために、または双方のために、３個より多い測定値を用いてもよい。
【００４６】
一部の実施形態は、自動的なレベル検出または自動的なレベル調整（またはユーザに対するどのように調整すべきかの指令）を含む。
【００４７】
第４のモータ（フィラメント駆動モータ）は、押出機ヘッドおよびノズルを介してフィラメントを駆動する。このモータがフィラメントを駆動するレートは、ある所与のフィラメントサイズおよび構造に対して装置が材料供給レートをセットする主な方法である。所望のレート（たとえばボクセル毎秒）においてボクセルを堆積するためには、ノズルヘッドにおいてプラッタの実際のスピードを調整することも必要であるということに留意されたい。ボクセル堆積レートは、材料供給レートを、ノズル下のプラッタの瞬時直線スピードで除算したものに比例する。
【００４８】
回路基板（図示せず）は、装置を動作させるための電子機器を備える。回路基板には、ファームウェア、またはソフトウェア、または双方が配置される。一部の実施形態では、回路基板上のブートローダが、図示しないケーブルまたは無線接続を介して、ソフトウェアをダウンロードする。回路基板は、ベースプレート０１の下に配置されてもよく、他の場所に配置されてもよい。装置を動作させるための電子機器またはソフトウェアの一部は、装置上に配置されなくともよい。たとえば、装置を動作させるためのソフトウェアの一部は、ＰＣ、サーバ、モバイル電子装置、等に配置されてもよく、図示しない有線または無線接続を介して装置と通信してもよい。
【００４９】
電源ボタンアセンブリは、ＬＥＤ電源ボタンリングと、カバーと、電源ボタン（図１に３０として示す）とを備えてもよい。一部の実施形態では、「電源ボタン」は、電源をオンまたはオフに切り替えることだけでなく、追加のまたは他の用途を有する。たとえば、スタンバイ状態からアクティブ状態に変更するために、またはその逆に、用いられてもよく、リセット、コールドスタート、ウォームスタート、ソフトウェア更新、較正サイクル、構築停止、ポーズ、または他の動作を開始するために用いられてもよい。そのような複数の動作は、ボタンを所定時間だけ押し下げて維持することにより、または所定回数だけ押すことにより、または双方により、達成されてもよい。電源ボタンの別名は制御ボタンである。
【００５０】
図５は、ステッピングモータを駆動するための、改善され特許請求される波形の実施形態を示す。当業者に既知のように、ステッピングモータ波形は元々は方形波であり、階段波形を用いて「マイクロステッピング」で改善された。マイクロステッピングは、モータの基本ステップサイズによって達成可能なものより多くの角度モータ位置を提供した。たとえば、４００基本ステップのモータ（０．９°／ステップ）は、駆動のために８レベル階段波形を用いると、８倍の数の角度位置すなわち３２００マイクロステップを有する可能性がある。マイクロステッピングに関する一つの改善は正弦波駆動である。正弦波駆動では、安定した回転速度を達成するために、２つの正弦波信号（それぞれコイルを流れる公称電流を表す）が９０°異なる位相で動作する。モータの角度解像度は正弦波の精度に制限されるが、モータの設計および製造の双方における固有の非線形性および他の要因は、解像度制限よりも精度制限のほうが典型的には大きくなるように、精度を制限する。
【００５１】
特許請求される実施形態は、正弦波駆動に関する改善を提供する。修正された正弦波駆動信号対（図５に示されるようなもの）が、正弦波駆動に関して、改善された線形性、改善された精度、改善された繰り返し性(repeatability)、および、改善された保持トルクを提供する。線形性は、典型的には駆動信号の３６０°（すなわち、４つの完全な基本モータステップ）をカバーする各角度について、目標角度と実際の角度との間のグラフィカルな関係として定義される。精度は、目標角度と実際の角度との間の誤差として定義される。
【００５２】
図５において、水平軸５１は任意の角度回転単位でマークされる。垂直軸５２は、モータコイル電流（１．０がピーク電流となるよう正規化されている）を示す。黒の実線５４は一方のコイルの電流を示し、破線５３は第２のコイルの電流を示す。点５７は第１のコイルのピーク正電流を示し、点５８は第２のコイルのピーク負電流を示す。これら２つのピーク５７および５８において、他方のコイルの電流はゼロであるということに留意されたい。一実施形態では、方形波信号を正弦波信号と混合することにより、理想化された波形が生成される。別の実施形態は、この混合において「平滑化された」方形波を追加的に用いる。以下に詳細を説明する。一つの目的および効果は、「小電流」をコイルに最小化することである（線形性、精度、および保持トルクに最小の有利な効果を有するので）。したがって、コイル電流の各時点５３、５４および５６に示すように、０．５よりも大きい電流値が好ましく、一方で、点５５に示すように、正弦波駆動に存在するであろう電流のより低い値はゼロ近傍にセットされる。正確な形状を生成するパラメータは、モータ設計から理論的に、または、特定の構成において具体的なモータをテストすることを介して実際的に、決定されてもよい。
【００５３】
改善された正弦波駆動は、以下に詳述される。
【００５４】
［ステップレスステッピングモータ駆動］
２極ステッピングモータの各コイルにわたる電流を、９０°位相が異なる２つの理想正弦波のような曲線によって表されるものとする。位相が０から３６０°まで変化するにつれて、４つの完全な基本モータステップが生成される。従来のステッピングの代わりにこの位相曲線を介して直接的にステッパを駆動することにより、一種のスーパー・グラニュラーな（super-granular）解像度を達成する。完全なステップ値間の任意の中間値が正当であり、ステッパ回路の解像度は、電流を（たとえばＰＷＭを用いて）制御できる精度と、与えられたモータの非線形性に関する知識とによってのみ制限される。
【００５５】
正弦波的駆動は理想モータについて有効である可能性があるが、そのようなモータは実際には存在しない。実験に基づき、我々は、「正弦性」および「平滑性」という２つの調整可能なパラメータが与えられると、ステッピングモータのほとんどを低速で非常に滑らかに駆動するであろう位相曲線形状に到達した。この曲線（図５に示されるようなもの）を生成することは、次のコードに示す関数mo_set_phaseに関する。
【００５６】
// シミュレートされたガントリーロボットの位置を追跡するために
// ツイスタアーム／プラッタアセンブリを移動
static void maintain_xy_motion(float x_, float y_) {
static float distance, x, y;
uint8_t stage = motion_tick % TWISTER_MAINTENANCE_STAGES;
switch (stage) {
case 0: x = x_; y = y_; break;
case 1: distance = sqrt(x*x+y*y); break;
case 2: theta = 2*asin(distance/(2*ARM_LENGTH))+theta_offset; break;
case 3: lambda = theta/2-acos(y/distance)*signof(x);
break;
case 4: set_motor_position(MOTOR_THETA, theta, THETA_STEPS_PER_REVOLUTION); break;
case 5: set_motor_position(MOTOR_LAMBDA, lambda, LAMBDA_STEPS_PER_REVOLUTION); break;
}
}
float square_sin(float x, float smoothness) {
return (2*atan(sin(x)/smoothness))/M_PI;
}
float square_cos(float x, float smoothness) {
return square_sin(x+(M_PI/2), smoothness);
}
void mo_set_phase(uint8_t motor, float radians, float rate, float modulator) {
float _s, _c;
uint8_t base_coil = motor*2;
float sinusness = sinusness_table[motor]; // すなわち 0.41
float smoothness = smoothness_table[motor]; // すなわち 0.008
_s = sin(radians)*sinusness+square_sin(radians, smoothness)*(1.0-sinusness);
_c = cos(radians)*sinusness+square_cos(radians, smoothness)*(1.0-sinusness);
set_coil(base_coil, _s);
set_coil(base_coil+1, _c);
}
【００５７】
square_sinは、調整可能なエッジ平滑性を持ち、正弦曲線と同じ位相特性を持つ微分可能連続方形状波を生成する。平滑性１．０は実際の正弦波を生じ、平滑性が漸近的に０に近づくにつれて関数は実際の方形波に近づく。
【００５８】
本実施形態における我々の実装では、方形波は、トルクがまったくまたはほとんど加わらないほど各コイルの電流が低い「死領域」を「スキップ」して通過する役割を有する。波形の平滑性は、曲線がある極性から次の極性へと遷移する際の、システムへの振動(shaking)またはノイズの発生を、回避するために用いられる
【００５９】
次に、この方形波は、ある量の従来の正弦波と混合される。正弦性パラメータは、混合の割合を特定する。正弦性が１．０に近づくにつれて、方形状波が正弦波に置き換わる。正弦性の値および平滑性の値は、アセンブリ内のモータそれぞれについて実験的に決定される。我々の現時点でのセットアップは、正弦性０．４１および方形波平滑性０．００８でよく動作するモータを用いる。位相図に戻り、現時点で我々の関数は図５のように見える。一実施形態に対する次のコードを参照されたい：
【００６０】
// これらの曲線は、その後、我々のＰＷＭドライバに次のように供給される：
// ４つのコイル（各モータに２つ）がある。電流は符号付きである。
static void set_coil(uint8_t coil, float current) {
uint8_t base_channel = coil*2;
if (current > 0.0) {
set_pwm(base_channel, current);
set_pwm(base_channel+1, 0);
} else {
set_pwm(base_channel, 0);
set_pwm(base_channel+1, -current);
}
}
// フルデューティサイクルを与えるパルス長
#define PWM_MAX 750
// １６チャネル（各モータに４つ）がある。飽和度は
// 符号なしである。
static void set_pwm(uint8_t channel, float saturation) {
if (saturation < 0) { saturation = 0; } 
else if (saturation > 1.0) { saturation = 1.0; }
uint32_t dutycycle = floor(PWM_MAX*saturation);
switch(channel) {
// ＰＷＭハードウェアはＳＴＭ３２  ＡＲＭプロセッサに登録する
case 0 : TIM3->CCR1 = dutycycle; break;
case 1 : TIM3->CCR2 = dutycycle; break;
case 2 : TIM3->CCR3 = dutycycle; break;
case 3 : TIM3->CCR4 = dutycycle; break;
case 4 : TIM5->CCR1 = dutycycle; break;
case 5 : TIM5->CCR2 = dutycycle; break;
case 6 : TIM5->CCR3 = dutycycle; break;
case 7 : TIM5->CCR4 = dutycycle; break;
case 8 : TIM1->CCR1 = dutycycle; break;
case 9 : TIM1->CCR2 = dutycycle; break;
case 10: TIM1->CCR3 = dutycycle; break;
case 11: TIM1->CCR4 = dutycycle; break;
case 12: TIM4->CCR1 = dutycycle; break;
case 13: TIM4->CCR2 = dutycycle; break;
case 14: TIM4->CCR3 = dutycycle; break;
case 15: TIM4->CCR4 = dutycycle; break;
}
}
【００６１】
このようにしてステッピングモータを駆動すると、ほぼ連続的なステップ解像度と、非常に低い速度におけるノイズなしの動作との能力が生じる。ノイズが低いことは、家庭、研究室またはオフィス環境における用途のために設計されるステッパモータ機器の新規な利点である。
【００６２】
［座標翻訳の詳細］
【００６３】
「ツイスタ」は、座標翻訳を実行するソフトウェアの具体的な一実施形態の名称である（座標とも呼ばれる）。
【００６４】
ツイスタは、シミュレートされた「影」直交座標ロボットをＸ−Ｙ−Ｚ空間内で動作させ、その後、この直交座標ロボットの運動を、本プリンタ機構の角度座標空間内で模倣することによって動作する。この実施形態の空間を、θ−λ−Ｚ空間と呼ぶ。ただし、θは内側（アーム）モータの回転角度を記述し、λは外側（ターンテーブル）モータの回動を記述する。この実施形態のＺ軸は、親スクリューを介してアクチュエートされる従来の直線軸である。
【００６５】
直交座標影ロボットソフトウェアは、実質的に、http://github.com/grbl/grblにおいて入手可能なユビキタスのＧｒｂｌ  ＣＮＣファームウェアをわずかに修正したバージョンである。
【００６６】
Ｇｒｂｌは、小さなカーネルを、秒間MOTION_TICKS_PER_SECOND回実行することによって動作する。典型的なレートは３０ｋＨｚであるが、１ｋＨｚ〜３００ｋＨｚの範囲を用いてもよい。典型的には、そのようなレートは、機械のサイズに少なくとも部分的に依存する。ツイスタは、タイムステップごとに、関数maintain_xy_motionを実行するカーネル上にピギーバックする。θ−λアセンブリを影ロボットのＸ−Ｙ位置に同期した状態に維持するのは、この関数のタスクである。サンプルコードを次に示す：
【００６７】
// アーム／プラッタアセンブリの位置を更新する
maintain_xy_motion(
(1.0f*st.position[X_AXIS])/PLANNER_STEPS_PER_MM,
(1.0f*st.position[Y_AXIS])/PLANNER_STEPS_PER_MM);
【００６８】
PLANNER_STEPS_PER_MMによる浮動小数点への変換除算は、影の座標を、ステッパモータステップカウント（stepper-motor-step-counts）から浮動小数点ミリメータ位置へと変換する効果を有する。
【００６９】
Ｘ−Ｙ座標からθ−λへの伝達関数(transfer function)コードは、以下のコードに示される：
【００７０】
d(x, y) = sqrt(x*x+y*y)
theta(x, y) = 2*arcsine(d(x, y)/(2*ARM_LENGTH))
lambda(x, y) = theta(x, y)/2-arccosine(y/d(x, y))*signof(x);
【００７１】
ただしd関数は［ｘ，ｙ］ベクトルの大きさ（すなわちＸ−Ｙ平面におけるプラッタ中央からツール先端までの距離）を与え、ARM_LENGTHは、アームの長さ（ｘおよびｙと同じ尺度の単位で表される）である。signofは、すべての値＞０に対して１．０を与え、０より小さいすべての値に対して−１を与え、正確に値０．０に対して０．０を与える。
【００７２】
maintain_xy_motionは、この伝達関数を取り、性能上の理由から、モーションティック(motion tick)ごとの１つの小さい計算単位を完了する時間ステップにわたって計算を多重化する。この関数内のサイクルが６回完了するごとに、θ−λモータ状態が完全に更新される。これは次のコードに示される：
【００７３】
// シミュレートされたガントリーロボットの位置を追跡するために
// ツイスタアーム／プラッタアセンブリを移動
static void maintain_xy_motion(float x_, float y_) {
static float distance, x, y;
uint8_t stage = motion_tick % TWISTER_MAINTENANCE_STAGES;
switch (stage) {
case 0: x = x_; y = y_; break;
case 1: distance = sqrt(x*x+y*y); break;
case 2: theta = 2*asin(distance/(2*ARM_LENGTH))+theta_offset; break;
case 3: lambda = theta/2-acos(y/distance)*signof(x);
break;
case 4: set_motor_position(MOTOR_THETA, theta, 
THETA_STEPS_PER_REVOLUTION); break;
case 5: set_motor_position(MOTOR_LAMBDA, lambda,
LAMBDA_STEPS_PER_REVOLUTION); break;
}
}
【００７４】
ただし、motion_tickは、MOTION_TICKS_PER_SECONDのレートにおけるモーションカーネル（motion-kernel）の繰り返しごとに増加するカウンタである。入力パラメータx_およびy_は、プラッタの中央に対するツールの目標位置を与えるものであり、定数ARM_LENGTHと同じ長さの単位で表されなければならない。TWISTER_MAINTENANCE_STAGESは６に等しいが、アセンブリの更新頻度を実効的に低減することによってプロセッサ負荷を低減するために、より大きい値にセットされてもよい。THETA_STEPS_PER_REVOLUTIONおよびLAMBDA_STEPS_PER_REVOLUTIONは、機械の各モータについてのステップ／回転（steps-per-revolution）である。現在のプロトタイプでは、０．９度／ステップのモータを用いるので、これらの値は双方とも４００である。set_motor_positionは、ターゲットのステッパモータの識別子と、このモータの目的電流角と、このモータのステップ数／回転とをもって呼び出される。この関数は非常に単純であり、実際には、与えられたステッパモータにおける磁界に対する位相角に変換された角度をもってその与えられたモータについてmo_set_phaseを呼び出すだけである。これは次のコードに示される：
【００７５】
static void set_motor_position(
uint8_t motor,
float angle,
uint16_t steps_per_revolution) {
mo_set_phase(motor, angle*(steps_per_revolution/4), 0, 0);
}
【００７６】
モータの「位相」は、モータコイルにおける磁界の角度を参照する。上記の角度パラメータは、モータの完全な１回転(a complete rotation)の角度を参照する。上述の式は、モータの特定の角度について、その角度を位相値に変換する。モータが比較的低速で駆動され完全なステップ(a full step)を決して緩めない限り、これはモータを常にこの関数呼び出しにおける実際の提供角度に維持する。
【００７７】
［プラッタチルトまたはスキュー補償］
以下の文章は、ターンテーブルまたはプラッタのスキューに対する測定および補正の一実施形態を記述する。
【００７８】
まず、アームスイング領域の最外端に配置されたマイクロスイッチまたは他のセンサをアームが通る(trip)までθモータを時計回りに運動させることによって、θモータの位置が確立される。θモータはゆっくり後退させられ、マイクロスイッチが係合解除する時にθモータの角度位置がゼロとされる。
【００７９】
プリントが開始する時のプラッタの向きは任意であるので、λモータは帰巣する(home)必要はなく、したがってλモータの位置は帰巣サイクルの開始時点でサマリー的にゼロとされる。
【００８０】
第２のマイクロスイッチが、様々な点においてターンテーブル、プラッタまたは構築表面の周縁の高さを探査するために降下しまたは上昇することができるように、Ｚ軸ブームの下に配置される。プラッタシャフトスロットは、プラッタがツールの経路からわずかに外側に移動できるように成形される。また、ベースプレートには、プラッタがこのようにして脇に移動した時に、ツール（または押出機ヘッド）がベースプレートの下側に沈むことができるようにする開口がある。これにより、ブーム上のマイクロスイッチはプラッタの周縁と接触可能となる。
【００８１】
測定は、スイッチが閉じるまでブームを降下させ、その後、ゆっくりとブームを持ち上げ、マイクロスイッチがスイッチ状態を変化させるＺ位置を記録することによって行われる。帰巣サイクルの現在の実装では、この測定は、周縁に沿って等間隔に３回（１２０度ごとに）実行される。同等の運動について同じタスクを達成するために、マイクロスイッチ以外のセンサ（同等の機能性をもって動作するもの）を用いてもよい。
【００８２】
［チルト平面の計算］
帰巣サイクルは、プラッタまたは構築表面の周縁に沿った３点において測定値を与える。一部の実施形態では、精度を向上させるために、構築表面に対する整合した平面が確立されるまで、追加の測定が行われる。測定値は、プラッタまたは構築表面のチルト平面を計算するために用いられる。関数に提供される角度は、λ＝＝０．０である時の、プラッタまたは構築表面に沿った、ツール位置に対する角度である。Ｚ値はｍｍ単位で表されてもよい。半径は、中央から測定点までの距離であるが、一実施形態では、測定値が取られる方法のために、すべての測定値について偶然等しくなる。関数init_wobble_correctorはこれらのパラメータを取り、次のコード示すように、平面方程式のための定数をセットアップする。
【００８３】
void init_wobble_corrector(float radius,
float angle0, float z0,
float angle1, float z1,
float angle2, float z2) {
// サンプルについて直交座標点を計算
float p1[] = {cos(angle0)*radius, sin(angle0)*radius, z0};
float p2[] = {cos(angle1)*radius, sin(angle1)*radius, z1};
float p3[] = {cos(angle2)*radius, sin(angle2)*radius, z2};
// １つを減算することにより２つのベクトルに変換
float v1[] = {p2[0]-p1[0], p2[1]-p1[1], p2[2]-p1[2]};
float v2[] = {p3[0]-p1[0], p3[1]-p1[1], p3[2]-p1[2]};
// ステップ１において得られたベクトルのクロス積を求める
plane_a = v1[1] * v2[2] - v1[2] * v2[1];
plane_b = v1[2] * v2[0] - v1[0] * v2[2];
plane_c = v1[0] * v2[1] - v1[1] * v2[0];
// 平面方程式の係数ａ，ｂ，ｃは、
// すなわち３０，−４８および１７である。
// 従って我々は 30x - 48y + 17z = d を得る。
// ｄを求めるために、３点のうち１つを単純に
// 方程式に差し込む。
// たとえば、点（１，２，３）を選ぶと、
// (30)(1) - (48)(2) + (17)(3) = -15 を得る。
plane_d = plane_a*p1[0]+plane_b*p1[1]+plane_c*p1[2];
}
【００８４】
［補償の適用］
一部の実施形態では、データを用いることにより、プラッタまたは構築表面のチルトを補償するためにゴーストガントリーロボットの直交座標を正確に回転させ変換するための変換行列がセットアップされる。これは、３軸すべてについて補償するが、チルトが通常は０．５度未満であることを考えると、この実施形態では、Ｇコードから受け取る際に任意のＺ座標にずれ値を加算することにより、構築表面（ここではプラッタ頂部）をスキューするだけで十分であるとわかった。任意に与えられる［ｘ，ｙ］点における任意に与えられるＺ座標に加算すべき値を求めるために、次のコードに示す平面方程式を用いる：
【００８５】
float act_wobble_correct_zero_z_at(float x, float y) {
return (plane_d-plane_a*x-plane_b*y)/plane_c;
}
【００８６】
この関数は、特定の［ｘ，ｙ］座標における、ツール（たとえばノズルまたは押出機ヘッド）の下のプラッタまたは構築表面のＺ位置を与える。このずれは、次のコードに示すように、Ｇコードパーサからのシミュレートされたガントリーロボットのモーション計画(motion plan)へと受け入れられる際に、Ｚ座標に加算される。
【００８７】
// モーション計画に新たな直線運動を追加
void plan_buffer_line(float x, float y, float z, float e, float feed_rate, uint8_t invert_feed_rate)
{
// 新たなブロックをセットアップする準備
block_t *block = &block_buffer[block_buffer_head];
// 軸ずれプラッタについて揺れ補正を適用
z += act_wobble_correct_zero_z_at(x, y);
[...]
}
【００８８】
［無限大に近い回転スピードの可能性の扱い］
エキゾチックな(exotic)またはアンギュラーな(angular)ロボット幾何学のために、別の幾何学用に作成された運動制御システムの出力を実時間で変換することによって制御装置を実装することは、一実施形態のコンテキストにおいて、効果的な実装を達成するためのコスト効率的な方法である（とくに性能およびコストに対して）。ほとんどの場合、結果はネイティブの運動制御アルゴリズムが生じさせるものと事実上等価であるが、１つのトラブルスポットが存在する：
【００８９】
影のガントリーロボットがプラッタのピボット点の近くを移動する時、それは、その出力によりプラッタが無限大に近づくスピードで回転する必要があるかもしれないということを知らない。この問題に対する１つの簡単な対策は、サブシステムが実ロボットの実際のスピードを監視し、速度が物理的に可能な領域内に確実に留まるように（とくに非現実的なスピードを回避するように）、シミュレートされた直交座標ロボットのタイムベースを調整する、一種の「時間拡大」を実装することである。
【００９０】
動作に対するそのような測定、計算および調整は、新規である可能性があり、特許請求される可能性がある。
【００９１】
スピードは、次のコードに示すように、一定間隔（たとえば１ｋＨｚ、または２００Ｈｚ〜２０ｋＨｚの範囲内）で、運動制御装置においてθ角度変数およびλ角度変数の変化率を監視することによって測定される：
【００９２】
static void measure_theta_lambda_rates() {
float elapsed = 1.0f*(motion_tick - rate_sampled_at_tick)/MOTION_TICKS_PER_SECOND;
theta_rate = (theta-theta_sample)/elapsed;
lambda_rate = (lambda-lambda_sample)/elapsed;
theta_sample = theta;
lambda_sample = lambda;
rate_sampled_at_tick = motion_tick;
}
【００９３】
time_warp因子は、次のコードに示すように、あるヒステリシスをもって維持される：
【００９４】
// 最も速く運動しているサブシステムによって
// 現在維持されている最大スピードの分数(fraction)を計算する。
// １．０は、サブシステムが厳密に最大許容レートで動いていることを意味する。
// タイムワープブレーキングを制御するために用いられる。
static float fraction_of_max_physical_speed() {
return fabs(lambda_rate)/MAX_LAMBDA_RATE_RADIANS_PER_SECOND;
}
// 実際の物理的運動を、機械の指定された境界内に
// 維持するための時間を曲げる。
static void maintain_time_warp() {
float max_speed_fraction = fraction_of_max_physical_speed();
float max_time_warp = 1/max_speed_fraction;
// スピードがすでに許容範囲を超えていれば、単にハードブレーキ
if (time_warp > max_time_warp) {
time_warp = max_time_warp;
}
// スピードが最大スピードから２０％以内であれば、ブレーキを開始する
if (max_speed_fraction > 0.80) {
time_warp *= 0.99;
} else if (max_speed_fraction < 0.9) {
time_warp *= 1.01;
}
if (time_warp > 1.0) {
time_warp = 1.0;
}
}
【００９５】
time_warp_ingを可能にするためにガントリーロボット制御ソフトウェアがどのように修正されるかの詳細は、本明細書では重要ではない可能性がある。time_warpは、０．５のtime_warpが影ボットを実時間の半分のスピードで動作させるようにステップ生成レートを比例的に修正するということを言えば十分である。
【００９６】
非常に特殊なケースは、個別に扱われなければならない。運動がプラッタの厳密な中央を通過する時には、制御ソフトウェア内の数学の一部が壊れる。方程式に従って要求されるスピードは、厳密に無限大となる。この点では、影ボットは、プラッタが最大レートで１８０度回転する間、しばらく完全に停止しなければならない。これはソフトウェア内で特殊ケースとして扱われる。
【００９７】
３Ｄソースファイルの形式は、ＳＴＬ（立体リソグラフィファイル形式）、Ｃｏｌｌａｄａ、ＡＳＥ、Ｓ３Ｄ、Ｕ３Ｄ、ＤＷＦ、ＤＸＦ、３ＤＳ、ＯＢＪおよびＳＴＬを含む。ソースファイル形式は、Ｇコードの列またはＧコードを含むファイルを生成するために「スライサー」ソフトウェア（実施形態の構成要素であってもよいし、そうでなくともよい）を通過してもよい。Ｇコードを含むファイルがソースファイルであってもよい。しばしば、ＩＳＯ６９８３がＧコードの最も適切な標準規格であると考えられている。
【００９８】
［定義］
「３Ｄ機械ツール」…４Ｄ、５Ｄまたは５Ｄ機械ツール内の３軸を含む。
【００９９】
「構築領域」…３Ｄ付加的プリンタについて、物体がプリントされ得る水平の領域（典型的にはプラッタ上または構築表面上）を参照する。
【０１００】
「被制御軸」…目標位置（直線位置または回転位置）に対して制御可能（位置間の制御された速度を含む）な軸を参照する。回転スピードが可変であっても連続回転軸は含まない（たとえばドリルプレスまたは旋盤回転軸）。制御可能な目標位置の解像度は、機械上のワークピースの望ましい特徴サイズの精度にコンパラブルにすべきである。
【０１０１】
「駆動スクリュー補償装置」…駆動スクリューまたはその実装における不完全性を補償するよう設計された装置またはセンサ（駆動スクリューバックラッシュ補償器等）。そのような補償装置は、機械的であってもよく、電子的であってもよく、ソフトウェアであってもよい。
【０１０２】
「第１運動(the first motion)の機械的構成要素」…第１運動で動くすべての機械的構成要素。
【０１０３】
「円弧上で開いている」…プリント中の物体またはプリントされる可能性のある物体のいかなる高さからも、円弧内において、水平面内で、λ軸から、障害物（フレーム要素または他の要素等）のない装置を参照する。
【０１０４】
「部品が固定されている(affixed)」…部品を構築領域またはツール範囲領域に固定し得る方法は多数存在する。重力のみによって固定されてもよい。付加的３Ｄプリンタでは、付加的材料の粘着性が、その部分（および部品が構築されるにつれ、その部品の残りの部分）を固定するのに十分である。一般的には機械の一部（ターンテーブルまたはプラットフォーム等）上に直接的にプリントしたくないので、多くの場合に中間表面を用いてもよいということに留意されたい。プラットフォームが安価であるか使い捨てである場合には、または、プラットフォームから部品を完全に取り去るのが容易である場合には、プラットフォームがこの中間表面であってもよい。除去的製造では、クランプ、万力、または他の装置を用いてもよい。
【０１０５】
「部品表面」…付加的または除去的機械加工のために、部品が置かれまたは固定される表面を参照する。
【０１０６】
「平面的ツール領域」…これは、ツールヘッドが位置し得る領域を定義する構築表面、プラッタ、ターンテーブル、構築プレートまたは他の中間表面上の領域である（その表面に対して相対的な）。これはプラットフォームより小さいものであってもよい（潜在的な部品のすべての部分を超えてプラットフォームが延びることが有用であるので）。
【０１０７】
「プラッタ、構築プレートまたは構築表面」…概して、ターンテーブルと部品との間の中間要素またはターンテーブルに接続された仮想的表面または実際の要素を参照する（重力によって取り付けられたものを含む）。部品は、構築表面上に直接的に構築されてもよく、別の中間要素上でもよい。構築表面は「平面的ツール領域」を備えてもよい。一部のコンテキストまたは実施形態では、これらの用語の使われ方はわずかに異なってもよいということに留意されたい。たとえば、部品の寸法を論じる場合には、部品のベースは構築表面に、または、構築表面と実際の部品との間の中間層に、接触する。同様に、較正およびスキュー測定または補正が特定の要素または表面のためにあってもよい。概して、プラッタはターンテーブルに接触しターンテーブルにより駆動される。したがって、要素の順序は、上から下に向かって、部品、構築表面上の中間層、構築表面、プラッタ、ターンテーブル、ターンテーブル駆動要素（たとえば駆動モータシャフト）、であってもよい。リストされたこのような要素すべてが、すべての実施の形態において用いられるわけではない。１つ以上の中間層は、実施形態の一部であってもよく、ユーザによって提供されてもよい。１つ以上の中間層は、恒久的なものであってもよく、半恒久的なものであってもよく、使い捨てであってもよい。均等な構造または均等態様で動作する要素を用いてもよく、特許請求の範囲に含まれてもよい（そのような均等な構造または要素が追加の利益を提供するとしても）。
【０１０８】
「実時間」…実行中に発生する動作または測定である。機械的システム（およびその制御および測定）では、実時間は、機械的システムの関連する運動中である（前もってのまたはシミュレーションの間の計算または所定のパラメータと対比される）。
【０１０９】
「ツール範囲領域」…付加的または除去的な機械加工のための利用可能な部品表面上(on)またはその上方(over)の領域である。水平でない部品表面（または機械加工体積が部品表面の下側にあるような部品表面）については、用語「上方」は適切に調整される。
【０１１０】
「ターンテーブル」…概して、λおよびθ運動システムに接続されλおよびθ運動システムによって駆動される機械的構成要素を参照する。ターンテーブルの上には、プラッタまたは構築プレートが取り外し可能に配置されてもよい。構築プレートの上表面は、構築表面であってもよいし、部品が製造される平面的ツール領域を備えてもよい。また、概して、部品および機械測定について基準表面となるのはこの表面である。代替的に、構築プレートおよび構築表面はターンテーブルと一体であってもよい。
【０１１１】
「理想」、「理想的に」、「最適」および「好ましい」…用語「理想」、「理想的に」、「最適」、「べき」および「好ましい」の使用は、本発明を説明するコンテキストにおいて用いられる場合には、本発明の１以上の用途についての１以上の実施形態についてのベストモードを具体的に参照する。当業者は理解するように、そのようなベストモードは非限定的であり、すべての実施形態、用途、または実装技術についてのベストモードではない可能性がある。
【０１１２】
「でもよい(may)」、「できる(could)」、「任意選択(option)」、「モード」、「代替」および「特徴」…用語「でもよい(may)」、「できる(could)」、「任意選択(option)」、「任意選択の(optional)」、「モード」、「代替」および「特徴」は、本発明を説明するコンテキストにおいて用いられる場合には、本発明の様々な実施形態を具体的に参照する。用語「示す」または「コード」を用いる、例、説明および図面は、非限定的な実施形態を参照する。すべての図面は非限定的な実施形態である。当業者は理解するように、本明細書におけるすべての記載は非限定的である。
【０１１３】
本発明の特許請求の範囲は、明細書、図面、特許請求の範囲および要約に含まれるすべての特徴、要素、例、特許請求の範囲、実施形態、表、値、範囲、および図面の、すべての組み合わせおよびサブコンビネーションを明示的に含む。本発明の特許請求の範囲は、特許請求の範囲、明細書および図面に記載されたすべての方法の、任意の組み合わせを実装するための装置およびシステムを明示的に含む。本発明の特許請求の範囲は、特許請求の範囲、明細書および図面に記載された装置およびシステムを用いる方法を、任意の組み合わせで明示的に含む。
【０１１４】
実施形態は、特許請求の範囲に記載されるように、３Ｄプリンタを用いて部品を製造する方法を含む。実施形態は、特許請求の範囲に記載されるように、３Ｄプリンタを用いて部品をスキャンする方法を含む。実施形態は、特許請求の範囲に記載されるように、機械ツールにおいてステッパモータを駆動する方法を含む。実施形態は、特許請求の範囲に記載されるように、λおよびθ回転軸を制動する方法を含む。
【図１】
0006687621.tif 000002
【図２】
0006687621.tif 000003
【図３】
0006687621.tif 000004
【図４】
0006687621.tif 000005
【図５】
0006687621.tif 000006
【図６】
0006687621.tif 000007