小型CNCフライス向けATCを自作する方法を探る
Ogaki Mini Maker Faire 2018に行ってきてました. 今回は出展せず見学者として. そこでお会いした@katosun_pomさんとの会話でATC自作したいという話になったので, 実際に動いているATCを見たこともない素人がATCを自作する可能性について軽く調べました. Simplenoteに書いたメモですが勿体無いのでちょっと編集してブログに上げます.
工具ホルダについて
エンドミルを固定して主軸と接続するアダプタみたいなやつ
工具ホルダの規格がたくさんある. 日本ではBTxxxで始まるBT系がよくつかわれているらしい?
BTシャンクとか呼ばれている
他にはHSKシャンクというものもある
工具ホルダはaliexpressで調べるとたくさんでてくるから簡単に手に入りそう.
https://chinatools.ja.aliexpress.com/store/group/BT-Toolholder/1838306_501429319.html
https://ja.aliexpress.com/store/product/BT30-without-keyway-G2-5-speed-handle-NBT30-ER32UM-50-L/1838306_32385822168.html
問題は工具ホルダを接続する先のスピンドルの方
スピンドルについて
ATCスピンドルというらしい?atc spindleでググるといくつか見つかったのでメモする.
Aliexspressで見つかった一番安いやつ
サイズが大きい. モーターが付属していないのでここにモータを接続しないといけない. さらにATCスピンドルは一般に工具を接着するためにエアーを使っているらしいのでエアーを接続しないといけない. この辺も不明点が多く購入に踏み切れない.
CNC BT15/ISO15 ATC Spindle Cartridge and Spindle Shaft Kit
kickstarterにいい感じのやつがあるけどもう手に入らない感じ.
www.kickstarter.com
タック技研ATCシリーズ
このブログによるとホビー用CNCフライスが余裕で買えるぐらい高いらしい, 商社経由で買う必要がある.
CNCフライスの設計 11.スピンドル部分の検討mkbtm
NR3060-AQC
パッと見すごくいい感じ10万ちょい
www.youtube.com
カタログ
http://www.nsk-nakanishi.co.jp/industrial/hpms/e3000/pdf/e3000.pdf
やっぱりお高い. ナカニシ製モーターしか対応していないのかな?モーターとそのコントローラーまで全部買うと20万は越えそう
でもミスミで買えるのはお手軽でGood
jp.misumi-ec.com
jp.misumi-ec.com
モーターはミスミに掲載されていない様子
これはNR3060-AQCを別のモーターで回しているのかな?
www.youtube.com
もし本当に別のモーターで回すことができればいい選択肢になりそう.
オリジナルマインドに掲載されているATCの自作例
KitMill Qt用の自作ATCとAPC | 技術解説 |ORIGINALMIND オリジナルマインド
とても詳しく書かれていて非常に参考になるが,
ATCといえばATCだけど求めているものと違う...
ここまで調べて力尽きた
誰かいい感じのATCを作ってくれ
Ogaki Mini Maker Faire 2016に出展します
ギリギリの告知ですが12月3日4日に開催されるOgaki Mini Maker Faire 2016に出展します
当日はVESCとCANtact-miniを使った何かを展示します。
USB-CAN変換アダプタのCANtact-miniについてはもし欲しい方がおられましたら自己責任という条件付きですが、販売も行います。
でっかいモータをVESCで回してみた pic.twitter.com/Bk6FOIDP9g
— strobo (@_strobo) 2016年11月20日
準備不足感もあり荒削りな出展しなってしまうかもですが、よろしくお願いします。
USB-CAN変換アダプタCANtact-mini
2年ぶりの更新ですが, まずは生存報告, 生きてます.
生きるのって大変ですね.
とある事情でUSB-CAN変換アダプタが必要になりそうでしたのでつくってみました.
当初はハードウェアからファームウェアまですべて自作する計画でしたが, 調べていくうちにCANtactと呼ばれるUSB-CAN変換アダプタを発見. ハードもファームもいい感じに完成しておりクリエイティブ・コモンズで公開されていたので, 方針変更. CANtactをベースにサイズを小型化したCANtact-miniを作者さんのEric Evenchick氏に感謝しつつ再設計してみました.
回路図
基板
Linuxから使う
CANtactはPCから見るとUSBシリアル変換デバイスとして見え, SLCANと呼ばれるプロトコルでお話することでシリアル-CANの変換を実現しています.
LinuxにはSLCANのドライバが内蔵されているのでcan-utilsをインストールするだけでCAN通信を行うことができます.以下にLinuxで簡単なCAN通信を行うコマンドを書きます.
CANインターフェースの設定
modprobe can slcand -o -c -s6 /dev/ttyACM0 can0 ifconfig can0 up
送信
cansend can0 123#DEADBEEF
受信
candump can0
BeagleBoneBlackで通信距離(ほぼ)無限のLTEラジコンB3Rを作った
AR.Drone等のカメラ映像を見ながら操作できるラジコン製品が増えています。このラジコンは通信にWiFiを使うことで機体の操作だけでなく同時に映像の送信も可能になっています。しかしWiFiで通信している以上、通信可能範囲は操作端末の周囲数百メートルが限界です。そこでWiFiではなくLTEを使用したラジコンであるBeagleBoneBlackRover略してB3Rを開発しました。LTEで通信しているのでLTEの電波が入る範囲ならば操作端末の位置に関わらずラジコンの遠隔操作が可能です。例えば日本にあるLTE圏内のラジコンをインターネットを通して海外から遠隔操作することも可能になります。
オンボードカメラの映像
B3Rの構成
B3Rの構成は以下の図の様になっています。
以下各要素について解説していきます。
ラジコン
Hobbykingから半完成のラジコンTurnigy Trooper SCT 4x4 1/10 Brushless Short Course Truckを購入しました。半完成モデルなので通信機とコントローラとバッテリーが付属しておらずそのままでは動作しません。しかし今回はその通信機を自分で開発するので問題ありません。
ESC
ESCは購入したラジコンに付属していたのでそのまま使用します。BBBからPWM信号をESCに入力するとモーターの速度が制御できます。このESCには電源スイッチが繋がっておりこのスイッチでESCの電源を操作できる。今回はBBBからESCの電源を操作したいので、スイッチを取り外しFETを繋いでBBBからESCの電源を操作できるようにした。これでBBBの電源が切れると同時にFETがOFFになりESCの電源も切れるので多少安全になる。ただしBBBがFETに繋がっているポートをHighにしたままフリーズした場合はFETはOFFにならないのでESCも停止しない。この方法はもう少し改良が必要かもしれない。
このESCには通信機やサーボモーター用に6Vの電源も用意されています。この6V出力はステアリング用サーボーモーターの電源とした。
PDU
PDUはDC-DCコンバータ、電流、電圧検出回路で構成されています。DC-DCコンバータはOKL-T/6-W12N-CでBBB, USBハブ, webカメラ, LTE-USBモデムに電力を供給します。
電流、電圧検出回路はバッテリー電圧と電流を計測する回路。BBBのADCは最大1.8Vなのでバッテリーの電圧を分圧してBBBで計測できるようにしている。電流検出は0.01Ωのシャント抵抗とLT6106CS5を使用してESCの定格である30Aまでの電流を計測する回路とした。
Battery
B3Rのバッテリーは7.3V2200mAhを2個並列に接続している。これは動作時間を長くする為。もう一つはバッテリーが一つの場合、モーターが回転し始める瞬間にBBBが再起動してしまう問題を回避するためです。
BBBが再起動する問題はモーターが回転を始める瞬間は電源電圧が一瞬低下することが原因。電源電圧がDC-DCコンバータの最低動作電圧の6Vを下回ってしまうとその先に繋がっているBeagleBoneBlackが停止してしまう。BeagleBoneBlackの停止するとESCも停止する。ESCが止まるとモーターも止まり。その後電源電圧が回復しBBBが起動する。この様な流れでモータが回転を始める瞬間BBBが再起動してしまうように見えていた。今のところバッテリーを並列に繋いでいる事で回避出来ているが、保護回路無しのリチウム電池の並列接続はあまりいいやり方ではない。本当なら電源を別にするべきかなと。
BBB
B3R全体の制御を行う部分でBeagleBoneBlack Rev.A5Cを使用しています。ディストリビューションは細かいカスタマイズが可能なGentooを使用しています。Gentooを使用すれば不必要なプロセスを止めやすくBBBの消費電力を減らすことができます。全体の制御プログラムはGoで、UDP通信やストリーミングを行う部分はCで開発しました。
BeagleBoneBlackのセットアップ等は以下のサイトを参考にしました。
カーネル/VM式 ARMマイコン入門(関東版)
Gentoo Linux Documentation -- Gentoo on the BeagleBone Black
Raspberry PiでL-03Dを使ってみる
USB HUB
BBBのUSBポートは1つしかない為2つ以上のUSB機器を使用したい場合はUSBハブを使用する必要があります。そしてBBBのUSBポートの電流供給能力は800mAありますがUSBハブ, webカメラ, LTE-USBルータを同時に使用すると800mA を超えてしまい、BBBのUSB機能が停止してしまいます。そこでUSBハブを改造してDC-DCコンバータから5V電源を直接供給できるようにしました。これによりBBBのUSBポートに3つの機器を同時に接続しても問題なく動作するようになりました。
USB-LTE Router
USB-LTE RouterにL-03Dを使用しiijmioのsimを差してインターネットに接続しています。前回の記事UDP hole punchingの実装をしてみる - ELECTLOGICで書いたようにiijmioの回線ではグローバルIPアドレスが割り振られません。これでもTCPなら双方向で通信できますが、UDPの場合はそれができません。そこでUDPホールパンチングを使用してプライベートIP環境での双方向UDP通信を実現しました。これにより低遅延での操作が可能です。
WebCamera
WebCameraはLOGICOOL ウェブカム HD画質 120万画素 C270を使用。映像をYUV422形式でBBBに取り込み。YUV422からYUV420へ変換した後VP8でエンコード。その後UDPで操作端末へ送信しています。
Servo Motor & Motor
これらは購入したラジコンに付属していた物をそのまま使用した。問題があるとすれば、モーターが回転する時の音がうるさいこと。
ケース
ケースはアルミ板とアクリル板を組み合わせて設計しました。防水設計にはなっていないので雨天時は動かせません。アクリルに透明なシール エーワン ラベルシール 光沢フィルム・透明 ノーカット 10シート 28791にロゴを印刷して貼付けています。さらに野外で動かす物なのでUVカットの透明フィルム エーワン UVカット透明カバーフィルム 6シート 35041をロゴの印刷されたフィルムの上に重ねて貼付けています。
アクリルカバーを外したところ。右上のPDUから出ている白い配線は電源スイッチへ繋がっている
まだいくつかの改良や追加したい機能などがありますが、映像のストリーミングと最低限の操作が出来る様になったのでひとまず公開してみました。次はGPSと測域センサを載せて自動操縦をさせたい。
UDP hole punchingの実装をしてみる
ラジコンをLTE回線を使って制御できたら面白そうだなと思いいろいろ調べてる。
BeagleBone BlackとL-03Dを組み合わせてL-03DにIIJmioのIIJ BIC SIMを差せばインターネット経由でBeagleBone Blackを遠隔操作をする事が出来るはずです。あとはBeagleBone Blackをラジコンに載せればラジコンをインターネットを経由で遠隔操作できます。しかしこれには一つ問題があります。その問題とはIIJmioのsimを使用した場合BeagleBone Blackに割り振られるIPv4アドレスがプライベートIPアドレスとなってしまう事です。プライベートIPv4アドレスが割り振られたという事はBeagleBone Blackに割り振られたIPv4アドレスが分かったところでインターネット側からの通信はIIJmioのNATに阻まれてBeagleBone Blackにアクセスする事は通常出来ません。
この場合UDPホールパンチングというテクニックを使用するとプライベートIPアドレスが割り振られたBeagleBone Blackと直接通信する事ができます。UDPホールパンチングについては他のサイトに詳しい解説があるのでここでは省略します。そこでUDPホールパンチングを行うサーバーとクライアント(以下nodeと呼ぶ)を自分で実装しgithub.comに公開しました。
holepunchの解説
ビルドコマンド等についてはレポジトリ内のREADMEを参照ください。
このholepunchはlibeventを使用していますのでまずlibeventをインストールしてください。
次にPCを3台用意します。一つはUDPホールパンチングの仕組み上必要となるマッチングサーバーです。このサーバーだけはグローバルIPアドレスが必要です。残りの二つは実際に直接通信するPCとなります。この二つのPCは双方ともプライベートIPでも問題ありません。
このholepunchの実装ではstunを使用せず独自のプロトコルで通信を行います。通信相手の識別には任意で設定可能な文字列keyを使用します。この文字列keyの一致したPC同士で直接通信をする事ができます。
おおまかな通信手順
実際に使用する
サーバ上で
$ ./holepunch server
nodeA上で
$ ./holepunch node example.com foo
nodeB上でも同じコマンドを実行
$ ./holepunch node example.com foo
通信が確立したら、各nodeのターミナル上で文字を入力しEnterで入力した文字列を相手に送信する事が出来ます。
MacでSTM32F4-Discoveryの開発環境を構築してChibiOS/RTを動かす
現在の私のSTM32F4-Discovery開発環境の構築手順とSTM32F4-Discovery上でChibiOS/RTを動作させてGDBでデバッグできるようにするまでをまとめてみました。
OSはMountainLion 10.8.4 MacPorts導入済の状態です。
まず以下のSTM32F4-Discoveryの開発に必要なソフトをインストールしていきます。
/opt/localはMacportsが使用しており、 /usr/localはHomebrewが使用しています。これらのディレクトリには余計なファイルを入れたくないので~/localを自前で用意した実行ファイル置き場として、~/local以下にARM開発環境をインストールしていきます。
arm-none-eabi-gccのインストール
arm-none-eabi-gccはlaunchpadから入手します。
GCC ARM Embedded in Launchpad
上のリンクからMac用のarm-none-eabi-gccであるgcc-arm-none-eabi-4_7-2013q2-20130614-mac.tarを落としてきて適当なディレクトリに保存します。
まず ~/localを作成
cd ~ mkdir local
ダウンロードしたgcc-arm-none-eabi-4_7-2013q2-20130614-mac.tar.bz2を~/に展開
tar -xvf ~/Downloads/gcc-arm-none-eabi-4_7-2013q2-20130614-mac.tar.bz2
展開されたgcc-arm-none-eabi-4_7-2013q2内のファイルを~/localに移動
cd gcc-arm-none-eabi-4_7-2013q2 mv * ~/local
これでarm-none-eabi-gccのインストールは完了です。
arm-none-eabi-gdbのインストール
次にarm-none-eabi-gdbのインストールですが、Macportsにarm-none-eabi-gdbがあったのでそれをそのまま使用します。
sudo port install arm-none-eabi-gdb
簡単ですね、はい次
openocdのインストール
openocdのソースをgit cloneする
git clone git://git.code.sf.net/p/openocd/code openocd-code
次にopenocdのビルド。今回はSTM32F4-Discoveryの開発にフォーカスしたconfigureになっています。Versaloon等の他のデバッガハードに対応させる場合はconfigureの変更やopenocdへのパッチが必要になる場合が有ります。
cd openocd-code ./bootstrap ./configure --enable-maintainer-mode --enable-stlink --prefix=~/local/ --datadir=~/local/share/
make -j3でビルドするとMacportsでインストールされているはずのlibusbが見つからないと怒られたのでLDFLAGSを追加して対処した。
make LDFLAGS=-L/opt/local/lib/ -j3 make install
これで~/local/binにopenocdがインストールされる。
最後に$PATHに~/local/binを追加して必要なソフトのインストールは完了です。
ChibiOS/RTのビルド
開発環境の準備ができたのでChibiOS/RTをSTM32F4-Discovery上で動作させてみます。
ChiboOS/RTは軽量で高速な扱いやすいRTOSで。STM32F4だけでなくLCP11xx, LPC13xxのNXP系のARMやAVRにも対応しています。詳細はChibiOS/RTの公式サイトを参照してください。
まずChibiOS/RTのソースコードをダウンロードします。
ChibiOS/RT free embedded RTOS download | SourceForge.net
ダウンロードしたzipを展開し、展開したディレクトリからdemosの中のARMCM4-STM32F407-DISCOVERYに入ります。
unzip ChibiOS_2.6.0.zip
cd ChibiOS_2.6.0/demos/ARMCM4-STM32F407-DISCOVERY
あとはmakeでビルドします
make
makeが完了すると、buildディレクトリが生成されその中にch.elfがあればビルド成功です。
書き込みとデバッグ
いよいよ実機への書き込みです。まずSTM32F4-DiscoveryのSTLink-v2側のmini-BなUSBポートとMacを接続します。
次にopenocdを起動します。
openocd -s ~/local/share/openocd/scripts/ -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg
次に別のターミナルを開いて、そこでGDBを実行します。
cd ChibiOS_2.6.0/demos/ARMCM4-STM32F407-DISCOVERY
arm-none-eabi-gdb build/ch.elf
GDBが起動するとGDBのプロンプトが表示されます。ここでopenocdと接続してch.elfをロードさせます。
target remote localhost:3333 monitor reset halt load monitor reset halt
最後にcontinueで実行。ここでSTM32F4-DiscoveryのLEDが点滅すればChibiOS/RTの動作は成功です。
continue
はてなブログに移行したついでにヘッドフォンの話をしてみる
はてなブログに移行したついでにiPod付属のイヤホンからヘッドフォンに移行した話を書きます。ここ数ヶ月非常に落ち込んだりして、文章書いていないのでリハビリも兼ねて
まず現在私が聞いている音楽についてです。今までVOCALOID中心に聞いていましたが。最近は以下のようにVOCALOIDからEDMに変化しています。
VOCALOID全般 -> kzのVOCALOID曲 -> kzの非VOCALOID曲 -> EDM
そして今一番ハマっている人がZEDDです。最近livetuneともコラボしたようで。まさかのコラボに非常に驚いているところです。
私がZEDDにハマるきっかけとなった曲がこれ
Skrillex & The Doors - Breakn' A Sweat (Zedd Remix)
2:12からの低音がやばいです。この低音を聞くためにiPod付属のイヤホンからヘッドフォンへの移行を決めました。
入手したヘッドフォンはHDJ-500というDJ向けのヘッドフォンです。これからこのヘッドフォンを選んだ理由をいくつか書いてみます。
- 低音が強調されている
DJ中のビートマッチングをしやすくするために低音が強調されています。低音を聞くことが目的なのでこれは外せません。
- 片耳装着が出来る
これもDJ向けヘッドフォンの機能の一つで、右側のイヤーパッドを前後に60°ほどずらすことができます。これで片耳装着が可能になり左耳でヘッドフォンの音、右耳で周囲の音を聞くことが出来ます。私は周囲の音が完全に聞こえなくなってしまうと不安になってしまうタイプの人なので、DJしなくてもこの機能はありがたいです。
- ケーブルの着脱が可能
もしケーブルが断線した場合でもケーブルを新品と交換するだけでヘッドフォンが復活します。(このブログを読んでいる方なら自力で修理しちゃうと思いますがw)
新品ケーブルの入手方法がpioneerの製品ページに書いてないのでおそらくpioneerのサポートで取り寄せてもらう形になるのかなと予想してる。
そして最後の理由は、私がDJに興味を持っており、もしかするとDJする可能性(音楽の知識なんて全くないので難しいですが)がないわけではないので、それも考慮してこのヘッドフォンを選びました。もちろんDJしなくてもこのヘッドフォンは十分いいヘッドフォンといえるので私は満足しています。