3Dプリンター(5) ― 2015年11月06日
3Dプリンターの改造
より綺麗な仕上がりを期待して改造を施しています。ものによっては効果が確認できないものもあります。(気休め) お金をかけずに3Dプリントしたもので改善できるのであればと思います。
Y軸ベルトテンションの調整
Prusa i3の基本形ではX、Y軸のベルトテンションのアジャスターはついていません。プリンター使用中に緩むことも少ないのでアジャスターがなくても不便を感じませんが、ベルト取り付け時に適切なテンションで取り付けることが難しいいのは確かです。
X軸ベルトテンションの調整
X軸のベルトテンションアジャスターはアイドラーエンドパーツの交換で行います。X軸、Y軸方向のバックラッシュの主な原因はベルトの緩みによるものです。こまめな調整でバックラッシュを低減できます。
Z軸のバックラッシュ対策
X、Y軸はベルト駆動でZ軸は両切りボルトによるリードスクリュー駆動です。精密加工されたリードスクリューであればバックラッシュなど起こらないのですが、両切り(寸切)のM5ボルトで簡易的に作っているためボルトとナット1個では完全に噛み合っていません。そこでバックラッシュを低減するためにナット2個とスプリングを使用したアンチバックラッシュを作成して取り付けました。バックラッシュが起こっていると高さ方向の出来上がりに影響します。結構大きな効果が期待できます。
キャリアプレートの剛性と耐熱
キャリアプレートの素材にはアクリル、アルミ、MDFなどが使用されます。最初はアクリル素材のキャリアプレートを使用しましたが、熱により変形してしまいました。キャリアプレートが変形するとホットエンドのギャップ調整がうまくいきません。そこでアルミ素材のキャリアプレートに変更しました。2台目は5.5mm厚のMDF版を使用しました。Y軸移動時の振動でバックラッシュを起こす可能性はありますが、ヒートベッドとの間隔を広めした熱対策をしました。このあたりは動かしてみて様子を見たいと思います。
3Dプリンター(6) ― 2015年11月09日
コントロールボードとモータードライバー
3Dプリンターの制御系をHackします。このブログでもいろいろ作成しているArduinoが制御マイコンになります。デジタルポートとアナログポートを使用します。
Arduinoとコントロールボード
RapRep 3Dプリンターのコントロールボードのセットです。内容はArduino mega2560 R3互換ボード、RAMPS1.4コントロールボード、A4988ステッピングモータードライバーがセットになっています。特にセットで購入する必要はありませんが、今回はセットのほうが割安になっていました。
Arduino Mega2560 R3にはファームウエアに当たるスケッチを書き込みます。スケッチはMarlinをダウンロードし、自分の構成にパラメーターを合わせて修正します。Arduino IDEからArduino Mega2560 R3に書き込み完了です。

モータードライバー

- A4988使用時の計算式
I_TripMax = Vref / (8 x Rs)
I_TripMax : 制御電流
Vref : VR-GND間の電圧
Rs : シャント抵抗値
- DRV8825V使用時の計算式
Ifs = Vref / (5 x Rs)
Ifs : 制御電流
Vref : VR-GND間の電圧
Rs : シャント抵抗値
1.5A x 80% = Vref / (8 x 0.2Ω) で Vref = 1.92V
に設定しました。互換A4988ドライバーボードはシャント抵抗値が異なることがあります。前に購入したAsShopで扱っているA4988ドライバーボードはR100 = 0.10Ωでした。ネットで解説されているI = Vref * 2.5 という計算式はPololu社のリファレンスボードの場合でシャント抵抗がR050 = 0.05Ω時の計算式です。ステッピングモータの制御電流値の設定はドライバーICとシャント抵抗値を確認し、発熱対策を考慮した設定にする必要があります。

ステッピングモーター

e-bayなどで販売時に表記されているトルクの単位はいろいろありわかりにくいです。1N.m(ニュートン.メートル)は1000mN.m、100N.cm、0.001kN.mとも表記できます。また0.102kgf.m、10.197kgf.cm、10197.162gf.cmとも表記されます。変換計算をしてくれるページがありますので参照してください。
ドライバーボード同様にステッピングモーターも多少発熱します。しかし、熱くて触れないほどというのは定格電流値を超えている可能性があります。モーターの寿命にも影響しますので定格電流値以内で使用してください。
LCD表示ユニット

このユニットには操作用のロータリーエンコーダーとSDカードソケットが実装されています。SDカードに印刷データを転送してオフライン印刷が可能になります。
温度計測センサー
RepRapでは一般的に安価なNTCサーミスター素子を使用します。詳細はこちらのページで解説されています。だいたいホットエンドやヒーテッドベッドに付属してきますが、改めて購入するのであればPTFE耐熱ケーブル付きをおすすめします。細めの2心PTFE耐熱ケーブルがなかなか見つかりません。MarlinFirmeareにはたくさんのセンサーが予め記述されていますので購入したものを選択してください。RAMPS1.4コントロールボードの温度センサー端子に接続します。極性はありません。
エンドスイッチ
XYZ軸のゼロ点検出用のセンサーです。マイクロスイッチか、ホール素子を使用した位置検出センサーです。RAMPS1.4コントロールボードのエンドスイッチ端子に接続します。MIN、MAX合計で6個接続できますがMINのみ(3個のセンサー)で十分でしょう。MAXはMarlinFirmeareで最大移動距離が設定できますので代用が可能です。
3Dプリンター(7) ― 2015年11月13日
3Dプリンターで印刷
3Dプリンターが完成したらいよいよ印刷です。プリンターという名称が付いているので印刷と言っています。日本語では造形/造型という言葉があるためそちらがよく使用されていますが3Dプリンターで印刷したからといって目的のオブジェクトが完成するわけではないのであえて印刷と言っています。鋳型から取り出した状態と言ったらよいでしょうか。バリ取りや仕上げ(修正)、塗装といった工程を経てオブジェクトは完成します。3Dプリンターで印刷するまでの工程は大きく分けて3つのステップが必要です。
PCでオブジェクトの作成
目的のオブジェクトは3D CADソフトを使用して作成するか、インターネット上で公開されているSTL形式のデータをダウンロードします。3D CADソフトは高価で操作が難しいものが多く初心者には手が出ません。その中でも比較的操作法が簡単なソフトを選択しています。もちろんフリーソフトです。私はAutoCADの123D Designぐらいしか使用できません。
印刷形式(Gコード)に変換する
slic3rを使用します。作成されるGコードは3Dプリンターの制御情報を含んでいます。自分の3Dプリンターの設定条件を理解していないといけません。印刷がうまくいかない時はこの条件を変更します。対象のオブジェクトやフィラメント、室温によっても条件は変わってきます。Arduinoには基本パラメーターしか設定しませんのであとの細かな設定はここで行います。作成されたオブジェクトに対しても3D表示で簡単な操作が行えます。設定する項目が多く、英語なので以下のサイトも参考にしください。
3Dプリンターで印刷する


3Dプリンターでは送られてきたGコードを解釈してホットエンド、ヒートベッドの温度管理とヘッド、ベッドの移動、フィラメントの送出を行います。
- Raspberry PiにOctoPrintを入れてWebブラウザから3Dプリンタを制御する
- pronterface - Windows版3Dプリンターソフトセット
slic3rとprintrunのセットのDownloadサイトです。
3Dプリンター(8) ― 2015年11月19日

3Dプリント・サーバー
ArduinoやRaspberry Piをいじってきましたが、3Dプリンターでそれらを全て使用することになりました。なんか嬉しくなります。
以前なら購入していたRaspberry Pi B+のケースを作りました。オープンなデザインがいっぱいあります。ケースの肉厚が薄いので印刷時の設定で100% infillで印刷しなければいけなかったのですが70% infillで印刷してしまいました。ちょっとスカスカして弱い感じがします。今度時間のあるときにでも印刷し直そうかと考えています。
ベースOSにRaspbianをインストールし、octoprintをインストールして3Dプリンターのプリントサーバーに仕上げました。


3Dプリンター(9) ― 2015年11月27日
Z軸の自動調整機能
各軸の位置調整はエンドストップスイッチの取り付け位置で行います。X、Y軸の位置調整はホットエンドがベッド内に収まるようにエンドストップスイッチの取り付け位置を決定しますが、Z軸の調整はホットエンドとベッド間のギャップ調整を行います。基本的にはX、Y軸と同じなのですがこれが結構面倒です。ベッドの取り付けネジ4本(水平調整)とエンドストップスイッチの取り付け位置(ギャップ調整)の2調整を同時に行います。ネットで検索しているうちにMarlinFirmeareの機能にAuto Bed Levelingというのがあることがわかりました。実際に使っている方もいらしてYouTubeに動作している動画を見つけました。こういう機能が欲しかったというべき機能です。それに動きがロボット的なのも良いです。
ベッドが水平でなくとも自動的にZ軸を調整してくれる素晴らしい機能です。ホットエンドのギャップはZ-Probe(Z軸のエンドストップスイッチ)のZ方向のオフセットで決まりますので最初の設定が肝心です。Z軸自動調整機能(Auto Bed Leveling)の実装にはマイクロサーボ1個とZエンドストップスイッチの取り付け位置変更を行います。3Dプリントした取り付けパーツで実現できます。
Z-Probe取り付けパーツを作成します。Xキャリアやホットエンドに合わせて選択するかデザインしてください。
- YouTubeの動画がわかりやすいです。
Part 1(組み立て)
Part 2(設定)
Part 3(調整)
MarlinFirmeareのConfigurations設定を修正します。
測定位置、X、Y、Z方向のホットエンドとのオフセット値、動作速度、マイクロサーボの動作角度を設定します。
- オフセット値は試行錯誤で微調整します。
一度オフセット値を設定してしまえば、ホットエンド周りを変更する時まで再調整の必要はないと思います。
Z軸自動調整機能(Auto Bed Leveling)を実装しようとしていますが、MarlinFirmeareの設定がうまくできません。G28コマンドでサーボが動作するとMarlinFirmeareがハングアップしてしまいます。サーボを使用せずにG28、G29コマンドを動かすとうまく動きます。サーボを使用しない

誘導近接スイッチにはNPNタイプのLJ12A3-4-Z/BX(青色)とPNPタイプのLJ12A3-4-Z/BY(黄色)があり、接続が少し違います。また、電源に6V~36Vが必要です。RAMPS1.4コントロールボードのエンドスイッチ入力は5Vロジックです。誘導近接スイッチの出力を5Vにレベル変換する必要もありますが、抵抗分圧で簡単にすませることができます。 抵抗分圧では供給電圧によって出力電圧が変動しますので電源が安定していない場合は注意が必要です。抵抗が短絡した場合12VがArduinoに入力されてしまいます。パーツ箱の中にあったSharp PC900Vフォトカプラでアイソレートしてあげました。回路はいたって簡単です。
最近のコメント