Izmantojiet Arduino, lai parādītu dzinēja apgriezienus: 10 soļi (ar attēliem)
Izmantojiet Arduino, lai parādītu dzinēja apgriezienus: 10 soļi (ar attēliem)
Anonim
Izmantojiet Arduino, lai parādītu dzinēja apgriezienus
Izmantojiet Arduino, lai parādītu dzinēja apgriezienus
Izmantojiet Arduino, lai parādītu dzinēja apgriezienus
Izmantojiet Arduino, lai parādītu dzinēja apgriezienus
Izmantojiet Arduino, lai parādītu dzinēja apgriezienus
Izmantojiet Arduino, lai parādītu dzinēja apgriezienus

Šajā rokasgrāmatā tiks aprakstīts, kā es savā Acura Integra sliežu automašīnā izmantoju Arduino UNO R3, 16x2 LCD displeju ar I2C un LED sloksni, ko izmantot kā dzinēja apgriezienu mērītāju un pārslēgšanas gaismu. Tas ir uzrakstīts, runājot par kādu, kam ir zināma pieredze vai saskarsme ar Arduino programmatūru vai kodēšanu kopumā, matemātisko programmatūru MATLAB un elektrisko ķēžu izveidi vai pārveidošanu. Nākotnē tas var tikt pārskatīts, lai būtu vieglāk saprotams kādam, kam nav pieredzes šajās tēmās.

1. darbība: izvēlieties Sigal Wire

Izvēlieties Sigal Wire
Izvēlieties Sigal Wire

Jums jāiegūst signāls, kas atbilst motora apgriezienu skaitam. Ir iespējams pievienot sistēmu, kas mēra motora apgriezienu skaitu, taču daudz praktiskāk ir pieslēgties esošam vadam, kas satur informāciju par motora apgriezieniem. Vienai automašīnai tam var būt vairāki avoti, un viena transportlīdzekļa modelī tas var ievērojami atšķirties pat gadu no gada. Šīs apmācības labad es izmantošu savas automašīnas piemēru - sliežu modificētu 2000 Acura Integra LS. Es atklāju, ka uz mana dzinēja (B18B1 ar OBD2) ir neizmantots spriegums, kas ir 12 V augsts un nokrīt līdz 0 V., pabeidzot pilnu apgriezienu.

Lietas, kas palīdzēs noteikt iespējamo motora apgriezienu skaita signālu:

  • Jūsu transportlīdzekļa elektroinstalācijas shēma
  • Jūsu transportlīdzekļa forumu meklēšana ar dzinēja/ECU signāliem
  • Draudzīgs mehāniķis vai auto entuziasts

2. darbība: pagariniet vadu līdz Arduino padomei

Paplašiniet vadu līdz Arduino padomei
Paplašiniet vadu līdz Arduino padomei
Paplašiniet vadu līdz Arduino padomei
Paplašiniet vadu līdz Arduino padomei

Kad esat izvēlējies piemērotu signālu, tas ir jāpaplašina, lai kur jūs novietotu savu Arduino dēli. Es nolēmu ievietot raktuvi transportlīdzekļa iekšpusē, kur agrāk bija radio, tāpēc es novirzīju jauno vadu no motora caur gumijas blīvējumu uguns sienā un tieši uz radio zonu. Tā kā jau ir daudz norādījumu par vadu noņemšanu, lodēšanu un vadu aizsardzību, es šo procesu nepaskaidrošu.

3. solis: signālu analīze

Signālu analīze
Signālu analīze

Šeit lietas var kļūt sarežģītas. Vispārēja izpratne par signālu analīzi un vadību palīdzēs jums daudz, bet to var izdarīt ar mazām zināšanām.

Signāla vads, kas, visticamāk, nebūs izspļauts precīza motora apgriezienu skaita vērtība. Tas būs jāveido un jāpārveido tā, lai tas sniegtu precīzu vēlamo dzinēja apgriezienu skaitu. Tā kā katra izvēlētā automašīna un signāla vads var būt atšķirīgi, no šī brīža es paskaidrošu, kā es izmantoju pozīcijas signālu no izplatītāja savā Integra.

Mans signāls parasti ir 12V un nokrīt līdz 0V, pabeidzot vienu pilnu rotāciju. Ja jūs zināt laiku, lai pabeigtu vienu pilnu rotāciju vai vienu pilnu ciklu, to var viegli pārvērst apgriezienos minūtē, izmantojot dažus pamatjēdzienus.

1 / (sekundes vienā ciklā) = cikli sekundē vai Hz

Apgriezieni minūtē = Hz * 60

4. darbība. Kodējiet signāla analīzi

Kodējiet savu signālu analīzi
Kodējiet savu signālu analīzi

Šī metode prasa iegūt laiku, kas nepieciešams, lai ievades signāls pabeigtu vienu pilnu ciklu. Par laimi Arduino IDE programmatūrai ir komanda, kas tieši to dara, PulseIn.

Šī komanda gaidīs, kad signāls šķērsos slieksni, sāks skaitīšanu un pārtrauks skaitīšanu, kad slieksnis atkal tiks pārsniegts. Izmantojot komandu, ir jāņem vērā dažas detaļas, tāpēc šeit es ievietošu saiti uz PulseIn informāciju:

PulseIn atgriezīs vērtību mikrosekundēs, un, lai matemātika būtu vienkārša, tā nekavējoties jāpārvērš parastajās sekundēs. Pēc iepriekšējā soļa matemātikas šo laika ilgumu var pielīdzināt tieši RPM.

Piezīme: pēc izmēģinājumiem un kļūdām es atklāju, ka izplatītājs pabeidz divus apgriezienus par katru motora kloķvārpstas rotāciju, tāpēc es vienkārši sadalīju savu atbildi ar 2, lai to ņemtu vērā.

5. darbība: identificējiet filtru

Identificējiet filtru
Identificējiet filtru

Ja jums ir paveicies, jūsu signālam nebūs trokšņa (svārstību), un jūsu motora apgriezienu skaits būs precīzs. Manā gadījumā no izplatītāja nāca liels troksnis, kas bieži deva spriegumu tālu no paredzamā. Tas pārvēršas par ļoti nepatiesiem faktiskā motora apgriezienu rādījumiem. Šis troksnis būs jāfiltrē.

Pēc dažu signālu analīzes gandrīz viss troksnis bija frekvencēs (Hz), kas bija daudz augstākas nekā pats dzinējs (kas attiecas uz lielāko daļu reālo dinamisko sistēmu). Tas nozīmē, ka zemas caurlaidības filtrs ir ideāls kandidāts, lai par to parūpētos.

Zemas caurlaidības filtrs ļauj zemām frekvencēm (vēlamajām) iziet cauri un vājina augstās frekvences (nevēlamas).

6. darbība: filtrēšana: 1. daļa

Filtrēšana: 1. daļa
Filtrēšana: 1. daļa
Filtrēšana: 1. daļa
Filtrēšana: 1. daļa
Filtrēšana: 1. daļa
Filtrēšana: 1. daļa

Filtra projektēšanu var veikt ar rokām, tomēr, izmantojot MATLAB, tas ievērojami paātrinās, ja jums ir piekļuve programmatūrai.

Zemas caurlaides filtru var pielīdzināt pārsūtīšanas funkcijai (vai daļai) Laplasa domēnā (frekvenču domēnā). Ievades frekvence tiks reizināta ar šo daļu, un izeja ir filtrēts signāls, kurā ir tikai informācija, kuru vēlaties izmantot.

Funkcijas vienīgais mainīgais ir tau. Tau ir vienāds ar 1 / Omega, kur Omega ir vēlamā robežfrekvence (jābūt radiānos sekundē). Ierobežojuma frekvence ir robeža, kurā tiks noņemtas augstākas frekvences un zemākas frekvences.

Es iestatīju ierobežojuma frekvenci, kas vienāda ar apgriezieniem minūtē, kuru mans dzinējs nekad nesasniegs (990 apgr./min vai 165 Hz). FFT diagrammas parāda aptuveni to, kādas frekvences bija manam neapstrādātajam signālam, un frekvences, kas iznāca no filtra.

7. darbība. Filtrēšana: 2. daļa

Filtrēšana: 2. daļa
Filtrēšana: 2. daļa
Filtrēšana: 2. daļa
Filtrēšana: 2. daļa

Šeit MATLAB atkal tika izmantots laika dēļ. Ierobežojuma biežums ir definēts, un no tā tiek parādīta iegūtā pārsūtīšanas funkcija. Paturiet prātā, ka šī daļa attiecas tikai uz Laplasa domēnu, un to nevar tieši izmantot uz laiku balstītā mikrokontrollerī, piemēram, Arduino UNO R3.

8. darbība: filtrēšana: 3. daļa

Filtrēšana: 3. daļa
Filtrēšana: 3. daļa
Filtrēšana: 3. daļa
Filtrēšana: 3. daļa

MATLAB ir komanda, kas nepārtrauktu funkciju (frekvenču domēnu) pārveidos par diskrētu funkciju (laika domēns). Šīs komandas iznākums nodrošinās vienādojumu, ko var viegli iekļaut Arduino IDE kodā.

9. darbība. Filtrēšana: 4. daļa

Filtrēšana: 4. daļa
Filtrēšana: 4. daļa

Arduino skicē pirms iestatīšanas iekļaujiet mainīgos u un y. Komanda float vienkārši nosaka, kā mainīgais saglabās datus (piemēram, maksimālo vērtību, decimāldaļas utt.), Un saite uz plašāku informāciju par to tiks sniegta šeit: https://www.arduino.cc/reference/en/language /varia…

Ciklā, kurā notiek pārveidošana no neapstrādāta signāla uz motora apgriezienu skaitu, iekļaujiet mainīgo u un vienādojumu y. Ir vairāki veidi, kā to izmantot, bet mainīgais u jāiestata vienāds ar neapstrādāto ievades signālu, un mainīgais y būs filtrētā vērtība.

Ieteicams: