如果您需要創建一個項目並將其定位,那就知道 如何放置 關於空間,您可以使用模塊 主控板6050。 即,該模塊是具有6個自由度(DoF)的慣性測量單元或IMU(慣性測量單元)。 這要歸功於3軸加速度傳感器和3軸陀螺儀。
該MPU6050可以知道包含對象的放置位置,以用於 應用 導航,測角,穩定,手勢控制等。 移動電話通常包括這種類型的傳感器,例如,通過手勢控制某些功能,例如,如果智能手機被翻轉,則停止操作;通過將移動設備當作方向盤旋轉來在視頻遊戲中駕駛車輛等。
什麼是加速度計和陀螺儀?
好吧,讓我們分部分進行。 首先是要了解這些類型的傳感器是什麼 能夠檢測加速度和轉彎,可以從自己的名字推導出來。
- 加速度計:測量加速度,即單位時間的速度變化。 請記住,在物理學中,速度隨時間的變化(a = dV / dt)是加速度的定義。 根據牛頓第二定律,我們還有a = F / m,這就是加速度計用來工作的原理,也就是說,它們使用物體的力和質量參數。 為了能夠在電子學中實現,使用了MEMS(微電子機械系統)技術,該技術不同於傳統的電子芯片製造技術,因為機械零件是在MEMS中產生的。 在這種情況下,將創建能夠測量加速度的軌道或元素。 這意味著可以採用許多其他單位,例如速度(如果加速度在時間上積分),如果再次積分,我們有位移等。 也就是說,非常有趣的參數可以知道對象的位置或檢測對象的運動。
- 陀螺儀:又稱陀螺儀,它是一種測量物體角速度的設備,即單位時間的角位移或物體繞其軸旋轉的速度。 在這種情況下,MEMS技術還可以利用一種稱為科里奧利(Coriolis)的效應來測量該速度。 因此,可以測量角速度,或者通過將角速度相對於時間進行積分,可以獲得角位移。
MPU6050模塊
現在您知道了加速度計和陀螺儀是什麼, MPU6050模塊 是一種集成了這兩個元素的電子板,可讓您測量元素位置的這些變化,從而能夠產生反應。 例如,當物體移動時,LED會亮起,或者其他更複雜的事情。
就像我說的,它有6個自由軸,自由度, 3軸X,Y和Z加速度傳感器以及其他3軸陀螺儀 測量角速度。 您必須考慮不要在放置模塊的方式和測量的旋轉方向上犯錯誤,因為如果輸入錯誤的符號會有些混亂。 查看下圖,該圖指定了軸的方向(但是,請注意,PCB本身也在一側上進行了打印):
考慮到這一點, 引腳排列,或多或少,您都清楚可以開始使用MPU6050。 如上圖所示,連接非常簡單,它允許I2C通信與大多數微控制器(包括Arduino)兼容。 SCL和SDA引腳在板上有一個上拉電阻,可直接連接到Arduino板,因此您不必擔心自己添加它們。
要在I2C總線上同時使用兩個方向,您可以使用這些 針腳和方向:
- AD0 = 1或高電平(5v):適用於I0C地址69x2。
- AD0 = 0或低(GND或Nc):用於I0C總線的地址68x2。
請記住,該模型的工作電壓為3v3,但幸運的是,它具有內置穩壓器,因此可以毫無問題地將其與Arduino的5v兼容,並將其轉換為3.3v。
順便說一下,如果內部引腳連接到GND,如果未連接此引腳,則地址為 默認情況下它將是0x68,因為默認情況下它將接地,因此將其解釋為邏輯0。
與Arduino集成
你可以得到 有關I2C總線的更多信息 在本文中。 您已經知道,根據Arduino開發板,用於總線的引腳會有所不同,但是在 Arduino UNO 是模擬引腳 A4和A5,用於SDA(數據)和SCL(時鐘) 分別。 它們是唯一的Arduino引腳,以及應為板供電的5v和GND引腳。 因此,連接盡可能簡單。
對於MPU6050的功能,您可以使用其鏈接庫中的庫,您可以在該鏈接中獲取更多信息。 I2C 模塊的和總線的 主控板6050.
MPU6050的Arduino板編程不是太簡單,因此不適合初學者。 此外,了解加速度的極限或角度範圍後,您可以進行校準以確定確切的運動或加速度。 但是,為了至少可以有一個示例說明如何使用它,您可以從 Arduino IDE的示例草圖 它將讀取加速度計和陀螺儀記錄的值:
// 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); }
如果您是初學者而又不太了解 如何使用Arduino IDE進行編程這對您來說很難理解,因此您可以免費查閱Arduino編程入門課程的手冊...