Sensores
Nessa página estão listados os sensores que compõe o subsistema de telemetria do Cheetah E-Racing. Aqui você encontra informações sobre as características físicas, especificações técnicas, implementação de software e uso geral de cada um deles. Datasheets e Application Notes também são referenciados de acordo com a necessidade.
Bibliotecas (Arduino)
Essa seção lista as bibliotecas necessárias para utilizar os sensores em um ambiente Arduino. A instalação é simples, e requer apenas a extração dos arquivos que devem ser baixados nos links abaixo para a pasta Arduino/libraries.
Unidade de medida inercial
Descrição
Nesse módulo GY-521 você tem em uma mesma placa um acelerômetro e um giroscópio de alta precisão, tudo isso controlado por um único CI, o MPU-6050. São 3 eixos para o acelerômetro e 3 eixos para o giroscópio, sendo ao todo 6 graus de liberdade (6DOF). Além disso esta placa tem um sensor de temperatura embutido no CI, permitindo medições entre -40 e +85 ºC. Possui alta precisão devido ao conversor analógico digital de 16-bits para cada canal. Portanto o sensor captura os canais X, Y e Z ao mesmo tempo. Essa placa utiliza o protocolo I2C para transmissão de dados.
Objetivo
Utilizamos o giroscópio para o monitoramento da orientação, direção, movimentação angular e rotação do veículo. O acelerômetro terá a finalidade de medir a aceleração, ângulo de inclinação, rotação, vibração, colisão e gravidade do veículo.
Especificações e características
Tensão de Operação: 3-5V
Conversor AD 16 bits
Faixa do Giroscópio: ±250, 500, 1000, 2000°/s
Faixa do Acelerômetro: ±2, ±4, ±8, ±16g
Dimensões: 20 x 16 x 2 mm
Uso
A comunicação com o microcontrolador usa a interface I2C, por meio dos pinos SCL e SDA do sensor. Nos pinos XDA e XCL você pode ligar outros dispositivos I2C. A alimentação do módulo pode variar entre 3 e 5v, mas para melhores resultados e precisão recomenda-se utilizar 5v.
Sensor HALL
Descrição
Há no carro 1 sensor hall modelo DHAB S/118,basicamente transdutor que ficar posicionado próximos dos AIR´s.
Especificações e características
Sensor transdutor
Saída: 0.25 - 4.75V (2.5Vref)
Temperatura operacional: -40°C - 70°C
Precisão CH1 @ 25 Deg C: 15%(0A),0,7%(25A),1,3%(75A)
Precisão CH2 @ 25 Deg C: 3%(0A),9%(500A),15%(900A),20%(1000A)
Tensão de operação: 5 VDC
Uso
Falar sobre a implementação no Cheetah aqui
Código de teste (Arduino IDE)
1
Objetivo
O objetivo deste sensor é identificar a corrente positiva, funcionando com um transdutor que,quando sob a aplicação de um campo magnético, responde com uma variação em sua tensão de saída.Esta variação de corrente fornecida pela bateria induz um campo magnético, que induz corrente no sensor hall.
Temperatura - Freios
Descrição
Há no carro 4 sensores infravermelhos, que são sensores de temperatura do modelo mlx90614 e fabricante Melexis, posicionados em cada roda próximo aos discos de freio. Os sensores utilizam comunicação I²C.
Especificações e características
Sensor de temperatura IR infravermelho
Controlador MLX90614ESF
Saída com resolução de 10-bit PWM
Faixa de temperatura ambiente: -40 a 125°C
Faixa de temperatura para objetos: -70 a 380°C
Precisão: ±0,5°C
Tensão de operação: 3VDC
Dimensões: 17 x 11,5 x 6 mm
Warning
O sensor vem calibrado de fábrica para trabalhar com objetos com emissividade 1. É necessário alterar esse valor de acordo com a emissividade do material medido.
Uso
Falar sobre a implementação no Cheetah aqui
Código de teste (Arduino IDE)
1//Programa: Sensor de temperatura I2C MLX90614 Arduino
2//Autor: Arduino e Cia
3#include <Wire.h>
4#include <Adafruit_MLX90614.h>
5Adafruit_MLX90614 mlx = Adafruit_MLX90614();
6
7double temp_amb;
8double temp_obj;
9void setup()
10{
11 Serial.begin(9600);
12 Serial.println("Sensor de temperatura MLX90614");
13 //Inicializa o MLX90614
14 mlx.begin();
15}
16void loop()
17{
18 //Leitura da temperatura ambiente e do objeto
19 //(para leitura dos valores em Fahrenheit, utilize
20 //mlx.readAmbientTempF() e mlx.readObjectTempF() )
21 temp_amb = mlx.readAmbientTempC();
22 temp_obj = mlx.readObjectTempC();
23 //Mostra as informacoes no Serial Monitor
24 Serial.print("Ambiente = ");
25 Serial.print(temp_amb);
26 Serial.print("*CtObjeto = ");
27 Serial.print(temp_obj); Serial.println("*C");
28 //Aguarda 1 segundo ate nova leitura
29 delay(1000);
30}
Objetivo
O objetivo do sensor é saber a temperatura dos freios durante a corrida para que a subequipe de freios possa conferir com os dados teóricos e ver a porcentagem de erro. O sensor sabe a temperatura especifica e a do ambiente.
Infravermelho - Rotação
Descrição
Os sensores infravermelhos de rotação utilizam um par de emissor e receptor IR para detectar a transição entre cores. O cubo de rodas é pintado num padrão “zebra” , alternando entre cor preta e branca, e cada transição gera um pulso rising ou falling edge que é convertido em sinal elétrico pelo fototransistor conectado ao microcontrolador. O tempo entre pulsos é então computado e utilizando o raio conhecido do conjunto pneu-roda é possível calcular a velocidade angular de cada roda.
Objetivo
Determinar a velocidade individual de cada roda.
Imagem
Especificações e características
Tensão de alimentação: 5Vdc
Corrente direta do led emissor: 60mA
Tensão máxima coletor emissor do transistor: 70V
Corrente máxima de coletor: 100mA
Tamanho da onda de operação: 950mm
Distância máxima de detecção: 25mm
Uso
São instalados no cubo de rodas em um suporte rosqueado e a ligação é feita até a placa de telemetria de rodas.
Código de teste (Arduino IDE)
1#define led 10
2#define saidaSensor 7
3
4int Time;
5int lasTime;
6int difference;
7int IsUpdated;
8
9void setup(){
10 Time = lasTime = difference = 0;
11 pinMode(led, OUTPUT); // Pino para ativar o led
12 pinMode(saidaSensor, INPUT); // Pino para ler o sinal no coletor do fototransistor
13 Serial.begin(9600); // Inicializa a porta serial com baud rate de 9600
14}
Display
Descrição
O display utilizado no veículo é um tablet android de 7 polegadas da marca multilaser. Seu sistema operacional (Lineage OS) é modificado para melhorar a performance e habilitar funções de baixo nível para a conexão serial
Objetivo
O display mostra as informações de telemetria no painel do carro durante a sua operação em testes e competições. Durante a fase de construção e enquanto o veículo está em manutenção o display pode ser utilizado para alterar configurações ou rodar a versão completa do sistema supervisório.
Imagem
Especificações e características
Uso
O código que roda no tablet está integrado ao servidor do sistema supervisório, e sua conexão é feita através do barramento CAN do veículo.
Pressão de freios
Descrição
O sensor da linha de freios é um transdutor que converte em um sinal elétrico a pressão na linha
Objetivo
Além da coleta de dados, o sensor da linha de freios é utilizado no BSPD, para garantir que o piloto não está acelerando e freando ao mesmo tempo.
Imagem
Especificações e características
Uso
No veículo estão instalados 4 sensores de pressão de freios: um em cada cilindro mestre, um na linha de freios traseira e outro na dianteira. O sinal de saída do sensor varia de 0,5 a 4,5 V e é ligado nos microcontroladores mais próximos de cada instalação.
Código de teste (Arduino IDE)
Utilizar código de exemplo do analogRead na IDE.
SD
Descrição
Modelo do modulo do sensor SD genérico, com micro SD da SanDisk. Comunicação pela interface SPI, pinos MOSI, MISO, SCLK e CS. Como o modulo vai direto na placa central, não se utiliza conector.
Especificações e características
https://www.embarcados.com.br/modulo-tiny-rtc-i2c-parte-1/ (Datasheet do modelo semelhante)
Uso
O modulo funciona com uma tensão de 5V.. Pinos utilizados são: Vcc 5V; GND; MOSI; MISO; SCLK; CS(SS). Cada microcontrolador tem pinos pré-selecionado, o indicador no código da serie(grupo) dos pinos é indicada pelo CS.
Código de teste (Arduino IDE)
1
Objetivo
O cartão SD é utilizado na armazenarão de dados. Apesar de não ser o meio mais rápido, eficiente e rápido de se armazenar, é o método mais seguro. Mesmo com a utilização em paralelo de outros métodos, o SD com o modulo é uma medida de precaução, coso aconteça algo com os dados recolhidos nos outros meios, os dados armazenados no SD estão seguros. Inicialmente sendo um plano de segurança.
GPS
Descrição
Modelo do modulo do sensor GPS, Adafruit Ultimatr GPS Breakout V3. Comunicação pela interface serial, pinos TX e RX. Como o modulo vai direto na placa central, não se utiliza conector.
Especificações e características
https://learn.adafruit.com/adafruit-ultimate-gps/downloads (datasheetes)
Uso
O modulo funciona com uma tensão tanto de 3.3V, quanto de 5V. Pinos utilizados são: Vcc(3.3V ou 5V) ; GND; TX; RX; Para a melhor recepção do sinal no modulo, se utiliza uma antena externa. Porém mesmo assim em diversos locais ocorre falha na recepção.
Código de teste (Arduino IDE)
1
Objetivo
O GPS fornece diversos dados para serem coletados, o modulo é um receptor de dados do NMEA. Podemos obter o tempo(ano, mês, dia, hora, minuto e segundo). Além da localização(latitude, longitude, altitude e ângulo), em que podemos mapear o percurso do veiculo. Também é medido a velocidade em knots.
Encoder
Descrição
Encoder é um sensores eletro-mecânicos, cuja funcionalidade é transformar movimento mecânico angular ou linear em uma série de pulsos analógicos ou digitais elétricos.
Especificações e características
Uso
Código de teste (Arduino IDE)
1
Objetivo
Com a utilização de encoders, é possível quantizar distâncias, controlar velocidades, medir ângulos, número de rotações, realizar posicionamentos, rotacionar braços robóticos e etc. Como exemplo no Cheetah medimos o angulo de rotação do volante do carro.
TPS
Descrição
O Sensor de Posição da Borboleta (Throttle Position Sensor – TPS) é utilizado para monitorar a posição do acelerador em um veículo. Através do TPS, o inversor obtém informações instantâneas da posição da borboleta permitindo à central identificar a potência que o condutor está requerendo. Essas informações são utilizadas para determinar o torque requerido do motor, a proporção de frenagem regenerativa aplicada e para o brake pedal plausability test.
Foto
Especificações e características
Uso
O TPS envia as informações para um microcontrolador, e tem o sinal convertido para o barramento CAN.
Código de teste (Arduino IDE)
1/*
2Analog input, analog output, serial output
3
4Reads an analog input pin, maps the result to a range from 0 to 255 and uses
5the result to set the pulse width modulation (PWM) of an output pin.
6Also prints the results to the Serial Monitor.
7
8The circuit:
9- potentiometer connected to analog pin 0.
10 Center pin of the potentiometer goes to the analog pin.
11 side pins of the potentiometer go to +5V and ground
12- LED connected from digital pin 9 to ground
13
14created 29 Dec. 2008
15modified 9 Apr 2012
16by Tom Igoe
17
18This example code is in the public domain.
19
20http://www.arduino.cc/en/Tutorial/AnalogInOutSerial
21*/
22
23// These constants won't change. They're used to give names to the pins used:
24const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
25const int analogOutPin = 9; // Analog output pin that the LED is attached to
26
27int sensorValue = 0; // value read from the pot
28int outputValue = 0; // value output to the PWM (analog out)
29
30void setup() {
31 // initialize serial communications at 9600 bps:
32 Serial.begin(9600);
33}
34
35void loop() {
36 // read the analog in value:
37 sensorValue = analogRead(analogInPin);
38 // map it to the range of the analog out:
39 outputValue = map(sensorValue, 0, 1023, 0, 255);
40 // change the analog out value:
41 analogWrite(analogOutPin, outputValue);
42
43 // print the results to the Serial Monitor:
44 Serial.print("sensor = ");
45 Serial.print(sensorValue);
46 Serial.print("\t output = ");
47 Serial.println(outputValue);
48
49 // wait 2 milliseconds before the next loop for the analog-to-digital
50 // converter to settle after the last reading:
51 delay(2);
52}
Diagrama de conexões