Como ligar a injeção eletrônica do seu carro no Arduino José Luiz Sanchez Lorenzo
Sobre o palestrante Formação em Eletrônica Atuando desde 1988 na área de telecomunicações. 1988 a 2000 - NEC do Brasil (especialidade em hardware e suporte técnico de centrais de telefonia celular) 2000 a 2007 Lucent Technologies (suporte técnico e implantação de centrais de telefonia fixa e celular) a partir de 2007 - Alcatel-Lucent (coordenando equipe de base de dados de centrais de pequeno porte e implantação de equipamentos NGN). Instrutor dos cursos de formação em robótica na Globalcode.
Agenda Evolução do sistema elétrico e de alimentação dos carros. Sistema de injeção eletrônica Sensores Atuadores Central de controle Elétrica do módulo de controle Conexão dos sensores e atuadores ao Arduíno Parâmetros dos sensores Velocímetro com Arduino Rede CAN-Bus
Evolução do sistema elétrico e de Alimentação dos veículos
Sensores
Atuadores
Módulo de Injeção Eletrônica
Módulo de Injeção Eletrônica
Diagrama de Conexões
Parâmetros dos sensores
Velocímetro com Arduino
Sketch Velocímetro
Sketch Velocímetro #include <MsTimer2.h> int velocidade = 0; void setup(){ Serial.begin(19200); TCCR1B = 0x0007; // Def. Timer/Counter 1 (External clock on T1 pin "pino 5 do arduino"/clock on rising edge) TCCR1A = 0x0000; // Define o Timer/Counter como Normal Mode. (não utiliza o recuso do comparador) TCNT1 = 0x0000; // Zera o contador MsTimer2::set(810, lervelocidade); // programa interrupcao a cada 810ms MsTimer2::start(); } void loop(){ } void lervelocidade(){ velocidade = TCNT1; Serial.println("Velocidade = "); Serial.println(velocidade); TCNT1 = 0; interrupts(); }
Registradores TCCR1A e TCCR1B
Library MsTimer2 MsTimer2::set(unsigned long ms, void (f)()) // configura-se um período em ms e a cada transbordo do contador a função f será executada. A função f deverá ser declarada sem parâmetros. MsTimer2::start() //habilita interrupção MsTimer2::stop() //desabilita interrupção http://www.arduino.cc/playground/main/mstimer2
Diagrama blocos Atmega 1280
Painel Digital GOL GII
Painel Digital GOL GII
Painel Digital GOL GII
CAN-Bus Network
Conexão OBDII (CAN-Bus) Pin 2 - J1850 Bus+ Pin 4 - Chassis Ground Pin 5 - Signal Ground Pin 6 - CAN High (J-2284) Pin 7 - ISO 9141-2 K Line Pin 10 - J1850 Bus Pin 14 - CAN Low (J-2284) Pin 15 - ISO 9141-2 L Line Pin 16 - Battery Power
CAN-Bus (ODBII) Protocolos: SAE J1850 PWM (41.6kB/sec, padrão Ford) SAE J1850 VPW (variable pulse width 41,6kB/sec padrão GM) ISO 9141-2 asynchronous serial data rate of 10.4 kbaud. ISO 14230 KWP2000 (Keyword Protocol 2000) ISO 15765 CAN (250 kbits/s ou 500 kbits/s)
CAN-Bus (ODBII) Modos de operação Modo 1 Solicitação de dados em tempo real (PIDs) Modo 2 Visualização de dados no momento das falhas ocorridas (Freeze Frame data). Modo 3 Solicitar histórico de falhas. Modo 4 utilizado para limpar informações de diagnóstico e falhas e também registrar execução de manutenção. Modo 5 - informações de teste do sensor de oxigênio (sonda Lambda)
Tabela PIDs (CAN-Bus) Mode (Hex) PID (hex) Data Bytes returned Description Min value Max value Units Formula 01 04 1 CARGA DO MOTOR 0 100 % A*100/255 01 05 1 TEMPERATURA DA AGUA -40 215 C A-40 01 0A 1 PRESSÃO DE COMBUSTIVEL 0 765 kpa A*3 01 0C 2 RPM 0 16.383,75 rpm ((A*256)+B)/4 01 0D 1 VELOCIDADE 0 255 km/h A 01 0F 1 TEMPERATURA AR (INTAKE) -40 215 C A-40 01 10 2 SENSOR DE MASSA DE AR 0 655.35 g/s ((A*256)+B) / 100 01 11 1 POSIÇÃO DA BORBOLETA 0 100 % A*100/255 01 1F 2 TEMPO DE FUNCIONAMENTO 0 65.535 seg (A*256)+B
CAN-Bus transceiver (MCP2551) No CAN-Bus, os dados não são representados por bits em nível 0 ou nível 1. São representados por bits Dominantes e bits Recessivos, criados em função da condição presente nos fios CAN_H e CAN_L. A Figura abaixo ilustra os níveis de tensão em uma rede CAN, assim como os bits Dominantes e Recessivos.
CAN-Bus Controller com SPI (MCP2515)
Sketch acesso CAN-Bus
CAN-Shield
José Luiz Sanchez Lorenzo joseluiz@globalcode.com.br www.eletronlivre.com.br http://program-me.ning.com