ザクヘッドのモノアイをサーボで可動する改造方法【写真多数・コード付き】

エクシードモデル ザクヘッドを何となく自立した感じでモノアイが動くように改造しました。
以下で改造方法やコード他公開しますので、良かったらお使いください。

なお、本記事の回路部分を簡略化した改造方法を下記記事にアップしました。合わせてご参照ください。

ザクヘッドの改造に使った部品

下記のUSBコネクタとサーボと4.8mm径のLEDを入手。
LEDは先が短くて胴体が太いのがよかったのですが、ちょうど良いサイズが見つかってよかったです。

↓写真はそれぞれアマゾンのリンクです。

(中華品って、送料込みでどうやって商売やってるんだろう、っていう値段ですよね・・・。配送に時間掛かるけど。)

他は100均でUSBケーブルを買った以外は、手持ちのPIC12F1840とか、リードスイッチだけです。

ザクヘッドのモノアイをサーボで動かす作り方。

ザクの頭の下側にサーボが入るようにダボとか削ってこんな感じで組み込みます。

ザクヘッド11 仕込み2


↑モノアイ下のステージの裏にサーボを囲む形でプラ板2mmを貼ってあります。
サーボの固定は前側のネジだけ貼ったプラ板に差し込んであります。(後に詳細写真あり)

サーボホーンは十字のものを利用。
小さい1箇所だけ残して切り捨ててから、適当なネジを上むきに出してモノアイ側に動力が接続できるようにしておきます。

モノアイ側はLEDを仕込んだ後、LEDの錫メッキ線をモノアイのアームの形に合わせて曲げたのち、リード線をハンダ付けしています。(LEDは縁の部分を左右切り取って縦長にしています)

サーボをモノアイのスイング軸と軸合わせして固定します。
Waveのプラパイプ 外形6.5mmがサーボの軸にピッタリハマるので、これをモノアイのスイング軸と合うように位置合わせしながら、サーボを固定するプラ板をステージ裏側に貼っていきます。

スイング軸の支柱を下方に伸ばすため、Waveのプラパイプ 外形6.5mmを継ぎ足して、ネジ穴開けたプラ板をプラリペアで接着して動力の受けにしました。

サーボ側のアームはSG90付属の十字のサーボホーンのうち、短い軸を1つ残し、切り落とします。
サーボ固定用のネジを上むきにサーボホーンに取り付けて出来上がりです。

回路はこんな感じです。

circuit.png

↓手前の8PIN ICがPIC12F1840。黒いソケットがPIC書き込み用のポートで、隣の白いソケットがLED接続用です。サーボの接続ソケットは入りきらなかったので、手前の3本横になっているPINだけで繋いでいます。

ザクヘッド11 仕込み3-基板周り1

下の写真で右上の隅の黒い四角がリードスイッチです。

コードはこちらです>githubのリンク
projectPackageというフォルダにzipした一式がいますので、MPLAB_Xに展開して使ってください。

個人的には15分おき、ってのが丁度良く たまに動く感じで、何か熱中していても時間を気に出来て良いです。
あと、リードスイッチ反応するようにしたので、磁石近づけて暇つぶしできるのもいいかな。

まとめ ザクヘッドのモノアイ動作のサンプルと作り方の動画

部品代合計1500円〜2000円くらいでできたはずです!
↓コレよか自分好みに作れて、安いので満足です!

なお本記事で使用したザクヘッドをB&W技法でエアブラシ塗装して油彩ウォッシングで仕上げる記事も合わせてご参照ください。

こちらもご覧ください(本記事の回路をSeeeduino Xiaoを使って簡略化した改造方法)

こちらはドムヘッド↓(ドムヘッドは効果音(グポーン)とモノアイ縦横可動します)

ぼのかば

最初にプログラムしたのは相撲ロボット用のZ80アセンブリ(Aki-80)。
以後,PICアセンブリ>PIC C と渡り歩く。

好きなICのタイプは8pinDIP。

一応、電気科卒
*ブログ内の情報はMacOSX上での操作に基づきます。

作例
PICを少々。

  1. SECRET: 0
    PASS: 088ce47d202da6271057b1a48e8f283a
    やりたいことそのものでしたのでコードお借りしました!! きっちり動作して満足しています!!

    1点だけご報告します:

    MPLAB X IDE の現バージョンは"v5.50"になっており、どこかのタイミング(2020/03あたり)でコンパイラの仕様が変わったようで、`[太字]interrupt[/太字]` の記述を `[太字]__interrupt()[/太字]` に変更しなければならないようです。

    そのため、

    \mcc_generated_files\interrupt_manager.h および interrupt_manager.c の、
    `void interrupt INTERRUPT_InterruptManager(void);` を
    → `void __interrupt() INTERRUPT_InterruptManager(void);` に変更する必要がありました。

    それだけです。コードの公開、本当にありがたいです……!!

  2. SECRET: 0
    PASS: 74be16979710d4c4e7c6647856088456
    コメントありがとうございます!!
    お役に立てたようで良かったです。

    仕様変更に全く気づいておらず古いコードのまま載せてありました。
    近いうちに訂正させていただきます。

  3. SECRET: 0
    PASS: 74be16979710d4c4e7c6647856088456
    コンパイラ通るように訂正させていただきました。
    ご指摘ありがとうございました。