Comunicação CAN entre PIC e Arduino

Resumo:

Este projeto ajuda na compreensão dos insights do protocolo CAN que faz a interface de dois microcontroladores diferentes, por exemplo, PIC e Arduino. Controller Area Network ou protocolo CAN é uma metodologia de comunicação entre diversos dispositivos eletrônicos como sistemas de gerenciamento de motor, controle de marcha, suspensão ativa, ABS, controle de iluminação, ar condicionado, airbags, travamento central etc. Para mais aprendizados, consulte este artigo.

Aqui você terá uma ideia sobre a programação do Microcontrolador PIC para fazer interface com o Controlador CAN (MCP2515) para atuar como um transceptor. Aqui são utilizados um Microcontrolador PIC16f887 e um Arduino, um é para detectar a temperatura usando LM35 e outro é para exibir os valores recebidos através do CAN BUS.

Descrição:

Pré-requisitos e equipamentos:

Você precisará do seguinte:

  1. Um PIC16F877A e uma placa Arduino ou clone do Arduino (aqui está um guia se você precisar)

  2. Um módulo Bluetooth 5v TTL-UART.

  3. Sensor de temperatura LCD e LM35.

  4. Arduino IDE para a programação.

  5. Dois PODEM Tranciever.

Princípio de trabalho:

Este projeto inclui duas partes distintas, seção do transmissor e uma seção do receptor. A seção do receptor consiste em um Arduino e um LCD para mostrar a leitura de temperatura recebida do barramento CAN. A seção do transmissor consiste em um sensor LM35 interligado com PIC16F877A. A comunicação entre ambas as seções é realizada pelo transceptor CAN MCP2515.

Implementação do barramento CAN do sensor de temperatura:

O diagrama de blocos do projeto é mostrado na Figura. O sistema é composto por dois nós CAN. Nó DISPLAY que lê a temperatura do barramento CAN e a exibe em um LCD. Este processo é repetido continuamente. O outro nó denominado nó COLLECTOR lê a temperatura de um sensor de temperatura LM35.

Visão geral da comunicação do microcontrolador Arduino e PIC pela interface CAN

Fig. 1: Visão geral da comunicação do microcontrolador Arduino e PIC pela interface CAN

O processador de exibição:

O processador DISPLAY consiste em um Arduino com um módulo CAN MCP2515 e um chip transceptor TJA1040. O microcontrolador é operado a partir de um cristal de 16MHz. E o MCP2515 possui uma interface SPI que é usada para conectar usando pinos SPI no Arduino. Os pinos CANH e CANL do chip transceptor estão conectados ao barramento CAN. O LCD está conectado ao Arduino para exibir os valores de temperatura.

Recebendo dados CAN e controlando relés:

Carregue o programa RX.ino depois de salvá-lo em seu computador e abra-o no Arduino IDE.

  • Compile o programa no Arduino IDE

A função a seguir é usada para receber os valores do barramento CAN e exibi-los em um LCD. Instruções detalhadas podem ser encontradas aqui.

CAN.readMsgBuf(&len, buf);

Carregando software para Arduino:

Se você é novo no Arduino, pode começar com aqui. Você deve começar com o Arduino IDE (Integrated Development Environment) de Arduino . Baixe o código no link abaixo e carregue-o na placa Arduino.

O processador COLETOR:

O processador COLLECTOR consiste em um microcontrolador PIC18F887 com um módulo CAN MCP2515 e um chip transceptor TJA1040. O PIC18F887 é operado a partir de um cristal de 8 MHz. A entrada MCLR é conectada a um botão de reinicialização externo. O sensor de temperatura semicondutor do tipo LM35DZ é conectado à entrada analógica AN0 do microcontrolador. O sensor gera uma tensão analógica diretamente proporcional à temperatura medida, a saída é de 10 mV/C. Por exemplo, a 20 graus Celsius, a tensão de saída é de 200 mV. As saídas CANH e CANL deste chip são conectadas diretamente a um cabo trançado que termina no barramento CAN. O TJA1040 é um chip de 8 pinos que suporta taxas de dados de até 1 Mb/s. O chip pode acionar até 112 nós. Uma tensão de referência igual a VDD/2 é emitida do pino 5 do chip.

Para alterar a velocidade do Módulo Can MCP2515 no lado do coletor, você pode usar o software da calculadora fornecido pela MikroC. Baixe o arquivo incluído na parte inferior para obter o software.

Captura de tela dos cálculos CAN feitos para o microcontrolador MCP2515 no aplicativo MikroC

Fig. 2: Captura de tela dos cálculos CAN feitos para o microcontrolador MCP2515 no aplicativo MikroC

Este é o formato para alterar a velocidade do módulo lata MCP2515,

CANInitialize (SJW, BRP, Phase_Seg1, Phase_Seg2, Prop_Seg, init_flag);

Aqui está a inicialização feita aqui para chegar a 250Kbps

CANSPINIitialize (1,2,1,2,4,Can_Init_Flags);

Para obter detalhes sobre como usar o MikroC para programar controladores pic, consulte aqui.

O funcionamento do sistema é o seguinte:

  • O processador DISPLAY que aguarda o envio da mensagem de temperatura atual do processador COLLECTOR através do barramento CAN.

  • O processador COLLECTOR mede a temperatura, formata-a e envia para o processador DISPLAY através do barramento CAN.

  • O processador DISPLAY lê a mensagem do barramento CAN e a exibe no LCD que se repete a cada segundo.

Montagem de ferragens:

Imagem mostrando o circuito receptor CAN baseado em Arduino

Fig. 3: Imagem mostrando o circuito receptor CAN baseado em Arduino

Imagem mostrando o circuito transmissor CAN baseado em PIC MCP2515

Fig. 4: Imagem mostrando o circuito transmissor CAN baseado em PIC MCP2515

Protótipo de circuitos transmissores e receptores CAN projetados em breadboards

Fig. 5: Protótipo de circuitos transmissores e receptores CAN projetados em placas de ensaio

Faça o circuito conforme indicado no diagrama do circuito.

Código-fonte do projeto

 

 

Diagramas de circuito

Circuito-Diagrama-Arduino-PIC-Microcontrolador-Baseado-CAN-Transmissor-Receptor-Circuitos

Vídeo do projeto

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.