Talaan ng mga Nilalaman:

Gumamit ng Arduino upang Maipakita ang Engine RPM: 10 Hakbang (na may Mga Larawan)
Gumamit ng Arduino upang Maipakita ang Engine RPM: 10 Hakbang (na may Mga Larawan)

Video: Gumamit ng Arduino upang Maipakita ang Engine RPM: 10 Hakbang (na may Mga Larawan)

Video: Gumamit ng Arduino upang Maipakita ang Engine RPM: 10 Hakbang (na may Mga Larawan)
Video: BARETTO MINI4WD - POST GARA E CHIACCHIERE VARIE 2024, Nobyembre
Anonim
Gumamit ng Arduino sa Display Engine RPM
Gumamit ng Arduino sa Display Engine RPM
Gumamit ng Arduino sa Display Engine RPM
Gumamit ng Arduino sa Display Engine RPM
Gumamit ng Arduino sa Display Engine RPM
Gumamit ng Arduino sa Display Engine RPM

Ituturo ng gabay na ito kung paano ako gumamit ng isang Arduino UNO R3, isang 16x2 LCD display na may I2C, at isang LED strip na gagamitin bilang isang pagsukat ng bilis ng engine at paglilipat ng ilaw sa aking Acura Integra track car. Ito ay nakasulat sa mga tuntunin ng isang taong may ilang karanasan o pagkakalantad sa Arduino software o pag-coding sa pangkalahatan, ang matematika software na MATLAB, at paglikha o pagbabago ng mga electric circuit. Sa hinaharap maaari itong mabago upang mas madaling maunawaan para sa isang taong walang karanasan sa mga paksang ito.

Hakbang 1: Pumili ng isang Sigal Wire

Pumili ng isang Sigal Wire
Pumili ng isang Sigal Wire

Kakailanganin mong makakuha ng isang senyas na naiugnay sa bilis ng engine. Posibleng magdagdag ng isang system na sumusukat sa bilis ng engine ngunit mas praktikal na mag-tap sa isang mayroon nang kawad na nagdadala ng impormasyon sa bilis ng engine. Ang isang solong kotse ay maaaring may maraming mga mapagkukunan para dito, at maaari itong mag-iba nang ligaw kahit taon-taon sa isang solong modelo ng sasakyan. Para sa kapakanan ng tutorial na ito ay gumagamit ako ng halimbawa ng aking kotse, isang track na binago 2000 Acura Integra LS. Natagpuan ko sa aking makina (B18B1 na may OBD2) mayroong isang hindi nagamit na boltahe na taas na 12V at bumaba sa 0V sa pagkumpleto ng isang buong rebolusyon.

Mga bagay na makakatulong na makilala ang isang potensyal na signal ng bilis ng engine:

  • Diagram diagram para sa iyong sasakyan
  • Naghahanap ng mga forum para sa iyong sasakyan na kinasasangkutan ng mga signal ng engine / ECU
  • Isang palakaibigang mekaniko o mahilig sa kotse

Hakbang 2: Palawakin ang Wire hanggang sa Arduino Board

Palawakin ang Wire sa Arduino Board
Palawakin ang Wire sa Arduino Board
Palawakin ang Wire sa Arduino Board
Palawakin ang Wire sa Arduino Board

Sa sandaling napili mo ang isang naaangkop na signal, kakailanganin mong palawakin ito sa kung saan mo man inilalagay ang iyong Arduino board. Napagpasyahan kong ilagay ang minahan sa loob ng sasakyan kung saan naroon ang radyo, kaya't itinuro ko ang bagong kawad mula sa makina, sa pamamagitan ng isang grommet ng goma sa pader ng apoy, at pakanan sa lugar ng radyo. Dahil mayroon nang isang sagana na bilang ng mga gabay sa paghuhubad, paghihinang, at pagprotekta sa mga kable ay hindi ko ipaliwanag ang prosesong ito.

Hakbang 3: Pagsusuri sa Senyas

Pagsusuri sa Hudyat
Pagsusuri sa Hudyat

Dito maaaring maging kumplikado ang mga bagay. Ang pagkakaroon ng isang pangkalahatang pag-unawa sa pagtatasa ng signal at mga kontrol ay makakatulong sa iyo sa isang mahabang paraan, ngunit magagawa sa kaunting kaalaman.

Ang signal wire na piniling malamang ay hindi maglalabas ng eksaktong halaga ng bilis ng engine. Kakailanganin itong hugis at mabago sa pagbibigay ng eksaktong bilang ng engine RPM na gusto mo. Dahil sa ang katunayan na ang bawat iba't ibang mga kotse at signal wire na pinili ay maaaring magkakaiba, mula sa puntong ito pataas ipaliwanag ko kung paano ko ginamit ang signal ng posisyon mula sa namamahagi sa aking Integra.

Ang aking signal ay karaniwang 12V at bumaba sa 0V kapag nakumpleto ang isang buong pag-ikot. Kung alam mo ang oras upang makumpleto ang isang buong pag-ikot, o isang buong pag-ikot, madali itong maisasalin sa mga rebolusyon / min gamit ang ilang pangunahing mga konsepto.

1 / (segundo bawat pag-ikot) = cycle bawat segundo, o Hz

Mga rebolusyon bawat minuto = Hz * 60

Hakbang 4: I-code ang Pagsusuri sa Iyong Signal

I-code ang iyong Pagsusuri sa Signal
I-code ang iyong Pagsusuri sa Signal

Nangangailangan ang pamamaraang ito ng pagkuha ng oras na kinakailangan para sa input signal upang makumpleto ang isang buong siklo. Sa kabutihang palad ang Arduino IDE software ay may isang utos na eksaktong ginagawa iyon, PulseIn.

Maghihintay ang utos na ito para sa isang senyas na tatawid sa isang threshold, magsimulang magbilang, at ihinto ang pagbibilang kapag ang threshold ay tumawid muli. Mayroong ilang mga detalye na dapat tandaan kapag gumagamit ng utos, kaya magsasama ako ng isang link sa impormasyon ng PulseIn dito:

Ibabalik ng PulseIn ang isang halaga sa microseconds, at upang mapanatili ang simple ng matematika dapat itong agad na mai-convert sa normal na segundo. Kasunod sa matematika sa nakaraang hakbang, ang tagal ng oras na ito ay maaaring maipantay nang direkta sa RPM.

Tandaan: pagkatapos ng pagsubok at error natuklasan ko na ang namamahagi ay nakumpleto ang dalawang pag-ikot para sa bawat solong pag-ikot ng crankshaft ng engine, kaya't hinati ko lamang ang aking sagot sa 2 upang maisip iyon.

Hakbang 5: Kilalanin ang isang Filter

Tukuyin ang isang Filter
Tukuyin ang isang Filter

Kung ikaw ay mapalad ang iyong signal ay walang 'ingay' (pagbabagu-bago) at ang bilis ng iyong engine ay magiging eksakto. Sa aking kaso, maraming ingay na nagmumula sa distributor na madalas na nagbibigay ng voltages na malayo sa inaasahan. Ito ay naging napaka maling pagbasa ng tunay na bilis ng engine. Ang ingay na ito ay kailangang i-filter.

Matapos ang ilang pagtatasa ng signal, halos lahat ng ingay ay dumating sa mga frequency (Hz) na mas mataas kaysa sa output ng engine mismo (na totoo para sa pinaka totoong mga system na dinamiko). Nangangahulugan ito na ang isang low pass filter ay isang perpektong kandidato upang pangalagaan ito.

Pinapayagan ng isang low pass filter na ang mga mababang frequency (ninanais) na dumaan at makapagpahina ng matataas na frequency (hindi kanais-nais).

Hakbang 6: Pagsala: Bahagi 1

Pagsala: Bahagi 1
Pagsala: Bahagi 1
Pagsala: Bahagi 1
Pagsala: Bahagi 1
Pagsala: Bahagi 1
Pagsala: Bahagi 1

Ang pagdidisenyo ng filter ay maaaring gawin sa pamamagitan ng kamay, subalit ang paggamit ng MATLAB ay magpapabilis nito nang malaki kung may access ka sa software.

Ang isang mababang pass filter ay maaaring mapantayan sa isang function ng paglipat (o maliit na bahagi) sa domain ng Laplace (frequency domain). Ang dalas ng pag-input ay mai-multiply ng maliit na bahagi na ito at ang output ay isang na-filter na signal na mayroon lamang impormasyon na nais mong gamitin.

Ang variable lamang sa pagpapaandar ay tau. Ang Tau ay katumbas ng 1 / Omega, kung saan ang Omega ay ang dalas ng cutoff na gusto mo (dapat nasa mga radian bawat segundo). Ang dalas ng cutoff ay ang limitasyon kung saan ang mga frequency na mas mataas kaysa sa ito ay aalisin at ang mga frequency na mas mababa kaysa sa ito ay panatilihin.

Itinakda ko ang dalas ng cutoff na katumbas ng isang RPM na hindi maabot ng aking engine (990 RPM o 165 Hz). Ang mga FFT graph ay nagpapakita ng halos kung anong mga frequency ang dala ng aking hilaw na signal at mga frequency na lumabas sa filter.

Hakbang 7: Pagsala: Bahagi 2

Pagsala: Bahagi 2
Pagsala: Bahagi 2
Pagsala: Bahagi 2
Pagsala: Bahagi 2

Narito ang muling paggamit ng MATLAB alang-alang sa oras. Ang dalas ng cutoff ay tinukoy, at mula doon ay ipinapakita ang nagresultang function ng paglipat. Tandaan na nalalapat lamang ang maliit na bahagi na ito sa domain ng Laplace at hindi direktang magamit sa isang nakabatay sa oras na micro controller tulad ng Arduino UNO R3.

Hakbang 8: Pagsala: Bahagi 3

Pagsala: Bahagi 3
Pagsala: Bahagi 3
Pagsala: Bahagi 3
Pagsala: Bahagi 3

Ang MATLAB ay may isang utos na magko-convert ng tuluy-tuloy na pagpapaandar (frequency domain) sa isang discrete function (time domain). Ang output ng utos na ito ay magbibigay ng isang equation na maaaring madaling isama sa Arduino IDE code.

Hakbang 9: Pagsala: Bahagi 4

Pagsala: Bahagi 4
Pagsala: Bahagi 4
Pagsala: Bahagi 4
Pagsala: Bahagi 4

Sa Arduino sketch, isama ang mga variable na u at y bago ang pag-set up. Tinutukoy lamang ng float command kung paano mag-iimbak ng variable ang data (mga bagay tulad ng maximum na halaga, decimal, atbp…) at isang link sa higit pang impormasyon tungkol dito ay ibibigay dito: https://www.arduino.cc/referensi/en/language / varia…

Sa loop kung saan nagaganap ang pag-convert mula sa raw signal sa bilis ng engine, isama ang variable ng u at ang y maramihang equation. Mayroong maraming mga paraan ng paggamit nito, ngunit ang variable u ay dapat itakda na katumbas ng hilaw na signal ng input na sinusukat, at ang variable y ay ang na-filter na halaga.

Hakbang 10: Ipakita ang Iyong Na-filter na Bilis ng Engine

Inirerekumendang: