Sommario:

Usa Arduino per visualizzare gli RPM del motore: 10 passaggi (con immagini)
Usa Arduino per visualizzare gli RPM del motore: 10 passaggi (con immagini)

Video: Usa Arduino per visualizzare gli RPM del motore: 10 passaggi (con immagini)

Video: Usa Arduino per visualizzare gli RPM del motore: 10 passaggi (con immagini)
Video: Tachimetro Contagiri RPM Digitale con Arduino, LCD e Sensore Infrarosso o Fotocellula - Fai da Te 2024, Dicembre
Anonim
Usa Arduino per visualizzare gli RPM del motore
Usa Arduino per visualizzare gli RPM del motore
Usa Arduino per visualizzare gli RPM del motore
Usa Arduino per visualizzare gli RPM del motore
Usa Arduino per visualizzare gli RPM del motore
Usa Arduino per visualizzare gli RPM del motore

Questa guida illustrerà come ho utilizzato un Arduino UNO R3, un display LCD 16x2 con I2C e una striscia LED da utilizzare come indicatore di velocità del motore e luce del cambio nella mia macchina da pista Acura Integra. È scritto in termini di qualcuno con una certa esperienza o esposizione al software Arduino o alla codifica in generale, al software matematico MATLAB e alla creazione o modifica di circuiti elettrici. In futuro questo potrebbe essere rivisto per essere più facile da capire per qualcuno con poca o nessuna esperienza con questi argomenti.

Passaggio 1: scegli un cavo Sigal

Scegli un cavo Sigal
Scegli un cavo Sigal

Dovrai ottenere un segnale correlato alla velocità del motore. È possibile aggiungere un sistema che misura la velocità del motore, ma è molto più pratico attingere a un cavo esistente che trasporta informazioni sulla velocità del motore. Una singola auto può avere più fonti per questo e può variare notevolmente anche di anno in anno su un singolo modello di veicolo. Per il bene di questo tutorial userò l'esempio della mia auto, una Acura Integra LS del 2000 modificata da pista. Ho scoperto che sul mio motore (B18B1 con OBD2) c'è una tensione inutilizzata che è alta 12 V e scende a 0 V dopo aver completato un giro completo.

Cose che aiuteranno a identificare un potenziale segnale di velocità del motore:

  • Schema elettrico per il tuo veicolo
  • Ricerca nei forum per il tuo veicolo che coinvolgono segnali motore/ECU
  • Un meccanico amichevole o un appassionato di auto

Passaggio 2: estendere il cavo alla scheda Arduino

Estendi il cavo alla scheda Arduino
Estendi il cavo alla scheda Arduino
Estendi il cavo alla scheda Arduino
Estendi il cavo alla scheda Arduino

Una volta scelto un segnale adatto, dovrai estenderlo ovunque tu stia posizionando la tua scheda Arduino. Ho deciso di posizionare il mio all'interno del veicolo dove c'era la radio, quindi ho instradato il nuovo cavo dal motore, attraverso un passacavo di gomma nel muro antincendio, e direttamente nell'area della radio. Poiché esiste già un'abbondante quantità di guide pratiche su spelatura, saldatura e protezione del cablaggio, non spiegherò questo processo.

Passaggio 3: analisi del segnale

Analisi del segnale
Analisi del segnale

Qui è dove le cose possono complicarsi. Avere una comprensione generale dell'analisi del segnale e dei controlli ti aiuterà molto, ma è fattibile con poca conoscenza.

Il cavo del segnale scelto molto probabilmente non sputerà il valore esatto della velocità del motore. Dovrà essere modellato e modificato in modo da fornire il numero esatto di giri motore che desideri. A causa del fatto che ogni diversa auto e cavo di segnale scelto può essere diverso, da questo punto in poi spiegherò come ho usato il segnale di posizione dal distributore sulla mia Integra.

Il mio segnale è normalmente 12V e scende a 0V quando si completa una rotazione completa. Se conosci il tempo per completare una rotazione completa, o un ciclo completo, questo può essere facilmente tradotto in giri/min utilizzando alcuni concetti di base.

1 / (secondi per ciclo) = cicli per secondo, o Hz

Giri al minuto = Hz * 60

Passaggio 4: codifica l'analisi del segnale

Codifica la tua analisi del segnale
Codifica la tua analisi del segnale

Questo metodo richiede di ottenere il tempo necessario al segnale di ingresso per completare un ciclo completo. Fortunatamente il software Arduino IDE ha un comando che fa esattamente questo, PulseIn.

Questo comando attenderà che un segnale attraversi una soglia, avvii il conteggio e interrompa il conteggio quando la soglia viene nuovamente superata. Ci sono alcuni dettagli che dovrebbero essere annotati quando si utilizza il comando, quindi includerò un collegamento alle informazioni di PulseIn qui:

PulseIn restituirà un valore in microsecondi e, per semplificare i calcoli, questo dovrebbe essere immediatamente convertito in secondi normali. Seguendo i calcoli del passaggio precedente, questa durata di tempo può essere equiparata direttamente a RPM.

Nota: dopo tentativi ed errori ho scoperto che il distributore completa due rotazioni per ogni singola rotazione dell'albero motore del motore, quindi ho semplicemente diviso la mia risposta per 2 per tenerne conto.

Passaggio 5: identificare un filtro

Identifica un filtro
Identifica un filtro

Se sei fortunato, il tuo segnale non avrà "rumore" (fluttuazioni) e la velocità del tuo motore sarà esatta. Nel mio caso c'era molto rumore proveniente dal distributore che spesso dava tensioni lontane da quelle previste. Questo si trasforma in letture molto false della velocità effettiva del motore. Questo rumore dovrà essere filtrato.

Dopo alcune analisi del segnale, quasi tutto il rumore arrivava a frequenze (Hz) molto più alte di quelle emesse dal motore stesso (il che è vero per la maggior parte dei sistemi dinamici reali). Ciò significa che un filtro passa basso è un candidato ideale per occuparsene.

Un filtro passa basso consente il passaggio delle basse frequenze (desiderate) e attenua le alte frequenze (indesiderate).

Passaggio 6: filtraggio: parte 1

Filtraggio: Parte 1
Filtraggio: Parte 1
Filtraggio: Parte 1
Filtraggio: Parte 1
Filtraggio: Parte 1
Filtraggio: Parte 1

La progettazione del filtro può essere eseguita manualmente, tuttavia l'utilizzo di MATLAB accelererà notevolmente questa operazione se si ha accesso al software.

Un filtro passa basso può essere equiparato a una funzione di trasferimento (o frazione) nel dominio di Laplace (dominio della frequenza). La frequenza in ingresso verrà moltiplicata per questa frazione e l'uscita è un segnale filtrato che contiene solo le informazioni che si desidera utilizzare.

L'unica variabile nella funzione è tau. Tau è uguale a 1 / Omega, dove Omega è la frequenza di taglio desiderata (deve essere in radianti al secondo). La frequenza di taglio è il limite in cui le frequenze superiori verranno rimosse e le frequenze inferiori verranno mantenute.

Ho impostato la frequenza di taglio uguale a un RPM che il mio motore non raggiungerà mai (990 RPM o 165 Hz). I grafici FFT mostrano approssimativamente quali frequenze trasportava il mio segnale grezzo e le frequenze che uscivano dal filtro.

Passaggio 7: filtraggio: parte 2

Filtraggio: Parte 2
Filtraggio: Parte 2
Filtraggio: Parte 2
Filtraggio: Parte 2

Qui MATLAB è stato utilizzato di nuovo per motivi di tempo. Viene definita la frequenza di taglio e da essa viene visualizzata la funzione di trasferimento risultante. Tieni presente che questa frazione si applica solo al dominio Laplace e non può essere utilizzata direttamente su un micro controller basato sul tempo come Arduino UNO R3.

Passaggio 8: filtraggio: parte 3

Filtraggio: Parte 3
Filtraggio: Parte 3
Filtraggio: Parte 3
Filtraggio: Parte 3

MATLAB ha un comando che convertirà una funzione continua (dominio della frequenza) in una funzione discreta (dominio del tempo). L'output di questo comando fornirà un'equazione che può essere facilmente incorporata nel codice IDE di Arduino.

Passaggio 9: filtraggio: parte 4

Filtraggio: Parte 4
Filtraggio: Parte 4
Filtraggio: Parte 4
Filtraggio: Parte 4

Nello sketch Arduino, includi le variabili u e y prima del setup. Il comando float definisce semplicemente come la variabile memorizzerà i dati (cose come valore massimo, decimali, ecc…) e un collegamento a maggiori informazioni su questo verrà fornito qui: https://www.arduino.cc/reference/en/language /variabile…

Nel ciclo in cui avviene la conversione dal segnale grezzo alla velocità del motore, includi la variabile u e l'equazione multipla y. Esistono diversi modi per utilizzarlo, ma la variabile u dovrebbe essere impostata uguale al segnale di ingresso grezzo da misurare e la variabile y sarà il valore filtrato.

Consigliato: