プロジェクトを作成して配置する必要がある場合、つまり、 どのように配置されますか スペースに関しては、モジュールを使用できます MPU6050。 つまり、このモジュールは、6自由度(DoF)の慣性測定ユニットまたはIMU(慣性測定ユニット)です。 これは、3軸加速度計タイプのセンサーと3軸ジャイロスコープのおかげです。
このMPU6050は、含まれているオブジェクトがで使用するためにどのように配置されているかを知ることができます。 アプリケーション ナビゲーション、ゴニオメトリー、安定化、ジェスチャーコントロールなど。 携帯電話には通常、このタイプのセンサーが搭載されており、たとえば、スマートフォンを裏返した場合の停止、ハンドルのように携帯電話を回してビデオゲームで車両を運転するなどのジェスチャーで特定の機能を制御します。
加速度計とジャイロスコープとは何ですか?
さて、部分的に行きましょう。 まず、これらのタイプのセンサーが何であるかを確認することです 加速度と方向転換を検出することができます、自分の名前から推測できるように。
- 加速度計:加速度、つまり単位時間あたりの速度の変化を測定します。 物理学では、時間による速度の変化(a = dV / dt)が加速度の定義であることを忘れないでください。 ニュートンの第XNUMX法則によれば、a = F / mもあります。これは、加速度計が機能するために使用するものです。つまり、物体の力と質量のパラメーターを使用します。 これを電子機器に実装できるように、MEMS(Micro Electro Mechanical Systems)技術が使用されます。これは、機械部品がMEMSで作成されるため、従来の電子チップ製造技術とは異なります。 この場合、加速度を測定できるトラックまたは要素が作成されます。 これは、速度(加速度が時間に統合されている場合)、再度統合されている場合、変位など、他の多くの単位を取得できることを意味します。 つまり、オブジェクトの位置を知ったり、オブジェクトの動きを検出したりするための非常に興味深いパラメータです。
- ジャイロスコープ:ジャイロスコープとも呼ばれ、物体の角速度、つまり単位時間あたりの角変位、または物体がその軸を中心に回転する速度を測定するデバイスです。 この場合、コリオリと呼ばれる効果を使用してこの速度を測定するために、MEMS技術も使用されます。 これにより、角速度を測定したり、角速度を時間で積分したりすることで、角変位を求めることができます。
MPU6050モジュール
加速度計とジャイロスコープが何であるかがわかったので、 MPU6050モジュール は、これらXNUMXつの要素を統合して、要素の位置のこれらの変化を測定し、反応を生成できるようにする電子ボードです。 たとえば、オブジェクトが移動するとLEDが点灯したり、その他のはるかに複雑なことをしたりします。
私が言ったように、それは6つの自由軸、DoF、 3軸X、Y、Z加速度加速度計、およびその他の3軸ジャイロスコープ 角速度を測定します。 モジュールの配置方法や測定の回転方向を間違えないように注意する必要があります。間違った符号を付けると少し混乱するからです。 軸の方向を指定している次の画像を見てください(ただし、PCB自体にも片面に印刷されていることに注意してください)。
これを考慮して ピン配置、多かれ少なかれ、MPU6050の使用を開始するためのすべてが明確になっています。 前の画像でわかるように、接続は非常に単純であり、I2C通信をArduinoを含むほとんどのマイクロコントローラーと互換性があります。 SCLピンとSDAピンには、Arduinoボードに直接接続するためのプルアップ抵抗がボード上にあるため、自分で追加する必要はありません。
I2Cバスで両方向を操作するには、これらを使用できます ピンと方向:
- AD0 = 1またはHigh(5v):I0Cアドレス69x2の場合。
- AD0 = 0またはLow(GNDまたはNc):I0Cバスのアドレス68x2用。
モデルの動作電圧は3v3ですが、幸いなことにレギュレーターが組み込まれているため、Arduinoの5vに問題なく切り替えることができ、3.3vに変換されます。
ちなみに、GNDへの内部抵抗があるので、このピンが接続されていない場合、アドレス デフォルトでは0x68になります、デフォルトでアースに接続されるため、論理0として解釈されます。
Arduinoとの統合
得られる I2Cバスに関する詳細情報 記事上で。 Arduinoボードに応じてバスに使用されるピンが異なることはすでにご存知ですが、 Arduino UNO アナログピンです A4およびA5、SDA(データ)およびSCL(クロック)用 それぞれ。 これらは、ボードに電力を供給するための5vおよびGNDピンとともに、使用する必要がある唯一のArduinoピンです。 したがって、接続は可能な限り簡単です。
MPU6050の機能については、このリンクで詳細情報を入手できるライブラリを使用できます。 I2C モジュールのそれとバスのそれ MPU6050.
ArduinoボードプログラミングはMPU6050ではそれほど単純ではないため、初心者向けではありません。 さらに、加速度の限界または角度の範囲がわかっているので、正確な動きまたは加速度が何であるかを判断するためにキャリブレーションを行うことができます。 ただし、少なくともそれを使用することについてコメントする方法の例を持つことができるように、あなたはからこのコードを見ることができます ArduinoIDEのスケッチ例 これは、加速度計とジャイロスコープによって記録された値を読み取ります:
// Bibliotecas necesarias: #include "I2Cdev.h" #include "MPU6050.h" #include "Wire.h" // Dependiendo del estado de AD0, la dirección puede ser 0x68 o 0x69, para controlar así el esclavo que leerá por el bus I2C MPU6050 sensor; // Valores RAW o en crudo leidos del acelerometro y giroscopio en los ejes x,y,z int ax, ay, az; int gx, gy, gz; void setup() { Serial.begin(57600); //Función para iniciar el puerto serie con 57600 baudios Wire.begin(); //Inicio para el bus I2C sensor.initialize(); //Iniciando del sensor MPU6050 if (sensor.testConnection()) Serial.println("Sensor iniciado correctamente"); else Serial.println("Error al iniciar el sensor"); } void loop() { // Leer las aceleraciones y velocidades angulares sensor.getAcceleration(&ax, &ay, &az); sensor.getRotation(&gx, &gy, &gz); // Muestra las lecturas que va registrando separadas por una tabulación Serial.print("a[x y z] g[x y z]:\t"); Serial.print(ax); Serial.print("\t"); Serial.print(ay); Serial.print("\t"); Serial.print(az); Serial.print("\t"); Serial.print(gx); Serial.print("\t"); Serial.print(gy); Serial.print("\t"); Serial.println(gz); delay(100); }
初心者でよくわからない場合 ArduinoIDEでプログラミングする方法、これは理解しにくいので、Arduinoプログラミング入門コースのマニュアルを無料で参照できます...