中華CNC スピンドルをもとに戻す

この間500Wのスピンドルに付け替えた話をしたところですが、やっぱり、この500W中華スピンドル、いまいち感がぬぐえず、結局、元の1.5kW水冷スピンドルに戻してしまいました。水冷はやはり安心感が高く、水冷配管を新しいチューブに取り換えて、ちゃんと使ってやろうということにしました。

とはいえ、もとに戻すだけではちょっとね。ということで、1.5kWのスピンドルの電源のほうは三相ブラシレスモーター用のコントローラー(VFD)を使っていますので、これをlinuxcncから制御するようにしようと考えました。

水冷1.5kWスピンドルについてきたVFD

ということで、ググると、こんなページでやり方書いてますので、ほぼそのまま実装。

とはいえ、全く同じではいけませんでしたので、変えたところを書いておきます。

PCからのRS485通信をVFDにするのには、今使っているPCには、RS232Cポート(/dev/ttyS0)がありますので、そちらにアマゾンとかで売っている安いRS232C-RS485変換器をつけてやりました。VFDへの配線はその辺に転がっているLANケーブルのツイストペア1対を適当に配線しました。

あとは基本的にVFDの設定を行ったうえで、linuxcncの設定でOKですが、本体のキーパッドから行うVFDの設定は、上記のブログに書かれている、

  • PD001 2 (listen for run commands on the RS-485 bus)
  • PD002 2 (listen for frequency/speed commands on the RS-485 bus)
  • PD164 3 (baud rate – 38400 baud)
  • PD165 3 (communication data method to 8N1 RTU) に加えて、
  • PD163  001 (unit number) が必要でした。

あとは、当然ながら、シリアルポートのアクセスはlinuxcncを実行しているユーザーから行えるようなパーミッションが必要。

そこさえ、設定してあれば拍子抜けするぐらい簡単にlinuxcncからスピンドルのON/OFF、回転方向、回転数の変更が行えました。

右側のHunyang VFDで制御の状況をチェックできる。

今のところ、なぜかスピンドルの回転数が11520 RPM以上にならないのですが、本体の設定のせいかも。また後で考えることにしてます。

補足)やっぱり、VFDの設定のせいでした。linuxcnc のhy_vfdモジュールのマニュアルを見ると、スピンドルの最高速度の設定は、VFDのPD144の設定から持って来る、となっており、こちらの設定がデフォルトの1440だと、50Hz の時のRPMということですので、出力周波数は400Hz までしか出しませんので、最大回転数(RPM)= 400/50 * 1440=11520 ということになります。そこで、この定数(PD144)を3000 に変えましたら、400/50*3000=24000 ということで、狙い通り、最高回転数24000 RPM で動かすことができました。

中華CNC スピンドルを制御

だいぶ前に導入した中華CNC 3040Z ですが、水冷の1.5kWのスピンドルが付いていました。架台の強度と釣り合わないし、水冷ポンプを動かしたりするのがめんどくさい。もっと小さなスピンドルに変えようということで、500Wのこれまた中華安物スピンドルを買っておいたんですが、例によって放置。

思い立って、スピンドルモーターの交換、それから、linuxcncで機械の制御をしていますので、合わせてlinuxcncからスピンドル制御もできるようにしてみました。

交換したスピンドルモーターはブラケットが付いてきましたが、当然今までの機械にはつきませんので、今までの1.5kWスピンドルモーターがついていたプレートに穴あけしてとりあえずつけてみました。

なんかついている感が否めません

ネットで調べると、このスピンドルも軸がガタガタとかいろいろ悪い評判があるようなので、手直しが必要でしょうけど、とりあえず。

スピンドルモーターの制御は、スピンドルモーター電源に5kΩぐらいの可変抵抗がついていて、それでやるようになっていますので、可変抵抗を繋いでいる端子にコントローラーからPWM信号を入れてやることにします。

が、可変抵抗が繋がっている端子が電源のAC入力と絶縁されていないので、コントローラーボードの方から直接つないだりしてはだめです。

最初、コントローラーボードのGNDと可変抵抗が繋がっているコントロール入力の基準端子(黒い線が配線されてる)を繋いでみたら見事に家の漏電ブレーカーが作動して、家全体が停電しちゃいました(汗)。

フォトカップラーか何かで絶縁をしてやる必要がありますので、簡単に手持ちのフォトカップラー(TLP512)を使ってアイソレーションモジュールを作ってみました。

アイソレーションモジュールを繋いでテスト中。

回路は

こんな感じの当たり前の回路を組みました。もともとの可変抵抗が5kΩでしたので、それに近い抵抗(4.7k)にフォトカプラーのフォトトランジスタからの電流を流して入力光に比例した電圧を発生させるようにしました。

入出力はいろいろ使いまわし等も考えて、端子台で出し、基板は、3Dプリンターで印刷したベースプレートにねじ止めしてあります。ベースプレートは実験が終わったら、両面テープでケースに貼って固定するつもり。

結果は良好で、linuxcnc からPWM出力を出すのは、こちらにある内容そのままを設定すれば、GUIにすでにスピンドルコントロールのボタンがついていますのでモータのON/OFFと速度調節が自在にできました。

PWM値が0の時にモーターは停止し、コントロール入力は0Vで、その時にVccが5Vでした。PWMをフルに入れたときはそのVccは3.3Vまでに降下してしまいますが、コントロール入力はそのとき、3.17V程度出ていましたので、ほぼMAX回転の制御ができたかな?と思います。

4.7kohmの抵抗をもっと大きい抵抗にすれば、電圧降下が下がりますので、もっと高速回転できるのかもしれませんがまだ試していません。MAX回転の時のモーター電圧を調べてみる必要がありそうです。

やはり、4.7kohmより大きい抵抗に変更することで、より早くモーターを回せることがわかりましたので、10kΩに変更したうえで、制御値とモーターの回転数の回転数の関係を調べてみましたら、狙ったPWMに比例したモーター回転数になっていません。PWMの出力は指定した通りに出ているのですが、制御入力にモーターのノイズなどが激しく出ており、また制御入力をがっちり狙った値にするためにはVccのインピーダンスが高すぎてどうにもなりません。

いろいろとやってみたんですが、うまくいかず、今のところ、PWM指定値と実際の回転数の関係をメモってそれに合わせて指定をすることにしています。

3Dプリンターの調整

しばらく使っていなかった自作の3Dプリンター(corexy)。使っていなかったのは、プリントが失敗続きだったからですが、一念発起、しっかりプリントできるようにいくつか改良をするとともに、調整をしてみました。

改良点は、

  1. オートレベリング機能の追加(ファームウェアの変更)
  2. プリントベッドは3Mのシートを使うように変更。
  3. Repetier Serverなどでリモートからプリント

です。

1. オートレベリング機能の追加

ベッドのいくつかの場所の高さを測定してノズルが適切な高さに来るようにする仕組みですが、いくつかの違ったセンサーを使う方式がありますね。

黒いのが後付けのサーボとマイクロスイッチを使ったオートレベル用部品

今回は、マイクロサーボで、レベリング測定を行うときに、マイクロスイッチを繰り出す方式を実装することにして、マイクロサーボをプリンターのヘッドに後付けするための部品を作成してつけてみました(結構苦労した)。

配線は、スイッチをZ_MAXのエンドストップに、サーボは1つ目のサーボ用のコネクターがRAMPS1.4にあるのでそのまま付けました。制御のファームウェアはこれまでrepetier firmwareを使っていたのですが、オートレベルの設定が個人的にわかりにくかったので、今回Marlin 1.1.9 に変更をしました。

ファームウェアの変更をすると、モーターのstep の設定などかなり変更が必要で試行錯誤をしましたが、最終的には、狙った動きができるようになりました。

Marlin ファームウェアの設定は、かなり細かい解説もありわかりやすいと思います。G29コマンドでautolevelをする際に、ちゃんとサーボが動いてスイッチが測定状態になるのは小気味よいです。測定は各点で3回するように設定しましたが測定のrepeatability もよい感じ。

2. プリントベッドの変更

これまで、6mm厚の強化ガラスを3mm厚のアルミ製のヒーテッドベッドに乗せ、しわ無しピットを塗って使っていましたが、平面性はいいものの、ガラス層が分厚くて加熱に時間がかかるうえ、ガラス表面の温度が均一になりにくいという問題がありました。

今回、ガラス板を使わないようにし、アルミ板に3Mの3Dプリンタ用シートを張ることにしました。autolevelができるようになったので、多少アルミ板がたわんでいても大丈夫かなということで。このシート、本当によく張り付きます。ABSでプリントする際に、剥がれる場合が多いですが、かなりなりにくくなりました。

3. リモートプリント

私の3Dプリンターは、結構うるさい。というわけで、別棟に置いているのですが、やはり途中経過が気になる。ので、今回Repetier serverを利用することにして、USBカメラでプリント中の様子もリビングから見ることができるようにしてみました。有料のRepetier server ProでないとUSBカメラで見られるようになりませんが、十分価値があると思います。

4. 調整

これまで失敗が多かったのは、調整をいい加減にしてきたためもあると思いましたので、今回割と真面目に調整してみました。

調整内容は、こちらに書いている内容です。これなかなかいいガイドなので、そのまま真似をしてやってみました。

シェルの厚さを0.4mmでプリント。最初測ってみたら0.43mmなので、吐出量を調整して、0.4mmになるようにしました。

調整結果

  • M851 Z-3.86 
  • M92 X80.00 Y80.00 Z400.00 E453.20
  • M301 P20.30 I1.92 D53.63
  • フィラメント 1.74mm 93 % 吐出レート

調整メモ:Z_PROBE_OFFSETの調整は、ノズルがベッドに近すぎる場合は、Z851 Z??の数字を+方向に変化させて、ベッドを遠ざける。

調整をしつつ、プリンターの制御コードを整備。G28で原点復帰、ベッドの温度を上げてから、G29でオートレベル実施。ベッドの外側に退避してZ0.4あたりまでおろした状態でファンをONにしてから、ノズルを加熱(ファンはExtruderのヒートシンクを冷やすためなので、これが必ず動いていないとNG)。プリントが終わったら、25mm分Zをあげてからベッドの外側に退避、ベッドやノズルのをOFFにする。というシーケンスを実施するようにしました。

調整の結果、これまでの設定ではかなりノズルとビルド面が近いために最初の層がでこぼこになっていたために失敗を招いていたような気がします。

3Dプリンターの改良・調整をしていたのは、天体望遠鏡の部品(下)を作るためでしたが、調整する前にできてしまった・・・けど、他のもいろいろ作ってみようと思います。

望遠鏡の上下微動。耳軸にクランプする部品ちょっと苦労しました。

調整の甲斐あって、こちらのベアリング、印刷して動かせました!

これまでは、部品がくっついてしまっていたのですが、今回調整した感じからすると0.03mm 程度の誤差が部品間のクリアランスが十分取れていなかったための様子。

Maker faire Tokyo 2018に行く

今年は行ってきました、MFT。しばらく、娘の中学受験のため、行けていませんでしたので久しぶりで、前に行ったのいつだろ?って思ってみたら、2014年。3年も行っていなかったのね。

久しぶりに行ったら、場所は同じビッグサイトだったけど、会場がかなり?広くなったような気がします。それと、前より学校関係の参加が増えたような。一方で物販関係は、2日目に行ったせいかもしれないけど重視されてなくって、あまり散財するネタがありませんでしたのが残念。

ちょっと残念に思ったのは、ブースがカテゴリに分けられていたことかな?前はごった煮だったので、いろいろぐるぐる回ってみる楽しみがあったように思うんですが、カテゴリ別に分けられちゃうと、周り全部似たような内容でちょっと食傷することもあるように思います。

出展者は、昔から出ている人は出ているという感じで、新しい出展者に入れ替わっちゃっているかというとそうでもないですね。出展者の数が増えているので、新しい人たちが入ってきていないというわけではありませんが。

今回も、娘と一緒に行きましたが、今回は、それぞれ好きに見て、時々落ち合って面白いものがあったかどうか情報交換、という感じで、前は、娘を引きずってみる感じで、自分が見たいところで娘が飽きちゃって・・・ということがあったのですが、今回は別々だからそれぞれ気が済むまで好きに見ていられるようになったのでいい感じになりました。娘も成長したなあという感慨。

個人的に刺さった展示は・・・

1.Brother のミシンで縫える導電糸を使ったワークショップ

導電糸をうまく使った光るブレスレットを作るというワークショップをやっていましたので、娘をダシに私も横目で見ながら参加。このワークショップで使った導電糸は、まだ売っていないそうですが、服に導電糸でLEDを刺繍しまくりたいと思いました。

ワークショップで作り中。

2. Prusa research

3Dプリンタ製造元の展示。かなりきれいに出力できているのと、素材を5種類切り替えながらプリントできる装置のデモをやっていたのだけどちゃんと動いていたこと。また、プリンターの部品を本当にプリントした素材で作っているそうで、400台?のプリンターで同時にいろいろな部品を製造しているので、20時間程度で400台ぶんの部品の製造が終わるとのこと(聞き間違えたかも)。

アマゾンでも来週から売るとのこと。結構売れると思う。間違って買っちゃうかも。何台も同じようなのがあっても仕方がないけど!

3. TOSHIBA flashair

企業の部活的ブースが結構元気が良い、というのが今回の印象。同人誌を配布していてなかなか面白かったので、flashair を衝動買いしてみた。何をするのか?と言われると困るけど。。。他に元気をもらったのはTDKの部活展示。

4. 食物系の展示

前に比べると、粗びきな展示が減ったように思うところ、食物・農業系の展示が集まったところに関しては、粗びき度が高くてどれも楽しめました。

これからはmaker 農業の時代!?

 

 

 

 

 

 

8080A I2C EEPROM 読み込み

連休は結局8080Aのマイコンボードをいじって終わってしまった。娘は学校の宿題を済ました(らしい)のに、なんてこった!

でも、8080のアセンブラ記述もだいぶ慣れたので、ま、いっか。EEPROM のダンプができるところまで来たので、記録しておこう。

ichigojam でEEPROMにセーブしてあったデータを1ページ(128bytes)ごとダンプしたところ。

I2Cの読み取り手順に問題があるようで、最初の読み取った1バイトは多分ダミーで、そのままではいけないけど修正をしてない。この問題はRTCの読み込みをした時点で気が付くべきだったが、節穴でした。

8080Aボードのモニターも、先にアップロードしたものは、outコマンドでちゃんと書き込みができていないので、それもバグ。一応直したつもりだけど、まだテストしていない。

アセンブラはこれまでは、zasm のオンラインコンパイラーを使っていたけど、今日ubuntuでzasm を動かして、スクリプトでアセンブルとintel hexファイルの整形を一発でやるようにワークフローを変えてみた。まあまあ快適。

I2CインターフェースICへ与えるクロックが低すぎる問題は、pic12F1822で8251へ与えるボーレートクロックと4MHzを同時に生成するようにしようと思っているが、これもまだテストしていない。

いろいろと半端だなあ。

例によってバグがいろいろ入っているであろうプログラムリストを恥ずかしいけど下に置いておく。

i2ctest_8080_lst (2)

(5/8) pic12F1822 で生成するボーレートクロックを309kHz (19200bps)にし、OSC/4 = 8MHz も出力するようにした。8MHz はI2C インターフェースのCLKとして入力してみたが、動かない。何がいけないのだろう。。。とりあえず、元の2MHz に戻して、プログラムをいろいろいじくってみた。I2C のダミー読み取りは汚いやり方ですが、直してみた。まあ、いいかな。

(5/8終わり)