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

ポータブルレンジ検出器

コンポーネントと消耗品

>
Arduino Nano R3
× 1
超音波センサー-HC-SR04(汎用)
× 1
18650セル
× 1
TP4056リチウムイオン充電器
× 1
DC-DC5Vブーストコンバーター
× 1
ブザー
× 1
ロータリーポテンショメータ(汎用)
× 1
スライドスイッチ
× 1
LED(汎用)
赤(2)、緑(1)、青(1)
× 4
抵抗330オーム
× 2
OpenBuildsM3キャップヘッドネジ
10mm M3ボルト(4)
× 1
ワイヤー
18 AWG
× 1
3Dプリントパーツ
エンクロージャー用の3つのパーツ
× 1
スレッドアダプター
× 1

必要なツールとマシン

>
3Dプリンター(汎用)
AnetA8を使用しました
はんだごて(汎用)
ホットグルーガン(汎用)
Dremel
または任意の回転ツール

アプリとオンラインサービス

>
Arduino IDE
NewPingライブラリをダウンロードする必要があります
Simplify3D
または任意のスライサー

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

はじめに

リーマンカレッジ運動科学部は、ウェイトトレーニングに関する研究を行っていました。繰り返しの可動域に不一致があり、データに大きな影響を与える可能性がありました。私は、機械またはより大きなウェイトを使用したエクササイズの全可動域を識別するデバイスを作成するように求められました。

デバイスは、次の条件を満たす必要があります :

  • 調整可能な距離
  • マシンに恒久的に固定されているわけではありません。
  • 三脚対応
  • ワイヤーなし

ビデオ

パーツ

ほとんどのパーツを以下に示しますが、完全なリストについては、上記のBOMを参照してください。使用する部品は、最適であるという理由ではなく、選択されています。それは私が一緒に働かなければならなかったものです。カスタムPCB、SMTコンポーネント、またはLiPoバッテリーを使用すると、フットプリントを大幅に削減できます。

<図> <図>

コード

NewPingライブラリは、コード(下部に提供)をコンパイルするために必要です。

ブザーの頻度と上限/下限は、変更可能なグローバル変数です。上限/下限は、センサーが読み取る最小距離と最大距離を指し、ポテンショメーターからのアナログ値[0,5] Vにマッピングされます。

  int周波数=700; //周波数(Hz)
int lower_bound =60; //距離(mm)
int upper_bound =200; //距離(mm)

電源投入時にビープ音が3回鳴り、起動が成功したことを示します( setup()を参照してください。 ループ)。次に、 loop() 超音波センサーに継続的にデータを要求し、それをポテンショメーターによって設定されたしきい値と比較します。

3Dプリント

すべてのファイルがthingiverseにアップロードされているか、ページの下部に1つの要約ファイルがあります。 CADの使用方法についてはここでは説明しません。モデルは、3Dプリントの制限を考慮して作成されました。 45度の面取りを使用することでオーバーハングを最小限に抑え、サポート材料を削減しました。クリアランスは寛大だったので、異なるキャリブレーションのプリンターで印刷されたとしても、パーツは収まるはずです。

<図> <図>

印刷時間は異なりますが、私の印刷時間 次のとおりでした:

  • トップピース:2時間40分
  • ボトムピース:2時間20分
  • ノブ:20分

組み立て

回路図は下部にあります ページの。部品は配線せずに挿入し、適合を確認します。

<図> <図>

回収されたIDEケーブルがすべてのワイヤを提供しました。ワイヤーのグループは、互いに接続されたままで剥がすことができます。これにより、ある程度の秩序が得られます。

<図> <図>

ほとんどの電子機器は印刷された部品の1つに取り付けられているため、配線の配線と管理に注意を払う必要があります。

TP4056ボードのSMDインジケータLEDははんだ除去されました。延長ワイヤーと3mmTHTLEDが代わりにはんだ付けされました。電流制限抵抗はまだボードに統合されています。この移転を行っている誰かのビデオがあります。

<図>

arduino nanoにはアクセス可能なグラウンドパッドが2つしかないため、ストリップボードを使用してグラウンドパッドの数を増やしました。下の写真で見ることができる5Vラインでも同じことが行われました。

<図> <図>

5Vがアースに短絡しないように、ストリップの接続を切断する必要があります。赤い「X」は休憩の場所を示しています。グラスファイバーボード全体ではなく、上部の銅のみを破壊する必要があります。

コンポーネントはエンクロージャーの外側に配線されました。それらは、ワイヤーの長さを測定し、ワイヤーの干渉をチェックするために、エンクロージャーに取り付けられることがありました。

<図>

ポテンショメータは、あまり突出しないように6mmトリミングしました。

<図>

18650への接続は直接はんだ付けされていましたが、これは悪い習慣です。セルを過熱するとセルが損傷し、時間の経過とともに故障する可能性があります。アルミニウムストリップをスポット溶接することは、18650を接続する正しい方法です。

電子機器を固定するために、恥ずかしそうにホットグルーが使用されました。可能な限り、ホットグルーの使用は避けてください。正しい機械設計と留め具は、ホットグルーよりも長持ちします。時間の経過とともにフェイルオーバーすることになります。プロトタイプでは理解できますが、製造部品でホットグルーを使用することはありません。

<図>

まとめ

振り返ってみると、超音波よりも赤外線センサーを使用したほうがよかったのですが、超音波センサーの実験を始めるまで、これを知る方法はありませんでした。 IRセンサーのFOVは狭く、最大距離ははるかに短くなります(〜3ft)。

2番目のバージョンがある場合は、LiPoが18650に置き換わります。大きな刻み付きアダパーナットは重く、スペースを消費します。三脚マウントの標準ネジは1/4 "なので、金物店の単純な1/4"ナットで十分です。カスタムPCBは、ボリュームを半分に減らします。

コンセプトから2週間以内に引き渡すために考案されたプロトタイプについては、私は満足しています。

プロジェクトの将来

私が超音波センサーを実験していたとき、私はその限界についてもっと学びました。 1つ目は、そのFOVの角度が約±15°(合計30°)であるということです。これは、オブジェクトがセンサーの真上に来る前にブザーをトリガーできることを意味しました。これにより、不正確で望ましくない読み取り値が生成されます。さらに、オブジェクトの平面が送信された音波に対して垂直でない(または許容角度内にない)場合、センサーは反射波を受信せず、距離の値を処理できません。

私の最初の計画は、ユニットを地面に置き、ウェイトトレーニングバーのプレートがしきい値を超えて下がったときにブザーをトリガーできるようにすることでした。このシステムは、固定センサーと移動トリガーで構成されていました。私の仲間のエンジニアリング仲間は、システムを反転させることを含む代替ソリューションを提案しました。彼は、センサーを地面に向けながら、可動バーに取り付けることを提案しました。このようにして、地面が引き金になりました。また、前述のように広いFOVによる不正確さも排除しました。

この提案は、与えられた問題に対する優れた解決策であるだけでなく、実装も非常に簡単です。 1/4 "三脚ナットアダプターの注文には、1/4"-> 3/8 "アダプターと3/8"-> 1/4 "アダプターが付属していました。2番目のアダプターが実際に使用されます!

私が最初に3Dモデルを始めたとき、私はドレメルにアクセスできなかったので、それは私に三脚アダプター全体を説明することを余儀なくさせました。これを18650セルと組み合わせると、重量が大幅に増加しました。必要以上に重量を追加したくないので、マウントをモデル化する前に2番目の三脚アダプターを削減します。この代替の取り付けソリューションを完了するために、1週間以内にプロジェクトに戻ります。それまでは、それでも機能します!

コード

  • RangeDetectionDevice.ino
RangeDetectionDevice.ino Arduino
 / ** Viktor Silivanov 2018年3月22日ブザーをトリガーするための距離調整機能を備えたHC-SR04超音波センサーを使用したポータブル距離検出デバイス。** /// ************* *******ライブラリ****************************************** ************************************************** ************************************************** ************************************************** ****************#include  // ********************ピン**** ************************************************** ************************************************** ************************************************** ************************************************** ******** //アナログピン#defineワイパーA5 //デジタルピン#defineエコー2#defineトリガー3#define ON_LED 7#defineブザー8#define buzzer_LED 9 // ******** ************グローバル変数************************************ ************************************************** ******************************************* ************************************************** ********************** //ユーザーの変更許容頻度=700; // Hzintの周波数lower_bound =60; // mmintでの距離upper_bound =200; //距離(mm)//変更しないでくださいint buzz_time =250; //起動直後のブザーのミリ秒単位の時間intbuzz_delay =280; //起動直後のブザー遅延のミリ秒単位の時間intmax_distance =400; // NewPingライブラリ内のオブジェクトの引数inti =0; int distance; int threshold; NewPingソナー(trig、echo、max_distance); //オブジェクト「sonar」のインスタンス化// ********************セットアップ******************* ************************************************** ************************************************** ************************************************** ******************************************* //この関数は1回だけ実行されますvoid setup(){Serial.begin(9600); //ボーレート9600のシリアルモニターの使用を許可します//ピンI / Oタイプ宣言pinMode(trig、OUTPUT); pinMode(echo、INPUT); pinMode(ブザー、出力); pinMode(buzzer_LED、OUTPUT); pinMode(ON_LED、OUTPUT); digitalWrite(ON_LED、HIGH); //緑色のLEDをオンにします;ユニットがオンになっている間オンのまま//デバイスの電源をオンにするとブザーが3回ビープ音を鳴らしますwhile(i <3){digitalWrite(buzzer_LED、HIGH);トーン(ブザー、頻度、buzz_time); delay(buzz_delay); i ++; } digitalWrite(buzzer_LED、LOW);} // ********************無限に実行***************** ************************************************** ************************************************** ************************************************** ************************************ void loop(){distance =sonar.ping_cm(); //オブジェクト "sonar"は、ライブラリのping_cm()関数を利用します。この関数はcm単位の値を返します。次に、距離はその値のしきい値を取ります=analogRead(wiper); //ポテンショメータのワイパーからアナログ値を取得しますthreshold =map(threshold、0、1023、lower_bound、upper_bound); //アナログ読み取り値をトリガー範囲に変換します。しきい値の値を更新するif(distance!=0 &&distance  

カスタムパーツとエンクロージャー

3つの部分すべてが1つのファイルに保存されます

回路図


製造プロセス

  1. TinyML-言語検出器-エッジインパルスとArduinoに基づく
  2. MPU-6050を搭載したArduinoジャイロスコープゲーム
  3. Arduino Digital Dice
  4. DIY 37LEDルーレットゲーム
  5. ATtiny85ミニアーケード:スネーク
  6. Arduinoオーディオリアクティブデスクライト
  7. スマートフェイストラッキングロボットカー
  8. 銅による電気めっき
  9. NeoMatrix Arduino Pong
  10. ポータブル温度ステーション
  11. ライトシーケンスクリエーター