

The Matek AP_Periph CAN Digital Power Monitor (Model: CAN-L4-BM) is a high-precision power monitoring module designed for use in UAVs, robotics, and other embedded systems. It leverages the UAVCAN protocol for seamless integration with modern flight controllers and other CAN-enabled devices. This module provides real-time monitoring of voltage, current, and power consumption, making it an essential component for applications requiring accurate power management and telemetry.








The following table outlines the key technical specifications of the Matek AP_Periph CAN Digital Power Monitor:
| Parameter | Value |
|---|---|
| Input Voltage Range | 6V to 60V |
| Current Measurement Range | 0A to 200A (with external shunt resistor) |
| Communication Protocol | UAVCAN (CAN bus) |
| Microcontroller | STM32L4 series |
| Power Consumption | < 0.5W |
| Operating Temperature | -20°C to 85°C |
| Dimensions | 30mm x 20mm x 5mm |
| Weight | 5g |
The Matek AP_Periph CAN Digital Power Monitor features the following pinout:
| Pin Name | Description |
|---|---|
| VIN+ | Positive input voltage terminal (connect to battery +) |
| VIN- | Negative input voltage terminal (connect to battery -) |
| CANH | CAN bus high signal |
| CANL | CAN bus low signal |
| GND | Ground connection |
| VCC | Power supply for the module (5V input) |
To interface the Matek AP_Periph CAN Digital Power Monitor with an Arduino UNO, you will need a CAN transceiver module (e.g., MCP2515). Below is an example code snippet:
#include <SPI.h>
#include <mcp_can.h>
// Define CAN bus pins for MCP2515
#define CAN_CS 10 // Chip Select pin
#define CAN_INT 2 // Interrupt pin
MCP_CAN CAN(CAN_CS); // Create CAN object
void setup() {
Serial.begin(115200);
while (!Serial);
// Initialize MCP2515 CAN module at 500kbps
if (CAN.begin(MCP_ANY, 500000, MCP_8MHZ) == CAN_OK) {
Serial.println("CAN bus initialized successfully!");
} else {
Serial.println("CAN bus initialization failed!");
while (1);
}
CAN.setMode(MCP_NORMAL); // Set CAN module to normal mode
Serial.println("CAN module set to normal mode.");
}
void loop() {
// Check for incoming CAN messages
if (CAN.checkReceive() == CAN_MSGAVAIL) {
long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];
// Read CAN message
CAN.readMsgBuf(&rxId, &len, rxBuf);
// Print received message ID and data
Serial.print("Message ID: 0x");
Serial.println(rxId, HEX);
Serial.print("Data: ");
for (int i = 0; i < len; i++) {
Serial.print(rxBuf[i], HEX);
Serial.print(" ");
}
Serial.println();
}
}
Note: Ensure the MCP2515 library is installed in your Arduino IDE. This code initializes the CAN bus and listens for incoming messages from the Matek AP_Periph CAN Digital Power Monitor.
No Data on CAN Bus:
Inaccurate Measurements:
Module Not Powering On:
By following this documentation, users can effectively integrate and utilize the Matek AP_Periph CAN Digital Power Monitor in their projects.