Sisällysluettelo:

Käytä Arduinoa moottorin kierrosluvun näyttämiseen: 10 vaihetta (kuvien kanssa)
Käytä Arduinoa moottorin kierrosluvun näyttämiseen: 10 vaihetta (kuvien kanssa)

Video: Käytä Arduinoa moottorin kierrosluvun näyttämiseen: 10 vaihetta (kuvien kanssa)

Video: Käytä Arduinoa moottorin kierrosluvun näyttämiseen: 10 vaihetta (kuvien kanssa)
Video: Lesson 95: Using L293D 4 DC Motors Shield for Arduino UNO and Mega | Arduino Step By Step Course 2024, Marraskuu
Anonim
Käytä Arduinoa moottorin kierrosluvun näyttämiseen
Käytä Arduinoa moottorin kierrosluvun näyttämiseen
Käytä Arduinoa moottorin kierrosluvun näyttämiseen
Käytä Arduinoa moottorin kierrosluvun näyttämiseen
Käytä Arduinoa moottorin kierrosluvun näyttämiseen
Käytä Arduinoa moottorin kierrosluvun näyttämiseen

Tässä oppaassa kuvataan, miten käytin Arduino UNO R3: ta, 16x2 LCD -näyttöä, jossa on I2C, ja LED -nauhaa, jota käytettiin moottorin kierroslukumittarina ja vaihteenvalona Acura Integra -raiteessa. Se on kirjoitettu henkilöllä, jolla on jonkin verran kokemusta tai altistusta Arduino -ohjelmistolle tai koodaukselle yleensä, matemaattiselle ohjelmistolle MATLAB ja sähköpiirien luomiseen tai muokkaamiseen. Tulevaisuudessa tätä voidaan tarkistaa helpommin ymmärrettäväksi niille, joilla on vähän tai ei lainkaan kokemusta näistä aiheista.

Vaihe 1: Valitse Sigal Wire

Valitse Sigal Wire
Valitse Sigal Wire

Sinun on saatava signaali, joka vastaa moottorin nopeutta. On mahdollista lisätä järjestelmä, joka mittaa moottorin nopeutta, mutta on paljon käytännöllisempää käyttää olemassa olevaa johtoa, joka kuljettaa moottorin nopeustietoja. Yhdellä autolla voi olla useita lähteitä tähän, ja se voi vaihdella villisti jopa vuosi vuodelta yhdellä ajoneuvomallilla. Tämän opetusohjelman vuoksi käytän esimerkkinä autostani, raidasta muokattua 2000 Acura Integra LS. Löysin moottoristani (B18B1 ja OBD2), että käyttämätön jännite on 12 V korkea ja laskee 0 V: iin täydellisen kierroksen päätyttyä.

Asiat, jotka auttavat tunnistamaan mahdollisen moottorin nopeussignaalin:

  • Ajoneuvosi kytkentäkaavio
  • Etsitään foorumeita autollesi moottorin/ECU -signaalien avulla
  • Ystävällinen mekaanikko tai autoharrastaja

Vaihe 2: Laajenna johto Arduino Boardiin

Laajenna johto Arduino -kortille
Laajenna johto Arduino -kortille
Laajenna johto Arduino -kortille
Laajenna johto Arduino -kortille

Kun olet valinnut sopivan signaalin, sinun on laajennettava se mihin tahansa, kun sijoitat Arduino -korttisi. Päätin sijoittaa omani ajoneuvoon, jossa radio oli ennen, joten vedin uuden johdon moottorista palomuurin kumitiivisteen läpi ja suoraan radioalueelle. Koska irrotusta, juottamista ja johdotusten suojaamista varten on jo runsaasti oppaita, en selitä tätä prosessia.

Vaihe 3: Signaalin analyysi

Signaalin analyysi
Signaalin analyysi

Täällä asiat voivat muuttua monimutkaisiksi. Yleinen käsitys signaalianalyysistä ja ohjaimista auttaa sinua pitkälle, mutta se on mahdollista vähällä tietämyksellä.

Todennäköisesti valittu signaalijohto ei sylki moottorin nopeuden tarkkaa arvoa. Se on muotoiltava ja muutettava siten, että se antaa tarkan määrän moottorin kierroslukuja. Koska jokainen valittu auto ja signaalijohto voivat olla erilaisia, tästä lähtien selitän, miten käytin Integra -laitteeni jakelijan paikkasignaalia.

Signaalini on normaalisti 12 V ja laskee 0 V: iin, kun yksi täysi kierros suoritetaan. Jos tiedät yhden täyden kierroksen tai yhden syklin suorittamiseen tarvittavan ajan, tämä voidaan helposti kääntää kierroksiksi minuutissa käyttämällä joitain peruskäsitteitä.

1 / (sekuntia jaksoa kohden) = sykliä sekunnissa tai Hz

Kierrosta minuutissa = Hz * 60

Vaihe 4: Koodaa signaalianalyysi

Koodaa signaalianalyysi
Koodaa signaalianalyysi

Tämä menetelmä edellyttää, että tulosignaalin suorittamiseen kuluu aikaa yhden täyden jakson ajan. Onneksi Arduino IDE -ohjelmistolla on komento, joka tekee juuri sen, PulseIn.

Tämä komento odottaa, että signaali ylittää kynnyksen, alkaa laskea ja lopettaa laskemisen, kun kynnys ylitetään uudelleen. Joitakin yksityiskohtia tulee huomioida komentoa käytettäessä, joten lisään linkin PulseIn -tietoihin täältä:

PulseIn palauttaa arvon mikrosekunneissa, ja pitää matematiikka yksinkertaisena, tämä on muutettava välittömästi normaaliksi sekunniksi. Edellisen vaiheen laskutoimituksen jälkeen tämä ajanjakso voidaan rinnastaa suoraan RPM: ään.

Huomaa: kokeilun ja erehdyksen jälkeen huomasin, että jakelija suorittaa kaksi kierrosta moottorin kampiakselin jokaista kierrosta kohden, joten jaoin vastaukseni 2: lla tämän huomioon ottamiseksi.

Vaihe 5: Tunnista suodatin

Tunnista suodatin
Tunnista suodatin

Jos olet onnekas, signaalissasi ei ole kohinaa (vaihtelua) ja moottorin nopeus on tarkka. Minun tapauksessani jakelijasta tuli paljon melua, joka usein antoi jännitteitä kaukana odotetusta. Tämä muuttuu erittäin vääriksi todellisen moottorin kierrosluvun lukemiksi. Tämä melu on suodatettava pois.

Jonkin signaalianalyysin jälkeen melkein kaikki melu tuli taajuuksilla (Hz), jotka olivat paljon korkeampia kuin mitä itse moottori lähetti (mikä pätee useimpiin todellisiin dynaamisiin järjestelmiin). Tämä tarkoittaa, että alipäästösuodatin on ihanteellinen ehdokas huolehtimaan tästä.

Alipäästösuodatin mahdollistaa matalien taajuuksien (haluttu) kulkemisen läpi ja vaimentaa korkeat taajuudet (ei -toivottuja).

Vaihe 6: Suodatus: Osa 1

Suodatus: Osa 1
Suodatus: Osa 1
Suodatus: Osa 1
Suodatus: Osa 1
Suodatus: Osa 1
Suodatus: Osa 1

Suodattimen voi suunnitella käsin, mutta MATLABin käyttö nopeuttaa sitä merkittävästi, jos sinulla on pääsy ohjelmistoon.

Alipäästösuodatin voidaan rinnastaa siirtofunktioon (tai murto -osaan) Laplace -alueella (taajuusalue). Tulotaajuus kerrotaan tällä murto -osalla ja lähtö on suodatettu signaali, jossa on vain haluamasi tiedot.

Funktion ainoa muuttuja on tau. Tau on yhtä kuin 1 / Omega, missä Omega on haluamasi rajataajuus (täytyy olla radiaaneina sekunnissa). Katkaisutaajuus on raja, jossa sitä korkeammat taajuudet poistetaan ja sitä pienemmät taajuudet pidetään.

Asetin rajataajuuden yhtä suureksi kuin kierrosluku, jota moottorini ei koskaan saavuta (990 RPM tai 165 Hz). FFT -kaaviot osoittavat suunnilleen, mitä taajuuksia raaka signaalini kantoi ja mitä suodattimesta tuli.

Vaihe 7: Suodatus: Osa 2

Suodatus: Osa 2
Suodatus: Osa 2
Suodatus: Osa 2
Suodatus: Osa 2

Täällä MATLABia hyödynnettiin jälleen ajan vuoksi. Katkaisutaajuus määritetään, ja sen jälkeen tuloksena oleva siirtotoiminto näytetään. Muista, että tämä murto-osa koskee vain Laplace-verkkotunnusta, eikä sitä voi käyttää suoraan aikapohjaiseen mikro-ohjaimeen, kuten Arduino UNO R3.

Vaihe 8: Suodatus: Osa 3

Suodatus: Osa 3
Suodatus: Osa 3
Suodatus: Osa 3
Suodatus: Osa 3

MATLABilla on komento, joka muuntaa jatkuvan funktion (taajuusalue) erilliseksi funktioksi (aikatunnukseksi). Tämän komennon tulos antaa yhtälön, joka voidaan helposti sisällyttää Arduino IDE -koodiin.

Vaihe 9: Suodatus: Osa 4

Suodatus: Osa 4
Suodatus: Osa 4
Suodatus: Osa 4
Suodatus: Osa 4

Sisällytä Arduino -luonnokseen muuttujat u ja y ennen asennusta. Float -komento määrittää yksinkertaisesti, miten muuttuja tallentaa tiedot (esimerkiksi enimmäisarvon, desimaalit jne.), Ja linkki lisätietoihin tästä annetaan täällä: https://www.arduino.cc/reference/en/language /varia…

Silmukkaan, jossa raakasignaali muutetaan moottorin nopeudeksi, sisällytä u -muuttuja ja y -moninkertainen yhtälö. Tätä voidaan käyttää useilla tavoilla, mutta muuttuja u on asetettava yhtä suureksi kuin mitattava raaka tulosignaali, ja muuttuja y on suodatettu arvo.

Suositeltava: