O sistema de telemetria de um fórmula elétrico é uma peça crucial para o bom desempenho de qualquer equipe na competição de fórmula estudantil, a fórmula SAE. Cada carro é um conjunto de vários subsistemas complexos que necessitam de monitoramento constante e troca de informações com confiabilidade e responsividade: Já imaginou um motor que superaquece na última volta ou um pedal de acelerador que responde 2 segundos depois que o piloto pisa?
A telemetria do protótipo CE-21 da nossa equipe Cheetah E-Racing tem 2 funções principais no carro: Levar os comandos do piloto para o controlador do motor de tração elétrica e coletar o maior número de dados possível para controle e análise. O sistema físico é composto por 7 placas de circuito impresso e 1 computador de bordo central, todos interligados por uma rede digital.
Na parte de software, desenvolvemos um sistema de supervisão que armazena, trata e mostra aos membros da equipe em uma interface de usuário amigável. Apresentaremos ao longo deste artigo cada um desses circuitos, como se comunicam e como visualizamos os dados.
Telemetria Frontal
Localizada bem na frente do veículo, essa placa coleta:
- Botão de Ready-to-Drive, funciona como a chave de ignição de um carro a combustão e arma o sistema de tração;
- Posição do pedal de acelerador, com dois sensores redundantes, e envia para o controle do motor (Drive-by-Wire);
- Posição do pedal de freio;
- Posição angular do volante;
- Pressão em 3 das 4 linhas de freio do carro;
- Sensor de colisão, que é acionado quando é submetido à uma aceleração entre 8g e 11g;
- Sensor de fim de curso do pedal de freio, acionado quando ocorre perda da função do freio e o pedal encosta no chão;
- Botão de desligamento de emergência.
O principal dado de todos apresentados acima é a posição do acelerador, que deve ter uma latência baixa e redundância para garantir que o motor vai responder ao piloto do jeito certo e na hora certa. O microcontrolador usado para esse circuito é um STM32F103C8T6 operando a 72 MHz.
Telemetria Traseira
Encontrada na caixa de eletrônicos na lateral traseira do carro, essa placa contém o rádio responsável por enviar todos os dados coletados em tempo real para a equipe enquanto o veículo anda na pista. Além disso, coleta:
- Tensão e corrente da bateria de alimentação da eletrônica (separada das baterias de tração do carro);
- Botões de desligamento de emergência;
- Chave acionamento da alta tensão, que prepara o sistema de tração para ser ativado;
- GPS, para acompanharmos a posição do carro na pista;
- Acelerômetro e giroscópio, para monitoramento das forças atuando sobre o veículo, especialmente nas curvas;
O microcontrolador usado para esse circuito é um ESP32 operando a 80 MHz.
Telemetria das Rodas
Quatro placas idênticas são posicionadas uma em cada roda, e coletam a rotação do eixo e a temperatura do disco de freio em 2 pontos diferentes usando sensores infravermelhos. Em cada placa há um microcontrolador STM32F103C8T6 operando a 72 MHz.
Circuito de segurança
O circuito de segurança do veículo é responsável por desligar o sistema de tração caso ocorra qualquer condição que possa colocar o piloto em risco, como por exemplo superaquecimento das baterias e falha na isolação elétrica da alta tensão. Esse circuito possui um microcontrolador ATmega328p operando a 16 MHz que se comunica com o restante do sistema de telemetria e envia o estado dos seguintes elementos de segurança:
- Battery Management System (BMS) : Monitora a tensão, temperatura, resistência interna e corrente das 24 células de LiFePo4 que compõem a bateria do sistema de tração.
- Insulation Monitoring Device (IMD): Monitora a isolação elétrica do sistema de tração de alta tensão, garantindo que nunca exista a possibilidade de levar um choque operando o veículo.
- Brake System Plausibility Device (BSPD): Monitora a corrente consumida pelo motor e a pressão na linha de freios, caso o piloto pise forte no freio e acelere ao mesmo tempo o motor deve ser desligado.
Computador de bordo
Além de transmitir os dados do veículo por rádio, um computador de bordo é usado para processar e armazenar tudo no próprio carro, além de fornecer uma interface USB para a comunicação com os controladores do motor e do BMS. Ele também cria uma rede WiFi enquanto o carro está em manutenção ou parado próximo aos boxes, permitindo acesso direto ao sistema de telemetria do fórmula elétrico sem a necessidade de conectar cabos ou de um servidor externo. O hardware é uma TVBox modelo MXQ9 – 4K que foi desmontada e teve seu sistema android de fábrica substituído pelo Armbian Bullseye, funcionando de maneira semelhante à uma Raspberry Pi mas com um processador Quad Core ARM rk3229 da Rockchip, 4GB de RAM e 32GB de memória eMMC.
Comunicação digital
Há uma enorme quantidade de protocolos e redes para escolher ao projetar um sistema que interliga vários dispositivos diferentes, ao trabalhar com Arduinos e Raspberries é comum encontrarmos nomes como UART, I²C, SPI, Ethernet e OneWire. No entanto, no mundo automotivo é necessário um protocolo seguro, capaz de atravessar o carro de uma ponta a outra sem sofrer interferências e mantendo o tempo de resposta o mais curto possível. Nossa equipe decidiu empregar o protocolo CAN (do inglês Controller Area Network), desenvolvido especialmente para uso em veículos.
Uma rede CAN é montada sobre um barramento que interliga todos os dispositivos, cada mensagem ou frame é composta de 128 bits dos quais 64 são os dados de fato transmitidos. Os bits restantes são usados para verificação de erros e identificação da mensagem. O protocolo também permite configurar uma ordem de prioridade para cada tipo de informação, por exemplo é possível dar prioridade para o acelerador em detrimento do GPS.
Servidor de dados
O sistema de telemetria do Cheetah E-Racing conta com uma interface de usuário e um servidor de dados para a interação com os membros da equipe. O servidor foi desenvolvido utilizando a tecnologia Node.js, e é responsável por receber os dados do rádio via UART e disponibilizá-los para computadores, celulares e tablets conectados na rede de telemetria. Antes de enviar as informações a placa de telemetria traseira organiza e empacota tudo em um buffer de aproximadamente 1300 bits, cada valor analógico dos 79 coletados é posicionado em sequência crescente e enviado um após o outro. Essa estratégia foi utilizada para economizar largura de banda no rádio evitando o uso de caracteres de controle desnecessários.
O servidor então usa um parser javascript que separa cada valor correspondente em um objeto e abre uma conexão websocket. Cada dispositivo interessado nos dados então se conecta ao servidor através da interface feita em React.js.
Interface de usuário
A organização de uma interface é sempre uma tarefa difícil, e deve ser pensada com cuidado para ser o mais útil possível, sem causar frustrações aos seus usuários. Dividimos nosso sistema em 5 abas ou módulos:
Módulo de Dashboard: Essa aba fornece uma visão rápida da velocidade do veículo, sua posição na pista e estado do acelerador e freios
Módulo de Eletrônica e Telemetria: Aqui conseguimos visualizar o estado de cada uma das placas de circuito conectadas ao barramento CAN, assim como a posição dos elementos do circuito de segurança do carro.
Módulo de Powertrain: No módulo de powertrain mostramos a tensão e corrente nas baterias e informações gerais do sistema de tração, como temperatura, torque, RPM e frequência.
Módulo de Mecânica: A aba de mecânica apresenta a temperatura dos discos de freio, pressão nas linhas de freio, acelerações laterais e longitudinais, rotação nas rodas e no volante.
Módulo de Mapa: Um mapa em tela inteira que permite acompanhar com detalhes a posição do veículo.
Display do cockpit: Posicionado no painel do carro, esse display apresenta ao piloto as informações mais importantes do sistema de telemetria. O hardware é um tablet Android de 7 polegadas e o software é uma versão mais leve da interface em javascript que se comunica ao restante do barramento com um conversor CAN-USB.
Sensores e dados coletados
A tabela abaixo resume todas as informações que o sistema de telemetria do Cheetah E-Racing recolhe:
Código | Nome | Descrição | Subsistema |
SA1 | Throttle Position Sensor | Porcentagem de atuação do pedal do acelerador | Powertrain |
SA2 | Throttle Position Sensor | Porcentagem de atuação do pedal do acelerador | Powertrain |
SA4 | Sensor reflexivo infravermelho | Rotação da roda frontal direita | Freios |
SA5 | Sensor reflexivo infravermelho | Rotação da roda frontal esquerda | Freios |
SA6 | Sensor reflexivo infravermelho | Rotação da roda traseira direita | Freios |
SA7 | Sensor reflexivo infravermelho | Rotação da roda traseira esquerda | Freios |
SA8 | Sensor de temperatura infravermelho | Temperatura do centro do disco de freio frontal direito | Freios |
SA9 | Sensor de temperatura infravermelho | Temperatura da borda do disco de freio frontal direito | Freios |
SA10 | Sensor de temperatura infravermelho | Temperatura do centro do disco de freio frontal esquerdo | Freios |
SA11 | Sensor de temperatura infravermelho | Temperatura da borda do disco de freio frontal esquerdo | Freios |
SA12 | Sensor de temperatura infravermelho | Temperatura do centro do disco de freio traseiro direito | Freios |
SA13 | Sensor de temperatura infravermelho | Temperatura da borda do disco de freio traseiro direito | Freios |
SA14 | Sensor de temperatura infravermelho | Temperatura do centro do disco de freio traseiro esquerdo | Freios |
SA15 | Sensor de temperatura infravermelho | Temperatura da borda do disco de freio traseiro esquerdo | Freios |
SA16 | Encoder do volante | Ângulo de rotação do volante | Suspensão |
SA17 | Latitude (GNSS) | Valor da latitude obtida por satélite | Telemetria |
SA18 | Longitude (GNSS) | Valor da longitude obtida por satélite | Telemetria |
SA19 | Contagem de satélites (GNSS) | Número de satélites da constelação na linha de visada | Telemetria |
SA20 | HDOP (GNSS) | Diluição horizontal de precisão da constelação | Telemetria |
SA21 | Acelerômetro (IMU) | Valor da aceleração no eixo X | Telemetria |
SA22 | Acelerômetro (IMU) | Valor da aceleração no eixo Y | Telemetria |
SA23 | Acelerômetro (IMU) | Valor da aceleração no eixo Z | Telemetria |
SA24 | Giroscópio (IMU) | Valor da velocidade angular em relação ao eixo X | Telemetria |
SA25 | Giroscópio (IMU) | Valor da velocidade angular em relação ao eixo Y | Telemetria |
SA26 | Giroscópio (IMU) | Valor da velocidade angular em relação ao eixo Z | Telemetria |
SA27 | Magnetômetro (IMU) | Valor da intensidade do campo magnético no eixo X | Telemetria |
SA28 | Magnetômetro (IMU) | Valor da intensidade do campo magnético no eixo Y | Telemetria |
SA29 | Magnetômetro (IMU) | Valor da intensidade do campo magnético no eixo Z | Telemetria |
SA30 | Temperatura (IMU) | Temperatura da placa de telemetria traseira | Telemetria |
SA31 | Corrente (BMS) | Corrente total do acumulador | Powertrain |
SA32 | Tensão instantânea (BMS) | Tensão atual do acumulador | Powertrain |
SA33 | Tensão aberta (BMS) | Tensão de circuito aberto do acumulador | Powertrain |
SA34 | SOC (BMS) | Estado de carga do acumulador | Powertrain |
SA35 | SSOC (BMS) | Estado de carga simulado do acumulador | Powertrain |
SA36 | Amp hours (BMS) | Capacidade do acumulador | Powertrain |
SA37 | Health (BMS) | Estado de saúde do acumulador | Powertrain |
SA38 | Temperatura alta (BMS) | Temperatura da célula mais quente | Powertrain |
SA39 | Temperatura baixa (BMS) | Temperatura da célula mais fria | Powertrain |
SA40 | Temperatura média (BMS) | Temperatura média das células | Powertrain |
SA41 | Temperatura interna (BMS) | Temperatura interna do BMS | Powertrain |
SA42 | Tensão alta (BMS) | Maior tensão registrada no acumulador | Powertrain |
SA43 | Tensão baixa (BMS) | Menor tensão registrada no acumulador | Powertrain |
SA44 | Tensão média (BMS) | Média das tensões das células | Powertrain |
SA45 | Resistência alta (BMS) | Maior resistência interna registrada no acumulador | Powertrain |
SA46 | Resistência baixa (BMS) | Menor resistência interna registrada no acumulador | Powertrain |
SA47 | Resistência média (BMS) | Média das resistências internas das células | Powertrain |
SA48 | IDs temperatura (BMS) | Identificadores das células com maior e menor temperatura | Powertrain |
SA49 | IDs tensão (BMS) | Identificadores das células com maior e menor tensão | Powertrain |
SA50 | IDs resistência (BMS) | Identificadores das células com maior e menor resistência | Powertrain |
SA51 | Fan speed (BMS) | Velocidade do ventilador do acumulador | Powertrain |
SA52 | 12V (BMS) | Tensão de alimentação do BMS | Powertrain |
SA53 | Isolamento (BMS) | Medida de Shortest wave | Powertrain |
SA54 | ADC1 (BMS) | Medida do ADC1 | Powertrain |
SA55 | Tensão GLV | Tensão na bateria de baixa tensão | Telemetria |
SA56 | RPM (Inversor) | Rotação do motor (P0002) | Powertrain |
SA57 | Corrente (Inversor) | Corrente do motor (P0003) | Powertrain |
SA58 | Frequência (Inversor) | Frequência do motor (P0005) | Powertrain |
SA59 | Estado (Inversor) | Estado do Inversor (P0006) | Powertrain |
SA60 | Tensão (Inversor) | Tensão de saída do inversor (P0007) | Powertrain |
SA61 | Velocidade (Inversor) | Velocidade do veículo (P0008) | Powertrain |
SA62 | Torque (Inversor) | Torque no motor (P0009) | Powertrain |
SA63 | Temperatura (Inversor) | Temperatura do MOSFET (P0030) | Powertrain |
SA64 | Temperatura (Inversor) | Temperatura do MOSFET 2 (P0033) | Powertrain |
SA65 | Temperatura (Inversor) | Temperatura do ar interno (P0034) | Powertrain |
SA66 | Sobrecarga (Inversor) | Sobrecarga do motor (P0037) | Powertrain |
SA67 | Alarme (Inversor) | Alarme atual (P0048) | Powertrain |
SA68 | Falha atual (Inversor) | Número da falha atual (P0049) | Powertrain |
SA69 | Falha anterior (Inversor) | Última falha registrada (P0050) | Powertrain |
SA70 | Sensor Hall GLV | Corrente na bateria de baixa | Telemetria |
SA71 | IMD PWM | Saída PWM do IMD | Circuito de segurança |
SA71 | IMD PWM | Saída PWM do IMD | Circuito de segurança |
SA72 | Setpoint do cebolinha | Tensão de comparação do cebolinha | Circuito de segurança |
SA73 | Setpoint do sensor hall | Tensão de comparação do sensor hall | Circuito de segurança |
SA74 | Cebolinha | Saída do cebolinha | Circuito de segurança |
SA75 | Sensor hall | Saída do sensor hall | Circuito de segurança |
SA76 | Pressão de freios 2 | Pressão do cilindro mestre 1 | Telemetria |
SA77 | POST | Estado do self test | Circuito de segurança |
SA78 | Pressão de freios 3 | Pressão do cilindro mestre 2 | Telemetria |
SA79 | Pressão de freios 4 | Pressão na linha de freios frontal | Telemetria |
Conclusão
O artigo desenvolvido é apenas uma visão geral do projeto. Existem várias etapas para que toda a teoria se torne realidade, desde projetar e desenvolver até a solda e teste de todo o circuito.
Além disso, é importante ressaltar o tempo necessário para a construção das placas. A ideia é que todo o circuito funcione perfeitamente após ser construído, porém sempre surgem imprevistos e problemas que tomam muito tempo. Felizmente todos os problemas foram resolvidos pela equipe de telemetria do Cheetah E-Racing
Todo o sistema de telemetria é muito complexo e difícil de ser projetado e montado, tendo em vista que os integrantes do Cheetah E-Racing são graduandos. Além da complexidade, o projeto de telemetria também é caro, por isso a ajuda dos nossos patrocinadores, como a MakerHero, é imprescindível.
Esse conteúdo é resultado da parceria da MakerHero com a Cheetah E-Racing. Curtiu o conteúdo? Então deixe seu comentário abaixo! E não esqueça de acompanhar a Cheetah E-Racing nas redes sociais.