Índice:

Um tutorial simples para CANBUS: 8 etapas
Um tutorial simples para CANBUS: 8 etapas

Vídeo: Um tutorial simples para CANBUS: 8 etapas

Vídeo: Um tutorial simples para CANBUS: 8 etapas
Vídeo: CAN BUS Communication Using MCP2515 Module. 2024, Julho
Anonim
Um tutorial simples para CANBUS
Um tutorial simples para CANBUS

Estou estudando o CAN há três semanas e agora concluí algumas inscrições para validar meus resultados de aprendizagem. Neste tutorial, você aprenderá como usar o Arduino para implementar a comunicação CANBUS. Se você tiver alguma sugestão, seja bem-vindo para deixar uma mensagem.

Suprimentos:

Hardware:

  • Maduino Zero CANBUS
  • Módulo de Temperatura e Umidade DHT11
  • 1.3 "I2C OLED 128x64- Azul
  • Cabo DB9 para DB9 (fêmea para fêmea)
  • Linha DuPont

Programas:

IDE Arduino

Etapa 1: O que é CANBUS

O que é CANBUS
O que é CANBUS
O que é CANBUS
O que é CANBUS

Sobre CAN

CAN (Controller Area Network) é uma rede de comunicação serial que pode realizar controle distribuído em tempo real. Ele foi desenvolvido para a indústria automotiva para substituir o complexo chicote elétrico por um barramento de dois fios.

O protocolo CAN define a camada de enlace de dados e parte da camada física no modelo OSI.

O protocolo CAN é padronizado ISO com ISO11898 e ISO11519. ISO11898 é o padrão de comunicação CAN de alta velocidade com velocidade de comunicação de 125kbps-1Mbps. ISO11519 é o padrão de comunicação CAN de baixa velocidade com uma velocidade de comunicação inferior a 125 kbps.

Aqui, nos concentramos em CAN de alta velocidade.

ISO-11898 descreve como as informações são passadas entre dispositivos em uma rede e está em conformidade com o modelo de Interconexão de Sistemas Abertos (OSI) que é definido em termos de camadas. A comunicação real entre os dispositivos conectados pelo meio físico é definida pela camada física do modelo

  • Cada unidade CAN conectada ao barramento pode ser chamada de nó. Todas as unidades CAN são conectadas a um barramento terminado em cada extremidade com resistores de 120 Ω para formar uma rede. O ônibus consiste nas linhas CAN_H e CAN_L. O controlador CAN determina o nível do barramento com base na diferença no nível de potência em ambos os fios. Os níveis de ônibus são divididos em níveis dominantes e recessivos, que devem ser um deles. O remetente envia a mensagem ao receptor fazendo uma alteração no nível do barramento. Quando a linha lógica "e" é executada no barramento, o nível dominante é "0" e o nível recessivo é "1".
  • No estado dominante, a tensão de CAN_H é de cerca de 3,5 V e a tensão de CAN_L é de cerca de 1,5 V. No estado recessivo, a tensão de ambas as linhas está em torno de 2,5V.
  • O sinal é diferencial, por isso o CAN deriva sua robusta imunidade a ruídos e tolerância a falhas. O sinal diferencial balanceado reduz o acoplamento de ruído e permite altas taxas de sinalização em cabos de par trançado. A corrente em cada linha de sinal é igual, mas na direção oposta, resultando em um efeito de cancelamento de campo que é fundamental para baixas emissões de ruído. O uso de receptores diferenciais balanceados e cabeamento de par trançado aumenta a rejeição do modo comum e a alta imunidade a ruído de um barramento CAN.

CAN Transceiver

O CAN Transceiver é responsável pela conversão entre o nível lógico e o sinal físico. Converta um sinal lógico em um nível diferencial ou um sinal físico em um nível lógico.

Controlador CAN

O controlador CAN é o componente central do CAN, que realiza todas as funções da camada de enlace de dados no protocolo CAN e pode resolver automaticamente o protocolo CAN.

MCU

O MCU é responsável pelo controle do circuito de função e do controlador CAN. Por exemplo, os parâmetros do controlador CAN são inicializados quando o nó é iniciado, o quadro CAN é lido e enviado através do controlador CAN, etc.

Etapa 2: Sobre Comunicações CAN

Quando o barramento está ocioso, todos os nós podem começar a enviar mensagens (controle multi-master). O nó que primeiro acessa o barramento obtém o direito de enviar (modo CSMA / CA). Quando vários nós começam a enviar ao mesmo tempo, o nó que envia a mensagem de ID de alta prioridade obtém o direito de enviar.

No protocolo CAN, todas as mensagens são enviadas em formato fixo. Quando o barramento está ocioso, todas as unidades conectadas a ele podem começar a enviar novas mensagens. Quando mais de duas células começam a enviar mensagens ao mesmo tempo, a prioridade é determinada com base no identificador. O ID não representa o endereço de destino do envio, mas sim a prioridade da mensagem de acesso ao barramento. Quando mais de duas células começam a enviar mensagens ao mesmo tempo, cada bit do ID sem juros é arbitrado um por um. A unidade que vence a arbitragem pode continuar enviando mensagens, e a unidade que perde a arbitragem para imediatamente de enviar e recebe o trabalho.

O barramento CAN é um tipo de barramento de broadcast. Isso significa que todos os nós podem "ouvir" todas as transmissões. todos os nós invariavelmente captam todo o tráfego. O hardware CAN fornece filtragem local para que cada nó possa reagir apenas às mensagens interessantes.

Etapa 3: Frames

Molduras
Molduras

Os dispositivos CAN enviam dados pela rede CAN em pacotes chamados frames. O CAN tem quatro tipos de quadro:

  • Quadro de dados: um quadro contendo dados do nó para transmissão
  • Frame remoto: um frame solicitando a transmissão de um identificador específico
  • Frame de erro: um frame transmitido por qualquer nó detectando um erro
  • Quadro de sobrecarga: um quadro para injetar um atraso entre os dados ou quadro remoto

Quadro de dados

Existem dois tipos de quadros de dados, padrão e estendido.

O significado dos campos de bits da Figura são:

  • SOF – O bit de início de quadro (SOF) dominante único marca o início da mensagem e é usado para sincronizar os nós em um barramento após ficarem ociosos.
  • Identificador - O identificador padrão CAN de 11 bits estabelece a prioridade da mensagem. Quanto menor for o valor binário, maior será sua prioridade.
  • RTR - O bit único de solicitação de transmissão remota (RTR)
  • IDE - Um bit de extensão de identificador único (IDE) dominante significa que um identificador CAN padrão sem extensão está sendo transmitido.
  • R0 - Bit reservado (para possível uso em futuras correções padrão).
  • DLC - O código de comprimento de dados de 4 bits (DLC) contém o número de bytes de dados sendo transmitidos.
  • Dados - até 64 bits de dados de aplicativo podem ser transmitidos.
  • CRC - A verificação de redundância cíclica (CRC) de 16 bits (15 bits mais o delimitador) contém a soma de verificação (número de bits transmitidos) dos dados do aplicativo anterior para detecção de erro.
  • ACK – ACK tem 2 bits, um é o bit de confirmação e o segundo é um delimitador.
  • EOF – Este campo de fim de quadro (EOF) de 7 bits marca o fim de um quadro CAN (mensagem) e desativa o enchimento de bits, indicando um erro de enchimento quando dominante. Quando 5 bits do mesmo nível lógico ocorrem em sucessão durante a operação normal, um bit do nível lógico oposto é inserido nos dados.
  • IFS - Este espaço entre quadros de 7 bits (IFS) contém o tempo necessário para o controlador mover um quadro recebido corretamente para sua posição adequada em uma área de buffer de mensagem.

Arbitragem

No estado ocioso do barramento, a unidade que começa a enviar a mensagem primeiro obtém o envio correto. Quando várias unidades começam a enviar ao mesmo tempo, cada unidade de envio começa no primeiro bit do segmento de arbitragem. A unidade com o maior número de níveis dominantes de saída contínua pode continuar a enviar.

Etapa 4: Velocidade e distância

Velocidade e distância
Velocidade e distância

O barramento CAN é um barramento que conecta várias unidades ao mesmo tempo. Teoricamente, não há limite para o número total de unidades que podem ser conectadas. Na prática, entretanto, o número de unidades que podem ser conectadas é limitado pelo atraso no barramento e pela carga elétrica. Reduza a velocidade de comunicação, aumente o número de unidades que podem ser conectadas e, aumente a velocidade de comunicação, o número de unidades que podem ser conectadas diminui.

A distância de comunicação está inversamente relacionada à velocidade de comunicação, e quanto maior a distância de comunicação, menor a velocidade de comunicação. A distância maior pode ser de 1 km ou mais, mas a velocidade é inferior a 40kps.

Etapa 5: Hardware

Hardware
Hardware

O módulo Maduino Zero CAN-BUS é uma ferramenta desenvolvida pela Makerfabs para comunicação CANbus, é baseada no Arduino, com o controlador CAN e transceptor CAN, para criar uma porta CAN-bus pronta para usar.

  • MCP2515 é um controlador CAN autônomo que implementa as especificações CAN. Ele é capaz de transmitir e receber dados padrão e estendidos e quadros remotos.
  • O MAX3051 faz interface entre o controlador do protocolo CAN e os fios físicos das linhas de barramento em uma rede de área do controlador (CAN). O MAX3051 fornece capacidade de transmissão diferencial para o barramento e capacidade de recepção diferencial para o controlador CAN.

Etapa 6: Conexão

Conexão
Conexão

Conecte o módulo DHT11 ao módulo Maduino Zero CAN-BUS com fios para serem usados como um instrumento para apoiar a comunicação CAN. Da mesma forma, conecte o display ao módulo para receber os dados e exibi-los.

A conexão entre Maduino Zero CANBUS e DHT11:

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ DADOS

A conexão entre Maduino Zero CANBUS e OLED:

Maduino Zero CANBUS - OLED

3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA

Use um cabo DB9 para conectar os dois módulos Maduino Zero CANBUS.

Etapa 7: Código

O MAX3051 conclui a conversão de níveis diferenciais em sinais lógicos. O MCP2515 completa a função CAN, como codificação e decodificação de dados. O MCU só precisa inicializar o controlador e enviar e receber dados.

  • Github:
  • Depois de instalado o Arduino, não há pacote para suportar a placa (Arduino zero) que precisa ser instalada.
  • Selecione ferramentas -> Placa -> Gerenciador de placa, pesquise "Arduino zero" e instale "Placas Arduino SAMD".
  • Selecione Ferramentas -> Placa -> Arduino Zero (porta USB nativa), selecione Ferramentas -> Porta -> com…
  • Depois de obter o programa do GitHub, você precisa se certificar de que todos os arquivos estão no diretório do projeto, que contém arquivos de biblioteca que suportam CANBUS.
  • Instale a biblioteca de sensores DHT da Adafruit, que é usada para acionar o DHT11 para obter temperatura e umidade.
  • Use endereços diferentes para enviar temperatura e umidade separadamente no código Test_DHT11.ino.

CAN.sendMsgBuf (0x10, 0, stmp1.length (), stmp_send1);

atraso (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); atraso (500);

“0x10” significa o ID da mensagem, “0” significa o quadro padrão, “stmp1.length ()” significa o comprimento da mensagem, “stmp_send1” são os dados enviados.

  • No código Test_OLED.ino, todas as mensagens no CANBUS são recebidas por consulta e as informações solicitadas são exibidas no OLED.
  • Carregue o programa Maduino-CANbus-RS485 / Test_DHT11_OLED / Test_DHT11 / Test_DHT11.ino para o módulo que se conectou ao sensor e carregue o programa Maduino-CANbus RS485 / Test_DHT11_OLED / Test_OLED / Test_OLED.ino para outro módulo que se conectou ao OLED.

Etapa 8: Mostrar

Mostrar
Mostrar
Mostrar
Mostrar

Ligue os dois módulos, a temperatura e a umidade serão exibidas no display.

Recomendado: