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

Arduino-Web経由のコントロールアームロボット

コンポーネントと消耗品

>
Arduino UNO
× 1
Arduino用のPHPoCWiFiシールド
× 1
6DOFアームロボット
× 1

このプロジェクトについて

初心者の方は、次のチュートリアルを読むことをお勧めします。

  • Arduino-モーター
  • Arduino-サーボモーター
  • Arduino-Wifi

1.デモンストレーション

2.ユーザーインターフェース

<図> <図>

ロボットアームには6つのモーターがあります。

  • ゾーンA:制御モーター2、3、4(3つの手関節を制御)
  • ゾーンB:制御モーター1(制御ベース)
  • ゾーンC:制御モーター5(グリッパーの回転を制御)
  • ゾーンD:コントロールモーター6(コントロールグリッパー)

3.システムアーキテクチャ

<図>

4.作業フロー

クライアント側 (Webユーザーインターフェイス-JavaScript + HTML + CSSで記述)

ユーザーが指に触れたりスイープしたり(またはマウスをクリックまたは移動)すると、座標(x、y)を取得できます。作業フローは次のとおりです。

<図>

ゾーンAの場合、モーター2、3、4の角度を計算するには、いくつかの 幾何学的計算を実行する必要があります。 。このページの最後で参照できます。

サーバー側 (Arduinoコード)

クライアントから一連の角度を受け取ると、6つのモーターが現在の角度から新しい角度に徐々に移動します。 6つのモーターが移動し、同時に新しい角度に到達する必要があります。すべてのモーターを制御する方法を詳しく説明する前に、単一のモーターを制御する方法を見てみましょう。モーターを現在の角度(angle)から新しい角度(new_angle)に移動するとします。モーターの速度が速いので、 減速する必要があります。 そのためには、モーターが新しい角度に達するまで、次の2つの手順を繰り返します。

  • 小さなステップでモーターを動かします。
  • 少し間を置いてから、次のステップに進みます。

次の図は、新しい角度が現在の角度よりも大きい場合の上記のスキームを示しています。

<図>

Wherestep_numisモーターが実行する必要のあるステップ数。 ステップと時間 は事前定義された値です。後の2つが、速度と滑らかさを決定します。 上記は1台のロボットのみです。ロボットの移動と目的地への到達を同時に開始するには、次のようにします。6つのモーターが同じ step_num 、ただし step 各モーターのは互いに異なります。したがって、 step_num を選択する必要があります このプロジェクトでは最大です。

一般的に、Arduinoの作業フローは次のとおりです。

<図>

5.幾何学的計算

ロボットアームの計算を次のジオメトリの問題にしましょう:

<図>

既知

  • Cは修正されました
  • 既知のポイント-Dはユーザーからの入力です
  • 既知のポイント-CB、BA、AD(それぞれb、a、dで示されます)
  • 各アームセグメントの長さ検索: 角度C、B、A 解決策:
  • 角度BとAが同じであると仮定します
  • ポイントとセグメントを追加します
<図>

計算

  • 点CとDを知っていた=> DCの長さを計算できる(cで示される)
  • δを計算することもできます
  • 三角形のABEを見ると、AE =BEおよび∠E=π-2αであると推測できます。
  • だから:
<図>
  • 三角形CDEの余弦定理:
<図>
  • (1)と(2)を(3)に変更すると、次のようになります。
<図>

簡略化

  • 上記を簡略化してください:
<図>
  • a、b、c、dがわかっているので、上記の2次方程式を解くと、αの値を計算できます。 -そしてβ=π–α-これまでβを見つけましたが、γを見つけましょう-三角形BDCとBDAの余弦定理:
<図>
  • この一連の方程式を解くと、γを計算できます。
  • したがって、必要な角度は(δ+γ)、β、およびβです。これらはそれぞれモーター2、3、4の角度です。

6.ソースコード

ソースコードには2つのファイルが含まれています:

  • RobotArmWeb.ino :Arduinoコード
  • Remote_arm.php :PHPoC WiFiShieldまたはPHPoCShieldにアップロードされるWebアプリコード。 (この記事の説明を参照してください。)

また、画像ファイルflywheel.pngをPHPoCシールドにアップロードする必要があります。

<図>

初心者のための最高のArduinoスターターキット

Arduinoキットをお探しの場合は、初心者向けの最高のArduinoキットをご覧ください


関数リファレンス

  • Arduino-サーボライブラリ
  • Servo.attach()
  • Servo.write()
  • Servo.writeMicroseconds()
  • Servo.read()
  • Servo.attached()
  • Servo.detach()
  • Serial.begin()
  • Serial.println()

コード

  • RobotArmWeb
  • remote_arm.php
RobotArmWeb Arduino
これはArduinoコードです
 #include  #include  int angle_init [] ={90、101、165、153、90、120}; //モーターがまっすぐ立っているとき。ウェブでは、モーターがまっすぐ立っているときの角度は{0、90、130、180、0、0}; int angle_offset [] ={0、11、-15、-27、0、137}; //実際のサーボモーターとwebintの角度の間のオフセットcur_angles [] ={90、101、165、153、90、120}; // 6つのモーターの現在の角度(度)int dest_angles [] ={0、0、0、0、0、0}; //宛先anglesintangle_max [] ={180、180、160、120、180、137}; int angle_min [] ={0、0、0、20、0、75}; int direction [] ={1、1 、1、1、1、-1}; int angleSteps [] ={3、2、2、2、4、4}; //各モーターの移動ステップ(度)サーボサーボ1;サーボサーボ2;サーボサーボ3;サーボサーボ4;サーボサーボ5;サーボサーボ6;サーボサーボ[6] ={サーボ1、サーボ2、サーボ3、サーボ4、サーボ5、サーボ6}; PhpocServerサーバー(80); PhpocClient client; int stepNum =0; void setup(){Serial.begin(9600); Phpoc.begin(PF_LOG_SPI | PF_LOG_NET); server.beginWebSocket( "remote_arm"); Servo1.attach(2); //ピン2のサーボをサーボオブジェクトservo2.attach(3);に接続します。 //ピン3のサーボをサーボオブジェクトservo3.attach(4);に接続します。 //ピン4のサーボをサーボオブジェクトservo4.attach(5);に接続します。 //ピン5のサーボをサーボオブジェクトservo5.attach(6);に接続します。 //ピン6のサーボをサーボオブジェクトservo6.attach(7);に接続します。 //ピン7のサーボをサーボオブジェクトに接続しますfor(int i =0; i <6; i ++)servo [i] .write(angle_init [i]);} void loop(){PhpocClient client =server.available (); if(client){String angleStr =client.readLine(); if(angleStr){Serial.println(angleStr); intcommaPos1 =-1; intcommaPos2; for(int i =0; i <5; i ++){commaPos2 =angleStr.indexOf( '、'、commaPos1 + 1); int angle =angleStr.substring(commaPos1 + 1、commaPos2).toInt(); dest_angles [i] =角度*方向[i] +角度オフセット[i]; combaPos1 =combaPos2; } int angle5 =angleStr.substring(commaPos1 + 1).toInt(); dest_angles [5] =angle5 * direction [5] + angle_offset [5]; stepNum =0; //モーターをスムーズに動かすために、モーターを多くの小さなステップで動かし、モーターが突然動くのを防ぎます。以下は、(int i =0; i <6; i ++){int dif =abs(cur_angles [i] --dest_angles [i]);のステップ計算です。 int step =dif / angleSteps [i]; if(stepNum  0){for(int i =0; i <6; i ++){int angleStepMove =(dest_angles [i] --cur_angles [i])/ stepNum; cur_angles [i] + =angleStepMove; if(cur_angles [i]> angle_max [i])cur_angles [i] =angle_max [i]; else if(cur_angles [i]  
remote_arm.php PHP
このコードはウェブアプリです。
 <!DOCTYPEhtml>    Arduino-Arm Robot-Web       

Arduino-Web経由でアームロボットを制御

WebSocket: null

回路図

6つのモーターに外部電源を提供する必要があります

製造プロセス

  1. シンプルなパイロボット
  2. Arduinoコントロールセンター
  3. IoTを使用してロボットアームをリモート制御する
  4. サーボモーター付きロボット回避障害物
  5. ラインフォロワーロボット
  6. Arduino加湿器制御
  7. Arduino-シリアル経由でWebに温度を送信
  8. Littlearm 2C:3DプリントされたArduinoロボットアームを構築する
  9. 自律型ホームアシスタントロボット
  10. IntelCurieによるモーションセンシティブな回路制御
  11. 超クールな屋内ナビゲーション用ロボット