工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

スマートArduino自販機の自作:完全DIYメカトロニクスガイド

概要

ArduinoベースのDIY自販機をゼロから製作します。MDF板の切断・組み立てから電子部品配線、Arduinoプログラミングまで全工程を解説。4つの排出ユニット(連続回転サーボ)、ステッピングモーター駆動のキャリアシステム、LCD、選択ボタン4つ、コイン検出器を搭載。

スマートArduino自販機の自作:完全DIYメカトロニクスガイド

キャリアシステムは必須ではありませんが、プロジェクトをより興味深く、複雑にすることで学習効果を高めています。電子工学・メカトロニクス専攻学生の卒業制作や、Arduino愛好家のチャレンジに最適です。

筐体製作

8mm厚MDF板を円鋸でカット(寸法は自作3Dモデルから取得)。Thangsで3Dモデル公開中。

スマートArduino自販機の自作:完全DIYメカトロニクスガイド
スマートArduino自販機の自作:完全DIYメカトロニクスガイド

開口部はジグソーで切り出し(円鋸がない場合はジグソーで全工程可能)。小型パーツもジグソーで加工。危険を伴う工具なので十分注意してください。

スマートArduino自販機の自作:完全DIYメカトロニクスガイド

木工用ボンドとネジで組み立て(下穴→皿取り→3mmネジ)。90°アングルクランプとFクランプで固定しながら作業。

スマートArduino自販機の自作:完全DIYメカトロニクスガイド

レールシステム(キャリア機構)

アルミパイプでX-Y 2軸レールを構築。水平レール:外径16mm×27cm×2本。垂直レール:外径20mm×45cm×3本。木板にフォースナービットで溝を切り、パイプを固定。

スマートArduino自販機の自作:完全DIYメカトロニクスガイド

スライダーは21×21cm木板に8mm穴を開け、M8ネジロッドと22mmベアリング(水平用は16mmベアリング)で構成。組み付け後ガタつきがあったため、レール溝を拡張し垂直方向にスロットを追加、ネジロッドでレール間距離を詰めて解消。

スマートArduino自販機の自作:完全DIYメカトロニクスガイド
スマートArduino自販機の自作:完全DIYメカトロニクスガイド

左側に水平タイミングベルト用プーリー取り付けボルトと、垂直レール用ベアリング2個を追加。右側に水平移動用ステッピングモーター(NEMA 17)をブラケット込みで垂直スライダーに固定。

スマートArduino自販機の自作:完全DIYメカトロニクスガイド
スマートArduino自販機の自作:完全DIYメカトロニクスガイド

水平スライダーに商品コンテナを木片で自作取り付け。エポキシでレール溝補強、側面板追加で剛性アップ。垂直レール間に組み込み、垂直移動用ステッピングモーターを天板に、下部にプーリーを取り付けタイミングベルト張架。

スマートArduino自販機の自作:完全DIYメカトロニクスガイド
スマートArduino自販機の自作:完全DIYメカトロニクスガイド
スマートArduino自販機の自作:完全DIYメカトロニクスガイド

排出ユニット

φ7cmスプレー缶に3mm金属線を巻いてヘリカルコイルを作成、グルーガンで連続回転サーボ(DS04-NFC)に固定。4ユニット分製作。

スマートArduino自販機の自作:完全DIYメカトロニクスガイド
スマートArduino自販機の自作:完全DIYメカトロニクスガイド

フロントパネル

蝶番でドア取り付け、マグネットキャッチャーで施錠。大開口は5mmアクリル、右側小開口は薄アルミ板(ボタン4穴、コイン投入口、LCD窓をドリルと糸ノコで加工)。電子部品をアルミ板に実装後、5mmボルトでドアに固定。

スマートArduino自販機の自作:完全DIYメカトロニクスガイド

キャリア原点復帰用マイクロスイッチ2個、コインガイド(滑り降り誘導)を接着。コイン検出は赤外線近接センサー(コイン通過でLOW出力)。

スマートArduino自販機の自作:完全DIYメカトロニクスガイド

回路図

スマートArduino自販機の自作:完全DIYメカトロニクスガイド

12V/2A以上電源(ステッピング2台とLEDストリップ用)。バックコンバーター(LM2596)で12V→5V降圧し、サーボ4台、LCD、センサー、ボタン、スイッチに供給。ステッピングはA4988ドライバー制御。ボタンとマイクロスイッチはArduino内部プルアップ使用(押下でLOW)。ジャンパーワイヤーで配線(少々煩雑だが動作良好)。ドアにLEDストリップ2本追加で内部照明。

スマートArduino自販機の自作:完全DIYメカトロニクスガイド

必要な部品

Arduinoコード

LiquidCrystalとServoライブラリをインクルード。LCDピン、サーボ4台、ステッピングピン、コイン検出器、ボタン4つ、マイクロスイッチ2つを定義。


#include <LiquidCrystal.h>
#include <Servo.h>
LiquidCrystal lcd(27, 26, 25, 24, 23, 22);
Servo servo1, servo2, servo3, servo4;

#define dirPinVertical 0
#define stepPinVertical 1
#define dirPinHorizontal 2
#define stepPinHorizontal 3
#define coinDetector 9
#define button1 13
#define button2 12
#define button3 11
#define button4 10
#define microSwitchV 15
#define microSwitchH 14
int buttonPressed;

setup()でLCD初期化、サーボアタッチ、ピンモード設定(ボタン/スイッチはINPUT_PULLUP)。起動時にマイクロスイッチでキャリアを原点復帰(垂直・水平それぞれwhile文でスイッチ押下まで移動、その後微調整)。


// 垂直原点復帰
digitalWrite(dirPinVertical, HIGH);
while (true) {
  if (digitalRead(microSwitchV) == LOW) { moveUp(70); break; }
  digitalWrite(stepPinVertical, HIGH); delayMicroseconds(300);
  digitalWrite(stepPinVertical, LOW); delayMicroseconds(300);
}
// 水平原点復帰
digitalWrite(dirPinHorizontal, LOW);
while (true) {
  if (digitalRead(microSwitchH) == LOW) { moveLeft(350); break; }
  digitalWrite(stepPinHorizontal, HIGH); delayMicroseconds(300);
  digitalWrite(stepPinHorizontal, LOW); delayMicroseconds(300);
}

loop()メインフロー:

  1. LCDに「Insert a coin!」表示
  2. コイン検出(近接センサーLOW)まで待機
  3. 「Select your item / 1, 2, 3 or 4?」表示
  4. ボタン押下待機(内部プルアップなのでLOW検出でbreak)
  5. 「Delivering...」表示
  6. switch文で押下ボタンに応じた位置へキャリア移動→該当サーボ回転(950ms)→原点復帰
  7. 「Item delivered!」表示→2秒待機→ループ先頭へ

switch (buttonPressed) {
  case 1: // 位置1(最上段・左)
    moveUp(4900); delay(200); moveLeft(1700); delay(300);
    servo1.writeMicroseconds(2000); delay(950); servo1.writeMicroseconds(1500); delay(500);
    moveRight(1700); delay(200); moveDown(4900); break;
  case 2: // 位置2(最上段・右)
    moveUp(4900); delay(200);
    servo2.writeMicroseconds(2000); delay(950); servo2.writeMicroseconds(1500); delay(500);
    moveDown(4900); break;
  case 3: // 位置3(中段・左)
    moveUp(2200); delay(200); moveLeft(1700); delay(300);
    servo3.writeMicroseconds(2000); delay(950); servo3.writeMicroseconds(1500); delay(500);
    moveRight(1700); delay(200); moveDown(2200); break;
  case 4: // 位置4(中段・右)
    moveUp(2200); delay(200);
    servo4.writeMicroseconds(2000); delay(950); servo4.writeMicroseconds(1500); delay(500);
    moveDown(2200); break;
}

移動カスタム関数(moveUp/Down/Left/Right)は、方向ピン設定後、指定ステップ数分パルス出力(300μs HIGH/LOW)するシンプルな実装。A4988を1/4ステップ設定にしており、実測で垂直4900ステップ、水平1700ステップ等を決定。


void moveUp(int steps) {
  digitalWrite(dirPinVertical, LOW);
  for (int x=0; x

コードはシンプルですが、メカトロニクスの要素(機械設計、モーション制御、センサー入力、ユーザーインターフェース)が凝縮された優れた学習教材になります。質問はコメント欄へ。Arduinoプロジェクトコレクションもぜひ。

製造プロセス

  1. 自動販売機:366億ドル規模の米国産業パワーハウス
  2. 自宅で作るDIY宿題自動筆記マシン:AxiDraw風ペンプロッターの自作ガイド
  3. Arduino Nano RP2040で作るDIY Photoshopコントロールコンソール
  4. Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
  5. Arduinoで超音波レベーション(浮遊)装置を自作:ステップバイステップガイド
  6. Arduinoとスマホで作るスマート電圧計 – 簡単DIYプロジェクト
  7. Arduinoで作る赤外線心拍センサー:低コスト・リアルタイム波形表示のステップバイステップガイド
  8. Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
  9. ArduinoとNokia 5110ディスプレイで自作電圧計:ステップバイステップガイド
  10. Arduinoで作るデジタル腕時計 - 有限状態マシンによる実装
  11. Arduino Nano R3で本格的なCNCマシンを自作する