Taula de continguts:

Utilitzeu Arduino per mostrar RPM del motor: 10 passos (amb imatges)
Utilitzeu Arduino per mostrar RPM del motor: 10 passos (amb imatges)

Vídeo: Utilitzeu Arduino per mostrar RPM del motor: 10 passos (amb imatges)

Vídeo: Utilitzeu Arduino per mostrar RPM del motor: 10 passos (amb imatges)
Vídeo: Мотор под давлением Lidl. Парксайд PHDB 4 C3. Высокое давление 180. 4Т бензин. тест. обзор 2024, Desembre
Anonim
Utilitzeu Arduino per mostrar RPM del motor
Utilitzeu Arduino per mostrar RPM del motor
Utilitzeu Arduino per mostrar RPM del motor
Utilitzeu Arduino per mostrar RPM del motor
Utilitzeu Arduino per mostrar RPM del motor
Utilitzeu Arduino per mostrar RPM del motor

En aquesta guia es descriurà com he fet servir un Arduino UNO R3, una pantalla LCD de 16x2 amb I2C i una tira LED per utilitzar-la com a indicador de velocitat del motor i llum de canvi al meu cotxe Acura Integra. S'escriu en termes d'alguna persona amb certa experiència o exposició al programari Arduino o codificació en general, el programari matemàtic MATLAB, i la creació o modificació de circuits elèctrics. En el futur, això es podrà revisar per ser més fàcil d’entendre per a algú amb poca o cap experiència en aquests temes.

Pas 1: trieu un Sigal Wire

Trieu un Sigal Wire
Trieu un Sigal Wire

Haureu d’obtenir un senyal que es correlacioni amb la velocitat del motor. És possible afegir un sistema que mesuri la velocitat del motor, però és molt més pràctic accedir a un cable existent que conté informació sobre la velocitat del motor. Un mateix cotxe pot tenir diverses fonts per a això, i pot variar enormement fins i tot any a any en un model de vehicle únic. En nom d’aquest tutorial, faré servir l’exemple del meu cotxe, una pista modificada 2000 Acura Integra LS. Vaig trobar al meu motor (B18B1 amb OBD2) que hi ha una sortida de tensió no utilitzada que fa 12V d’alçada i baixa a 0V en completar una revolució completa.

Coses que ajudaran a identificar un senyal potencial de velocitat del motor:

  • Esquema de cablejat del vostre vehicle
  • Cerqueu fòrums per al vostre vehicle amb senyals de motor / ECU
  • Un mecànic amable o aficionat al cotxe

Pas 2: esteneu el cable a la placa Arduino

Amplieu el cable a la placa Arduino
Amplieu el cable a la placa Arduino
Amplieu el cable a la placa Arduino
Amplieu el cable a la placa Arduino

Un cop hàgiu triat un senyal adequat, l'haureu d'estendre a qualsevol lloc on col·loqueu la vostra placa Arduino. Vaig decidir col·locar el meu dins del vehicle on abans hi havia la ràdio, de manera que vaig encaminar el nou cable del motor a través d’un passamans de goma a la paret de foc i fins a la zona de la ràdio. Com que ja hi ha una gran quantitat de guies de procediments sobre pelar, soldar i protegir el cablejat, no explicaré aquest procés.

Pas 3: anàlisi del senyal

Anàlisi de senyals
Anàlisi de senyals

Aquí és on es poden complicar les coses. Tenir una comprensió general de l’anàlisi i els controls del senyal us ajudarà a recórrer un llarg camí, però és factible amb pocs coneixements.

El cable de senyal triat amb més probabilitat no escopirà el valor exacte de la velocitat del motor. Haurà de ser modelat i modificat per donar el nombre exacte de RPM del motor que desitgi. A causa del fet que tots els cables de senyal i cotxe escollits poden ser diferents, a partir d’aquest moment explicaré com he utilitzat el senyal de posició del distribuïdor al meu Integra.

El meu senyal és normalment de 12 V i baixa a 0 V quan es completa una rotació completa. Si coneixeu el temps per completar una rotació completa o un cicle complet, això es pot traduir fàcilment en revolucions / min mitjançant alguns conceptes bàsics.

1 / (segons per cicle) = cicles per segon o Hz

Revolucions per minut = Hz * 60

Pas 4: codifiqueu l'anàlisi del vostre senyal

Codifiqueu l'anàlisi del vostre senyal
Codifiqueu l'anàlisi del vostre senyal

Aquest mètode requereix obtenir el temps que triga el senyal d’entrada a completar un cicle complet. Per sort, el programari Arduino IDE té una ordre que fa exactament això, PulseIn.

Aquesta ordre esperarà que un senyal creui un llindar, comenci a comptar i deixi de comptar quan es torni a creuar el llindar. Hi ha alguns detalls que cal tenir en compte a l’hora d’utilitzar l’ordre, de manera que inclouré un enllaç a la informació de PulseIn aquí:

PulseIn retornarà un valor en microsegons i, per mantenir les matemàtiques simples, s’hauria de convertir immediatament en segons normals. Seguint les matemàtiques del pas anterior, aquesta durada del temps es pot equiparar directament a RPM.

Nota: després de proves i errors, vaig descobrir que el distribuïdor completa dues rotacions per cada rotació del cigonyal del motor, de manera que simplement vaig dividir la meva resposta per 2 per explicar-ho.

Pas 5: identifiqueu un filtre

Identifiqueu un filtre
Identifiqueu un filtre

Si teniu sort, el vostre senyal no tindrà "soroll" (fluctuacions) i la velocitat del motor serà exacta. En el meu cas, hi havia molt soroll del distribuïdor que sovint donava tensions molt allunyades del que s’esperava. Això es converteix en lectures molt falses de la velocitat real del motor. Aquest soroll haurà de ser filtrat.

Després d'algunes anàlisis de senyal, gairebé tot el soroll va arribar a freqüències (Hz) molt superiors a les que produïa el propi motor (cosa que és cert per a la majoria de sistemes dinàmics reals). Això significa que un filtre de pas baix és el candidat ideal per tenir-ne cura.

Un filtre de pas baix permet passar les freqüències baixes (desitjades) i atenua les freqüències altes (no desitjades).

Pas 6: filtratge: primera part

Filtratge: primera part
Filtratge: primera part
Filtratge: primera part
Filtratge: primera part
Filtratge: primera part
Filtratge: primera part

El disseny del filtre es pot fer manualment, tot i que utilitzar MATLAB accelerarà notablement si es té accés al programari.

Un filtre de pas baix es pot equiparar a una funció de transferència (o fracció) al domini de Laplace (domini de freqüència). La freqüència d'entrada es multiplicarà per aquesta fracció i la sortida és un senyal filtrat que només té la informació que voleu utilitzar.

L'única variable de la funció és tau. Tau és igual a 1 / Omega, on Omega és la freqüència de tall que voleu (ha de ser en radians per segon). La freqüència de tall és el límit on s’eliminaran freqüències superiors a les que es mantindran i freqüències inferiors a les que es mantindran.

He definit la freqüència de tall igual a RPM que el meu motor mai no assolirà (990 RPM o 165 Hz). Els gràfics FFT mostren aproximadament quines freqüències emportava el meu senyal cru i les freqüències que sortien del filtre.

Pas 7: filtratge: part 2

Filtratge: 2a part
Filtratge: 2a part
Filtratge: 2a part
Filtratge: 2a part

Aquí MATLAB es va tornar a utilitzar per fer temps. Es defineix la freqüència de tall i, a partir d’aquí, es mostra la funció de transferència resultant. Tingueu en compte que aquesta fracció només s'aplica al domini Laplace i no es pot utilitzar directament en un micro controlador basat en el temps com Arduino UNO R3.

Pas 8: filtratge: part 3

Filtratge: Part 3
Filtratge: Part 3
Filtratge: Part 3
Filtratge: Part 3

MATLAB té una ordre que convertirà una funció contínua (domini de freqüència) en una funció discreta (domini de temps). La sortida d'aquesta ordre proporcionarà una equació que es pot incorporar fàcilment al codi IDE d'Arduino.

Pas 9: filtratge: part 4

Filtratge: part 4
Filtratge: part 4
Filtratge: part 4
Filtratge: part 4

A l'esbós d'Arduino, incloeu les variables uy abans de la configuració. L'ordre float simplement defineix com la variable emmagatzemarà dades (coses com el valor màxim, decimals, etc.) i es proporcionarà un enllaç a més informació sobre això: https://www.arduino.cc/reference/en/language / varia …

Al bucle on s'està produint la conversió del senyal brut a velocitat del motor, incloeu la variable u i l'equació múltiple y. Hi ha diverses maneres d'utilitzar-ho, però la variable u s'ha d'establir igual al senyal d'entrada bruta que es mesura, i la variable y serà el valor filtrat.

Recomanat: