Motor de Búsqueda de Datasheet de Componentes Electrónicos
  Spanish  ▼
ALLDATASHEET.ES

X  

  • CMPS5064

  • AI
    The **CMPS5064** is a high-performance **Magnetic Compass Module** designed for precision navigation in robotics and electronics. It is based on the Bosch BMM150 geomagnetic sensor and integrated with a high-speed MCU to provide stabilized heading data. --- ### 1. Key Technical Specifications | Parameter | Specification | |:---|:---| | **Operating Voltage** | 3.3V to 5.0V DC | | **Interface Types** | I2C, UART (Serial) | | **Output Data** | Heading (0-359.9°), Roll, Pitch | | **Resolution** | 0.1 Degree | | **Accuracy** | Approx. 1.0 to 2.0 Degrees | | **Operating Current** | < 20mA | --- ### 2. Core Electronic Components The module is not just a raw sensor; it is a "smart" module containing several critical sub-components: 1. **Magnetic Sensor (BMM150):** A 3-axis digital geomagnetic sensor that detects the Earth's magnetic field using FlipCore technology. 2. **Microcontroller (MCU):** An onboard processor (usually an ARM Cortex-M series) that handles the complex trigonometry required to convert raw magnetic flux into a degree-based heading. 3. **Voltage Regulator:** An LDO (Low Dropout) regulator that ensures the internal sensitive components receive a stable 3.3V even if the input is 5V. 4. **Logic Level Shifter:** Allows the module to communicate with both 3.3V (e.g., ESP32, Raspberry Pi) and 5V (e.g., Arduino Uno) logic levels without damage. --- ### 3. Pinout Configuration The module typically uses a 4-pin or 5-pin header for easy integration: | Pin Name | Function | Description | |:---|:---|:---| | **VCC** | Power | 3.3V - 5V Input | | **GND** | Ground | 0V Reference | | **RX / SDA** | Data In | UART Receive or I2C Serial Data | | **TX / SCL** | Data Out | UART Transmit or I2C Serial Clock | --- ### 4. Communication Modes #### UART (Serial) Mode In this mode, the module sends a continuous stream of ASCII or Hexadecimal data. It is the easiest to use with tools like "Serial Monitor." * **Baud Rate:** Usually 9600 or 115200 bps. #### I2C Mode Ideal for connecting multiple sensors to a single microcontroller. * **Address:** Typically defaults to `0x60` (can vary by manufacturer). --- ### 5. Key Implementation Code (Arduino I2C Example) ```cpp #include #define CMPS_ADDR 0x60 // Standard I2C address void setup() { Wire.begin(); Serial.begin(9600); } void loop() { Wire.beginTransmission(CMPS_ADDR); Wire.write(1); // Command to read heading Wire.endTransmission(); Wire.requestFrom(CMPS_ADDR, 2); // Request 2 bytes if (Wire.available() >= 2) { byte highByte = Wire.read(); byte lowByte = Wire.read(); float heading = ((highByte << 8) + lowByte) / 10.0; Serial.print("Current Heading: "); Serial.println(heading); } delay(100); } ```
    ✨ Follow-up Questions
    • How do you calibrate the CMPS5064 to account for local magnetic interference?
    • What is the difference between the CMPS5064 and the CMPS14 model?
    • Can this module be used alongside a GPS for autonomous navigation?