Como usar o módulo MCP2515 CAN Bus com Arduino
By Kunkune | Published: 2026-10-17
Category: Guias Práticos
Aprenda a ligar e programar o módulo de barramento CAN MCP2515 com Arduino para comunicação veicular ou industrial. Guia passo a passo com erros comuns.
Resposta Rápida
Para usar o módulo CAN bus MCP2515 com Arduino, ligue os seus pinos SPI (CS, SCK, MOSI, MISO) e alimente-o com 5V, depois instale a biblioteca MCP_CAN e envie ou receba tramas CAN com sketches simples. O transceiver TJA1050 no módulo trata da sinalização CAN física, por isso só precisa de ligar CANH e CANL ao seu barramento. Este guia explica a cablagem, a configuração da biblioteca e um exemplo básico de envio/receção.
Ligar o MCP2515 ao Arduino
O módulo MCP2515 utiliza comunicação SPI, por isso liga-o aos pinos SPI do Arduino: CS ao pino 10 (padrão), SCK ao 13, MOSI ao 11 e MISO ao 12 num Uno. Alimente o módulo com 5V e terra. Para o lado do barramento CAN, ligue CANH e CANL às suas linhas de barramento; se estiver a testar com dois módulos, ligue CANH a CANH e CANL a CANL. Adicione uma resistência de terminação de 120 ohm em cada extremidade do barramento para evitar reflexões.
Instalar a Biblioteca CAN
A biblioteca mais comum é a MCP_CAN por coryj Fowler, disponível no Gestor de Bibliotecas do Arduino. Procure por 'MCP_CAN' e instale-a. Após a instalação, inclua a biblioteca no seu sketch e inicialize o controlador CAN com o pino CS SPI correto e a taxa de transmissão, tipicamente 500kbps para OBD-II automóvel.
Enviar e Receber Tramas CAN
Para enviar uma trama, use sendMsgBuf(id, ext, len, buf). Para receber, verifique CAN_MSGAVAIL com checkReceive() e leia com readMsgBuf(). O MCP2515 trata do protocolo CAN de baixo nível, por isso o seu código apenas lida com IDs de mensagem e bytes de dados. Lembre-se que o CAN é broadcast: cada nó vê todas as mensagens, e filtra por ID no software.
Configuração Passo a Passo
- Ligue o hardware: Ligue o módulo MCP2515 ao Arduino: VCC a 5V, GND a GND, CS ao pino 10, SCK ao 13, MOSI ao 11, MISO ao 12. Ligue CANH e CANL ao seu barramento. Verifique novamente se não trocou MOSI e MISO — este é um erro comum.
- Instale a biblioteca MCP_CAN: Abra o Gestor de Bibliotecas do Arduino, procure por 'MCP_CAN' e instale a versão mais recente. Inclua-a no seu sketch com #include . Se a biblioteca não for encontrada, verifique a ortografia e a ligação à internet.
- Inicialize o controlador CAN: Crie um objeto MCP_CAN com o pino CS (ex: MCP_CAN CAN0(10)). Em setup(), chame CAN0.begin(CAN_500KBPS) e verifique o valor de retorno. A chamada begin() retorna CAN_OK (0) em caso de sucesso; caso contrário, verifique a cablagem e a taxa de transmissão.
- Envie uma mensagem CAN: Prepare um buffer de dados e chame CAN0.sendMsgBuf(0x123, 0, 8, data); onde 0x123 é o ID da mensagem e 8 é o comprimento dos dados. Certifique-se de que o ID não entra em conflito com outros nós no barramento.
- Receba mensagens CAN: Em loop(), verifique se uma mensagem está disponível com CAN0.checkReceive() == CAN_MSGAVAIL, depois leia-a com CAN0.readMsgBuf(&len, buf). Se não vir mensagens, verifique se o barramento tem terminação adequada e se todos os nós partilham a mesma taxa de transmissão.
Factos do Produto
- Módulo SPI MCP2515 CAN Bus com Recetor TJA1050: Ideal para monitorização e controlo de OBDII / CAN BUS automóvel. Este módulo está pronto para diagnósticos automóveis, permitindo-lhe aceder à porta OBD-II de um veículo ou construir nós CAN personalizados para monitorização e controlo.
