このプロジェクトでは、フォースセンサーとArduinoUnoを使用した楽しい回路を開発します。この回路は、センサーに加えられた力に線形に関連する音を生成します。そのために、FORCEセンサーをArduinoUnoとインターフェースさせます。UNOでは、8ビットADC(アナログ-デジタル変換)機能を使用して作業を行います。
力センサーまたは力に敏感な抵抗器
FORCEセンサーは、表面に圧力がかかると抵抗が変化するトランスデューサーです。 FORCEセンサーは、さまざまなサイズと形状で利用できます。ここではあまり精度を必要としないため、より安価なバージョンの1つを使用します。FSR400は、市場で最も安価な力センサーの1つです。 FSR400の写真を下図に示します。それらは、加えられた力または圧力に応じて抵抗が変化するため、力に敏感な抵抗またはFSRとも呼ばれます。この力検出抵抗器に圧力が加えられると、その抵抗は減少します。つまり、抵抗は加えられた力に反比例します。そのため、圧力がかかっていない場合、FSRの抵抗は非常に高くなります。
ここで、FSR 400は長さに沿って敏感であることに注意することが重要です。図に示すように、力または重量はセンサーの目の中央にある迷路に集中する必要があります。力が間違った時間に加えられた場合、デバイスは永久に損傷する可能性があります。
知っておくべきもう1つの重要なことは、センサーが高範囲の電流を駆動できることです。したがって、インストール中は駆動電流に注意してください。また、センサーには10ニュートンの力の制限があります。したがって、1Kgの重量しか適用できません。1Kgを超える重量が適用された場合、センサーに多少の偏差が見られる場合があります。3Kg以上増加した場合。センサーが恒久的に損傷する可能性があります。
前に述べたように、このセンサーは圧力の変化を感知するために使用されます。そのため、FORCEセンサーの上にウェイトをかけると、抵抗が大幅に変化します。重量に対するFS400の抵抗を下のグラフに示します。
上図に示すように、センサーの2つの接点間の抵抗は重量とともに減少するか、センサーの2つの接点間のコンダクタンスが増加します。純粋な導体の抵抗は次の式で与えられます。
どこ、
p-導体の抵抗率
l =導体の長さ
A =導体の面積。
ここで、抵抗「R」の導体について考えます。導体の上部に圧力がかかると、圧力の結果として導体の面積が減少し、導体の長さが増加します。したがって、式により、抵抗Rは面積に反比例し、長さlにも正比例するため、導体の抵抗は増加するはずです。
したがって、これにより、圧力または重量がかかっている導体の場合、導体の抵抗が増加します。しかし、この変化は全体的な抵抗に比べて小さいです。かなりの変更のために、多くの導体が一緒に積み重ねられています。これは、上の図に示されている力センサーの内部で発生することです。よく見ると、センサーの内側に多くの線が見えます。これらの線はそれぞれ導体を表しています。センサーの感度は導体番号にあります。
ただし、この場合、ここで使用されている材料は純粋な導体ではないため、抵抗は圧力とともに減少します。ここでのFSRは、堅牢なポリマー厚膜(PTF)デバイスです。したがって、これらは純粋な導体材料デバイスではありません。これらは、センサーの表面に加えられる力の増加とともに抵抗の減少を示す材料で構成されています。この材料は、FSRのグラフに示すような特性を示しています。
この抵抗の変化は、私たちがそれらを読めない限り、何の役にも立ちません。手元のコントローラーは、電圧の可能性のみを読み取ることができます。これには、分圧回路を使用します。これにより、電圧の変化として抵抗の変化を導き出すことができます。
分圧器は抵抗回路であり、図に示されています。この抵抗ネットワークには、1つの一定の抵抗と他の可変の抵抗があります。図に示すように、ここでのR1は一定の抵抗であり、R2は抵抗として機能するFORCEセンサーです。分岐の中点が測定されます。R2の変更により、Voutで変更があります。したがって、これにより、重量によって電圧が変化します。
ここで注意すべき重要なことは、ADC変換のためにコントローラーが受け取る入力が50µAmpと低いことです。分圧器のVoutから引き出される電流がエラー率を増加させるため、抵抗ベースの分圧器のこの負荷効果は重要です。今のところ、負荷効果について心配する必要はありません。
FSRセンサーの確認方法
力検出抵抗は、マルチメータを使用してテストできます。FSRセンサーの2つのピンを力を加えずにマルチメーターに接続し、抵抗値を確認します。非常に高くなります。次に、その表面に力を加えて、抵抗値の減少を確認します。
FSRセンサーの応用
力検出抵抗器は、主に圧力検出「ボタン」を作成するために使用されます。これらは、車の占有センサー、抵抗膜方式タッチパッド、ロボットの指先、義肢、キーパッド、足回内システム、楽器、組み込み電子機器、試験および測定機器、OEM開発キット、携帯用電子機器、スポーツなど、さまざまな分野で使用されています。 。これらは、拡張現実システムやモバイルインタラクションの強化にも使用されます。
必要なコンポーネント
ハードウェア: Arduino Uno、電源(5v)、1000 uFコンデンサ、100nFコンデンサ(3個)、100KΩ抵抗、ブザー、220Ω抵抗、FSR400力センサー。
ソフトウェア: Atmel studio6.2またはAurdino毎晩
回路図と動作説明
力検出抵抗器をArduinoに接続するための回路接続を下の図に示します。
センサーの両端の電圧は完全に線形ではありません。うるさいものになります。ノイズを除去するために、図に示すように、分圧回路の各抵抗の両端にコンデンサが配置されます。
ここでは、分圧器によって提供される電圧(重量を線形に表す電圧)を取得し、UNOのADCチャネルの1つに供給します。変換後、そのデジタル値(重量を表す)を取得し、ブザーを駆動するためのPWM値に関連付けます。
したがって、重みを使用すると、デジタル値に応じてデューティ比が変化するPWM値が得られます。デジタル値が高いほど、PWMのデューティ比が高くなるため、ブザーによって生成されるノイズが高くなります。そこで、重量を音に関連付けました。
先に進む前に、ArduinoUnoのADCについて話しましょう。図に示すように、ARDUINOには6つのADCチャネルがあります。それらでは、それらのいずれかまたはすべてをアナログ電圧の入力として使用できます。UNO ADCの分解能は10ビットです(したがって、(0-(2 ^ 10)1023)の整数値)。これは、0〜5ボルトの入力電圧を0〜1023の整数値にマッピングすることを意味します。 (5/1024 = 4.9mV)/ユニット。
ここではUNOのA0を使用します。
私たちはいくつかのことを知る必要があります。
|
まず、UNOADCチャネルのデフォルトの基準値は5Vです。これは、任意の入力チャネルでのADC変換に5Vの最大入力電圧を与えることができることを意味します。一部のセンサーは0〜2.5Vの電圧を提供するため、5Vのリファレンスでは精度が低下します。そのため、このリファレンス値を変更できるようにする命令があります。したがって、参照値を変更するために、(「analogReference();」)を残します。
デフォルトでは、10ビットの最大ボードADC解像度が得られます。この解像度は、命令(「analogReadResolution(bits);」)を使用して変更できます。この解像度の変更は、場合によっては便利です。今のところ、そのままにしておきます。
上記の条件がデフォルトに設定されている場合、関数「analogRead(pin);」を直接呼び出すことにより、チャネル「0」のADCから値を読み取ることができます。ここで「pin」はアナログ信号を接続したピンを表します。この場合は「A0」になります。ADCからの値は、「int SENSORVALUE = analogRead(A0);」のように整数に変換できます。」、この命令により、ADCが整数「SENSORVALUE」に格納された後の値。
Arduino UnoのPWMは、PCBボード上の「〜」で表される任意のピンで実現できます。UNOには6つのPWMチャネルがあります。PIN3を目的に使用します。
AnalogWrite(3、VALUE); |
上記の条件から、対応するピンでPWM信号を直接取得できます。括弧内の最初のパラメータは、PWM信号のピン番号を選択するためのものです。2番目のパラメータはデューティ比を書き込むためのものです。
UNOのPWM値は0から255まで変更できます。「0」を最低から「255」を最高にします。デューティ比として255を使用すると、PIN3で5Vが得られます。デューティ比が125と指定されている場合、PIN3で2.5Vが得られます。
これで、ADC出力として0〜1024の値、PWMデューティ比として0〜255の値が得られます。したがって、ADCはPWM比の約4倍です。したがって、ADCの結果を4で割ると、おおよそのデューティ比が得られます。
これにより、デューティ比が重量に比例して変化するPWM信号が得られます。これをブザーに当てて、重量に応じた音源を用意しています。