必要なもの 1 - 筐体用部品

MDF 4mm 600*450mm 1枚
TRAXXAS社製ロッドエンド #5525 12個入り1セット

M2.1 木ネジ 13mm 3本
M3 皿ねじ 15mm 10本
M3 なべねじ 45mm 9本
M3 ナット 34個
M4 寸切り 285mm 6本
M6 皿ねじ 60mm 3本
M6 ナット 3個

必要なもの 2 - 電子部品

サーボモーター MG995 x3
マイコン基板 Arduino Uno Rev3 x1
USBAオス-Bオスケーブル x1
ミニブレッドボード x1
9V電池 x1
9V電池ケース x1 
(リンク先以外のものを使う場合は
レーザーカットのデータを修正してください)
ジャンパワイヤ

必要なもの 3 - 工具類

プラスドライバー No.1~No.2
小さめのラジオペンチ 2本
木工用ボンド

[あるとよいもの]
ボンドの余りを拭く紙
圧着用のクランプ

1. レーザーカット

まずはMDFをレーザーカッターで切ります。
ocpc_lasercut_20151216.ai
青線にしてある外縁部は切らなくても組み立てられますが、
切るとA3*2枚になり、
封筒などに入れて持ち運びがしやすくなります。
スケールがおかしい場合は、
A3の寸法を基準に拡大縮小してください。
(右の写真は上のデータと細部が異なります。)

ラスター部分は皿ネジを埋めるための
彫刻(≒切削)として設定しています。
ややイレギュラーな使い方ですが、
2mm程度削れるパラメーターを見つけてください。

Memo: ラスターデータとベクターデータ
Memo: レーザーカッターについて
Memo: ネジの種類について

2. 接着

接着が必要なパーツは乾くのに時間がかかるので、
先にすませてしまいます。

なお、
これ以降の説明では、MDFパーツを番号で表記します。
パーツ番号対応図を確かめながら作業を進めてください。

2-0. 作業をする前に注意

どちらのパーツも、接着した各パーツにある穴が
そのままパラレルリンクの機構の軸となるので、
曲がっていると動きに支障をきたしてしまいます。
一見簡単な工程ですが、丁寧に行いましょう。

ボンドをつけすぎてネジ穴にまで到達してしまうと、
やはり動きに支障をきたします。
どのパーツも結果的にあとからネジなどで補強されるので、
ボンドは少なめにつけるのがおすすめです。

軽く接着できたら、机などに側面を押しつけて、
可能な限りまっすぐに接着されるように修正します。
後の工程で使うM3のネジを穴に差し込むと、
確実にまっすぐにできるほか、
ナットと組み合わせて圧着することも可能です。

2-1. 腕パーツ

腕のパーツ[1][2]を木工用ボンドで糊づけします。
溝やくぼみがある[1]1枚と表面に何もない[2]3枚の
合わせて4枚を1組として3組に分け、
[1]のラスター彫刻がある面が表出するように接着します。

裏返しに接着してしまうと取り返しがつかないので、
注意してください。

2-2 天板とのアダプター部品

天板[5]とパラレルリンクを接続する部品を接着します。

こちらは突起がない[3]2枚とあるもの[4]2枚の
合計4枚を1組として、やはり3組に分けます。
突起のある[4]・ない[3]・ない[3]・ある[4]の順に、
順番を間違えないよう、重ねて接着してください。

3. 筐体の下半分を組む

カットしたMDFを中心に、まずは下から筐体を組んでいきます。

3-1. 台

[7]と[8]を十字に組み合わせます。
ややきついかもしれませんが、
材を割らないように注意しながら、
しっかり奥まではめこんでください。

そして、[9]にその十字をはめこむと、
十字が全体の台となります。
[9]の表裏に注意してください。

接合がゆるい場合などは、
ボンドをつけて軽く接着しても構いません。

3-2. 電子部品の配置 1

サーボモーター以外の電子部品を、
[9]に取りつけていきます。

Arduino Unoと電池ケースは、
[9]にあいている穴に、M3 15mmの皿ネジで止めます。
対になった穴が2組ありますが、
正しい部品にしかピッチが合わないようになっています。
写真のような向きに取りつけて、
裏からM3ナットで固定してください。

電池ケースのネジはなるべくきつく締めないと、
電池が入りません。
逆に、
Arduinoはきつく締めるとArduinoが浮いてしまうので、
極力ゆるめに締めるようにしてください。

3-3. 電子部品の配置 2

続いて、9V電池とブレッドボードを配置します。

電池は、電池ケースに嵌めこんでください。
カチッとしっかり噛み合う仕組みなので、
手応えがない場合は極性があっているか確認してください。
(極性が間違ったまま進めると、大変危険です。)

ブレッドボードは、裏面のフィルムを剥がして、
[9]の表面の使いやすそうな場所に貼ってください。
貼り直しがあまり効かないので慎重に。

3-4 縦の板

[10]と[11]を、それぞれ[9]に嵌めこみます。

[10]は丸い穴のある方が上にくるように嵌めます。

また、[10]を[9]に嵌めこむ穴の縁が薄いので、
力をこめすぎて割ったりしないように気をつけてください。

3-5. サーボモーターと上板

サーボモーターを[9]の穴に合わせて置きます。
3-4までで組んだものとサーボモーターの上部の突起が
穴が対応するように[12]をかぶせ、
サーボモーターのケーブルを穴に通します。

ケーブルを通したら、
上に出ているすべての突起を[12]に嵌めこんでください。
一度にすべてを嵌めるのはほぼ不可能なので、
板をややたわませながら、
順番に嵌めていくことをおすすめします。

最後に、M6 60mmの皿ネジを上の穴から通し、
下から同じくM6のナットをあてがって、
上下に開いてしまわないように仮留めします。

3-6. 配線

箱状になった本体の中の電子部品を配線していきます。
この配線図のように配線してください。
なお、今回使っているMG995(サーボモーター)は
茶色の線がGND(配線図の黒端子)
赤色の線がVCC(配線図の赤端子)
橙色の線が信号線(配線図の黄端子)になっています。

電子回路の配線は人間の脳内の神経回路のようなものです。

神経回路が壊れると人間が壊れてしまうように、
配線を間違えると部品が一発で壊れてしまいます。
なるべく慎重に、ていねいに行いましょう。

Memo: ざっくり分かるArduino 概要編
Memo: ざっくり分かるArduino 拡張編

3-7. サーボモーターの原点出し

このファイルを自分のパソコンに
ダウンロード・解凍してください。
OCPC_dlpArduino.zip

Arduinoに挿したUSBケーブルを自分のパソコンに挿し、
ArduinoIDEを起動して、servo_zero.inoを書き込みます。
その時、
サーボモーターが3つともギュルっと回れば成功ですが、
1つでも回らなかった場合はミスがある可能性が高いので、
配線を再度見なおしてください。
(回るのは一瞬だけなので、注意深く観察してください。)

無事に成功したら、reset.inoを書き込んでおきましょう。

Memo: ざっくり分かるArduino 動作編

5. 筐体の駆動部分を組む

下の本体以外の、動きまわる部分を組んでいきます。

5-1. 腕にサーボホーンをつける 1

MG995(サーボモーター)の付属品の小袋の中から、
黒い片方向だけに伸びたサーボホーンを取り出します。
これを、2-1でつくった腕パーツと合体していきます。

まず、サーボホーンのギアが切られている側を上にして、
腕のラスター面の上に、穴と向きを合わせて置きます。
それから、M3 45mm なべネジを通し、
反対側からナットで仮留めします。

この仮留めも冒頭の接着同様、
完成したときの駆動に大きく影響する部分なので、
なるべく正確に穴が通るよう、心がけてください。

5-2. 腕にサーボホーンをつける 2

腕にあいている四角い穴と
サーボホーンの小さい穴の向きを合わせて、
小さい穴のうち1つにM2.1 13mm 木ネジをねじこみます。
穴よりネジの方が太いのですが、
ねじこむとネジが周囲を削りながら進んでいくので、
サーボホーンと腕が密着するまでネジを回し続けてください。

同様に3つの腕/サーボホーンを組み立ててください。

5-3. ロッドを組む 1

M4 285mm 寸切り1本と#5525ロッドエンド2個を用意し、
それぞれのロッドエンドの穴にM3のネジを軽く通します。

寸切りの両端にロッドエンドをまっすぐあてがい、
両端をねじってロッドエンドを寸切りに嵌めていきます。
なるべく深くまで嵌めこむと、完成した時に安定します。

これを6セット作ります。

5-4. ロッドを組む 2

ロッドの微調整をします。

すべてのロッドエンドの向きが平行になるように、
またすべてのロッドの長さが同じになるように、
それぞれのロッドエンドをねじって調整します。
これを怠ると正しく動作しないので、
なるべく精密に揃えてください。


調整が終わったら、
ロッドエンドに差していたネジを外します。

5-5. サーボモーターに腕をつける 1

サーボモーターに、腕を嵌めこみます。

サーボホーンに刻まれているギアが、
そのままサーボモーターに嵌まるようになっているので、
なるべく低い角度に、かつ3つとも同じ角度になるように、
腕をサーボモーターの奥まで嵌めこみます。

5-6. サーボモーターに腕をつける 2

腕に軸を通していきます。

先ほど腕をサーボモーターと組んだ反対側から
[10]の穴を通じて、
M3 45mm なべネジをねじこんでいきます。
この時、
きつく締めすぎるとサーボモーターが壊れてしまうので、
ドライバーを使わずに手で締めることと、
[10]の板の面から5mmくらい余裕を残して留めることを
心がけてください。

5-7. 天板にジョイントをつける

2-3で作ったパーツを[6]に取りつけます。

[6]の穴に、
2-3で作ったパーツの穴をそれぞれ下面側から合わせて
M3 15mm 皿ネジを[6]の上面側から差し、
M3 ナットで固定します。

ラスター彫刻の部分に
皿ネジの頭が埋まっていることを確認してください。

5-8. ロッドをつける 1

4-6でサーボモーターにとりつけたアームの両側に、
4-4で作ったロッドを取りつけます。

M3 45mm なべネジとM3 ナットを使って、
それぞれのアームにロッドを2本ずつ、
写真のように取りつけていきます。
なべネジ1本あたり4つナットを使うことになります。

端に2つナットが使われているのにも、
ちゃんと理由があります。
Memo : ダブルナット

5-9. ロッドをつける 2

4-8と同様に、
4-7で天板につけたジョイントにも、
ロッドを取りつけます。

6. 完成

ひとまず完成です。お疲れさまでした。

電池がすぐに切れてしまわないよう、
動かさないときは電池を電池ボックスから外すか、
電池ボックス周辺の配線の一部をはずすなど、
工夫しましょう。
(今のところOCPCには『電源スイッチ』がついていません)

配線を抜いておく場合は、
露出している他の線などに線が触れて
ショートしてしまう危険を避けるため、
ブレッドボード上で全く使っていない列の穴、
回路に関係のない穴に差しておくのがおすすめです。

[注意] 本当に完成してる?

見た目にできあがっていても、
つっかえながら動いていたり、
サーボモーターの動きが筐体にぶつかっていたりなど、
少し動きが悪いことがあります。
そういった場合には、決してそのまま放置しないでください。

そうした現象には必ず原因があります。
(そして、想定されるトラブルの多くは、
該当する各工程や、すぐ下の7-1に注意書きとして書いてあります。)
トラブルを抱えた状態のまま動かし続けると、
サーボモーターやArduinoを壊してしまうことも少なくありません。
きちんと原因を究明しましょう。

7. 動作確認

動かしてみましょう。

7-1. 上下に動かしてみる

deltaTest_dlp.zipからdeltaTest_dlp.inoを開き、
Arduinoに書き込んで動かしてみましょう。
まっすぐ上下に動けば成功です。

deltaTest_homeAll.inoを書き込むと、
サーボに負荷をかけずに元の位置に戻せます。

  • サーボの動きはじめ/終わりのタイミングが違う
→サーボが原因の可能性が高いです。
腕/サーボホーンを外して、4-7をやり直してください。
  • 斜めに動いている/天板が傾いている
→ロッドが原因の可能性が高いです。
5-3, 5-4の注意点を守っているか確認してください。
  • 動きながら天板がガタガタする
→ネジが原因の可能性が高いです。
きつく締め直してください。

7-2. 3つのサーボを独立に動かしてみる

このプログラムをArduinoIDEから直接書き込んで、
3つのサーボモーターを同時ではなく「それぞれ独立に」動かしてみます。

deltaTest2_dlp

3つのサーボが等価に動くかどうかを確認しましょう。
また、台座の動く最大範囲を把握しましょう。

7-3. ArduinoとProcessingを通信し、マウスで動かしてみる 1

ArduinoのソースコードとProcessingのソースコードが入っています。

deltabot-master_20160107.zip

Control P5 Libraryの入ったProcessing2.2.1と、Arduinoが必要です。
http://www.sojamo.de/libraries/controlP5/
(通常はProcessingのソフト内からインストールできます。)

Arduino側にソフトウェアを書きこんだあと、
PC上でProcessingを実行してマウスで操作します。

Memo: Processingについて

7-4. ArduinoとProcessingを通信し、マウスで動かしてみる 2

Processingを実行すると右のような画面が立ち上がります。
最初は"SERVO POWER OFF"になってしますので、
[ENABLE]ボタンを押してPOWER ONにします。
ここでサーボモータが反応するはずです。

※作動しない場合は、
myPort = new Serial(this, Serial.list()[X], 9600)
という行の[X]部分の数字を
0,1,2...と順番に変えてみてください。

[RECORD]ボタンを押すと
動作を記録するモードに入ります。(制限時間あり)
[PLAY]ボタンを押すと記録された動作を反復再生します。
また、[RECORD]は何度でもやり直すことができます。

7-5. 録画再生をつかわず自分でプログラミングをする

Processingの知識が多少あれば、自分でOCPCを動かすことができます。

void draw(){}の中で
xp=15; yp=15; zp=-40; 
と指定すると座標が設定され、
setThetasfromXYZ();
を実行すると機械にその座標値が送信、
updateGuiElements();  
を実行すると座標値が画面上に反映されます。

xyzが機械の範囲外になると動かず反映もされないので、
まずはマウスで可動範囲を調べてください。
(なおzは±が逆になっています)

4 接着のつづき

この頃には2-2で作ったものが乾いていると思います。
乾いていることを確認したら、
[5]の穴の間、中央部分に軽くボンドを塗り、
[5]の穴にに2-2で作ったものを差し込んで固定します。

乾く前に差し込むと、
穴のきつさに負けて[3]や[4]がはがれてしまうので
必ず乾いてから行いましょう。