Índice:

Use o Arduino para exibir o RPM do motor: 10 etapas (com imagens)
Use o Arduino para exibir o RPM do motor: 10 etapas (com imagens)

Vídeo: Use o Arduino para exibir o RPM do motor: 10 etapas (com imagens)

Vídeo: Use o Arduino para exibir o RPM do motor: 10 etapas (com imagens)
Vídeo: Controlando Motor de Passo com Arduino - Curso de Arduino #31 2024, Julho
Anonim
Use o Arduino para exibir o RPM do motor
Use o Arduino para exibir o RPM do motor
Use o Arduino para exibir o RPM do motor
Use o Arduino para exibir o RPM do motor
Use o Arduino para exibir o RPM do motor
Use o Arduino para exibir o RPM do motor

Este guia descreverá como usei um Arduino UNO R3, uma tela LCD 16x2 com I2C e uma faixa de LED para ser usada como um medidor de velocidade do motor e luz de mudança em meu carro de corrida Acura Integra. Ele foi escrito em termos de alguém com alguma experiência ou exposição ao software Arduino ou à codificação em geral, o software matemático MATLAB, e à criação ou modificação de circuitos elétricos. No futuro, isso pode ser revisado para ser mais fácil de entender para alguém com pouca ou nenhuma experiência com esses tópicos.

Etapa 1: Escolha um fio Sigal

Escolha um fio Sigal
Escolha um fio Sigal

Você precisará obter um sinal que corresponda à velocidade do motor. É possível adicionar um sistema que mede a velocidade do motor, mas é muito mais prático conectar-se a um fio existente que transporta informações sobre a velocidade do motor. Um único carro pode ter várias fontes para isso, e pode variar muito até mesmo ano a ano em um único modelo de veículo. Para o propósito deste tutorial, usarei o exemplo do meu carro, uma pista modificada 2000 Acura Integra LS. Descobri no meu motor (B18B1 com OBD2) que há uma saída de tensão não utilizada que é de 12 V de altura e cai para 0 V ao completar uma volta completa.

Coisas que ajudarão a identificar um sinal potencial de velocidade do motor:

  • Diagrama de fiação para seu veículo
  • Pesquisando fóruns para seu veículo envolvendo sinais de motor / ECU
  • Um mecânico amigável ou entusiasta de carros

Etapa 2: estender o fio para a placa Arduino

Estenda o fio para a placa Arduino
Estenda o fio para a placa Arduino
Estenda o fio para a placa Arduino
Estenda o fio para a placa Arduino

Depois de escolher um sinal adequado, você precisará estendê-lo para onde quer que esteja colocando sua placa Arduino. Decidi colocar o meu dentro do veículo onde o rádio costumava ficar, então direcionei o novo fio do motor, através de um anel de borracha na parede de fogo, e direto para a área do rádio. Como já existe uma grande quantidade de guias de instruções sobre como descascar, soldar e proteger a fiação, não explicarei esse processo.

Etapa 3: Análise de Sinal

Análise de Sinal
Análise de Sinal

É aqui que as coisas podem ficar complicadas. Ter uma compreensão geral da análise e dos controles de sinal o ajudará muito, mas é possível com pouco conhecimento.

O fio de sinal escolhido provavelmente não emitirá o valor exato da rotação do motor. Ele precisará ser moldado e modificado para fornecer o número exato de RPMs do motor que você deseja. Devido ao fato de que cada carro diferente e fio de sinal escolhido podem ser diferentes, a partir deste ponto irei explicar como usei o sinal de posição do distribuidor no meu Integra.

Meu sinal é normalmente de 12 V e cai para 0 V ao completar uma rotação completa. Se você souber o tempo para completar uma rotação completa ou um ciclo completo, isso pode ser facilmente traduzido em rotações / min usando alguns conceitos básicos.

1 / (segundos por ciclo) = ciclos por segundo, ou Hz

Revoluções por minuto = Hz * 60

Etapa 4: codifique sua análise de sinal

Codifique sua análise de sinal
Codifique sua análise de sinal

Este método requer obter o tempo que leva para o sinal de entrada completar um ciclo completo. Felizmente, o software Arduino IDE tem um comando que faz exatamente isso, PulseIn.

Este comando irá esperar por um sinal para cruzar um limite, começar a contar e parar a contagem quando o limite for cruzado novamente. Existem alguns detalhes que devem ser observados ao usar o comando, então incluirei um link para informações do PulseIn aqui:

PulseIn retornará um valor em microssegundos e, para manter a matemática simples, isso deve ser convertido imediatamente em segundos normais. Seguindo a matemática da etapa anterior, essa duração de tempo pode ser equacionada diretamente em RPM.

Observação: após tentativa e erro, descobri que o distribuidor completa duas rotações para cada rotação do virabrequim do motor, então simplesmente dividi minha resposta por 2 para explicar isso.

Etapa 5: identificar um filtro

Identifique um Filtro
Identifique um Filtro

Se você tiver sorte, seu sinal não terá "ruído" (flutuações) e a velocidade do motor será exata. No meu caso, havia muito ruído vindo da distribuidora que muitas vezes dava tensões bem longe do esperado. Isso se transforma em leituras muito falsas da rotação real do motor. Esse ruído precisará ser filtrado.

Depois de alguma análise de sinal, quase todo o ruído veio em frequências (Hz) muito mais altas do que o motor em si estava produzindo (o que é verdade para a maioria dos sistemas dinâmicos reais). Isso significa que um filtro passa-baixa é o candidato ideal para cuidar disso.

Um filtro passa-baixo permite que as frequências baixas (desejadas) passem e atenua as frequências altas (indesejadas).

Etapa 6: Filtragem: Parte 1

Filtragem: Parte 1
Filtragem: Parte 1
Filtragem: Parte 1
Filtragem: Parte 1
Filtragem: Parte 1
Filtragem: Parte 1

O design do filtro pode ser feito manualmente, no entanto, o uso do MATLAB irá acelerar significativamente se você tiver acesso ao software.

Um filtro passa-baixo pode ser equiparado a uma função de transferência (ou fração) no domínio de Laplace (domínio da frequência). A frequência de entrada será multiplicada por esta fração e a saída é um sinal filtrado que contém apenas as informações que você deseja usar.

A única variável na função é tau. Tau é igual a 1 / Omega, onde Omega é a frequência de corte desejada (deve ser em radianos por segundo). A frequência de corte é o limite onde as frequências mais altas do que ela serão removidas e as frequências mais baixas do que serão mantidas.

Eu defino a frequência de corte igual a um RPM que meu motor nunca alcançará (990 RPM ou 165 Hz). Os gráficos FFT mostram aproximadamente quais frequências meu sinal bruto carregava e as frequências que saíam do filtro.

Etapa 7: Filtragem: Parte 2

Filtragem: Parte 2
Filtragem: Parte 2
Filtragem: Parte 2
Filtragem: Parte 2

Aqui, o MATLAB foi utilizado novamente por uma questão de tempo. A frequência de corte é definida e, a partir dela, a função de transferência resultante é exibida. Lembre-se de que essa fração se aplica apenas ao domínio Laplace e não pode ser usada diretamente em um microcontrolador baseado em tempo como o Arduino UNO R3.

Etapa 8: Filtragem: Parte 3

Filtragem: Parte 3
Filtragem: Parte 3
Filtragem: Parte 3
Filtragem: Parte 3

O MATLAB possui um comando que irá converter uma função contínua (domínio da frequência) em uma função discreta (domínio do tempo). A saída desse comando fornecerá uma equação que pode ser facilmente incorporada ao código IDE do Arduino.

Etapa 9: Filtragem: Parte 4

Filtragem: Parte 4
Filtragem: Parte 4
Filtragem: Parte 4
Filtragem: Parte 4

No esboço do Arduino, inclua as variáveis uey antes da configuração. O comando float simplesmente define como a variável armazenará os dados (coisas como valor máximo, decimais, etc …) e um link para mais informações sobre isso será fornecido aqui: https://www.arduino.cc/reference/en/language / varia…

No loop onde a conversão do sinal bruto em velocidade do motor está ocorrendo, inclua a variável uea equação múltipla y. Existem várias maneiras de empregar isso, mas a variável u deve ser definida igual ao sinal de entrada bruto que está sendo medido, e a variável y será o valor filtrado.

Recomendado: