2016年10月29日土曜日

Marlin エクストルーダの設定

#defain DEFAULT_AXIS_STEPS_PER_UNITの設定の話。

#define DEFAULT_AXIS_STEPS_PER_UNIT {X軸,Y軸,Z軸,Ex(エクストルーダ)}

どっかから拾ってきた計算式
Steps per Unit (Extruder) = Motor Steps per Revolution * Extruder Gear Ratio / (Pinch Wheel Diameter * Pi)
ユニットあたりのステップ(押出機)=モーターステップ革命あたり*押出機のギヤ比/(ピンチ車輪径*π)

解りづらい・・・なんやモーターステップ革命て・・・・
なので、比の計算で算出する。(A:B =n:m は Am=Bn)

まず、上記Ex(エクストルーダ)部分を100にしてボードに書き込む。
コントローラからエクストルーダを100mm設定で移動させる。
フィラメントが実際に移動した距離を測る。
以下の式に当てはめる。

始めにMarlin側に書いた値:B(書き込みたい値) = 実際の移動量:コントローラからの射出距離

うちの場合の実際の移動量は33.55mmだったので
100:B = 33.55:100 は 10000 = B*33.55 となり
B = 10000 / 33.5 = 298.062593145 Exに代入する。

2016年10月11日火曜日

特に何も無いんですが

夏場はどうしても暑くて、だるくて3Dプリンタやら触るのすらしませんでした。
よって書く事も無いので、ここも放置状態・・・
そろそろ再始動するかな。

2016年2月12日金曜日

Raspberry pi2とIGZO 7インチパネルの不具合?について

立て続けにメモ。
raspi2をリスタートさせるとIGZOパネルを認識しなくなる。電源を完全に落としてから起動させるとちゃんと映る。

tvservice -o とやってディスプレイを一度落としてから shutdown -r now をすると問題なく映る。

ネットを巡回してみたところ誰もこの話題をしていないので、ウチだけの問題かもしれない・・・(´・ω・`)

仕方がないので、デスクトップにrestart.shちゅーのを作って、これを使って再起動させる。

restart.sh
#!/bin/sh
tvservice -o
shutdown -r now

確かずいぶん前のRaspbianにはシャットダウンのアイコンがデスクトップに置いてあったので、似たようなことしてたんかな?

RaspberryPi2 Bluetoothの設定

忘れないうちにメモ。
bluetoothの設定をしようとbluez-utilsをapt-getしたがインストールできなかった。
以下の方法でペアリングできた。

$ sudo apt-get install bluetooth blueman

でとりあえずbluetoothまわりをインストールしておく。
menu>Preferences>Bluetooth Managerを一応開いて。bluetoothの設定をしてみる。
認証コケる場合は以下。

https://wiki.archlinuxjp.org/index.php/Bluetooth#Bluetoothctlにある、「CLIによる設定」の項目通りにやったら接続できた。

リスタートしてデスクトップが開くと何やらダイアログが出るのでよく読んでYesの隣の「常に接続(意訳)」を押す。

これでOK。

2016年2月11日木曜日

raspberrypi2BとIGZO7インチパネルの一体型PCみたいなの作った

超久々ですが、わたしのMendelMaxちゃんは今日も元気です!

今話題?のIGZO7インチパネルを購入しました。
IGZOパネルはごっついきれいなのですが、フレキケーブルがごっつい華奢です。
ごちゃごちゃいぢりまわしてると、これすぐ壊れそうですね。

 ということで、さっさとパネルのフレームを作らないと悲しいことになりそうなので、raspi2と合体させて3Dprinterでミニ一体型PCを構築しました。 カメラの電池なくなっちゃったので背面だけうp
まぁただフレームだけ作って、VESAの75mmで背面を固定できるようにしただけですw

ラズパイのケース自体はこちらさまhttp://www.thingiverse.com/thing:922740のVESAマウントできるものを使わせていただきました。
このケース、ノズル径0.5mmで最適化されているようで余裕があってしっかりしています。おすすめです。 

パネルフレーム自体をすっかすかに作ってあるのは、なんかフレキケーブルの辺りが熱くなるので通気良くするためです。あとフィラメントの削減。エコだろ~?

今のところ、100均で買った吸盤付きスタンドを分解して組み立てていますが、追々全部3Dプリンタで射出する予定です。なんかかっちょわるいw

 後ろ側のビームつーんでしょうか?梁の部分が強すぎて液晶自体がたわんでしまったので、これはβ版ということでまた作り直しします。

 ということで、とりあえずこんなところで。

2015年2月18日水曜日

pi4j

raspberrypiのGPIOをJAVAでいぢくれる!!!
だがしかし、英語苦手なんですわ・・・
ということで、PI4J仕様の翻訳をグーグル先生にご依頼してみた。
http://pi4j.com/usage.html

インポートPi4Jパッケージ

Pi4Jを実装するには、プロジェクトのクラスにPi4Jパッケージの数を含める必要があります。 以下のリストは、あなたが必要があるだろうPi4J輸入の大半が含まれています。 おそらくあなたは、未使用のインポートを削除することができ、あなたのプロジェクトでこれらの輸入のすべてを必要としません。
import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPin;
import com.pi4j.io.gpio.GpioPinDigitalInput;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.PinDirection;
import com.pi4j.io.gpio.PinMode;
import com.pi4j.io.gpio.PinPullResistance;
import com.pi4j.io.gpio.PinState;
import com.pi4j.io.gpio.RaspiPin;
import com.pi4j.io.gpio.trigger.GpioCallbackTrigger;
import com.pi4j.io.gpio.trigger.GpioPulseStateTrigger;
import com.pi4j.io.gpio.trigger.GpioSetStateTrigger;
import com.pi4j.io.gpio.trigger.GpioSyncStateTrigger;
import com.pi4j.io.gpio.event.GpioPinListener;
import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent;
import com.pi4j.io.gpio.event.GpioPinEvent;
import com.pi4j.io.gpio.event.GpioPinListenerDigital;
import com.pi4j.io.gpio.event.PinEventType;

コントローラのインスタンスを作成します。

Pi4Jと対話する前に、まず新しいのGPIOコントローラのインスタンスを作成する必要があります。 GpioFactoryは GPIOコントローラを作成するためのcreateInstanceメソッドが含まれています。 あなたのプロジェクトは、単一のGPIOコントローラのインスタンスをインスタンス化する必要があり、そのインスタンスは、プロジェクト間で共有されるべきである。
// create gpio controller instance
final GpioController gpio = GpioFactory.getInstance();

ピン番号

プロビジョニングピン

GPIOピンにアクセスするには、まずプロビジョニングピンなければなりません。
プロビジョニングは、あなたがそれを使用する方法に基づいて、ピンを設定します。 自動的にピンをエクスポートすることができプロビジョニング、割り込みベースのイベントのための任意のエッジ検出をその方向を設定し、セットアップ。
次の例は、どのようにプロビジョニング入力端子に示しています。 入力端子は、プログラムが状態変化を監視または必要なときに状態を問い合わせますピンである。 入力ピンはスイッチ等、センサのために使用される
// provision gpio pin #02 as an input pin with its internal pull down resistor enabled
// (configure pin edge to both rising and falling to get notified for HIGH and LOW state changes)
//その内部プルダウン抵抗付きの入力端子として提供GPIOピン#02が有効
//(両方の立ち上がりとハイとローの状態の変化のために通知を受けるために落下する端子のエッジを設定)
GpioPinDigitalInput myButton = gpio.provisionDigitalInputPin(RaspiPin.GPIO_02,             // PIN NUMBER
                                                             "MyButton",                   // PIN FRIENDLY NAME (optional)
                                                             PinPullResistance.PULL_DOWN); // PIN RESISTANCE (optional)

次の例は、プロビジョニング出力端子に示しています。
出力端子は、プログラムが状態の変化を制御する端子です。 出力ピンを制御するリレーなど、LEDは、トランジスタのために使用される
  //提供GPIOピンは、出力端子#04を確認して、起動時にLOWに設定されている
GpioPinDigitalOutput myLed = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_04,   // PIN NUMBER
                                                           "My LED",           // PIN FRIENDLY NAME (optional)
                                                           PinState.LOW);      // PIN STARTUP STATE (optional)
注:計算モジュールでは、使用するRCMPinの代わりにクラスRaspiPinをプロビジョニング方法にピンアドレスを提供するとき。

コントロール端子状態

P14JはGPIOピンに状態を制御または書き込むための便利なメソッドを多数提供しています。
以下の例では、GPIOピンで起動できる制御方法のいくつかを実証する。
        // explicitly set a state on the pin object
        //明示的にピンオブジェクトで状態を設定
       myLed.setState(PinState.HIGH);

        // use convenience wrapper method to set state on the pin object
        //ピンオブジェクトで状態を設定するために便利なラッパーメソッドを使用します
        myLed.low();
        myLed.high();

        // use toggle method to apply inverse state on the pin object
        //ピンオブジェクトを逆の状態を適用する方法トグルを使用
        myLed.toggle();

        // use pulse method to set the pin to the HIGH state for
        // an explicit length of time in milliseconds
        //ハイ状態にピンを設定するためにパルス法を使う
        //ミリ秒単位の時間の長さを明示的
        myLed.pulse(1000);
GPIOピンの制御を実証する完全なサンプルプロジェクトが提供されてここに 。

端子状態を読む

P14JはGPIOピンに現在の状態を問い合わせる/読み取るための便利なメソッドを多数提供しています。
以下の例では、GPIOピン上で呼び出すことができます読み取り方法のいくつかを実証する。
       // get explicit state enumeration for the GPIO pin associated with the button
       // ボタンに関連付けられたGPIOピンのための明示的な状態の列挙を取得
       PinState myButtonState = myButton.getState();

        // use convenience wrapper method to interrogate the button state
        //ボタンの状態を調べるための便利なラッパーメソッドを使用します
        boolean buttonPressed = myButton.isHigh();

ピン変更のリッスン

Pi4JはGPIOピンの割り込みを監視するための実装を提供します。 これは積極的に常にポーリング対端子の状態を監視し、端子状態を問い合わせるためのはるかに効率的な方法である。
あなたはGpioListenerインタフェースを実装するクラスを作成する必要があります。 このインタフェースは、単にピン変更イベントが発生したときにリスナクラスを通知するために使用される単一のメソッドpinStateChanged(GpioPinStateChangeEventイベント)を含む。
次のスニペットは、単純なリスナーの実装を示しています。
public static class GpioUsageExampleListener implements GpioPinListenerDigital {
    @Override
    public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event) {
        // display pin state on console
        System.out.println(" --> GPIO PIN STATE CHANGE: " + event.getPin() + " = "
                + event.getState());
    }
}
セットアップあなたのリスナーに、あなたがピンとリスナーを登録し、リスナーのimplをインスタンス化する必要があります。
  // GPIOピンリスナーを作成および登録
myButton.addListener(new GpioUsageExampleListener());
GPIOピンの状態の変化のためのリスニングを実証する完全なサンプルプロジェクトが提供されてここに 。

ピンのシャットダウン

Pi4Jは、アプリケーションが終了すると自動的にGPIOピンの状態を設定するための実装を提供します。 これはGPIOは状態がアクティブまたはプログラムがシャットダウンされる場合、一部の活動が従事して残していないピンことを確実にするのに便利です。
あなたは、単に適用されることが望まシャットダウン動作を設定するには、GpioPinインスタンスsetShutdownOptionsメソッドを使用することができます。 次のスニペットは、シンプルなGPIOピンシャットダウン設定の実装を示しています。
 //ピンのシャットダウンの動作を構成します。これらの設定は次のようになります 
 //アプリケーションが終了するときに自動的にピンに印加される
 //アプリケーションがシャットダウンされたときにLEDがOFFになっていることを確認してください
myLed.setShutdownOptions(true, PinState.LOW, PinPullResistance.OFF);
GPIOピンのシャットダウン設定を実証する完全なサンプルプロジェクトが提供されてここに 。

ピントリガー

Pi4Jは別のピンの状態変化に基づいて、GPIOピン上のアクションを実行することができGpioTriggersのシリーズを提供します。 独自のカスタム·トリガーを拡張し、作成できるようにする拡張可能なインターフェイスを提供することもトリガします。 次のスニペットは、単純な ''フォローミー」をトリガーの実装を示しています。
  //入力ピン上のGPIO同期トリガを作成
 //入力状態の変化は、また同じ状態にGPIOピンを制御するLED設定すると
myButton.addTrigger(new GpioSyncStateTrigger(myLed));
GPIOピンのトリガーを実証する完全なサンプルプロジェクトが提供されてここに 。
(この例では、利用可能なすべての提供のトリガーが含まれています。)

シリアル通信

Pi4Jはラズベリーのパイのシリアルポートを使用してデータを送受信する単純化されたAPIを提供します。
次のサンプルプロジェクトは、シリアル通信を実現示しています。
シリアル通信の例 。

システム情報

Pi4Jはラズベリーのパイからシステムとネットワークの情報にアクセスするためのAPIを提供します。
次のプロジェクト例では、システムとネットワークの情報にアクセスを示しています。
システム情報の例 。

2013年5月17日金曜日

MendelMAXほぼ完成

いろいろとぐちゃぐちゃですが・・・
何とか動いた。
フレームの剛性と台形ねじのおかげか、prusaより精度が高いっす。すばらしいっ。
YとZ軸はリニアベアリングではなく、予算の関係上ドライメットフランジブッシュという奴にしたのですが、なんかこれで充分なようです。追々問題が出てきたらリニアベアリングにしようかと。
X軸はクイックフィットキャリッジがリニアベアリング仕様なので、prusaのやつを引っこ抜いて使用しています。
海外ではブロンズブッシュが標準のようですが、日本国内ではソモソモそんなもん売ってないわけで、ここらへんが今回一番悩んだ部品でした。
数年前、木製CNCを組んだ時は安価であるという理由で、オイレス#80フランジブッシュっちゅーのを使用していました。こいつはシャフトとブッシュ間のクリアランスが大きくガタつくんです。
ド素人なのでよくわかりませんが、そもそも使い道が間違っていたのかな〜と。

てなことで、今回はドライメットブッシュというやつにしてみたわけです。こちらの方は比較的クリアランスが小さく、ガタツキが少ないように感じます。んがっ、その分、外郭の組立をしっかりしないとスムーズにシャフトを移動してくれません。
キャリッジだけリニアベアリングなのはそんなのも理由で、立て付けが悪くてドライメットブッシュを無理やりハメ込んでも動かなかったからという・・・orz 恐らくX軸の2つのシャフトが平行になっていないからなんだろうけど、削るのもうめんどくさいwwwそれなりに精度よく動いてるし良いよもうwww

とまあ、こんな感じで動作自体は問題なくクリアしたので、あとはRAMPSのケースとかフィラメントの台とか細かいものをちびちび作っていく段階へとシフトしてゆくのでした。

2013年5月10日金曜日

組立途中のMendelMAX

部材の調達やらABS部品の制作やらで、ここまで来るのに3ヶ月ぐらい経過。

ホントは黒いフィラメントで全部仕上げたかったんですが、途中で無くなってまいまして、オレンヂと黒のツートンカラーになってしまいました。失敗や保守部品も含めて、1kgフィラメント1本分強は必要でしょう。

真ん中のはクイックフィットキャリッジですな。後々わかるのですが、MendelMAXには大きすぎたり、エクストルーダが嵌んなかったり、いろいろ難ありでしたw。色も気に食わん(黒にしたいっ)ので、ここは追々作り直そうかと思います。

細かいところでちょこちょこ自作部品を作成。カップリング、ドライメットフランジブッシュのアダプター、アルミフレームを組み立てるために使用するナットのアダプター?とかとか・・・
ちょっとしたものでも思い立ったら即作れる3Dプリンタは偉大ですな。
自分は旋盤なんかも衝動買いして持ってるのですが、金工細工は下準備がけっこう大変です。
手軽に行動に移せるってのはやっぱりすばらしいなと、しみじみ思うのですた。


2013年5月7日火曜日

なんとかMAXとかいうやつ

まー、ここ数ヵ月更新していなかったわけですが、何もしていなかった訳ではなくてですね、こいつの資材を集めていたわけですよこれが。
MendelPrusaも良いですが、やっぱりガタが気になる今日此頃。ということで、MAXですよやっぱりMendelMAX。
ゴールデンウイーク中に出来てしまったんですが、とりあえず途中の画像からうpしていこうと思います。

2013年1月7日月曜日

3Dプリンタがフリーズする際の回避方

誰も見てないと思いますがあけおめことよろ。

さて、ここらへんで3Dプリンタがフリーズする件について、とりあえず回避策のメモ。

<スペック>
3Dプリンタ…制御ボードはgen.6d
PC…windowsXPのノートブック

んで、
<状況>
部屋の外、ある一定の範囲で人が動くとPrinter Interfaceがフリーズする。

<回避策>
gen.6dにはSDカードスロットが付いている。
スロットにSDカードを刺し、そのSDカードからプリントをする。
PC側Printer Interfaceがフリーズしたままでもそのままプリントを続行してくれる。


と、いうことでプリント自体は完遂することが出来たんですが~~~~~っ
これやっても、PrinterInterfaceはフリーズしたままです。どうもUSB周りが怪しい・・・
そもそもRepRap系ボードはモータードライバと制御系が一緒に乗っているのでノイズが乗り易いらしい。が、SDカードからであれば続行できるということは、PCと完全に分離しスタンドアロン化できるボードがよさそう。
RAMPSのセット一式やっぱ欲しいなー

2012年12月6日木曜日

InkscapeのDXFデータをSketchUpでインポート

3Dプリンターで作品を作る時でも、illustratorマスターwなわたすはどうしてもドロー系のソフトが使いたいわけである。
ということで、どうにか出力までの道筋が出来たのメモ。

とりあえず今、win機で作業していてイラレが使えないので、Inkscape->SketchUpまでの流れを書いておく。


まずはおもむろにInkscapeで作図。
できあがったら、通常の保存の他にプレーンsvgで保存をする。
このプレーンsvgで保存したデータを再度開く
これをしておかないと、次のDXFでの保存でつまずく。


デスクトップカッティングプロッタ(DXF)で保存。

よくわかんないけど、とりあえずチェック入れておいた。
とりあえずこれでInkscapeの作業は終了。
次に、SketchUpを開く。のだが先に、こちらのFreeDXFというプラグインを導入しておく。
とっても要(かなめ)のプラグインなので、作者様にdonationをしようと思ったらPaypalが日本円で支払えないとかほざきやがったす・・・。

準備が出来たら、メニューのプラグインからFreeDXFを選択。

とりあえず設定はこんな感じ。いろいろいじってみるもよし。

で、読み込み完了しますた。
うほ、今までの苦労が嘘の様w
サイズが違うので尺度で修正します。
こんなにちっちゃくなっちゃった!

移動してココから立体作業へと移るのですが・・・

面が生成されていないので、線を引っ張ったり、消したりして整えます。

はいできあがりっ。

3Dプリンターへの出力も無事出来ました。
(名刺サイズにしたのに縮尺びみょうに間違えた・・・)

ということで、Inkscapeで吐き出せたということは、Illustratorでも吐き出せる道筋が出来ますた。
ここ暫く、ずっと方法を探し回っていたのですが、FreeDXFの作者様のおかげで無事に目的が達成できました。ありがとうございます。

2012年12月3日月曜日

MakerFaire行ってきた

日頃のもやもや解消とテンションを上げるためにMakerFaireへ行ってみた。
デザインフェスタなんかは友人が出店するとかで行った事はあるのだが、純粋に趣味で行くってのは初めてだ。
規模はやっぱりこれからという感じだろうか、フェスタとしては小さいんだと思うが、なかなかどうして盛況である。
機械や電子工作なんかで知られている会社が出店していたり、よく巡回してるサイトの人とかが結構居られた。

お一方だけ、どうしても会ってみたい方がいて、実際に見つけたのだが・・・。
私、はづかしがりやさんなので、「web見てますっ」と言ってそそくさと逃げ帰ってしまったwww 俺幾つだよもう・・・アフォじゃないのと・・・

チョッと自分の所行にしょんぼりしつつ、他の作品やらプレゼン見てみたり、カプトンテープ買ってみたり。
そうそう、atomとかいうRepRap派生のプリンタが出品されていた。Wallaceを改良したもののようで、とても小さくて可愛い。
エクストルーダとホットエンドノズルを分離してX軸の負担を無くし、Z軸まわりの剛性を上げて振動の対策をしているようだ。ようできてる。写真撮るの忘れたw

日頃の疲れもあり、午後早々には帰り支度を。名残惜しんでもういっぺん巡回しようかと思ったら、ブースの通路がなんかすし詰めに・・・。こらあかんwという事でここで帰宅。
この盛況なら来年は隣駅のビッグサイトで開催しそうな勢いですた。

KURATASかっこよかった。
コクピットくぱぁ
そして、初めて実物大機動戦士をこの目に焼き付けたのであったっ。

2012年11月14日水曜日

autodesk123DにMac版がっ!

ついに来たかっhttp://www.123dapp.com/
すかさずダウンロードしようとするが、 よく見るとこんな文章が・・・
Requirements: OS X 10.7 or later, 64-bit processor
あ”あ”あ”あ”あ”あ”あ”あ”あ”あ”あ”あ”あ”あ”あ”
Snow Leopardが使えないっすよおおおおおお
Macは仕事用なんでSnowLeopard必須なんです。たった0.2のバージョン差で弾かれるとは・・・


2012年11月11日日曜日

3Dプリンタによるバイクの補修部品

先日、バイクのウインカーを支えるステーベースという奴をぐんにゃりと曲げてしまったorz
幸か不幸かウインカー自体は無傷だったので、なんとか復活させようとステーベースを3Dプリンタで自作してみた。部品買うと高いんだもの(90度に曲げただけの鉄板が1800円とかっ)

AutoDesk123Dでの作図もだいぶ慣れてきた。何度か試行錯誤して2日程度で現物がこの手にぃいいっ!!!
純正部品をみると安全上の理由か、接触すれば簡単に壊れるように出来ているっぽい。(これで2度目のリアウインカー破壊だしw)ので、強度はABS樹脂でも充分な感じである。ただ、耐候性が気になるところ。ABSはカウルなんかにも使われているらしいので、まぁ実証実験という事でこのまま付けておこうと思う。
こちら失敗作。中身スッカスカでも相当強度がある感じ(写真右後方部品参照)。
ところで、作業中の3Dプリンタが途中で止まってしまう時がある。わてくしがちょっとコーヒーでも飲みにいなくなるといつの間にか止まってるし・・・3Dプリンタちゃん寂しいのねwってワケじゃなくて、基板むき出しだから電磁派の影響かなぁと。どうしたものか・・・。

2012年10月20日土曜日

いろいろと不具合

MendelPrusaを稼動させて早2月半。なんやかんやで、いろいろと不具合が出てきた。

まずは全体のガタつき。動作中は結構振動するので、ナットと長ネジで構成されたMendelPrusaはすぐに緩みを生じる。
結構シビアに組み立てたのに、至る所緩んじゃって台無しである。っていうかロックタイトはじめっから塗っとけ俺・・・。

もう一点。
なんか作品の圧着が弱いと思ったらどうもPCB製のヒーターベッドが内側(お椀の様にくぼんだ感じ)に歪んでた。ガラス板を乗せて水平を出すしかないか。

と文句はいうものの、この3Dプリンターのおかげで、今までより作る意欲みたいなのが出てきたので感謝している。
MendelMax組みたくなってきたな~。

2012年9月18日火曜日

ノズルの掃除

射出がどうもおかしいので、ホットエンドノズルの掃除をしてみた。
アセトンを満たした薬瓶にノズルを入れてみたの図。
時間をかければABSが溶けて詰りが無くなるかなーなんて思っていたが、無理でしたw
一応ドロドロに溶けるのでABS樹脂を引っ掻き出すことはできた。
綿棒やらピンセットやら銅線なんかを使ってごしごし。なんとかうまくいった。

ところで、材質をPLAからABSに変更するのはよかったのだが、逆のABSからPLAに替えるときはどうするんだろう。
ABSよりPLAのほうが熔解温度が低いから、ABSの残りカスでノズルが詰まりそうな気がする。
いちいち分解して掃除するのも面倒やのう。

2012年9月3日月曜日

作ったもの

こんなの作ったよみたいな

http://www.thingiverse.com/thing:25587
クロスピンセット(ていうの?)。
まず実用的なものとしてはじめて作ったもの。シンプルながらホントよくできてるなぁと。左はABS樹脂でslic3rにて作成。右のオレンジ色はPLAでskeinforge。

slic3rは設定が少ないので解りやすいのだが、やや大雑把な動きのするG-codeを吐き出す。あっちに飛んだりこっちに飛んだり。
skeinforgeの方が素直な吐き出し方をする。が、設定がむちゃくちゃわかりづらい。

んで次、
http://www.thingiverse.com/thing:8194
PCBバイス。これまた素晴らしい発想で、作者さんに感謝。
元データにて面の表裏が裏返っていたり、穴を補正したり、ちょっぴり手こずったが出来上がりを見て満足w
最後はオリジナル作品。
デジカメ用の赤外線リモコン。デザイン的にはただの六面体ですがw、何度も作り直した労作なのです。

・ボタンスイッチを切り欠き(3の形をした部分)、板バネ状にした。
・ボタン電池を入れるスペースを入れ子のケースにして、振動による電池の断絶を防止。
・ネジ止めを無くし、組み木細工状にしたケースのはめ込み。

組み木細工の案は、もう少し考えなあかんなーという感じ。

見た目を左右する表面もさることながら、内部構造や機構なんかはそれ以上に複雑で、プロダクトの方って大変なお仕事してるんだな~とあらためて思いマスタ。

2012年8月30日木曜日

サーミスタの設定

 先日買うたサーミスタ、村田製作所のNXFT15WF104FA2Bにつて、とりあえずこれで行けたという設定。gen6.dボードのファームウェアを書き換える。

https://github.com/romscrajから、Marlinというバージョンのファームウェアをダウンロード。中身はarduinoのソース。
で、Marlinフォルダの中に入っている、createTemperatureLookup.pyを使って値を計算するらしい。
設定温度(t0)、B定数(beta)なるものは秋月の資料をみて解ったのだが、結局r1とr2の値の意味が分からんかったw
ので、先人の方を見習いながら設定した。
ターミナルから、
createTemperatureLookup.py --r0=100000 --t0=25 --r1=0 --r2=4700 --beta=4250
とすると値が出てくる(以下)
// Thermistor lookup table for RepRap Temperature Sensor Boards (http://make.rrrf.org/ts)
// Made with createTemperatureLookup.py (http://svn.reprap.org/trunk/reprap/firmware/Arduino/utilities/createTemperatureLookup.py)
// ./createTemperatureLookup.py --r0=100000 --t0=25 --r1=0 --r2=4700 --beta=4250 --max-adc=1023
// r0: 100000
// t0: 25
// r1: 0
// r2: 4700
// beta: 4250
// max adc: 1023
#define NUMTEMPS 31
short temptable[NUMTEMPS][2] = {
   {1, 722},
   {35, 267},
   {69, 222},
   {103, 198},
   {137, 182},
   {171, 170},
   {205, 159},
   {239, 151},
   {273, 144},
   {307, 137},
   {341, 131},
   {375, 125},
   {409, 120},
   {443, 115},
   {477, 111},
   {511, 106},
   {545, 102},
   {579, 97},
   {613, 93},
   {647, 88},
   {681, 84},
   {715, 79},
   {749, 75},
   {783, 70},
   {817, 64},
   {851, 59},
   {885, 52},
   {919, 44},
   {953, 34},
   {987, 20},
   {1021, -23}
};

上記の、{ }にある数値を下記の様にthermistortables.hに書き込む

#if (THERMISTORHEATER_0 == 7) || (THERMISTORHEATER_1 == 7) || (THERMISTORHEATER_2 == 7) || (THERMISTORBED == 7) // 100k murata NXFT15WF104FA2B
const short temptable_7[][2] PROGMEM = {
   {1*OVERSAMPLENR, 722},
   {35*OVERSAMPLENR, 267},
   {69*OVERSAMPLENR, 222},
   {103*OVERSAMPLENR, 198},
   {137*OVERSAMPLENR, 182},
   {171*OVERSAMPLENR, 170},
   {205*OVERSAMPLENR, 159},
   {239*OVERSAMPLENR, 151},
   {273*OVERSAMPLENR, 144},
   {307*OVERSAMPLENR, 137},
   {341*OVERSAMPLENR, 131},
   {375*OVERSAMPLENR, 125},
   {409*OVERSAMPLENR, 120},
   {443*OVERSAMPLENR, 115},
   {477*OVERSAMPLENR, 111},
   {511*OVERSAMPLENR, 106},
   {545*OVERSAMPLENR, 102},
   {579*OVERSAMPLENR, 97},
   {613*OVERSAMPLENR, 93},
   {647*OVERSAMPLENR, 88},
   {681*OVERSAMPLENR, 84},
   {715*OVERSAMPLENR, 79},
   {749*OVERSAMPLENR, 75},
   {783*OVERSAMPLENR, 70},
   {817*OVERSAMPLENR, 64},
   {851*OVERSAMPLENR, 59},
   {885*OVERSAMPLENR, 52},
   {919*OVERSAMPLENR, 44},
   {953*OVERSAMPLENR, 34},
   {987*OVERSAMPLENR, 20},
   {1021*OVERSAMPLENR, -23}
};
#endif
必要に会わせて、Configuration.hのヒーターベッドのサーミスタ設定の値も替えておく。
上記の場合、7番目の設定にしてある。
で、arduino.appでファームウェアをうpして終了。

☆このサーミスタ、125度までの対応なので、エクストルーダ側のサーミスタには使えないようだ。しょぼぼ〜んや。

2012年8月24日金曜日

ヒーターベッドのサーミスタ破損

今までPLAの射出しかしてこなかったのでわからなかったのだが、ABSで作業しようと熱を上げてみると、ヒーターベッドの立ち上がりが妙に遅い。

んで考えた。テーブルにあるサーミスタが浮いて温度がしっかり取れていないんで無いかと。
んでんで、早速ハンダ付けをやり直していたら、もう小気味良い音でパキっとやってもうた・・・w

翌日、急遽秋月電子まで走りNXFT15WF104FA2Bというサーミスタを購入。フレキシブルリード付きのものとチップの奴。

今回はフレキシブルリードのを付けてみた。
ベッドはいろいろ小細工。家にあったコルクのシートとダンボールを下面に貼り付けて熱が逃げないようにした。本当はMDF材を使用したかったのだが、ダイソーで購入したMDFのサイズがテーブルと合っていなかった。あふぉや俺・・・w 暑さでやられていたらしい・・・

で、やっとこさ本体に組み立て、電源を投入。pronterface起動。Monitor Printerをチェックしてみる。
テーブル温度40℃。今暑いですものね、そらテーブルも熱くなりますわほんまねーってちゃうわぼけ!
やっぱりテーブル側のサーミスタも校正しなきゃいけないんだこれ・・・
createTemperatureLookup.pyなるもので校正しなきゃいけないらしいが、サーっパリわからん。

とりあえず疲れた。

2012年8月23日木曜日

gen6.d基盤の補修

動作させる前の話だが、3Dプリンタを動かす制御基盤を眺めていた。
はんだ付けがなんだかとっても雑。よーく目を凝らして調べていたら、やっぱりというかなんというか抵抗の一部が外れていた。
どうやらもとの基盤に急きょ手作業で追加の部品を取り付けた感じ。
抵抗とセラミックコンデンサの間に斜めになって、はんだが外れた抵抗が取り付けてある。
モータードライバの一部らしく、あと3つのモータドライバのあたりも同じ斜めに取り付けた構造をしている。
どうやらこの抵抗2つとセラコンを並列に繋げたかったようだ。

恐る恐るはんだを付け直し、基盤を起動させてみる・・・

おおう、付いたwww


ところでこの基盤、gen6.dというシロモノらしい。
先日あらかじめダウンロードしていた基盤のレイアウトをみると、所々違う部分がある。
z軸とエクストルーダのモータードライバのコネクタに、もう一つづつコネクタが追加されている。なんと2つのエクストルーダを制御できるように改良されたバージョンらしい。なにやらお得な基盤だった様である。
だが、エクストルーダ用熱センサーのコネクタが1っこっきゃない。
えっ?・・・やっぱダメなんじゃねーのこれ?www
電子工作はド素人故、これ以上は解らず。今後じっくり調べてみるっす。