Arduino搭載ロボットアームとカスタムコントローラー – サーボ&ポテンショメータ構築
部品と材料
| Arduino UNO | ×1 |
| サーボモーター MG995 | ×1 |
| サーボモーター DS3115 | ×1 |
| ロータリーポテンショメータ 10kΩ (Bカーブ) | ×1 |
アプリとオンラインサービス
| Arduino IDE |
このプロジェクトについて
ロボットアームとそのコントローラーを自作しました。
構成
ロボットアームは3つの一般的なPWMサーボを使用し、各角度を可変抵抗で制御します。使用したロータリーポテンショメータはBカーブ10kΩです。
ロボットアームの製作
垂直方向にDS3115サーボモーター2個、水平スイング方向にMG995サーボモーター1個を使用しました。
コントローラーの製作
コントローラーケースを3Dプリンターで作成しました。
ロータリーポテンショメータのノブを通す穴と位置決め穴、ノブを嵌め込む凹みを設けています。製作したパーツと3つのロータリーポテンショメータを組み立てて完成です。ポテンショメータはロボットアームのサーボモーター回転軸と同じ方向に配置されています。
Arduinoコード
このシンプルなコードは、ロータリーポテンショメータの値をアナログピンで読み取り、角度に変換して対応するサーボに出力するだけです。
#include <Servo.h>
Servo myservo1, myservo2, myservo3;
float th1=90.0, th2=90.0, th3=90.0;
float val1, val2, val3;
void setup() {
Serial.begin(9600);
myservo1.attach(9, 500, 2420); // MG995
myservo2.attach(10, 820, 2140); // DS3115
myservo3.attach(11, 820, 2140); // DS3115
set_servo();
}
void loop() {
val1 = analogRead(A1);
val2 = analogRead(A2);
val3 = analogRead(A3);
th1 = map(val1, 170.0, 880.0, 0.0, 180.0);
if(th1 >= 180.0) th1 = 180.0;
else if(th1 <= 0.0) th1 = 0.0;
th2 = map(val2, 150.0, 860.0, 0.0, 180.0);
if(th2 >= 180.0) th2 = 180.0;
else if(th2 <= 0.0) th2 = 0.0;
th3 = map(val3, 860.0, 160.0, 0.0, 180.0);
if(th3 >= 180.0) th3 = 180.0;
else if(th3 <= 45.0) th3 = 45.0;
set_servo();
}
void set_servo() {
myservo1.write(th1);
myservo2.write(th2);
myservo3.write(th3);
}
動作
ロータリーポテンショメータを配線してArduinoに接続すれば完成です!
製造プロセス
- Raspberry Pi で実現する画像認識ベースの障害物回避モバイルロボット
- gatoBot:Raspberry Pi Zero WでWeb操作・ライブ映像ストリーミングロボット
- シンプルPiロボット - Raspberry Piで2WD自律ローバーを構築
- Arduino Mega搭載UV除菌ロボット:遠隔操作可能な殺菌システム
- Unopad: Ableton Live連携シームレスなArduino MIDIコントローラー
- MeArmロボットアーム V1.0 – Arduino/Raspberry Piで作るロボットアーム
- ArduinoとHC-SR04で作るサーボ駆動障害物回避ロボット
- KUKA KMR iiwa:インダストリー4.0対応の移動型協働ロボットアーム
- デュアルアームSCARAロボット:高度な組立・生産ソリューションを実現する次世代ロボット
- Yama Seiki GA-2000CR:ロボットアームとパレットシステム搭載のコンパクト旋削センター
- ロボット運用を強化する精密サーボモーション技術、選定のポイントと統合メリット