ソロでたのしむ

キャンプ、電子工作、DIY、乗り物などの趣味を紹介

スペースレールのモーター音を静かにしたい!

Light up the SPACERAIL

こんにちは。

皆様は、お家時間をいかがお過ごしでしょうか?

私は最近、お家に籠っている時間を使って、

スペースレールという知育おもちゃを、少しだけ改造して組み立てました!

「そういえば昔に持っていた!」と、懐かしく思い出される方も多いと思いますが、おそらくそれは、1983年くらいから5年ほど販売されていたスペースワープですね!

私も相当昔にスペースワープを組み立てたことがありますが、大人になった今回は、アップデートされて蘇ったスペースレールに、少し改造を織り込んで作成してみます。

お部屋のオブジェとして動かし続けるには、どうすれば良い?という観点で、小技も繰り出します!

SPACERAILのモーターの音を静かにしましょう!

スペースレール(SPACERAIL) 

スペースレールは、上の写真のようにレールを組み立てて、直径1/2インチ(1cmくらい)のボールを、上手く転がそう!という、パズル的な要素がある玩具です。

組み立てキットは14種類あり、難易度レベルが9段階で付与されています。

組み立て時間は、最も簡単なもので1時間、最高難易度のものだと60時間くらいかかるらしいとのこと!

スペースワープの時代には、レベル3に相当するものを組み立てたと記憶していますが、今回はレベル4.1に挑戦します。

大人の楽しみ方

さて、お部屋のオブジェにしましょう!というコンセプトで作るスペースレールは、スペースワープ時代の記憶を辿ると、2点ほど改良したくなります。

  1. エレベーターからボールが落ちることがある
  2. エレベーターを動かしているドライブユニットの音が大きい

f:id:solocamptouring:20210725161634j:plain

1 は、エレベーターの途中にあるボールが、他のボールがエレベーターに突入してくる時の衝撃で落ちることが多かったと思いますので、なんらかの落下防止ガードを付けたいと思います。

については、手の込んだ改善が必要だと思われます。

DCモーターと、その動力をエレベーターに伝えるギアの双方が、ウィ~ンという大きめな音を発生する原因となっている様子...

Inside the drive unit of Spacerail

静かな部屋で動かし続けるためには、少し耐えがたいドライブ音は消してしまって、ボールが転がる音と、エレベーターにボールが吸い込まれる瞬間の音だけにしたい!

静かに動かすのであれば、ステッピングモーター化がお手軽でしょう!ということで、モーターの種類を変えて、静音化してみます。

ステップモーター :  28BYJ-48 

ステッピングモーターは、速度(回転数)や位置を制御しやすいので、3Dプリンターにも使われていますね。

今回使うステッピングモーターは、ドライバーとセットで売られていることが多い28BYJ-48です。

ステップモーター 28BYJ-48をSpacerailに仕込む

上の写真で、右に写っているのが、そのステッピングモーターです。

スペースレールのドライブユニットのハウジングに収まりそうな、ちょうどいい大きさですね。

ドライバーとセットで安価に入手できる28BYJ-48は、マイコンボードで簡単に動かせます。

私がよく使うマイコンッボードは、Arduino Nanoという、小さいタイプのものです。

少しArduinoに興味がでてきた!という方は、使い方などを纏めている記事があるので、よろしければ参考にしてみてください。

www.solocamptouring.com

早速、必要な部品を入手して、ステッピングモーター化に取り組みます。

モーター交換のためのハンダ付け作業や、ハウジングの加工を終えて、静か~に動くドライブユニットが完成しました。

スペースレールを、ステップモータで動かす
Spacerailの、静かに動くドライブユニットが完成

作業の様子は、早送りですが、動画内で紹介しています。

ステッピングモータを動かす回路図

Fritzingで作成した回路図を紹介いたします。 

作るのが大変そうに見えるかもしれませんが、回路図の右半分は、ステッピングモータと、そのドライバなので、既製品です。

この回路では、USB接続の5V電源を使います。

ハンダ付け作業も少なく、配線をつなぐと、下の写真のような状態になります。

Arduinoとスッテプモーターで、スペースレールを動かす

スペースレールを組み立てましょう

ドライブユニットの試運転して、満足できるレベルの静音になっていることを確認したら、いよいよスペースレールを組み立てます。

説明書を見ながら、まずは支柱を立てていきます

スペースレールを組み立てます
Spacerail installation

1時間以上かけて、支柱の作業を終えました!

次に、レールを切ってから、取り付けていきます

説明書で指示されているレールの長さは少し余裕を持たせているようで、実際に装着した後で余った部分をさらに切断します。

ちなみに、同経路のレール左右でも、余る長さが違ってきます。

スペースレールのレール取付け
Install rails on the Spacerail

2時間以上かけて、レールも完成しました。

途中で、ボールを試走させながらレールを微調整しているので、予想以上に時間がかかります。

これらの作業と、静かに動くドライブユニットの様子は、動画でもご確認いただけます。

youtu.be

ほとんどの作業を早送り再生しているので、動画内では超高速で完成していますね。

エレベータータワーから落ちてしまうボールの対処方法

エレベータの中間地点を登っているボールが、他のボールがエレベータに突入してきた時の衝撃で落ちてしまうことがあります。

もう少ししっかりとボールを固定してくれる設計ならいいのに~」と言っていても仕方がないので、衝撃が加わってもボールが落ちないようにする手立てを考えます。

エレベータータワーから落ちてしまうボールの対処方法

これ、何かわかりますか?

はい! 食品を包んだりする時に使う、台所用ラップの芯です。

らせん状に切れ目を入れて、エレベータータワーの長さ(高さ)に合わせて切断したら、すぽっと入れるだけでボールの落下を防止できます。

ちょうどいい直径のアクリルパイプがあれば、もっと完成度が増すと思われますが、ラップの芯でも、それほど違和感はありません。

お家に在りそうな物での対策としては充分でしょう!

ボールの落下がなくなり、モーターもほぼ無音になったので、お部屋の置き物として、長時間動かし続けられるものになりました。

けっこう時間がかかりましたが、組み立て作業も楽しかった!

今日も、スペースレールの前に椅子を置いて、ボールの動きを目で追い続けています。

さて、次は何を作ってみようかな?

おまけ その1; ライトアップしてみました

テーマパークのジェットコースターを思い起こさせるスペースレールですが、さらに無事故(落下しない)かつ静音化して、オブシェとして動かし続けることに成功しました。

お部屋で眺めていて、もう少し幻想的にしたいと思い、ライトアップしてみました。

その様子を、約15分間にわたり録画してみます。

youtu.be

録音した音は、全く手を加えていないので、ボールの音だけが聞こえる様子をご確認いただけると思います。

おまけ その2;ステッピングモータを動かすスケッチ(プログラム)

ご参考で、スケッチを紹介いたします。

ステッピングモーターのドライバーに対して、コイルに順番に電気を流しなさい~と命令しているだけの、簡単なスケッチです。

int motorPin1 = 4;    // Blue   - 28BYJ48 pin 1
int motorPin2 = 5;    // Pink   - 28BYJ48 pin 2
int motorPin3 = 6;    // Yellow - 28BYJ48 pin 3
int motorPin4 = 7;    // Orange - 28BYJ48 pin 4
int volumePin = 5;
int motorSpeed;
int motorSpeedtimes = 2;

int lookup[8] = {B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001};

void setup() {
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  motorSpeed  = 1024 * (motorSpeedtimes + 1) - (analogRead(volumePin) * motorSpeedtimes) ; //0to1023 change into speed
  clockwise();
}

void anticlockwise()
{
  for (int i = 0; i < 8; i++)
  {
    setOutput(i);
      delayMicroseconds(motorSpeed) ;
}
}
void clockwise()
{
  for (int i = 7; i >= 0; i--)
  {
    setOutput(i);
      delayMicroseconds(motorSpeed);
}
}
void setOutput(int out)
{
  digitalWrite(motorPin1, bitRead(lookup[out], 0));
  digitalWrite(motorPin2, bitRead(lookup[out], 1));
  digitalWrite(motorPin3, bitRead(lookup[out], 2));
  digitalWrite(motorPin4, bitRead(lookup[out], 3));
}

それでは、皆さま良いお家時間をお過ごしください!

お家でエレクトリカルパレード